diff --git a/app/src/Model/Table/PipelinesTable.php b/app/src/Model/Table/PipelinesTable.php index edeaf910c..78a658853 100644 --- a/app/src/Model/Table/PipelinesTable.php +++ b/app/src/Model/Table/PipelinesTable.php @@ -519,7 +519,7 @@ public function execute( // (4) Sync the External Identity attributes with the Person record $person = $this->syncPerson( $pipeline, - $externalIdentity, + $externalIdentity->id, $person ); @@ -1396,17 +1396,38 @@ protected function syncExternalIdentity( * Sync an External Identity to a Person. * * @since COmanage Registry v5.0.0 - * @param Pipeline $pipeline Pipeline - * @param ExternalIdentity $externalIdentity External Identity - * @param Person $person Person - * @return Person Person + * @param Pipeline $pipeline Pipeline + * @param int $externalIdentityId External Identity ID + * @param Person $person Person + * @return Person Person */ protected function syncPerson( Pipeline $pipeline, - ExternalIdentity $externalIdentity, + int $externalIdentityId, Person $person ): Person { + // We re-pull the External Identity to account for any changes that might have + // been processed by syncExternalIdentity. + $externalIdentity = $this->Cos->People->ExternalIdentities->get( + $externalIdentityId, + ['contain' => [ + 'Addresses', + 'AdHocAttributes', + 'EmailAddresses', + 'Identifiers', + 'Names', + 'Pronouns', + 'TelephoneNumbers', + 'Urls', + 'ExternalIdentityRoles' => [ + 'AdHocAttributes', + 'Addresses', + 'TelephoneNumbers' + ] + ]] + ); + // Because ExternalIdentities belongTo People, we can assume we have at least // a Person object here (it would have been created by obtainPerson if there // wasn't one at the start of the process).