After careful analysis, we have concluded that we can assume this syntax is not used outside IDM, so we consider we are free to make it evolve without too much regards for backward compatibility.
Changes to make:
- rename NameAndOptionalJsonSyntax to NameAndJsonWithIdSyntax (no change to the OID)
- the JSON blob is now mandatory
- the _id field is mandatory in the JSON blob
- change the code to reflect this
- rename all the corresponding matching rules (in JsonSchema class) to drop the "Optional"
- keep the old name as an alias, since it can be used in a mixed topology by attribute types that get replicated
- update all the IDM profile versions to use the new matching rule names
- also rename nameAndOptionalJsonEqualityMatchingRule to nameAndJsonEqualityMatchingRule and keep the old name as an alias
- be careful: renaming the matching rules will also rename the index, so should we instead add the new name as an alias?
- change the code to reflect this. Make sure that the normalized values are the same. If not possible, add an upgrade task to rebuild-indexes?
- mark all the syntaxes and matching rules with X-STABILITY 'internal'