{"id":8842,"date":"2023-07-12T15:36:52","date_gmt":"2023-07-12T14:36:52","guid":{"rendered":"https:\/\/www.threesl.com\/blog\/?p=8842"},"modified":"2023-08-02T12:26:57","modified_gmt":"2023-08-02T11:26:57","slug":"purpose-of-pduids-in-3sl-cradle","status":"publish","type":"post","link":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/","title":{"rendered":"Purpose of PDUIDs"},"content":{"rendered":"<p>This is the first in a short series of posts that explain <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#workbench\/other\/pduid.htm?Highlight=pduid\">Project Database Unique IDs (PDUIDs)<\/a>. This post explains the purpose of PDUIDs and their structure. Later posts will explain:<\/p>\n<ul>\n<li>How PDUIDs can be viewed<\/li>\n<li>How they can be used in operations in Cradle tools, <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#headingpages\/workingapi.htm\">API<\/a> and <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#headingpages\/web_services.htm\">WSI<\/a><\/li>\n<li>How PDUIDs can be changed or preserved when information is moved between databases<\/li>\n<\/ul>\n<h2>Identifying Information<\/h2>\n<p>Each piece of information must be distinguishable from all other pieces of information so we can be sure we have found what we were searching for. We do this by marking each piece of information in a unique way.<\/p>\n<p>For information in databases, the markings are unique values called <strong><em>keys<\/em><\/strong> or <strong><em>identities<\/em><\/strong>. A piece of information can have multiple identities, each for a different purpose. For example, although a company\u2019s payroll system is likely to identify each person by a unique Employee ID, each person\u2019s details will also include their governmental tax ID (such as a <a href=\"https:\/\/en.wikipedia.org\/wiki\/National_Insurance_number\">National Insurance number<\/a>, a <a href=\"https:\/\/www.gov.uk\/find-utr-number\">Unique Taxpayer Reference<\/a>, a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Social_Security_number\">Sozialversicherungsnummer<\/a> or a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Social_Security_number\">Social Security Number<\/a>). This tax ID will also be unique and so could also be used as an identity for that person\u2019s information.<\/p>\n<p>Cradle has two forms of identity, <strong><em>item identities<\/em><\/strong> and <strong><em>Project Database Unique IDs<\/em><\/strong> (PDUIDs).<\/p>\n<h3>Database and Host Identities<\/h3>\n<p>Every Cradle system has a <strong>Cradle Database Server<\/strong> (<a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#servers\/cds.htm\">CDS<\/a>) to manage the information in its databases. The CDS is locked to a <strong><em>Host ID<\/em><\/strong>, the last 8 digits of the MAC address of the host&#8217;s primary network interface.<\/p>\n<p>All databases in a Cradle system share a common <strong><em>Database ID<\/em><\/strong> (DID), a 10-character ID of the form:<\/p>\n<p><em>Platform ID \u00a0Host ID<\/em><\/p>\n<p>where:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"100\"><em>Platform ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">CDS&#8217;s platform, <strong>02<\/strong> for Windows or <strong>17<\/strong> for Linux (other values are for obsolete platforms such as Domain\/OS, SunOS, Solaris, HP-UX, Ultrix, SCO, OSF\/1 and VMS)<\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Host ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">CDS\u2019s host ID, also used in the system\u2019s Security Code<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>For example:\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <strong>1750D4FA4C<\/strong><\/p>\n<p>The role of a DID is to differentiate information in a database managed by one CDS from information in databases managed by any other CDS, even if all other particulars of the information are the same, such as they are the same item of the same item type in the same project in these disparate Cradle systems.<\/p>\n<p>A common example is when organisations send information to each other, such as customers and suppliers. This creates two copies, or <strong><em>instances<\/em><\/strong>, of each piece of information. The databases\u2019 DIDs differentiate the instances held by the customer and suppliers. This is important because:<\/p>\n<ul>\n<li>An organisation cannot know if other organisations have changed information<\/li>\n<li>It is important to know which organisations hold each piece of information and which pieces of information each organisation holds<\/li>\n<li>It may be appropriate to designate one instance as primary so its content is authoritative and other instances are secondary<\/li>\n<\/ul>\n<h3>Project Identities<\/h3>\n<p>A Cradle system can manage many databases. Each database is used for one or more projects. Each database has a unique 4 character <strong><em>Project Code<\/em><\/strong> that is used at login to specify which database is to be accessed.<\/p>\n<p>Separately, a <strong><em>Project ID<\/em><\/strong> (PID) can be specified when a database is created using the <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#projectmanager\/other\/overview.htm\"><strong>Project Manager<\/strong><\/a> tool, or <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#systemadministration\/c_prj.htm\"><strong>c_prj<\/strong><\/a> utility. This is a 6-character string and is typically similar to the Project Code. It defaults to six underscores:<\/p>\n<p>______<\/p>\n<p>The Project ID can be used to label a database. It can be helpful if databases are related, for example as successive missions in a programme or separate vessels in a class of ships, when related Project IDs could be used:<\/p>\n<ul>\n<li><strong>ARTEM01<\/strong><\/li>\n<li><strong>ARTEM02<\/strong><\/li>\n<li><strong>ARTEM03<\/strong><\/li>\n<\/ul>\n<h4>Role of Project IDs<\/h4>\n<p>It is likely that what might appear to be the same information could exist in two or more databases. This could be intentional and helpful, or it could be unhelpful and inconvenient. The fundamental role of a PID is to differentiate between databases:<\/p>\n<ol>\n<li>In the most common scenario, an organisation uses its standard process in several projects. These projects\u2019 databases will contain the same types of information, such as hierarchies of needs and user requirements, and the same structuring and numbering conventions. It is quite likely that the databases will contain items with the same hierarchical numbers and, for groups and sub-groups, the same names:<\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong>1 Context<\/strong><\/li>\n<li><strong>1.1 Purpose<\/strong><\/li>\n<li><strong>1.2 Roles<\/strong><\/li>\n<li><strong>1.2.1<\/strong><\/li>\n<li><strong>2 Stakeholders<\/strong><\/li>\n<li><strong>2.1 Purchasers<\/strong><\/li>\n<li><strong>2.2 Operators<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p style=\"padding-left: 40px;\">Here it is inconvenient that multiple requirement <strong>1.2.1<\/strong>s exist in the databases, each with unrelated contents. Viewing requirement <strong>1.2.1<\/strong> in isolation could give an incorrect understanding by interpreting it as part of one project when it is actually part of another project.<\/p>\n<ol start=\"2\">\n<li>In an alternate scenario, two or more databases could be logically related. Indeed one database may be an extension of another, or an evolution of it at a later stage in the project. In this case, viewing information in isolation would not show which database it came from and could also create an incorrect understanding.<\/li>\n<\/ol>\n<p>In both scenarios, including a PID would differentiate the content of each database from the others.<\/p>\n<h3>Item Identities<\/h3>\n<p>Cradle databases contain different types of information. The basic unit of information in a Cradle database is the <strong><em>item<\/em><\/strong>. Every item has an associated <strong><em>item type<\/em><\/strong> that defines the type of information it contains. Projects can create their own item types in the <strong><em>schema<\/em><\/strong> that describes the database\u2019s structure and rules. For example:<\/p>\n<ul>\n<li><strong>HLURs<\/strong>, high level user requirements<\/li>\n<li><strong>SRs<\/strong>, system requirements<\/li>\n<li><strong>TEST CASE<\/strong>, description of a test to be run with the steps to perform and their possible outcomes<\/li>\n<\/ul>\n<p>Collectively the items of such user-defined item types are called <strong><em>system notes<\/em><\/strong>.<\/p>\n<h4>Identities and Instances<\/h4>\n<p>Every item has an <strong><em>identity<\/em><\/strong> to uniquely identify it amongst other items. An identity is the combination of the values of several attributes.<\/p>\n<p>Items evolve over time. Projects will usually keep copies of items at different stages in their evolution. Cradle has the concept of <strong><em>instances<\/em><\/strong> of an item. Instances are copies of items as they were at some time in the past, typically in previous <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#configurationmanagement\/other\/baselines.htm\">baselines<\/a>. In MBSE (model based systems engineering) users can create multiple instances of diagrams and specifications as <strong><em>alternative<\/em><\/strong> analyses or designs. These alternatives co-exist until a choice is made between them.<\/p>\n<p>An instance is the combination of:<\/p>\n<ul>\n<li>A <strong><em>version number<\/em><\/strong>, initially empty and increasing <strong>1<\/strong>, <strong>2<\/strong>, <strong>3<\/strong>\u2026 through successive baselines<\/li>\n<li>A <strong><em>draft ID<\/em><\/strong>, either <strong>A<\/strong> if the item is not in a baseline or empty if the item is baselined. The values <strong>B<\/strong>, <strong>C<\/strong> \u2026 <strong>Z<\/strong> are used for alternative diagram and specification items in MBSE analysis or design models.<\/li>\n<\/ul>\n<h4>Structure of an Identity<\/h4>\n<p>The identity of an item is:<\/p>\n<p><em>Item ID\u00a0 Instance ID<\/em><\/p>\n<p>where:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"100\"><em>Item ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">The collection of attributes that identify a specific item of a given item type<\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Instance ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Which of possibly many instances of the item is being referred to<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The different parts of item identities are:<\/p>\n<figure id=\"attachment_8865\" aria-describedby=\"caption-attachment-8865\" style=\"width: 618px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-8865\" src=\"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png\" alt=\"Components of Item Identities\" width=\"618\" height=\"294\" \/><figcaption id=\"caption-attachment-8865\" class=\"wp-caption-text\">Components of Item Identities<\/figcaption><\/figure>\n<p>where:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"100\"><em>Domain ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Either <strong>E<\/strong> (for Essential) or <strong>I<\/strong> (for Implementation), the domain containing the item\u2019s model<\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Model ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">The item\u2019s model, either a numeric <strong><em>Model Unique ID<\/em><\/strong> (MUID) or a <strong><em>namespace<\/em><\/strong> showing the model in the domain\u2019s model hierarchy, such as: <strong>As Built<\/strong>.<strong>Prototype A<\/strong>.<strong>Architecture<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Type<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Either one of the 26 diagram types that Cradle supports such as <strong>DFD<\/strong>, <strong>eFFBD<\/strong>, <strong>UCD<\/strong>, <strong>PAD<\/strong> and so on, or a specification type (process specification, environment terminator or module specification) or a user-defined item type such as <strong>PRODUCT REQ<\/strong>, <strong>SBS<\/strong> or <strong>VALIDATION<\/strong><\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Stereotype<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Only used by information in SysML models, the item\u2019s <a href=\"https:\/\/www.threesl.com\/cradle\/help\/7.7\/#projectsetup\/other\/stereotypes.htm\">stereotype<\/a>, such as <strong>&lt;&lt;actor&gt;&gt;<\/strong>, <strong>&lt;&lt;block&gt;&gt;<\/strong>, <strong>&lt;&lt;constraint&gt;&gt;<\/strong>, <strong>&lt;&lt;message&gt;&gt;<\/strong>, <strong>&lt;&lt;package&gt;&gt;<\/strong> and so on<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>The item identity is fundamental in Cradle. All other methods of identifying or labelling items, including those described in this document, are secondary to these item identities.<\/p>\n<h3>PDUIDs<\/h3>\n<p>The above tables show that there are significant differences between the identities of item types. They make specifying and working with identities complex, and do not provide a single sequence of values to identify all items in a database.<\/p>\n<p>These problems are solved by the <strong><em>Project Database Unique ID<\/em><\/strong> (PDUID), which:<\/p>\n<ul>\n<li>Apply to all of the item types<\/li>\n<li>Have the same format for all of these item types<\/li>\n<li>Are in a single sequence for all items, for example:\n<ul>\n<li>A PDUID could reference a diagram in a model with namespace <strong>B.C<\/strong> (with an equivalent MUID)<\/li>\n<li>The next PDUID could reference a <strong>TEST CASE<\/strong> system note item<\/li>\n<li>The next PDUID could be a diagram in a namespace <strong>Y<\/strong> model (different MUID to the above diagram)<\/li>\n<li>The next PDUID could reference a change request<\/li>\n<li>The next PDUID could be a data definition in the model with namespace <strong>B.C<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h4>PDUID Structure<\/h4>\n<p>The format of a PDUID is:<\/p>\n<p><em>Database ID<\/em>\u00a0 <em>Project ID<\/em>\u00a0 <em>Unique ID<\/em><\/p>\n<p>where the <em>Database ID<\/em> and <em>Project ID<\/em> are as described earlier, and the <em>Unique ID<\/em> is a number <strong>1<\/strong>, <strong>2<\/strong>, <strong>3<\/strong>\u2026 zero-padded to 10 digits. PDUIDs are 26 character strings with the structure:<\/p>\n<figure id=\"attachment_8866\" aria-describedby=\"caption-attachment-8866\" style=\"width: 285px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-8866\" src=\"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/PDUID-Structure-285x300.png\" alt=\"Cradle PDUID Structure\" width=\"285\" height=\"300\" srcset=\"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/PDUID-Structure-285x300.png 285w, https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/PDUID-Structure.png 443w\" sizes=\"auto, (max-width: 285px) 100vw, 285px\" \/><figcaption id=\"caption-attachment-8866\" class=\"wp-caption-text\">Structure of PDUIDs<\/figcaption><\/figure>\n<h4>PDUID Examples<\/h4>\n<p>Some example PDUIDs:<\/p>\n<ul>\n<li><strong>0280A992E5SYSML_0000000022<\/strong>, in which:\n<ul>\n<li><strong>0280A992E5<\/strong> : is the DID, the Database ID<\/li>\n<li><strong>SYSML_<\/strong> : is the PID, the Project ID<\/li>\n<li><strong>0000000022 <\/strong>: is the UID, the Unique ID<\/li>\n<\/ul>\n<\/li>\n<li><strong>0280A992E5SYSML_0000000023<\/strong>\n<ul>\n<li><strong>0280A992E5<\/strong> : is the DID, the Database ID<\/li>\n<li><strong>SYSML_<\/strong> : is the PID, the Project ID<\/li>\n<li><strong>0000000023 <\/strong>: is the UID, the Unique ID<\/li>\n<\/ul>\n<\/li>\n<li><strong>0280A992E5SYSML_0000000024<\/strong><\/li>\n<li><strong>0280A992E5SYSML_0000000025<\/strong><\/li>\n<\/ul>\n<h4>Role of PDUID Components<\/h4>\n<p>As such, and given their constituent parts:<\/p>\n<ul>\n<li>The Unique ID enables the PDUID to uniquely identify a database item<\/li>\n<li>The Project ID enables the PDUID to uniquely identify an item across multiple databases<\/li>\n<li>The Database ID enables the PDUID to uniquely identify an item between separate Cradle systems, even if everything else about information in the databases in these Cradle systems is the same<\/li>\n<\/ul>\n<h4>PDUIDs as Item Identities<\/h4>\n<p>A PDUID identifies an item, but not a specific instance of that item. This is deliberate. It is more convenient if the PDUIDs of all instances of an item are the same. Therefore, an alternative for the identity of an item is:<\/p>\n<p><em>PDUID\u00a0 Instance ID<\/em><\/p>\n<p>which identifies a specific instance of an item, where:<\/p>\n<table>\n<tbody>\n<tr>\n<td width=\"100\"><em>PDUID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Is the item\u2019s PDUID as defined above that identifies an item<\/td>\n<\/tr>\n<tr>\n<td width=\"100\"><em>Instance ID<\/em><\/td>\n<td width=\"12\">:<\/td>\n<td width=\"510\">Which of possibly many instances of the item is being referred to, with the same meaning as above<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h4>PDUID Item Identity Examples<\/h4>\n<p>As examples, in the example database <strong>SYSM<\/strong>:<\/p>\n<ol>\n<li>There is a use case diagram <strong>Automobile Use Case Diagram<\/strong> whose identity is:<\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Domain ID: <strong>I<\/strong><\/li>\n<li>Namespace: <strong>SysML-Automobile<\/strong>, which has MUID <strong>100<\/strong><\/li>\n<li>Type: <strong>uc<\/strong>, meaning a SysML use case diagram<\/li>\n<li>Stereotype: <strong>use case<\/strong><\/li>\n<li>Number: <strong>uc-1<\/strong><\/li>\n<li>Version:<\/li>\n<li>Draft: <strong>A<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>which has been assigned the PDUID <strong>0280A992E5SYSML_0000000035<\/strong> so the item\u2019s identity is also:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>PDUID: <strong>0280A992E5SYSML_0000000035<\/strong><\/li>\n<li>Version:<\/li>\n<li>Draft: <strong>A<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>that can also be expressed as:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Database ID: <strong>0280A992E5<\/strong><\/li>\n<li>Project ID: <strong>SYSML_<\/strong>, and hence PUID: <strong>SYSML_0000000035<\/strong><\/li>\n<li>Unique ID: <strong>0000000035<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ol start=\"2\">\n<li>In the same database there is also a <strong>TEST CASE<\/strong> item <strong>Keycode verification<\/strong> whose identity is:<\/li>\n<\/ol>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Type: <strong>TEST CASE<\/strong><\/li>\n<li>Number: <strong>TC-20<\/strong><\/li>\n<li>Version:<\/li>\n<li>Draft:\u00a0 <strong>A<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>which has been assigned the PDUID <strong>0280A992E5SYSML_0000000024<\/strong> so the item\u2019s identity is also:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>PDUID: <strong>0280A992E5SYSML_0000000024<\/strong><\/li>\n<li>Version:<\/li>\n<li>Draft: <strong>A<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>that can also be expressed as:<\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li>Database ID: <strong>0280A992E5<\/strong><\/li>\n<li>Project ID: <strong>SYSML_<\/strong>, and hence PUID: <strong>SYSML_0000000024<\/strong><\/li>\n<li>Unique ID: <strong>0000000024<\/strong><\/li>\n<li>Version:<\/li>\n<li>Draft: <strong>A<\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>PUIDs<\/h3>\n<p><strong><em>Project Unique ID<\/em><\/strong> (PUID) is the name given to the PDUID without its Database ID (DID). In other words, PUIDs are a means to identify pieces of information in a single database.<\/p>\n<h3>PDUID Lookup<\/h3>\n<p>Every Cradle database contains a table that is used to check if a PDUID has been used and to convert between item identities and PDUIDs. This table is empty when a database is first created. The table is not part of the information in Cradle export files. Rather, the table\u2019s contents are created when items are created in the database, either by an operation in the database such as creating or copying items, or reordering a hierarchy of items, or by importing information into the database from an external file.<\/p>\n<p>This table is used to:<\/p>\n<ul>\n<li>Check if a PDUID has been used<\/li>\n<li>Find the PDUID for a given item identity<\/li>\n<li>Find the item identity for a given PDUID<\/li>\n<li>Find the next UID to be used<\/li>\n<\/ul>\n<p>Entries in the table are marked deleted when the last instance of the corresponding database item is deleted.<\/p>\n<h3>Selective Reuse of PDUIDs<\/h3>\n<p>PDUIDs are never reused for different pieces of information, but they are reused for the same piece of information. This means that if a piece of information is deleted, its entry in the PDUID table is marked deleted, but the entry remains in the table. If that piece of information is ever recreated, then the PDUID table entry will be found, marked active, and the PDUID recorded in the table entry will be applied to the piece of information.<\/p>\n<p>If items are auto-numbered, then the items\u2019 identities are never reused and so PDUIDs are never reused.<\/p>\n<p>For items that are not auto-numbered, or do not support auto-numbering (such as diagram, specification or data definition items in models), then PDUIDs can be reused. PDUIDs can also be reused when information is imported, and previously-deleted items are found in the PDUID table and their PDUIDs reused. This can be over-ridden on import as will be discussed later.<\/p>\n<h4>Example Scenario<\/h4>\n<p>As an example, consider the scenario:<\/p>\n<ol>\n<li>Create item <strong>r1<\/strong>, the assigned PDUID is: <strong>020A3857A3FRED__0000000001<\/strong><\/li>\n<li>Create item <strong>r2<\/strong>, the assigned PDUID is: <strong>020A3857A3FRED__0000000002<\/strong><\/li>\n<li>Delete item <strong>r1<\/strong><\/li>\n<li>Create item <strong>r3<\/strong>, the assigned PDUID is <strong>020A3857A3FRED__0000000003<\/strong>. Note that the UID in this PDUID is not <strong>1<\/strong> (which is now available since <strong>r1<\/strong> was deleted), it is <strong>3<\/strong>, because new PDUIDs always use the next UID value.<\/li>\n<li>Create item <strong>r4<\/strong>, the assigned PDUID is: <strong>020A3857A3FRED__0000000004<\/strong><\/li>\n<li>Create item <strong>r1<\/strong>, the assigned PDUID is: <strong>020A3857A3FRED__0000000001<\/strong> because the original PDUID table entry for <strong>r1<\/strong> has been found and marked active and its PDUID has been reused so that the new item <strong>r1<\/strong> is assigned the same PDUID as the original item <strong>r1<\/strong>.<\/li>\n<\/ol>\n<h4>Reuse of PDUIDs on Import<\/h4>\n<p>The reuse of PDUIDs is the correct approach as it ensures that a given item always has the same identity, regardless of what happens during the life of a project.<\/p>\n<p>If, for whatever reason, this is not the behaviour that you want, then use auto-numbered items so that every item will be guaranteed to have a new identity and hence guaranteed to also have a new PDUID. Since auto-numbering makes the reuse of item identities impossible; auto-numbering also ensures that it is impossible to reuse PDUIDs.<\/p>\n<aside class=\"mashsb-container mashsb-main mashsb-stretched\"><div class=\"mashsb-box\"><div class=\"mashsb-buttons\"><a class=\"mashicon-twitter mash-small mash-center mashsb-noshadow\" href=\"https:\/\/twitter.com\/intent\/tweet?text=&amp;url=https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/&amp;via=threesl\" target=\"_top\" rel=\"nofollow\"><span class=\"icon\"><\/span><span class=\"text\">Tweet<\/span><\/a><a class=\"mashicon-facebook mash-small mash-center mashsb-noshadow\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.threesl.com%2Fblog%2Fpurpose-of-pduids-in-3sl-cradle%2F\" target=\"_top\" rel=\"nofollow\"><span class=\"icon\"><\/span><span class=\"text\">Share<\/span><\/a><a class=\"mashicon-subscribe mash-small mash-center mashsb-noshadow\" href=\"#\" target=\"_top\" rel=\"nofollow\"><span class=\"icon\"><\/span><span class=\"text\">Newsletter<\/span><\/a><div class=\"onoffswitch2 mash-small mashsb-noshadow\" style=\"display:none\"><\/div><\/div>\n            <\/div>\n                <div style=\"clear:both\"><\/div><\/aside>\n            <!-- Share buttons by mashshare.net - Version: 4.0.47-->","protected":false},"excerpt":{"rendered":"<p>This is the first in a short series of posts that explain Project Database Unique IDs (PDUIDs). This post explains the purpose of PDUIDs and their structure. Later posts will explain: How PDUIDs can be viewed How they can be used in operations in Cradle tools, API and WSI How PDUIDs can be changed or &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Purpose of PDUIDs&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_lmt_disableupdate":"no","_lmt_disable":"no","footnotes":""},"categories":[78],"tags":[330,681],"class_list":["post-8842","post","type-post","status-publish","format-standard","hentry","category-articles","tag-items","tag-pduid"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Purpose of PDUIDs - 3SL Blog<\/title>\n<meta name=\"description\" content=\"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Purpose of PDUIDs - 3SL Blog\" \/>\n<meta property=\"og:description\" content=\"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/\" \/>\n<meta property=\"og:site_name\" content=\"3SL Blog\" \/>\n<meta property=\"article:publisher\" content=\"http:\/\/facebook.com\/3SLCradle\" \/>\n<meta property=\"article:published_time\" content=\"2023-07-12T14:36:52+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-02T11:26:57+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png\" \/>\n<meta name=\"author\" content=\"Mark Walker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@threesl\" \/>\n<meta name=\"twitter:site\" content=\"@threesl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Mark Walker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/\"},\"author\":{\"name\":\"Mark Walker\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ffedcdd3ce377b6e026d9d348b4ba10\"},\"headline\":\"Purpose of PDUIDs\",\"datePublished\":\"2023-07-12T14:36:52+00:00\",\"dateModified\":\"2023-08-02T11:26:57+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/\"},\"wordCount\":2430,\"publisher\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Item-Identity-Components.png\",\"keywords\":[\"items\",\"PDUID\"],\"articleSection\":[\"Articles\"],\"inLanguage\":\"en-GB\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/\",\"url\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/\",\"name\":\"Purpose of PDUIDs - 3SL Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Item-Identity-Components.png\",\"datePublished\":\"2023-07-12T14:36:52+00:00\",\"dateModified\":\"2023-08-02T11:26:57+00:00\",\"description\":\"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Item-Identity-Components.png\",\"contentUrl\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/07\\\/Item-Identity-Components.png\",\"width\":527,\"height\":253},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/purpose-of-pduids-in-3sl-cradle\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Purpose of PDUIDs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/\",\"name\":\"3SL Blog\",\"description\":\"From concept to creation\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#organization\",\"name\":\"3SL\",\"url\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/3SL_Logo_Medium.png\",\"contentUrl\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/wp-content\\\/uploads\\\/2017\\\/02\\\/3SL_Logo_Medium.png\",\"width\":152,\"height\":80,\"caption\":\"3SL\"},\"image\":{\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"http:\\\/\\\/facebook.com\\\/3SLCradle\",\"https:\\\/\\\/x.com\\\/threesl\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.threesl.com\\\/blog\\\/#\\\/schema\\\/person\\\/8ffedcdd3ce377b6e026d9d348b4ba10\",\"name\":\"Mark Walker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g\",\"caption\":\"Mark Walker\"},\"sameAs\":[\"https:\\\/\\\/www.threesl.com\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Purpose of PDUIDs - 3SL Blog","description":"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/","og_locale":"en_GB","og_type":"article","og_title":"Purpose of PDUIDs - 3SL Blog","og_description":"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE","og_url":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/","og_site_name":"3SL Blog","article_publisher":"http:\/\/facebook.com\/3SLCradle","article_published_time":"2023-07-12T14:36:52+00:00","article_modified_time":"2023-08-02T11:26:57+00:00","og_image":[{"url":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png","type":"","width":"","height":""}],"author":"Mark Walker","twitter_card":"summary_large_image","twitter_creator":"@threesl","twitter_site":"@threesl","twitter_misc":{"Written by":"Mark Walker","Estimated reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#article","isPartOf":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/"},"author":{"name":"Mark Walker","@id":"https:\/\/www.threesl.com\/blog\/#\/schema\/person\/8ffedcdd3ce377b6e026d9d348b4ba10"},"headline":"Purpose of PDUIDs","datePublished":"2023-07-12T14:36:52+00:00","dateModified":"2023-08-02T11:26:57+00:00","mainEntityOfPage":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/"},"wordCount":2430,"publisher":{"@id":"https:\/\/www.threesl.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png","keywords":["items","PDUID"],"articleSection":["Articles"],"inLanguage":"en-GB"},{"@type":"WebPage","@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/","url":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/","name":"Purpose of PDUIDs - 3SL Blog","isPartOf":{"@id":"https:\/\/www.threesl.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#primaryimage"},"image":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#primaryimage"},"thumbnailUrl":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png","datePublished":"2023-07-12T14:36:52+00:00","dateModified":"2023-08-02T11:26:57+00:00","description":"3SL Cradle item identities and the PDUID, project database unique ID, purpose and structure for requirements management and MBSE","breadcrumb":{"@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#primaryimage","url":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png","contentUrl":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2023\/07\/Item-Identity-Components.png","width":527,"height":253},{"@type":"BreadcrumbList","@id":"https:\/\/www.threesl.com\/blog\/purpose-of-pduids-in-3sl-cradle\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.threesl.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Purpose of PDUIDs"}]},{"@type":"WebSite","@id":"https:\/\/www.threesl.com\/blog\/#website","url":"https:\/\/www.threesl.com\/blog\/","name":"3SL Blog","description":"From concept to creation","publisher":{"@id":"https:\/\/www.threesl.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.threesl.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Organization","@id":"https:\/\/www.threesl.com\/blog\/#organization","name":"3SL","url":"https:\/\/www.threesl.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.threesl.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2017\/02\/3SL_Logo_Medium.png","contentUrl":"https:\/\/www.threesl.com\/blog\/wp-content\/uploads\/2017\/02\/3SL_Logo_Medium.png","width":152,"height":80,"caption":"3SL"},"image":{"@id":"https:\/\/www.threesl.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["http:\/\/facebook.com\/3SLCradle","https:\/\/x.com\/threesl"]},{"@type":"Person","@id":"https:\/\/www.threesl.com\/blog\/#\/schema\/person\/8ffedcdd3ce377b6e026d9d348b4ba10","name":"Mark Walker","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e098e84ed0f4398e00f611464cab12e4fddca3ef757df98d3272dcb606923e35?s=96&d=mm&r=g","caption":"Mark Walker"},"sameAs":["https:\/\/www.threesl.com\/"]}]}},"modified_by":"Jan Lamb","_links":{"self":[{"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/posts\/8842","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/comments?post=8842"}],"version-history":[{"count":13,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/posts\/8842\/revisions"}],"predecessor-version":[{"id":8955,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/posts\/8842\/revisions\/8955"}],"wp:attachment":[{"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/media?parent=8842"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/categories?post=8842"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.threesl.com\/blog\/wp-json\/wp\/v2\/tags?post=8842"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}