Profile Split | Community
Skip to main content
Level 3
December 15, 2023
Solved

Profile Split

  • December 15, 2023
  • 3 replies
  • 2137 views

We're in a bit of a time crunch so would appreciate a quick response. 

 

We have a profile in AEP that has an ID (userID) and in that profile we have an array of all the accounts the user has. We've built a segment in AEP to qualify profiles based on certain conditions and we'd like to use this segment in AJO for journeys. However, we'd like to split the profiles that qualified for the segments for each them to have just one account value from the array. Is there a way to do this in AEP or AJO? 

 

An example is:

 

Current Scenario

profile1 -> userID1, [accountID1, accountID2, accountID3] 

 

Desired Outcome

Each of the profiles should qualify for the journey as shown below:

profile1 -> userID1, accountID1

profile2 -> userID1, accountID2

profile3 -> userID1, accountID3

 

 

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Mohan_Dugganab

@trojan_horse 

Assumption here is userID1 is an identity and a user can have a maximum of 'x' accounts in the array.

 

Profiles cannot qualify for each accountId in the array. 

 

Instead, you will have to consider that there will always be a maximum of 'x' accounts in the array and process each account Id in the array. Basically, check if account Id at index 0 exists, then proceed (say message send out for accountId 0) and similarly, check if account Id at index 1 exists, then proceed until you reach the 'x' limit

 

Example:-

Account Id at index o

getListItem(#{ExperiencePlatform.xxxfieldGroup.profile.yyy.accounts.accountId},0) != null

3 replies

SatheeskannaK
Community Advisor
Community Advisor
December 16, 2023

@trojan_horse, Yes, you can use collection management functions within condition activity to split the profiles.

Thanks, Sathees
Level 3
December 16, 2023

@satheeskannak I did look at the collection management functions, but would really appreciate if you could provide an example of how this would work given the example scenario below: 

 

profile1 -> userID1, [accountID1, accountID2, accountID3] 

profile2 -> userID2, [accountID4, accountID5, accountID6]

 

The journey checks for each accountID value and I'd like accountID1, accountID2, accountID3 to qualify to the journey separately for userID1 and the same for userID2. 

 

SatheeskannaK
Community Advisor
Community Advisor
December 16, 2023

@trojan_horse, Maybe you can use getListItem function here. Here is an example based on your structure,

getListItem(#{ExperiencePlatform.ProfileFieldGroup.profile.yyyy.accountID},1)== 'accountID2'. --> Within condition activity if I use this function it will check profiles with accountID array position 1 value having accountID2 or not.

Thanks, Sathees
Level 3
December 16, 2023

@satheeskannak  This may not work as we wouldn't know the length of the account array before-hand. Some profiles may have one accountID value while some may have more that one. Also the values of accoundID won't be the same for every profile

Mohan_Dugganab
Adobe Employee
Mohan_DugganabAdobe EmployeeAccepted solution
Adobe Employee
December 16, 2023

@trojan_horse 

Assumption here is userID1 is an identity and a user can have a maximum of 'x' accounts in the array.

 

Profiles cannot qualify for each accountId in the array. 

 

Instead, you will have to consider that there will always be a maximum of 'x' accounts in the array and process each account Id in the array. Basically, check if account Id at index 0 exists, then proceed (say message send out for accountId 0) and similarly, check if account Id at index 1 exists, then proceed until you reach the 'x' limit

 

Example:-

Account Id at index o

getListItem(#{ExperiencePlatform.xxxfieldGroup.profile.yyy.accounts.accountId},0) != null

Level 3
December 17, 2023

How would we make the journey to check for every index in the same run? Let's say the condition checks if accountID at index 0 exists and send an email if it does and the journey ends. How would we make the journey check for index 1,2,3...  trigger an email if the values exist in the same run?

SatheeskannaK
Community Advisor
Community Advisor
December 18, 2023

@trojan_horse, As dugganab mentioned, You can have the same condition repeated for other indexes. 

getListItem(#{ExperiencePlatform.xxxfieldGroup.profile.yyy.accounts.accountId},0) != null or getListItem(#{ExperiencePlatform.xxxfieldGroup.profile.yyy.accounts.accountId},1) != null or getListItem(#{ExperiencePlatform.xxxfieldGroup.profile.yyy.accounts.accountId},2) != null

Thanks, Sathees