contractId vs key use cases / patterns for establishing parent-child relationships

Off the top of my head, using the org and department example, seems like best method is to use keys.

For example, you create an org contract with the name “BadlySpelledOrgName”, then a department contract.

If the department contract references the “BadlySpelledOrgName” via contract ID, and the org updates the name, or any field, a new contarct ID is generated (since we are essentially archiving this org contract, and creating a new org contract with the updated fields) and now, this department contract is referencing a non existent contract ID.

As long as there is some relationship between two contracts, I’d suggest to never use Contract ID as a reference key.