Skip to main content
Level 2
September 7, 2026
Question

Loop in custom action

  • September 7, 2026
  • 2 replies
  • 17 views

Hi there

Is it possible to dynamically iterate/loop through all account numbers in an accountDetails array within an AJO Custom Action expression and:

  • Return all account numbers for a customer
  • Display only the last 4 digits of each account number
  • Format the output as:
    • 1234
    • 1234 and 5678
    • 1234, 5678 and 9012 (for 3+ accounts)

Thanks!

2 replies

SatheeskannaK
Community Advisor
Community Advisor
September 8, 2026

Hi ​@AK5

Try the expression below and make any necessary adjustments.

if (listSize(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}) == 1)
then (
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber)
)
)
else if (listSize(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}) == 2)
then (
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber)
)
+ " and " +
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber)
)
)
else if (listSize(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}) == 3)
then (
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(0).accountNumber)
)
+ ", " +
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(1).accountNumber)
)
+ " and " +
substr(
#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(2).accountNumber,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(2).accountNumber) - 4,
length(#{ExperiencePlatformDataSource.ProfileFieldGroup.Profile._yourtenantid.accountDetails}.at(2).accountNumber)
)
)
else ("Write the 3 account logic here")

A few things to note:

- Adjust the attribute path.

- If the number of accounts exceeds 3, implement the same logic for the case of 3 accounts.

Thanks, Sathees
AK5Author
Level 2
September 8, 2026

Thanks ​@SatheeskannaK, can loop without the limit of accounts? The journey is running daily, and we don’t want to guess how many accounts a customer has? Thanks!