There's an explanation of DSA process:
1. If an object in the source domain is moved into the synchronization scope and a matching object is found in the target domain, then only service attribute values of the object will be applied in the target domain. The values of other attributes will be applied only if they are changed for the source object after synchronization.
2. If an object has been moved out of synchronization scope and then some its properties are modified, these changes will not be synchronized by the Directory Synchronization Agent after that object is returned to the synchronization scope. Full resynchronization is needed for these changes to be applied.
Example:
During delta-sync DSA gets only changed attributes. The wWWHomePage changed and DSA gets that value:
10/15/20 16:30:22 (GMT-05:00) Common JobID:0 -> Search filter: (&(&(wwwhomepage=Pilot)(|(&(objectClass=user)(objectCategory=user))(&(objectClass=group)(objectCategory=group))(&(objectClass=inetOrgPerson)(objectCategory=inetOrgPerson)))(!(&(objectClass=user)(&(accountExpires>=1)(accountExpires<=132471936000000000))))(!(&(|(objectClass=user)(objectClass=group)(objectClass=computer))(isCriticalSystemObject=TRUE)))(!(useraccountcontrol:1.2.840.113556.1.4.803:=2048))(|(objectClass=container)(objectClass=organizationalUnit)(!(showInAdvancedViewOnly=TRUE))))(!(isDeleted=TRUE)))
Due to userPrincipalName wasn’t changed, this attribute wasn’t passed from DirSync to DSA and wasn’t copied to the Target. DSA will get this attribute only in case of Full Re-sync or changes on Source
So it's required to use Full Re-sync or try the next workaround:
Instead of Advanced LDAP Filter (wwwhomepage=Pilot) you can state, for example, (&(wwwhomepage=Pilot)(!(userprincipalname=neverhappensvalue))) where ‘neverhappensvalue’ is some impossible value.
This will enforce UPN Attribute to be always requested from the Source even UPN is not changed during delta-sync.