Conditionally Mandatory and TS-0001 clause 9.6.26.3
The phrase "Conditionally Mandatory" is used in table 9.6.26.3-1 and 3.3 gives CM as an abbreviation for "Conditional Mandatory" but neither term is defined or used anywhere else in TS-0001.
It's not clear whether the Conditional word means
- "Mandatory (i.e. 1 rather than 0..1) in an xxxAnnc resource type if it's defined for the original xxx resource type, and absent otherwise"
- "Optional (i.e. 0..1) in an xxxAnnc type if it's defined for the original xxx resource type, but there are conditions where it is required to be present in the xxxAnnc instance (such as if the value is actually present in the original xxx instance).
Clause 9.5.0 says:
The attributes for in the attribute table can have the following set of values:
• MA (Mandatory Announced): The attribute in the original resource is announced to the announced resource. The content of such an announced attribute is the same as the content of the original attribute.
• OA (Optional Announced): The attribute in the original resource may be announced to the announced resource depending on the contents of the announcedAttribute attribute at the original resource. The content of such an announced attribute is the same as the content of the original attribute.
• NA (Not Announced): The original attribute is not announced to the announced resource.
These are all clear, except what happens with an MA attribute that has 0..1 cardinality. What gets written into the Announced resource if there isn't a value in the original resource?
- Nothing?
- A NULL value?
- Something else (e.g. defined by local policy or copied from a parent resource)?
There are several universal/common attributes that are like this, and the way that some (but not all) are to be handled is described in 9.6.26.2 and 9.6.26.3.
The resource-specific attributes are mainly OA or NA but there are a few that are 0..1 MA e.g. mgmtSchema in and there is no description of how they are to be handled. In the XSDs we have made them 0..1 in the Annc object on the assumption that nothing is to be written if there is no value in the original resource.
I suggest the following:
-
Update 9.6.26.1 to say that if an MA attribute is not present in the Original Resource then the default action is not to include it in the announced resource, unless there is a statement to the contrary elsewhere in 9.6.
-
We should say something similar about what happens for a missing OA attribute. I assume it doesn't appear in the announced resource, but does it still appear in the announcedAttribute list?
-
Add a clarification to 9.6.26.3 to say that the common attributes listed are only defined for the xxxAnnc resource type if they are also defined for the original type and remove the "Conditionally Mandatory" term from table 9.6.26.3-1
- accessControlPolicyIDs should be Mandatory (to match the Description)
- Clarify the stateTag attribute. It's NA on the 3 original resources that use it, so do we need it on the Annc resource? If so is it used to show changes of the Annc resource? I get the feeling it should either by Mandatory or Not Present in an Annc resource
- labels should be Optional, but keep the explanation in the description that says "that "the attribute shall exist in the announced resource if it is present in the original resource."
- registrationStatus doesn't belong here as it isn't a common attribute.