Generally, when modelling archetypes as opposed to templates, any text value set is modelled as DV_CODED_TEXT, not DV_TEXT. The codes are automatically assigned as at-codes. In templates you can however add value sets to DV_TEXT elements.
The original Archetype Editor did initially support lists of text but the functionality was removed, as it was felt it was not good practice, certainly at archetype level.
Our policy now is always to add coded lists at template level, even if this is just a pseudo-coded list.
Last week I also have a case where I needed to constraint the DV_IDENTIFIER.type and that should be a C_STRING from the AOM. In my case I needed to use the C_STRING.list constraint, since `type` is a String, we can’t apply a DV_CODED_TEXT/CODE_PHRASE constraint to it, but the AD doesn’t allow to constraint those Strings, so I needed to manually modify the ADL to generate a valid constraint. I also needed to generate my own ADL > OPT generator since if I add the modifier archetype to the AD and I create and export the OPT there, the constraint disappears.
Though back to the constraint, while playing around I found some strange behavior: the C_STRING.list is actually allowed in some places, like PARTY_REF.type, but as said, it’s not allowed everywhere where there is a String in the RM, like in the DV_IDENTIFIER fields.