diff --git a/src/main/java/com/commercetools/sync/customers/utils/CustomerReferenceResolutionUtils.java b/src/main/java/com/commercetools/sync/customers/utils/CustomerReferenceResolutionUtils.java index e8d22450a..29d8183ae 100644 --- a/src/main/java/com/commercetools/sync/customers/utils/CustomerReferenceResolutionUtils.java +++ b/src/main/java/com/commercetools/sync/customers/utils/CustomerReferenceResolutionUtils.java @@ -111,7 +111,7 @@ private static CustomerDraft mapToCustomerDraft( .dateOfBirth(customer.getDateOfBirth()) .isEmailVerified(customer.getIsEmailVerified()) .vatId(customer.getVatId()) - .addresses(mapToAddressesDraft(customer.getAddresses())) + .addresses(mapToAddressesDraft(customer.getAddresses(), referenceIdToKeyCache)) .defaultBillingAddress( getAddressIndex(customer.getAddresses(), customer.getDefaultBillingAddressId())) .billingAddresses( @@ -143,7 +143,9 @@ private static CustomerGroupResourceIdentifier mapToCustomerGroupResourceIdentif return null; } - private static List mapToAddressesDraft(@Nonnull List
addresses) { + private static List mapToAddressesDraft( + @Nonnull List
addresses, + @Nonnull final ReferenceIdToKeyCache referenceIdToKeyCache) { if (addresses.isEmpty()) { return emptyList(); } @@ -178,8 +180,9 @@ private static List mapToAddressesDraft(@Nonnull List
addr .externalId(address.getExternalId()); if (address.getCustom() != null) { - builder.custom( - CustomFieldsDraftBuilder.of().fields(address.getCustom().getFields()).build()); + CustomFieldsDraft draft = + mapToCustomFieldsDraft(address.getCustom(), referenceIdToKeyCache); + builder.custom(draft); } return builder.build(); }) diff --git a/src/main/java/com/commercetools/sync/customers/utils/CustomerTransformUtils.java b/src/main/java/com/commercetools/sync/customers/utils/CustomerTransformUtils.java index bc8b9ea4e..422f50653 100644 --- a/src/main/java/com/commercetools/sync/customers/utils/CustomerTransformUtils.java +++ b/src/main/java/com/commercetools/sync/customers/utils/CustomerTransformUtils.java @@ -3,6 +3,7 @@ import static java.util.stream.Collectors.toSet; import com.commercetools.api.client.ProjectApiRoot; +import com.commercetools.api.models.common.Address; import com.commercetools.api.models.common.Reference; import com.commercetools.api.models.customer.Customer; import com.commercetools.api.models.customer.CustomerDraft; @@ -84,6 +85,17 @@ private CompletableFuture transformCustomTypeReference( .map(Reference::getId) .collect(toSet()); + final Set setOfAddressCustomTypeIds = + customers.stream() + .flatMap(c -> c.getAddresses().stream()) + .map(Address::getCustom) + .filter(Objects::nonNull) + .map(CustomFields::getType) + .map(Reference::getId) + .collect(toSet()); + + setOfTypeIds.addAll(setOfAddressCustomTypeIds); + return fetchAndFillReferenceIdToKeyCache(setOfTypeIds, GraphQlQueryResource.TYPES); }