3.3.5.2.3 Foreign Identifiers

Clients MUST generate foreign identifiers to identify changes to objects in the local replica. Foreign identifiers are represented as XID structures, as specified in section 2.2.2.2, and MUST NOT have the same byte length as GID structures ([MS-OXCDATA] section 2.2.1.3); that is, the number of bytes in the LocalId field that follows a NamespaceGuid field in the XID structure MUST be different from the size of GLOBCNT structure, as specified in section 2.2.2.5, which is 6 bytes. At the same time, foreign identifiers that share values for the NamespaceGuid field MUST have LocalId fields of the same length.

Clients MUST create foreign identifiers within the values of the NamespaceGuid fields they generated, and MUST NOT use any REPLGUID structures returned by a server for that purpose.

Foreign identifiers MUST have the same qualities as internal identifiers: they MUST be unique, MUST NOT ever be reused and MUST be guaranteed to increase for any new change, or use a different GUID. This is important for conflict detection, as specified in section 3.1.5.6.1.