AJO Journey Condition Not Resolving Profile Data When Triggered by Event | Community
Skip to main content
Level 4
April 13, 2026
Solved

AJO Journey Condition Not Resolving Profile Data When Triggered by Event

  • April 13, 2026
  • 2 replies
  • 26 views

I’m working on a transactional journey in Adobe Journey Optimizer that is triggered by an event tied to a Prospect Event Schema.

At the same time the event is ingested, the same individuals are also being written to the Prospect Profile schema. I’ve validated this by comparing timestamps and primary IDs across both the Event and Profile datasets—data is being populated correctly in both places.

To account for any latency, I’ve added a 15-minute Wait activity immediately after the event trigger to allow for profile ingestion and stitching.

Data Structure Context

  • Event Schema

    • Does not contain consent values (true/false)

    • Contains SourceID, which maps to commPreferenceType in the profile

  • Profile Schema

    • Contains commPreferences

    • Includes both:

      • commPreferenceType

      • granted (consent flag)

Issue

Although the journey is triggered by the event, I am attempting to evaluate Profile data within a Condition (Optimize activity) to determine eligibility for email communication.

However, the condition does not appear to correctly resolve or retrieve the Profile-based fields (commPreferenceType and granted). As a result, segmentation is not behaving as expected and users are not being properly qualified for email sends.

Question

When a journey is initiated from an Event, is there any limitation or nuance in referencing Profile attributes within downstream Condition/Optimize activities?

Specifically, should Profile data be reliably accessible at that point in the journey assuming identity stitching has occurred?

Condition Configuration

Here is the expression currently used in the Optimize activity:

containIgnoreCase(
#{ExperiencePlatform.ProfileFieldGroup.profile._********.ProspectProfile.commPreferences.at(0).commPreferenceType},
'email.all'
)
and
#{ExperiencePlatform.ProfileFieldGroup.profile.ProspectProfile.commPreferences.at(0).granted} == true

Additional Context / Considerations

  • Identity stitching appears correct (same primary ID across datasets)

  • Profile data is confirmed populated before journey reaches the condition

  • Delay has been introduced to mitigate ingestion timing issues

Any insight into whether this is a timing, identity resolution, or schema referencing issue would be greatly appreciated. Also curious if there are best practices for reliably using Profile attributes in event-triggered journeys.

 

Best answer by SatheeskannaK

@montezh2001 

I think you’re already following best practices to ensure the profile has all required data before reaching the journey nodes for validation.

You may want to review the collection management and list functions, as they can be helpful for this scenario:

Additionally, I’d recommend validating this by setting up a streaming audience to confirm the logic behaves as expected.

2 replies

Level 4
April 13, 2026

Update - so I found out from the data team that the value could exist anywhere in the array, so I must check more than position (0). The value I’m looking for could be in position (1) or position (2), etc. As a quick fix, I updated my condition to look for the value for up to position (15) - using ‘OR’ conditions. 

However, wanted to know if there’s a way to use a wildcard value where instead of me creating 15 ‘OR’ conditions, I can create one, and the fill the value with it, but with the coding so that granted position is equal to the commPrefererenceType position are the same when evaluating the condition. 

Example: (containIgnoreCase(#{ExperiencePlatform.ProfileFieldGroup.profile._********.ProspectProfile.commPreferences.at(*).commPreferenceType},'email.all')  and #{ExperiencePlatform.ProfileFieldGroup.profile.ProspectProfile.commPreferences.at(*).granted}==true) 

But this condition would say if I found the value in position 5 then the granted = true must also be in 5

SatheeskannaK
Community Advisor
SatheeskannaKCommunity AdvisorAccepted solution
Community Advisor
April 13, 2026

@montezh2001 

I think you’re already following best practices to ensure the profile has all required data before reaching the journey nodes for validation.

You may want to review the collection management and list functions, as they can be helpful for this scenario:

Additionally, I’d recommend validating this by setting up a streaming audience to confirm the logic behaves as expected.

Thanks, Sathees
Pulkit_Jain_
Adobe Employee
Adobe Employee
April 14, 2026

@montezh2001 

Yes — you can reliably reference Profile attributes in an event‑triggered journey as long as identity stitching has completed.
Your core issue is not timing, but the fact that commPreferences is an unordered array, so .at(0) cannot be assumed to contain the matching element.

I think, the idea of looping or wildcarding (e.g., .at(*)) is not supported in expressions — but there is a correct way to do this using AJO’s collection functions like filter, any, count, currentDataPackField.