Resolving 'Duplicate mapping' error (Event 6301) for 'Title' property in SharePoint user Profile Service Application property Mapping

How to edit Sharepoint user profile property mapping alias: Changing 'SPS-JobTitle' to 'Title' property mapping

Consider the following scenario:

In an existing User Profile Service Application (UPSA) with a synchronization connection to AD, you map 'SPS-JobTitle' to import 'Employee Type' (or any other AD attribute) and then map 'Title' property in UPSA to import an attribute in AD (for example 'Title').

You then run a full profile synchronization and wait for it to complete. The expected result is to get new values as per mapped attributes imported for 'Title' property in the SharePoint User Profiles. However, you observe that the 'Title' value of existing users is never changed and newly added users get a 'Duplicate mapping' error (Event 6301) for 'Title' property in MIISCLIENT.exe during 'SD_DeltaSync' and 'MOSS_DeltaSync' stages. Existing users having 'Title' values show no errors in FIM or ULS. However, the new attribute mapping value will not be updated.

New users will get duplicate mapping errors in Event logs.

Log Name: Application
Source: FIMSynchronizationService
Date: [ Date and Time ]
Event ID: 6301
Task Category: Server
Level: Error
Keywords: Classic
User: N/A
Computer: < servername >
Description:
The server encountered an unexpected error in the synchronization engine:

"BAIL: MMS(24436): eafam.cpp(1298): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): eafam.cpp(946): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): eafam.cpp(1013): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): amexec.cpp(1701): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): amexec.cpp(2086): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): eaf.cpp(1417): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): eaf.cpp(657): 0x80230304 (The image or dimage already has an attribute with that name.)
ERR: MMS(24436): synccoreimp.cpp(5271): 0x80230304 - export-flow failed 0x80230304
BAIL: MMS(24436): synccoreimp.cpp(5272): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(4863): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(10889): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(10573): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(2547): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(4375): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(10072): 0x80230304 (The image or dimage already has an attribute with that name.)
BAIL: MMS(24436): synccoreimp.cpp(3837)

Note: Skipping additional xml data; this data will show 'Title' property as the duplicate.

Reason behind this error:

In UPSA, following the first full sync, the 'SPS-Title' imports 'Title' from AD. 'Title' in SharePoint uses the value provided by 'SPS-JobTitle'. So, both properties in SharePoint will show the same value. Once a value is assigned to 'JobTitle', any new import mapping without clearing the existing projection (in FIM metaverse) fails to edit the existing value in FIM. This results in Sync errors on user objects affected by the mapping change.

A workaround is to first run a full sync without any mapping for 'Title' and 'JobTitle', and then map the properties as desired to AD. Run a full sync again. The steps required are listed below:

To map the 'SPS-JobTitle' property and ‘Title’ to different attributes in AD. Follow the steps given below for a new UPA

A. Create a new UPA SA using new ProfileDB, SocialDB and SyncDB.
B. Create UPSA Sync connections.
C. Edit ‘SPS-JobTitle’ and remove import mapping to ‘Title’
D. Run a full sync without any mapping for the ‘Job Title and ‘Title’.
E. Add Title =Import Title
F. Run full sync again
G. Add SPS-JobTitle = Import ‘Employee Type’
H. Run Full Syc
I. Open test users profile and observe changes.

Follow the steps given below for an existing UPA   

A. Remove existing mapping for ‘Job Title and ‘Title’.
B. Run a full sync without any mapping for the ‘Job Title and ‘Title’.
C. Add Title =Import Title
D. Run full sync again
E. Add SPS-JobTitle = Import ‘Employee Type’
F. Run Full Syc
G. Open test users profile and observe changes. The changes should take effect as required.

About ‘Title’ and Job Title:

In SharePoint 2010, the ‘Job Title (SPS-JobTitle)’ property imports ‘Title’ attribute value from AD by default. This import mapping is created by SharePoint immediately after the creation of AD sync connection in UPSA. The ‘Title’ property uses 'SPS-JobTitle' value as primary property in UPSA. If a full sync runs, both properties in User Profile get the ‘Title’ value from AD.

 

Similar issue [https://blogs.technet.com/b/steve_chen/archive/2010/10/11/user-profile-import-from-bdc-fails-on-sharepoint-server-2010-with-event-id-6301.aspx]