3.1.1.5.4.1.2 Constraints
For originating updates, the following constraints MUST be satisfied for the Modify DN operation. These constraints are not enforced for replicated updates.
DeleteOldRDN = TRUE. Otherwise, the server returns the error unwillingToPerform / ERROR_INVALID_PARAMETER.
OldDN ≠ NULL. Otherwise, the server returns the error noSuchObject / ERROR_DS_OBJ_NOT_FOUND.
NewRDN ≠ NULL. Otherwise, the server returns the error protocolError / ERROR_INVALID_PARAMETER.
All naming constraints on NewRDN MUST be satisfied. This is explained in section 3.1.1.3.1.2.
O is present. Otherwise, the server returns the error noSuchObject / ERROR_DS_OBJ_NOT_FOUND.
NP is present. Otherwise, the server returns the error other / ERROR_DS_NO_PARENT_OBJECT.
Both O and NP MUST be within the same NC Replica. Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION.
NP is not equal to O or a descendant of O. If it is, then the server returns unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION.
(O is in the System container) if and only if (NP is the System container or an object inside the System container). Otherwise, the server returns the error other / ERROR_DS_UNWILLING_TO_PERFORM if the DC functional level is DS_BEHAVIOR_WIN2000, and the error other / ERROR_DS_DISALLOWED_IN_SYSTEM_CONTAINER if the DC functional level is DS_BEHAVIOR_WIN2003 or greater.
O is not an LSA-specific object (section 3.1.1.5.2.3). Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION.
O!isDeleted ≠ TRUE. Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION.
O MUST not be NC root. Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION if the DC functional level is DS_BEHAVIOR_WIN2000, and unwillingToPerform / ERROR_DS_MODIFYDN_DISALLOWED_BY_INSTANCE_TYPE if the DC functional level is DS_BEHAVIOR_WIN2003 or greater.
If (O is in config NC) and (operation is rename), then (O!systemFlags & FLAG_CONFIG_ALLOW_RENAME ≠ 0). Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION if the DC functional level is DS_BEHAVIOR_WIN2000, and unwillingToPerform / ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG if the DC functional level is DS_BEHAVIOR_WIN2003 or greater.
If (O is in config NC) and (operation is move), then either (O!systemFlags & FLAG_CONFIG_ALLOW_MOVE ≠ 0) or ((((O!parent)!parent)!parent before and after move is the same) and (O!systemFlags & FLAG_CONFIG_ALLOW_LIMITED_MOVE ≠ 0)). Otherwise, the server returns the error unwillingToPerform / ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG. The FLAG_CONFIG_ALLOW_LIMITED_MOVE flag is used to move server objects between site containers.
If (operation is move) and (O is in schema NC), then the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION if the DC functional level is DS_BEHAVIOR_WIN2000, and unwillingToPerform / ERROR_DS_NO_OBJECT_MOVE_IN_SCHEMA_NC if the DC functional level is DS_BEHAVIOR_WIN2003 or greater.
If (O is a classSchema object) or (O is an attributeSchema object), then (O!systemFlags & FLAG_SCHEMA_BASE_OBJECT = 0). Otherwise, if the fschemaUpgradeInProgress field is FALSE on the LDAPConnection instance in dc.ldapConnections ([MS-DRSR] section 5.116) corresponding to the LDAP connection on which the operation is being performed then the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_BASE_SCHEMA_MOD.
If (O is in domain or schema NCs) and (operation is rename) and (attribute O!systemFlags is present), then (O!systemFlags & FLAG_DOMAIN_DISALLOW_RENAME = 0). Otherwise, the server returns the error unwillingToPerform / ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG.
If (O is in domain NC) and (operation is move) and (attribute O!systemFlags is present), then (O!systemFlags & FLAG_DOMAIN_DISALLOW_MOVE = 0). Otherwise, the server returns the error unwillingToPerform / ERROR_DS_ILLEGAL_MOD_OPERATION if the DC functional level is DS_BEHAVIOR_WIN2000, and unwillingToPerform / ERROR_DS_MODIFYDN_DISALLOWED_BY_FLAG if the DC functional level is DS_BEHAVIOR_WIN2003 or greater.
The object class of O MUST satisfy the possSuperiors schema constraint for the objectClass of NP. Schema constraints are explained in Restrictions on schema extensions in section 3.1.1.2.
There exists no object CC such that CC!parent = NP, CC!name = O!name, and CC ≠ O. Otherwise, the server returns the error entryAlreadyExists / ERROR_DS_OBJ_STRING_NAME_EXISTS.