Skip to main content

iPaaS.com to Adobe Commerce/Magento 2 Standalone Customer Address Mapping Documentation

How a customer address reaches Adobe Commerce/Magento 2 on its own, without re-sending the whole customer, including region resolution.

Summary

Customer addresses are written from iPaaS.com into Adobe Commerce/Magento 2 on their own, without a customer transfer above them. Each iPaaS.com address becomes one Magento customer address carrying the recipient name, street, city, region, country, postal code and telephone, along with the default billing and shipping flags.

This is the standalone path. It resolves for itself which Magento customer the address belongs to, which is what lets an address change reach Magento without re-sending the whole customer. A separate child collection writes the same address data as part of a customer transfer; the two genuinely compete, and normally only one should be enabled.

ID Format

Manual Sync ID Format

Enter the iPaaS.com Customer Address record identifier — the internal numeric identifier of the address in iPaaS.com, for example 48512.

This is not the customer's identifier. Entering the customer identifier will not resolve an address record.

External ID Format

This collection writes an address against a customer that has already been linked to Adobe Commerce/Magento 2, so it does not mint a new external-ID record for the customer. The external-ID record created by the customer transfer is what this collection reads to resolve which Magento customer the address belongs to.

Deleted Record Support

Outbound delete is not supported for addresses. Removing an address in iPaaS.com does not remove the corresponding Magento address, and delete mappings are not included in the default templates for this collection.

Custom Field Support

This collection reads three iPaaS.com custom fields on the address record, which must exist by these exact names for region resolution to work:

  • M2_CustomerAdd_Regionid, M2_CustomerAdd_RegionCode, M2_CustomerAdd_Region: the region identifier, code, and name. Any one of the three can drive the lookup, and the others act as fallbacks.

Mapping Collection Status

Status: Enabled. This collection ships enabled.

Trigger Events: Creation or update of a Customer Address record in iPaaS.com, plus Manual Sync on demand.

Automatic outbound transfers are enabled on the subscription's Outbound Data Flows page. Until that flow is enabled, no addresses are sent automatically. Manual Sync is always available regardless, and because this collection stands on its own it is the way to push a single corrected address without re-sending its customer.

Duplicate or Conflicting Mappings

  • Add/Update Adobe Commerce/Magento 2 Customer Address FROM iPaaS.com writes the same Magento address data in the same direction, but as a child of the customer transfer rather than on its own. The two genuinely compete: enabling both means an address can be written twice, once with its customer and once independently. Subscribers or their MiSP should choose the model that fits their workflow and review the filters and the Add and Update settings on both before enabling them together.

The two also differ in one important respect. The child collection refuses to run at all when none of the customer's addresses is flagged as primary billing or primary shipping, stopping the customer transfer with an explicit message. This standalone collection carries no such guard — it writes whatever address it is given, including one with neither flag set.

  • Add/Update Adobe Commerce/Magento 2 Customer Address TO iPaaS.com moves address data in the opposite direction, from Magento into iPaaS.com. It is the inbound counterpart rather than a competitor, but subscribers or their MiSP who enable both should decide which system is the master for address data.

Duplicate matching

This integration implements no selectable collision-handling methods, and the behavior is not configurable on this collection. The address is written against the Magento customer resolved from the customer's external-ID record.

Unmapped field overwrite risk

Mapped fields that carry a value overwrite the matching values on the Magento address on every transfer, including values a store administrator changed by hand. The fields at risk are City, CountryId, CustomerId, DefaultBilling, DefaultShipping, FirstName, LastName, PostCode, RegionId, RegionCode, Region_, Street and Telephone.

The integration provides no guarantee that unmapped or blank fields are preserved on an address update. Subscribers or their MiSP should validate in a staging environment how fields left blank in iPaaS.com behave before relying on that behavior in production.

The mitigation is a DestinationValue. Where a Magento field must hold a specific value that iPaaS.com does not supply, set a DestinationValue on that mapping so the integration writes the value chosen there instead of taking it from the source. Values that must be maintained only in Magento should be kept on fields this collection does not map.

Supported Child Collections

None. This is a standalone collection with no parent and no children. It writes a single Magento address per record and has no subordinate data to contribute.

System Caveats

Adobe Commerce/Magento 2 Caveats

  • The customer must already exist in Magento. This collection resolves an existing Magento customer and writes an address against it; it never creates one. Customers are created by the customer collection, which must run first.

  • The street is written as a single pipe-separated value. The three iPaaS.com address lines are concatenated with a vertical bar rather than written as individually separated Magento street lines.

  • Magento expects a default billing or shipping address on a customer. This collection does not enforce that. An address written here with neither flag set leaves the customer without a default if no other address supplies one.

  • Address writes are subject to Magento's API limits. Stagger large manual catch-up runs rather than issuing them concurrently.

iPaaS.com Caveats

  • The customer's external-ID record must be intact. The Magento customer is resolved from the record linking the iPaaS.com customer to its Magento counterpart. If that link is missing, the address cannot be written.

  • The region custom fields must exist by their exact names for region resolution to work. An unmatched region leaves the region unset without raising an error.

  • The recipient name, city and postal code are required. An address cannot be written without them.

Integration-Specific Caveats

  • An address whose customer has not transferred cannot be written. The Magento customer cannot be resolved, so the address does not land.

  • Region resolution fails silently. Where none of the three region custom fields resolves against the address country, all three region mappings return nothing and the region is simply left unset.

  • This collection and the customer transfer's address child overlap. Running both writes some addresses twice.

Setup Requirements

Adobe Commerce/Magento 2 Configuration

  • Confirm the customers these addresses belong to already exist in the store.

iPaaS.com Configuration

  • Transfer the customers before enabling this collection, so the customer link exists for each address.

  • Create the address custom fields M2_CustomerAdd_Regionid, M2_CustomerAdd_RegionCode and M2_CustomerAdd_Region, and populate at least one of them per address.

  • Decide whether addresses are written through this collection or through the customer transfer's address child, and enable only one.

  • Confirm each customer ends up with a default billing or shipping address, since this collection does not enforce it.

  • Enable the outbound flow for Adobe Commerce/Magento 2 customer addresses on the subscription's Outbound Data Flows page.

Full step-by-step setup instructions are in the Adobe Commerce/Magento 2 Installation Instructions article.

Integration Flow

  1. A Customer Address record is created or updated in iPaaS.com, or a Manual Sync is run against one.

  2. The address is processed by this collection. It carries no filter, so every address record is processed.

  3. The Magento customer the address belongs to is resolved from the record linking the iPaaS.com customer to its Magento counterpart. If no link exists, the address cannot be written.

  4. The country is resolved to its Magento country identifier, and the region is resolved from the address custom fields and validated against that country.

  5. The three iPaaS.com address lines are concatenated into a single street value.

  6. The address is created or updated on the Magento customer, carrying the default billing and shipping flags as supplied.

Mappings

Add/Update Adobe Commerce/Magento 2 Standalone Customer Address FROM iPaaS.com

iPaaS.com data type: Customer Address

This collection carries no mapping filter — every iPaaS.com Customer Address record is processed. Note that the equivalent child collection beneath the customer transfer does carry a filter, which stops the transfer when no address on the customer is flagged primary; this collection has no such guard.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Adobe Commerce/Magento 2)

Description

Dynamic Formula

var customerExternalId = await GetExternalIdAsync(CustomerId, "Customer", SpaceportSystemId); if(!string.IsNullOrWhiteSpace(customerExternalId)) return int.Parse(customerExternalId); return null;

CustomerId

Required. Identifies which Magento customer the address belongs to, resolved from the record linking the iPaaS.com customer to its Magento counterpart. An address whose customer has not transferred cannot be written.

Field

FirstName

FirstName

Required. The address contact's first name.

Field

LastName

LastName

Required. The address contact's last name.

Field

City

City

Required. The address city.

Field

PostalCode

PostCode

Required. The address postal code.

Dynamic Formula

var countryId = await GetCountryCode(Country); return countryId?.ToString();

CountryId

Required. Resolves the Magento country identifier from the iPaaS.com address country.

Dynamic Formula

var concatenatedAddress=""; concatenatedAddress = (!string.IsNullOrEmpty(Address1)==true ? Address1 :"") + (!string.IsNullOrEmpty(Address2)==true ? "\|"+Address2:"") + (!string.IsNullOrEmpty(Address3)==true ? "\|"+Address3:""); return concatenatedAddress;

Street

Required. Concatenates the three iPaaS.com address lines into a single value separated by vertical bars, skipping any that are empty.

Dynamic Formula

Region identifier lookup — see the region resolution note below

RegionId

Required. Resolves the Magento region identifier for the address from the region custom fields. An unmatched region leaves this unset without raising an error.

Dynamic Formula

Region code lookup — see the region resolution note below

RegionCode

Required. Resolves the Magento region code for the address.

Dynamic Formula

Region name lookup — see the region resolution note below

Region_

Required. Resolves the Magento region name for the address.

Field

PhoneNumber

Telephone

Recommended. The address telephone number.

Field

IsPrimaryBilling

DefaultBilling

Recommended. Marks the address as the customer's default billing address in Magento.

Field

IsPrimaryShipping

DefaultShipping

Recommended. Marks the address as the customer's default shipping address in Magento.

Region resolution

The three region mappings share one lookup. Each reads the same three address custom fields — M2_CustomerAdd_Regionid, M2_CustomerAdd_RegionCode and M2_CustomerAdd_Region — together with the address country, and passes all of them to a region lookup that validates the region against that country. The lookup returns the identifier, the code and the name, and each mapping takes its own part of that result.

Any one of the three custom fields can drive the lookup, and the others act as fallbacks: if the region identifier is missing or wrong, the code or the name is used instead. If none of them resolves against the country, all three mappings return nothing and the region is left unset — silently, with no error raised.

The full lookup, as it appears on the RegionId mapping:

var regionId = GetCustomFieldValue(CustomFields, "M2_CustomerAdd_Regionid");
var regionCode = GetCustomFieldValue(CustomFields, "M2_CustomerAdd_RegionCode");
var regionName = GetCustomFieldValue(CustomFields, "M2_CustomerAdd_Region");
var countryId = Country;
if (!string.IsNullOrEmpty(regionId)|| !string.IsNullOrEmpty(regionCode) || !string.IsNullOrEmpty(regionName) && !string.IsNullOrEmpty(countryId)) {
    var regionList = await GetRegionByCountryCode(Country, regionId , regionCode, regionName);
    if (regionList != null && regionList.Count > 0)
    {
        return int.Parse(regionList[0]);
    }
}
return null;

The RegionCode and Region_ mappings are identical except that they take the second and third values from the returned list respectively, and return them as text rather than as a number.

Error Handling

The full catalog of messages this integration produces, with causes and resolutions, is in the Adobe Commerce/Magento 2 Error Messages article. The conditions most often seen on this transfer are:

  • An existing customer address could not be linked. The address could not be matched to an existing Magento address for update. Resolution: review the address in Magento and re-run.

  • An address that does not appear in Magento. The customer could not be resolved, most often because the customer has not transferred. Resolution: transfer the customer, then re-send the address.

  • An address that arrives with no region. None of the three region custom fields resolved against the address country. This raises no error. Resolution: populate a region identifier, code or name that is valid for that country.

Errors are reported under Dashboard / Integration Monitoring / Error Logs.

Testing & Validation

Test Scenarios

  1. Create an address in iPaaS.com for a customer that has already transferred, and confirm it appears on the correct Magento customer.

  2. Manually sync using the iPaaS.com Customer Address record identifier and confirm it resolves; confirm the customer identifier does not.

  3. Create an address for a customer that has not transferred, and confirm the address does not land.

  4. Update the address in iPaaS.com and confirm the same Magento address is updated rather than a duplicate created.

  5. Populate each of the three region custom fields in turn and confirm the region resolves from any one of them.

  6. Populate a region that does not exist in the address's country and confirm the region is left unset with no error.

  7. Enter three address lines and confirm the Magento street value carries all three separated by vertical bars.

  8. Write an address with neither primary flag set and confirm it is accepted here, unlike through the customer transfer's address child.

  9. If the customer transfer's address child is also enabled, transfer the same address through both and confirm the effect.

Validation Checklist

  • The customers these addresses belong to have transferred before this collection is enabled.

  • The address region custom fields exist, exactly as named, and at least one is populated per address.

  • Only one of this collection and the customer transfer's address child is enabled.

  • Each customer ends up with a default billing or shipping address, since this collection does not enforce it.

  • A decision has been recorded on which system is master for address data, if both directions are enabled.

Additional Notes

  • This is the path to use when an address change should reach Magento without re-sending the whole customer.

  • Unlike the customer transfer's address child, this collection does not require any address to be flagged primary. That makes it more permissive, and means it will not prevent a customer ending up without a Magento default address.

  • Street lines reach Magento as a single pipe-separated value rather than as separate street lines.

  • Validate the blank-field behavior and the region resolution in a staging environment before enabling automatic transfers in production.

Related Documents

Did this answer your question?