GUIDs [AX 2012]

Updated: September 25, 2009

Applies To: Microsoft Dynamics AX 2012 R3, Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012

A GUID (a globally unique identifier) is a 16 byte, or a 128 bit integer that can be used across all computers and networks wherever a unique identifier is required. Such a number has a very low probability of being duplicated.

Here are two examples of string literals that are valid representations of a GUID value:

  • "12345678-BBBb-cCCCC-0000-123456789012"

  • "{12345678-BBBb-cCCCC-0000-123456789012}"

The string representation of a GUID must follow the restrictions described in the following table.

Feature

Description

Number of digits

Must have 32 hexadecimal digits.

Dashes

Must have four dash characters embedded at the locations 8-4-4-4-12.

Braces

It is optional to have the string start and end with {} braces.

Length

The string must have a total of either 36 or 38 characters, depending on whether braces are added.

Casing

The hexadecimal digits a-f (or A-F) can be either uppercase or lowercase, or mixed.

X++ functions that input or output the guid type are listed in the following table.

Function

Description

any2guid

Converts an anytype to a guid.

guid2str

Converts a guid to an str.

newGuid

Generates a random guid value.

str2guid

Converts an str to a guid.

Global::guidFromString

Calls str2guid.

Global::stringFromGuid

Calls guid2str.

The following X++ code example illustrates how to use the GUID functions.

static void GuidRoundTripJob(Args _args)
{
    guid guid2;
    str string3;
    ;
    // Convert a guid to a string, and back to a guid.
    guid2 = newGuid();
    info(strFmt("Info_a1:  guid2 == %1", guid2));

    string3 = guid2str(guid2);
    info(strFmt("Info_a2:  string3 == %1", string3));

    guid2 = str2guid(string3);
    info(strFmt("Info_a3:  guid2 == %1", guid2));
    
    // Test string representations of a guid.
    // Upper versus lower case does not matter.
    guid2 = str2guid("BB345678-abcd-ABCD-0000-bbbbffff9012");
    string3 = guid2str(guid2);
    info(strFmt("Info_b1:  8-4-4-4-12 format for dashes works (%1)", string3));
    info(strFmt("Info_b2:  Mixed upper and lower case works."));

    // Dash locations must be exact.
    // Test invalid dash locations, see output is all zeros.
    guid2 = str2guid("CC2345678abcd-ABCD-0000-cccc9012");
    string3 = guid2str(guid2);
    info(strFmt("Info_c1:  These embedded dash locations are required.  %1", string3));

    // Braces {} are optional.
    guid2 = str2guid("{DD345678-abcd-ABCD-0000-ddddaaaa9012}");
    string3 = guid2str(guid2);
    info(strFmt("Info_d1:  Braces {} are optional (%1)", string3));
}

Cc967363.collapse_all(en-us,AX.60).gifOutput

The output that is displayed in the Infolog is as follows. Notice that Microsoft Dynamics AX includes the optional braces when it converts a GUID to a string.

Message (02:26:46 pm)
Info_a1:  guid2 == {93945629-734B-475E-99CE-6AA7AFA43259}
Info_a2:  string3 == {93945629-734B-475E-99CE-6AA7AFA43259}
Info_a3:  guid2 == {93945629-734B-475E-99CE-6AA7AFA43259}
Info_b1:  8-4-4-4-12 format for dashes works ({BB345678-ABCD-ABCD-0000-BBBBFFFF9012})
Info_b2:  Mixed upper and lower case works.
Info_c1:  These embedded dash locations are required.  {00000000-0000-0000-0000-000000000000}
Info_d1:  Braces {} are optional ({DD345678-ABCD-ABCD-0000-DDDDAAAA9012})

Announcements: New book: "Inside Microsoft Dynamics AX 2012 R3" now available. Get your copy at the MS Press Store.

Community Additions

ADD
Show: