Date: Thu, 28 Mar 2024 12:56:42 +0000 (UTC) Message-ID: <562674347.6339.1711630602987@ip-10-10-7-29.ec2.internal> Subject: Exported From Confluence MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_Part_6338_765966597.1711630602985" ------=_Part_6338_765966597.1711630602985 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Content-Location: file:///C:/exported.html
COmanage Registry is capable of automatically assigning identifiers for = objects within COs. Identifiers may be assigned on demand, as part of an En= rollment Flow, or as part of a Pipeline. If you only want to assign identif= iers manually (ie: without the help of auto assignment), this page does not= apply to you.
Identifiers can be automatically assigned to CO Person records, not to O= rganizational Identity records. If you don't know what this means, review <= a href=3D"/display/COmanage/Understanding+Registry+People+Types">Understand= ing Registry People Types. As of Registry v3.3.0, identifiers can autom= atically be assigned to CO Groups and CO Departments.
Identifier Assignments generally assume a roman character set (ie: ASCII= -7, not UTF-8).
See also: Exp= ectations For Identifiers
As of Registry v3.3.0, Identifier Assignments apply within contexts. The= supported contexts are
Identifier Assignments will only be applied to objects of the specified = context. Prior to v3.3.0, Identifier Assignments only applied to CO Person = records.
Assigning Identifiers to Automatic CO Groups requires Registry v4.1.0 or later.= p>
To define an identifier assignment, select Identifier Assignments from your CO's menu. Any already defined assignments will be listed. Cli= ck Add Identifier Assignment to create a new one.
Fill in the form, paying careful attention to the following fields:
109
or 523788
.mt_getrandmax()
function, which=
is likely 2,147,483,647.To understand identifier formats, you should understand the following co= ncepts:
j.smith
with a coll=
ision number added becomes (eg) j.smith.3
. Collision numbers c=
an be assigned sequentially or randomly.Identifier formats can be a bit tricky, so let's start with the easier o=
nes. The parameter (#)
means "replace with a collision number"=
. A collision number is the next number that will generate a uniqu=
e identifier. If your identifier is assigned using the sequential algorithm=
, it is the next unassigned integer beginning with the minimum val=
ue you configured. For identifiers assigned using the random algorithm, the=
collision number is selected randomly. Only one collision number is permit=
ted in a format.
For example, if a format is specified like C(#)
, then the c=
haracter C
will be prefixed to the collision number, eg =
C109
or C523788
.
The collision number can be made fixed width by specifying the number of=
characters n in the parameter as (#:
n=
)
. For example, the format C(#:8)
will gen=
erate C00000109
or C00523788
.
It is also possible to generate identifiers based on one or more compone= nts of a CO Person name (as defined in cm_names). The following parameters are available:
(G)
: Given Name(M)
: Middle Name(F)
: Family Name(g)
: Given Name (lowercased)(m)
: Middle Name (lowercased)(f)
: Family Name (lowercased)For CO Department and CO Groups, the name of the Department or Group may= be used:
(N)
: Object Name(n)
: Object Name (lowercased)So (G).(F)@myvo.org
might generate Albert.Einstein@my=
vo.org
. To use initials instead of a full name, simply limit the len=
gth of the name to 1 character. (g:1).(f)@myvo.org
would gener=
ate a.einstein@myvo.org
instead.
As of Registry v3.3.0, existing identifiers can be embedded in the forma=
t string, using the parameter (I/name)
where name is =
the alphanumeric name of the Extended Type (not the display name), for example
Note that while a length specifier for (#)
specifies a fixe=
d width padded with zeros, when used with name-based parameters such as
As of Registry v3.3.0, several types of random strings can be generated:=
(h)
: Hexadecimal characters (0-9a-f)(L)
: Random letters (A-Z, but no O to avoid confusion with=
zero)(l)
: Random letters (a-z, but no l to avoid confusion with=
one)Random substitutions support width specifiers, so (eg) (l:5)
will generate a five character string of lowercase letters, such as hxnwp
.
It's important = to understand the difference between random substitutions and collision num= bers. Random substitutions are generated once as part of the identifier con= struction, and are not guaranteed to make a unique string. In contrast, if = a collision number does not generate a unique string, it will be replaced u= ntil a unique string is found (or a limit is reached).
Random sequences can, and probably should, be combined with collision nu=
mbers. For example, (L:3)(#:2)
will generate a string like DGP
) will be preserved, but a new collision number will=
be generated, resulting in an Identifier like DGP77
.
These formats can't guarantee a unique identifier if your organization i=
s non-trivial in size, so a collision number should be added. (G).(F)=
(#)@myvo.org
would generate Albert.Einstein1@myvo.org
.<=
/p>
The problem here is you might not want to append a number for the first =
Albert.Einstein
, only for the second. Or you might want to try=
a middle name first. The solution is to add a sequenced segment. =
A sequenced segment is denoted in brackets as a number followed by a colon,=
and includes the text (including parameters) to be used when that sequence=
d segment is in effect. When assigning identifiers, all sequenced segments =
will initially be ignored. Then, starting with 1
and increment=
ing by 1 each time, sequenced segments will be added in until a unique iden=
tifier is generated. Currently, up to 9 sequenced segments may be defined.<=
/p>
For example, consider the format (G)[1:.(M:1)].(F)[2:.(#)]@myvo.or=
g
. This somewhat confusing string will first generate Werner.H=
eisenberg@myvo.org
. If that isn't unique, it will then generate Wern=
er.K.Heisenberg.1@myvo.org
. You should probably set the minimum valu=
e in the identifier assignment configuration to start at 2 when used with s=
equenced segments. That would generate Werner.K.Heisenberg.2@myvo.org=
instead, which is presumable less confusing if there is already a <=
code>Werner.K.Heisenberg@myvo.org assigned.
As of v2.0.0, there are two types of sequenced segments: additi=
ve and single use. Additive sequenced segments are =
denoted with [
and ]
, and are=
inserted starting with their designated sequence and remain in place for f=
uture identifier attempts. Single use sequenced segments are indicated with=
an additional =3D
inserted after the open bracket. =
So, for example, the segment [1:.(M:1)]
will be inse=
rted into the second and each subsequently generated identifier candidate, =
while the segment [=3D1:.(M:1)]
will only be inserte=
d into the second generated candidate (and no subsequent candidates).
The good news is you may not need to know all of this. Various common de= fault formats are available via a drop down menu, and you may be able to ju= st use one of those.
The substitutions described above are controlled by the permitted ch= aracters. Consider someone with the given name "Mary Anne" and the fam= ily name "Johnson-Smith". You might not want to allow spaces and dashes in = the generated identifier, so specifying "AlphaNumeric Only" as the permitte= d characters will result in identifiers like "maryanne.johnsonsmith" instea= d of "mary anne.johnson-smith". "AlphaNumeric and Dot, Dash, Underscore" wo= uld generate "maryanne.johnson-smith".
Furthermore, if any sequenced segment generates text consisting= only of non-permitted characters, it will be skipped.
Auto-gener= ated identifiers are subject to Identifier Validation. Identifier Validator Plugins can b= e used to further constraint auto-generated identifiers.
Identifiers can be assigned on demand by viewing the identifiers associa= ted with the CO Department, CO Group, or CO Person. An Assign Identifie= rs button will be available.
It is also possible to autogenerate identifiers for all CO Departments, = CO Groups, and CO People (via CO > Configuration > Ident= ifier Assignments&= nbsp;> Autogenerate Identifiers For All). How this = operation is handled depends on the version:
When a petition created from an enrollment flow is approved, any identif= ier assignments defined for the CO will automatically be run.
Similarly, when a CO Person is created via Registry Pipelines, identifier assignment defined f= or the CO will automatically be run.
For CO Departments and CO Groups, identifier assignments will automatica= lly be run when a new Department or Group is added. This is not true for CO People =E2=80=93 identifier assignments are only run fo= r CO People as described above.
Identifiers can be reassigned if the original identifier was actually de= leted (as opposed to being set to status suspended). If you do not= wish identifiers to be reassigned, set the status of identifiers that are = no longer needed to suspended; do not actually delete them.
You don't need = this section unless you know you need this section.
It is possible to manually prepopulate sequential collision numbers, whi= ch may be useful if you are migrating data from another system. There is no= t currently a user interface to handle this (CO-386), so the ste= ps must be assigned manually.
First, if you haven't already, define the Identifier Assignment as descr= ibed above. You will need the ID for the Identifier Assignment you wish to = work with. In a URL like the following, the ID is 3:
http://localhost/registry/co_identifier_assignm= ents/edit/3/co:2
Next, determine the affix or affixes. These are equivalent to the format=
with parameters substituted (with %s
replacing (#)). For example, a format used to generate identifiers consisting of a per=
son's initials might be
(G:1)(M:1)(F:1)(#)
. You would need to =
create a row for each initial sequence you wish to set the sequenc=
e number for. eg:
SQL>= insert into cm_co_sequential_identifier_assignments (co_identifier_assignment_id, last, affix) values (3, 122, 'jms%s'); SQL> insert into cm_co_sequential_identifier_assignments (co_identifier_assignment_id, last, affix) values (3, 176, 'rdm%s'); SQL> insert into cm_co_sequential_identifier_assignments (co_identifier_assignment_id, last, affix) values (3, 143, 'rlm%s');
Note that rows in this table are not automatically created until an iden= tifier with a given affix is assigned.