Controlling Mod and NoMod of Proxyaddresses (or any multi-valued attribute, appendmulti)
Created: 2012-04-20 08:09:59Modified: 2020-11-13 10:45:51
Tags: Features UnitySync
By design, the Sync process is such that the Source directory is the authoritative source for all synced attributes. Therefore, any manual change made to the Destination object will be overwritten the next time the sync modifies the Destination object.
Generally, we don’t recommend you try to circumvent this default behavior.
There are two ways, however, that you may override this default behavior. These options are not very commonly used, so you should consider and test them carefully to make sure they are right for your environment and provide the desired result.
(1) Set proxyaddresses as a no-mod-attrib:
A no-mod attrib is an attribute that will only ever be set on object creation, but not modified on subsequent syncs.
So, this option would allow the Sync process to set proxyaddresses when the Destination object is initially created but then NOT be changed on any future Syncs. This would prevent manual changes to the Destination proxyaddresses from being overwritten by a future Sync.
Note: If you enable this option on a connection configured to Sync/Join mode Both, the Source proxyaddresses will never sync. When a Source object joins to a Destination object, the Destination proxyaddresses will stay unchanged.
To accomplish this, you will need to manually edit the Raw Config of your connection.
Since no-mod attribs are default values that aren’t often changed, you won’t find a line for it in the Raw Config (on the Custom tab). Adding the line and including proxyaddresses serves to add it to the default list of no-mod attribs. Note that this should be entered as one long line, with no spaces and no carriage returns.
No-Mod-Attribs=proxyaddresses,grouptype,objectclass,instancetype,samaccountname,userprincipalname,name,cn,msExchHomeServerName,homeMTA,homeMDB,msexchmasteraccountsid;binary,msexchuseraccountcontrol,useraccountcontrol,pwdlastset
(2) Configure proxyaddresses as an AppendMulti attribute:
AppendMulti attributes will be forced into append-only mode. This means the multi-valued attribute will not be replaced as in a normal modification (which overwrites all Destination values) but, instead, the Source proxyaddresses will be appended to the existing Destination proxyaddresses. This maintains the Destination proxyaddresses and adds the Source proxyaddresses.
Note: *This means proxyaddresses will never be removed from the destination object by the sync, only added/appended.
To enable appendmulti:
In your connection, go to the Custom tab.
Click Raw Config.
Enter the following line (anywhere).
appendmulti=proxyaddresses
Click SAVE.
Note: If you are going to use either of the above solutions for controlling modification of proxyaddresses, we strongly recommend that you test it in your environment by creating a test connection with a single object and running the Sync several times while also making changes to the proxyaddresses on the Source to understand what will happen.