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
Solved! Go to Solution.
Topics help categorize Community content and increase your ability to discover relevant content.
Views
Replies
Total Likes
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
@trojan_horse, Yes, you can use collection management functions within condition activity to split the profiles.
Views
Replies
Total Likes
@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.
Views
Replies
Total Likes
@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.
@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
Views
Replies
Total Likes
You can try 'in' function in the expression editor along with OR operator
in('accountID1',#{ExperiencePlatform.ProfileFieldGroup.profile.yyyy.accountID}) or in('accountID2',#{ExperiencePlatform.ProfileFieldGroup.profile.yyyy.accountID}) or in('accountID3',#{ExperiencePlatform.ProfileFieldGroup.profile.yyyy.accountID})
Views
Replies
Total Likes
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
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?
Views
Replies
Total Likes
@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
@trojan_horse on the following lines, where each index would be checked if it exists and then accordingly, an email would be sent out
1) Journey starts with Audience Qualification
2) Condition - check if account Id at index 0 exists using the expression shared in the earlier thread
3) Email for account Id 0
4) Condition - check if account Id at index 1 exists using the expression shared in the earlier thread
5) Email for account Id 1
6) So on and so forth until the max limit 'x' is reached which needs to be mutually agreed upon with the concerned stakeholders