Original Message:
Sent: Sun July 06, 2025 02:13 AM
From: Ahmed Elaimy
Subject: map policy
dear this is the full assemply , knowing that the atrributes "format & domnicilation " are read from the same path as the accountId value ,
appreciate your kind support the solution you offered is not working unfortunately , also the input data
this is the input
"accountIdSet": [
{
"accountId": {
"format": "XXX",
"domiciliation": "XX",
"accountId": "004976670001"
}
},
{
"accountId": {
"format": "XXXX",
"domiciliation": "XXXX",
"accountId": "XXXXXXXXX"
}
},
{
"accountId": {
"format": "XXX",
"accountId": "XDXXXXX"
}
},
{
"accountId": {
"format": "XXX",
"accountId": "XXXXX"
}
}
],
assembly:
execute:
- parse:
version: 2.2.0
title: parse
parse-settings-reference:
default: apic-default-parsesettings
- map:
inputs:
input:
schema:
$ref: '#/definitions/getAccountListInput'
variable: request.body
content: application/xml
outputs:
output:
schema:
$ref: '#/definitions/getAccountListReq'
variable: message.body
content: application/json
actions:
- set: output.getAccountList.header.ebmCID
from: input.Envelope.Body.getAccountList.header.ebmCID
- set: output.getAccountList.header.ebmMID
from: input.Envelope.Body.getAccountList.header.ebmMID
- set: output.getAccountList.header.ebmRTID
from: input.Envelope.Body.getAccountList.header.ebmRTID
- set: output.getAccountList.header.ebmPID
from: input.Envelope.Body.getAccountList.header.ebmPID
- set: output.getAccountList.header.ebmSID
from: input.Envelope.Body.getAccountList.header.ebmSID
- set: output.getAccountList.header.ebmTimestamp
from: input.Envelope.Body.getAccountList.header.ebmTimestamp
- set: output.getAccountList.header.bankEntityId
from: input.Envelope.Body.getAccountList.header.bankEntityId
- set: output.getAccountList.header.userID
from: input.Envelope.Body.getAccountList.header.userID
- set: output.getAccountList.body.customerId
from: input.Envelope.Body.getAccountList.body.customerId
version: 2.1.0
title: map
options:
mapEmulateV4EmptyJSONObject: false
mapEmulateV4DefaultRequiredProps: false
mapEnablePostProcessingJSON: false
mapReferenceLimit: 1
- invoke:
version: 2.0.0
title: invoke
backend-type: detect
header-control:
type: blocklist
values: []
parameter-control:
type: blocklist
values: []
timeout: 60
verb: keep
chunked-uploads: true
persistent-connection: true
target-url: >-
output: varResp
- map:
inputs:
input:
schema:
$ref: '#/definitions/getAccountListResp'
variable: varResp.body
content: application/json
outputs:
output:
schema:
$ref: '#/definitions/getAccountListOutput'
variable: message.body
content: application/xml
actions:
- set: output.Envelope.Body.getAccountListResponse.header.ebmCID
from: input.getAccountListResponse.header.ebmCID
- set: output.Envelope.Body.getAccountListResponse.header.ebmMID
from: input.getAccountListResponse.header.ebmMID
- set: output.Envelope.Body.getAccountListResponse.header.ebmRTID
from: input.getAccountListResponse.header.ebmRTID
- set: output.Envelope.Body.getAccountListResponse.header.ebmPID
from: input.getAccountListResponse.header.ebmPID
- set: output.Envelope.Body.getAccountListResponse.header.ebmSID
from: input.getAccountListResponse.header.ebmSID
- set: output.Envelope.Body.getAccountListResponse.header.ebmTimestamp
from: input.getAccountListResponse.header.ebmTimestamp
- set: output.Envelope.Body.getAccountListResponse.header.bankEntityId
from: input.getAccountListResponse.header.bankEntityId
- set: output.Envelope.Body.getAccountListResponse.header.userID
from: input.getAccountListResponse.header.userID
- set: output.Envelope.Body.getAccountListResponse.header.propertySet
from: input.getAccountListResponse.header.propertySet
- set: >-
output.Envelope.Body.getAccountListResponse.header.propertySet.property
from: input.getAccountListResponse.header.propertySet.property
- create: >-
output.Envelope.Body.getAccountListResponse.header.propertySet.property
foreach: input.getAccountListResponse.header.propertySet.property
from: input.getAccountListResponse.header.propertySet.property
actions:
- set: '@name'
from: name
- set: '@description'
from: description
- set: '@type'
from: type
- create: >-
output.Envelope.Body.getAccountListResponse.header.propertySet.property
foreach: input.getAccountListResponse.header.propertySet
from: input.getAccountListResponse.header.propertySet
actions:
- create: value
foreach: property
from: property
actions:
- set: $item
from: value
- create: >-
output.Envelope.Body.getAccountListResponse.body.accountSummaryList.accountSummary
foreach: >-
input.getAccountListResponse.body.accountSummaryList.accountSummary
from: >-
input.getAccountListResponse.body.accountSummaryList.accountSummary
actions:
- set: '@showBalances'
from: showBalances
- set: '@balanceSheet'
from: balanceSheet
- create: accountIdSet.accountId
foreach: accountIdSet
from: accountIdSet
value: accountId.accountId
actions:
- set: '@format'
from: accountId.format
- set: '@domiciliation'
from: accountId.domiciliation
- set: customerSummaryList.customerSummary.customerId
from: customerSummaryList.customerSummary.customerId
- set: customerSummaryList.customerSummary.name
from: customerSummaryList.customerSummary.name
- set: branchSummary.branchId
from: branchSummary.branchId
- set: branchSummary.branchName
from: branchSummary.branchName
- set: currency
from: currency
- set: accountType
from: accountType
- set: jointAccount
from: jointAccount
- set: status
from: status
- set: activityDates
from: activityDates
- set: balances.minimumBalance.value.@debitOrCredit
from: balances.minimumBalance.value.debitOrCredit
- set: balances.minimumBalance.value.amount
from: balances.minimumBalance.value.amount
- set: balances.minimumBalance.value.currency
from: balances.minimumBalance.value.currency
- set: balances.minimumBalance.counterValue.@debitOrCredit
from: balances.minimumBalance.counterValue.debitOrCredit
- set: balances.minimumBalance.counterValue.amount
from: balances.minimumBalance.counterValue.amount
- set: balances.minimumBalance.counterValue.currency
from: balances.minimumBalance.counterValue.currency
- set: balances.book.value.@debitOrCredit
from: balances.book.value.debitOrCredit
- set: balances.book.value.amount
from: balances.book.value.amount
- set: balances.book.value.currency
from: balances.book.value.currency
- set: balances.book.counterValue.@debitOrCredit
from: balances.book.counterValue.debitOrCredit
- set: balances.book.counterValue.amount
from: balances.book.counterValue.amount
- set: balances.book.counterValue.currency
from: balances.book.counterValue.currency
- set: balances.available.value.@debitOrCredit
from: balances.available.value.debitOrCredit
- set: balances.available.value.amount
from: balances.available.value.amount
- set: balances.available.value.currency
from: balances.available.value.currency
- set: balances.available.counterValue.@debitOrCredit
from: balances.available.counterValue.debitOrCredit
- set: balances.available.counterValue.amount
from: balances.available.counterValue.amount
- set: balances.available.counterValue.currency
from: balances.available.counterValue.currency
- set: balances.valueDate.value.@debitOrCredit
from: balances.valueDate.value.debitOrCredit
- set: balances.valueDate.value.amount
from: balances.valueDate.value.amount
- set: balances.valueDate.value.currency
from: balances.valueDate.value.currency
- set: balances.valueDate.counterValue.@debitOrCredit
from: balances.valueDate.counterValue.debitOrCredit
- set: balances.valueDate.counterValue.amount
from: balances.valueDate.counterValue.amount
- set: balances.valueDate.counterValue.currency
from: balances.valueDate.counterValue.currency
- set: balances.unclearedFunds.value.@debitOrCredit
from: balances.unclearedFunds.value.debitOrCredit
- set: balances.unclearedFunds.value.amount
from: balances.unclearedFunds.value.amount
- set: balances.unclearedFunds.value.currency
from: balances.unclearedFunds.value.currency
- set: balances.unclearedFunds.counterValue.@debitOrCredit
from: balances.unclearedFunds.counterValue.debitOrCredit
- set: balances.unclearedFunds.counterValue.amount
from: balances.unclearedFunds.counterValue.amount
- set: balances.unclearedFunds.counterValue.currency
from: balances.unclearedFunds.counterValue.currency
- set: balances.netBalance.value.@debitOrCredit
from: balances.netBalance.value.debitOrCredit
- set: balances.netBalance.value.amount
from: balances.netBalance.value.amount
- set: balances.netBalance.value.currency
from: balances.netBalance.value.currency
- set: balances.netBalance.counterValue.@debitOrCredit
from: balances.netBalance.counterValue.debitOrCredit
- set: balances.netBalance.counterValue.amount
from: balances.netBalance.counterValue.amount
- set: balances.netBalance.counterValue.currency
from: balances.netBalance.counterValue.currency
- set: balances.holdAmount.value.@debitOrCredit
from: balances.holdAmount.value.debitOrCredit
- set: balances.holdAmount.value.amount
from: balances.holdAmount.value.amount
- set: balances.holdAmount.value.currency
from: balances.holdAmount.value.currency
- set: balances.holdAmount.counterValue.@debitOrCredit
from: balances.holdAmount.counterValue.debitOrCredit
- set: balances.holdAmount.counterValue.amount
from: balances.holdAmount.counterValue.amount
- set: balances.holdAmount.counterValue.currency
from: balances.holdAmount.counterValue.currency
- set: balances.outstandingAmount.value.@debitOrCredit
from: balances.outstandingAmount.value.debitOrCredit
- set: balances.outstandingAmount.value.amount
from: balances.outstandingAmount.value.amount
- set: balances.outstandingAmount.value.currency
from: balances.outstandingAmount.value.currency
- set: balances.outstandingAmount.counterValue.@debitOrCredit
from: balances.outstandingAmount.counterValue.debitOrCredit
- set: balances.outstandingAmount.counterValue.amount
from: balances.outstandingAmount.counterValue.amount
- set: balances.outstandingAmount.counterValue.currency
from: balances.outstandingAmount.counterValue.currency
- set: balances.unutilizedAmount.value.@debitOrCredit
from: balances.unutilizedAmount.value.debitOrCredit
- set: balances.unutilizedAmount.value.amount
from: balances.unutilizedAmount.value.amount
- set: balances.unutilizedAmount.value.currency
from: balances.unutilizedAmount.value.currency
- set: balances.unutilizedAmount.counterValue.@debitOrCredit
from: balances.unutilizedAmount.counterValue.debitOrCredit
- set: balances.unutilizedAmount.counterValue.amount
from: balances.unutilizedAmount.counterValue.amount
- set: balances.unutilizedAmount.counterValue.currency
from: balances.unutilizedAmount.counterValue.currency
- set: balances.totalAvailable.value.@debitOrCredit
from: balances.totalAvailable.value.debitOrCredit
- set: balances.totalAvailable.value.amount
from: balances.totalAvailable.value.amount
- set: balances.totalAvailable.value.currency
from: balances.totalAvailable.value.currency
- set: balances.totalAvailable.counterValue.@debitOrCredit
from: balances.totalAvailable.counterValue.debitOrCredit
- set: balances.totalAvailable.counterValue.amount
from: balances.totalAvailable.counterValue.amount
- set: balances.totalAvailable.counterValue.currency
from: balances.totalAvailable.counterValue.currency
- set: balances.blockedAmount.value.@debitOrCredit
from: balances.blockedAmount.value.debitOrCredit
- set: balances.blockedAmount.value.amount
from: balances.blockedAmount.value.amount
- set: balances.blockedAmount.value.currency
from: balances.blockedAmount.value.currency
- set: balances.blockedAmount.counterValue.@debitOrCredit
from: balances.blockedAmount.counterValue.debitOrCredit
- set: balances.blockedAmount.counterValue.amount
from: balances.blockedAmount.counterValue.amount
- set: balances.blockedAmount.counterValue.currency
from: balances.blockedAmount.counterValue.currency
- create: propertySet.property
foreach: propertySet
from: propertySet
actions:
- set: '@name'
from: property.name
- set: value
from: property.value
- create: associatedProductSet.associatedProduct
foreach: associatedProductSet.associatedProduct
from: associatedProductSet.associatedProduct
actions:
- set: type
from: type
- set: isAvailable
from: isAvailable
- set: limitSet.limit.type
from: limitSet.limit.type
- set: limitSet.limit.limitAmount
from: limitSet.limit.limitAmount
version: 2.1.0
title: map
options:
mapEmulateV4EmptyJSONObject: false
mapEmulateV4DefaultRequiredProps: false
mapEnablePostProcessingJSON: false
mapReferenceLimit: 1
mapNullValue: true
includeEmptyXMLElements: null
falsecatch: null
------------------------------
Ahmed Elaimy
Original Message:
Sent: Fri July 04, 2025 08:44 AM
From: Steve Linn
Subject: map policy
Hi Ahmed,
I keep prefacing my posts by saying I'm retired and don't have any mechanism to try this anymore, but your array child actions only map your attributes, not the value of the element itself. I'm not sure if the UI will do this for you, but try adding to your create action in the source view
- create: accountIdSet.accountId
foreach: accountIdSet
from: accountIdSet
actions:
- set: '@format'
from: accountId.format
- set: '@domiciliation'
from: accountId.domiciliation
- set: $item
from: accountId.accountfieldname
You didn't show what your input data looks like so I'm assuming the input accountId array must have some account number property in it, and for the child actions of the create, $item is saying the current value, not a child property such as the attributes.
Best Regards,
Steve Linn
------------------------------
Steve Linn
Senior Consulting I/T Specialist
IBM Retired
Original Message:
Sent: Wed July 02, 2025 04:39 AM
From: Ahmed Elaimy
Subject: map policy
Dears ,
appreciate your support i have this field in xml need to get the output of map policy same as below :
<ns3:accountIdSet xmlns:ns3="http://www.banqueaudi.com/ebo/psa.cmn.Identifiers">
<ns3:accountId format="Local" domiciliation="Local">123456789</ns3:accountId>
</ns3:accountIdSet>
but i get the result as below always :
<ns3:accountIdSet> <ns3:accountId domiciliation="Local" format="Local" />
</ns3:accountIdSet>
this is the map policy mapping
actions:
- create: accountIdSet.accountId
foreach: accountIdSet
from: accountIdSet
actions:
- set: '@format'
from: accountId.format
- set: '@domiciliation'
from: accountId.domiciliation
the xml definition is :
accountIdSet:
type: array
items:
type: object
xml:
namespace:
http://www.banqueaudi.com/ebo/psa.cmn.Identifiers prefix: ns3
wrapped: true
properties:
accountId:
type: object
xml:
wrapped: true
minItems: 1
properties:
domiciliation:
xml:
namespace: ''
attribute: true
description: >-
A hint that this account id is a local, domestic, or
international institution account id
type: string
enum:
- Local
- Domestic
- International
format:
xml:
namespace: ''
attribute: true
description: An indication of the format of this accountId
type: string
enum:
- Local
- GL
- IBAN
- Other
- Unknown
- Display
- OldAccount
- OldIBAN
- FCUBSAccount
appreciate your support to solve this issue ...
i tried to make the accountId as array but didn't work also
------------------------------
Ahmed Elaimy
------------------------------