Siebel Master Data Applications Reference for Industry Applications > Siebel Master Data Applications Messages >

About CRMML Messages


CRMML messages (Customer Relationship Management Markup Language) are a Siebel XML specification for customer-centric data exchange with other enterprise applications and Siebel Universal Customer Master (Siebel UCM) applications. External applications send CRMML request messages to Siebel applications and receive CRMML messages in response.

CRMML messages contain an envelope, a header section, and a body section. The message specification focuses on the hierarchy and definitions of header elements. It allows users to extend the body section with user-defined elements as long as the object descriptors in the header section describe the usages of the elements in a body section. The following example illustrates the layers of a CRMML message:

<?xml version="1.0" encoding="UTF-8>

<CRMML>

<! CRMML Header section starts>

      <CRMHeader>

            <FromSystem>

                  <SystemInfo type="ID">

                  <SystemId>www.mycompany.com</SystemId>

                  <SystemRole>Insurance Application</SystemRole>

                  <SystemName>Client UI System</SystemName>

                  </SystemInfo>

            </FromSystem>

            <ToSystem>

                  <SystemInfo type="ID">

                  <SystemId>123-456-789</SystemId>

                  <SystemRole>Service Provider</SystemRole>

                  <SystemName>Siebel UCM System</SystemName>

                  </SystemInfo>

            </ToSystem>

            <MessageDescriptor>

                  <MessageId>11SC3I2002053116:43:45</MessageId>

                  <TransactionScope>any</TransactionScope>

                  <Timestamp>01/01/2001</Timestamp>

                  <TimeToLive>365</TimeToLive>

            </MessageDescriptor>

      </CRMHeader>

<!CRMML Header section ends>

      <PartyPackage>

         <InsertContactProfile>

               <Contact>

                     <Id>ext2223</Id>

                     <EmailAddress>cifemail</EmailAddress>

                     <FaxPhone>5555555555</FaxPhone>

                     <FirstName>0099INFN</FirstName>

                     <HomePhone>1111111111</HomePhone>

                     <LastName>0099INLN</LastName>

               </Contact>

         </InsertContactProfile>

      </PartyPackage>

</CRMML>

Envelope and Header Section. The CRMML message has one envelope element <CRMML>. <CRMML> is the root element for a message. It contains one optional header element <CRMHeader> and one or more body elements. The envelope has no attributes.

The header includes elements for sender and receiver. The following is an example for communication parties:

<! CRMML Header section starts>

<CRMHeader>

   <FromSystem>

      <SystemInfo type="ID">

            <SystemId>www.mycompany.com</SystemId>

            <SystemRole>Insurance Application</SystemRole>

         <SystemName>Client UI System</SystemName>

      </SystemInfo>

   </FromSystem>

   <ToSystem>

      <SystemInfo type="ID">

         <SystemId>123-456-789</SystemId>

         <SystemRole>Service Provider</SystemRole>

         <SystemName>Siebel UCM System</SystemName>

      </SystemInfo>

   </ToSystem>

   ...

<CRMHeader>

<FromSystem> is the sender and <ToSystem> is the receiver in this example. Both elements contain <SystemInfo> aggregate, which holds system ID, system role, and the name of the system. In the example, Sender's name is Client UI System and receiver is Siebel Master Data Applications System. Sender plays an insurance application role and receiver plays a service provider's role.

The header also contains a message descriptor that depicts the body of the message and objects inside the body sections. An example of the message descriptor follows:

<CRMML>

<! CRMML Header section starts>

      <CRMHeader>

            <MessageDescriptor>

                  <MessageId>11SC3I2002053116:43:45</MessageId>

                  <TransactionScope>any</TransactionScope>

                  <Timestamp>Sunday</Timestamp>

                  <TimeToLive>OneYear</TimeToLive>

            </MessageDescriptor>

      </CRMHeader>

The <MessageId> element can be unique to identify a single message, a pair of request or response messages, or a group of communication messages. Transaction scope can be any or all. <Timestamp> is the creation time of a message and <TimeToLive> is the expiration time of a message. Receiver should disregard a message if the message has expired.

The <MessageDescriptor> can have zero or more <ObjectDescriptor> child elements. The following object descriptor example illustrates a metadata for remote procedure call in a message header:

<CRMHeader>

      <MessageDescriptor>

      ...

      <ObjectDescriptor>

            <ObjectId type="HREF" sytem="this">p1</ObjectId>

            <ObjectUsage>SoftwarePackage</ObjectUsage>

      </ObjectDescriptor>

      <ObjectDescriptor>

            <ObjectId type="HREF" sytem="this">m1</ObjectId>

            <ObjectUsage>Method</ObjectUsage>

      </ObjectDescriptor>

      <ObjectDescriptor>

            <ObjectId type="HREF" sytem="this">a1</ObjectId>

            <ObjectUsage>Argument</ObjectUsage>

      </ObjectDescriptor>

      </MessageDescriptor>

</CRMHeader>

<PartyPackage ID="p1">

      <InsertContactProfile ID="m1">

            <Contact ID="a1">

                  <Id>ext2223</Id>

The first <ObjectDescriptor> refers to <PartyPackage> element in the message body by HREF. It indicates that <PartyPackage> is a software package. In this example, it is the Siebel Universal Customer Master Application. The second descriptor indicates that <InsertContactProfile> is a method in the package that the message intends to invoke. The third descriptor shows that <Contact> aggregate is the input argument for <InsertContactProfile>. For UCM implementation, the default usages of the first three elements are package, method, and argument; therefore, no objective descriptor is required for Universal Customer Master Application specific messages.

Certain values in the header are automatically generated by the connector, but you can specify others in the envelope integration object. Table 22 describes the elements and how they are configured. For system generated attributes, there is no configuration available.

NOTE:  The CRMML envelope object information can be configured, contain custom fields, and works for both input and output formats. However, UCM business services refer to information in this object and look for specific XML values. Make sure specific fields exist in the business services before configuring the CRMML for your needs.

Table 22. Header Elements
Element
Structure
Attribute
Description
Default
Configuration

CRMML

(top level)

 

 

 

 

CRMHeader

In CRMML

 

Header aggregate

 

 

FromSystem

In CRMHeader

 

FromSystem aggregate

 

 

SystemInfo

In FromSystem

 

SystemInfo aggregate

 

 

Type

Describes the type of SystemID such as ID or URL

ID

UCM Envelope Integration Object->SystemInfo Integration Component->type Integration Component Field, XML Literal Value

SystemId

Identifier of the system

123-456-789

UCM Envelope Integration Object->SystemInfo Integration Component->SystemId Integration Component Field, XML Literal Value

SystemName

Name of the system

SiebelCIFSystem

UCM Envelope Integration Object->SystemInfo Integration Component->SystemName Integration Component Field, XML Literal Value

SystemRole

Role the system has

Service Provider

UCM Envelope Integration Object->SystemInfo Integration Component->SystemRole Integration Component Field, XML Literal Value

ToSystem

In CRMHeader

 

ToSystem aggregate

 

 

SystemInfo

In ToSystem

 

SystemInfo aggregate

 

 

Type

Describes the type of SystemID such as ID or URL.

ID

UCM Envelope Integration Object->SystemInfo Integration Component->ToSystem_type Integration Component Field, XML Literal Value

SystemId

Identifier of the system

 

System Generated

SystemName

Name of the system

 

System Generated

SystemRole

Role the system has

 

System Generated

Message Descriptor

In CRMHeader

MessageId

Identifier of the message

 

System Generated

Transaction Scope

Currently, the only value supported for transaction scope is any

 

UCM Envelope Integration Object->MessageDescriptor Integration Component->MessageDescriptor_TrasactionScope Integration Component Field, XML Literal Value

Timestamp

Time stamp of when the message is constructed

 

System Generated

TimeToLive

Expiration length of the message from Timestamp value

 

UCM Envelope Integration Object->MessageDescriptor Integration Component->MessageDescriptor_ToLive Integration Component Field, XML Literal Value

Body Section. The body section contains user-defined message elements. The following is an example body section and is one of the messages supported by the Siebel Master Data Applications.

<CRMML>

      <CRMHeader>

      ...

      </CRMHeader>

      <PartyPackage ID="p1">

            <InsertContactProfile ID="m1">

                  <Contact ID="a1">

                        <Id>ext2223</Id>

                        ...

The example indicates that an external application requests to insert a contact profile to the Siebel Master Data Applications database. The contact detail information is contained within the <Contact> aggregate.

Siebel Master Data Applications Reference for Industry Applications, Universal Customer Master Guide