Data
Specifics
(Last Update 1/15/2004)
In order to understand how data is formatted and
assembled (for exported data) and parsed and processed (for imported data) you
must have an understanding of the following key concepts:
A CIM message consists of a CETE and a CIM Transaction. It represents a complete and transmittable unit of information. The following diagram illustrates the components of a CIM Message.

A single CIM transaction, such as an item update, can be delivered in a single Message. For transaction sets, such as a sales order or invoice containing multiple "detail lines", multiple Messages will be used to deliver the transactions. Generally, there is a one-to-one relationship between a Transaction and a Message. The important thing to note about a CIM Message is that it's comprised of a CETE and a Transaction-- both of which are independent constructs. A CIM Message "glues" these two constructs together.
Because CETEs and Transactions come in a variety of formats, CIM Messages will vary in length. When processing CIM Messages, you must determine which CETE you are using by examining the first 7 characters of the message. If the value is "CETE200", you are using CETE version 2.00. If the value is "CETE300", you are using CETE version 3.00 and so on... If the first 4 characters do not equal "CETE", you are using version 1.00. Version 1.00 does not include a CETE version identifier. See the next section for more information on the various CETE versions.
The following is an actual sample of a CIM Message:
JOHN E10111080371743 00002 IT103XY100461A & C CLASSIC LIGHT 10/12 010000300007PAKBOXCAS 000010001000010000017878987 1.5 PACK N.00 028200008862 100461 028200002327 123456A&C 00003A//
For more information on how to determine which version of CETEs and Transactions are being used, visit Specification Determination Guide
CETE is a specification that represents the describing portion of CIM messages. As mentioned above, each CIM message contains two parts:
|
|||||||||||
Field Description |
Starts At | Length |
Data Type | Required? | Comments |
||||||
Target |
1 | 15 |
A | N | Whom the data is targeted to. If omitted, the receiving system assumes ownership. |
||||||
Target Qualifier |
16 | 1 |
A | N | What is being represented in "Target". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer). If omitted, Target field is ignored. |
||||||
Chronological ID #1 |
17 | 15 |
A | N | Provides a chronological sequence. The data should be incorporated using this sequence, ascending. |
||||||
|
Chronological ID #2 |
32 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one. |
||||||
|
Chronological ID #3 |
37 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one. |
||||||
Source |
42 | 15 |
A | N | Who is this data coming from. |
||||||
Source Qualifier |
57 | 1 |
A | N | What is being represented in "Source". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Topic |
58 | 2 |
A | Y | What data is contained in the transaction portion of this message. See each PIDF data description for the topic code for that data. |
||||||
Version |
60 | 3 |
A | Y | What PIDF version is the transaction data portion stored in? |
||||||
Action |
63 | 1 |
A | Y | What Action is to be performed? Valid
values are |
||||||
Agent? |
64 | 1 |
A | Y | Indicates if this message represents itself and/or other transactions. Transactions that are part of a set must have a single "Agent" transaction. Normally, this will be the pilot. For transactions that are not part of a set, they are "self represented". Y = This transaction is the
agent for itself or a set of other transactions. |
||||||
| Total Length | 64 | ||||||||||
|
|||||||||||
Field Description |
Starts At | Length |
Data Type | Required? | Comments |
||||||
| CETE Mark | 1 | 7 | A | Y | Literal "CETE200" which identifies this version of the CETE | ||||||
First Chronological ID |
8 | 15 |
A | Y | Provides a chronological sequence. The data should be incorporated using this sequence, ascending. |
||||||
Second Chronological ID |
23 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Third Chronological ID |
28 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Target |
33 | 15 |
A | N | Whom the data is targeted to. |
||||||
Target Qualifier |
48 | 1 |
A | N | What is being represented in "Target". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Source |
49 | 15 |
A | N | Who is this message coming from? |
||||||
Source Qualifier |
64 | 1 |
A | N | What is being represented in "Source". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Topic |
65 | 2 |
A | Y | What data is contained in the transaction portion of this message. See each transaction description for the topic code for that data. |
||||||
| Transaction Encoding Method | 67 | 1 | A | N | How is the transaction encoded? P=PIDF, X=XML, *Blank=PIDF | ||||||
Version |
68 | 3 |
A | Y | What is the version of the transaction? | ||||||
Transaction ID |
71 |
15 |
A | Y |
ID which uniquely identifies the transaction contained in the message. Source, Source Qualifier, and Transaction ID combined creates a system-wide unique transaction. |
||||||
|
Transaction Set Count |
86 |
8.0 |
N | Y |
How many individual messages comprise the transaction set (Including all Pilot/Trailer Transactions). |
||||||
|
Agent? |
94 | 1 |
A | Y | Indicates if this message represents itself and/or other transactions. Transactions that are part of a set must have a single "Agent" transaction. Normally, this will be the pilot. For transactions that are not part of a set, they are "self represented". Y = This transaction is the
agent for itself or a set of other transactions. |
||||||
| Total Length | 94 | ||||||||||
|
|||||||||||
Field Description |
Starts At | Length |
Data Type | Required? | Comments |
||||||
| CETE Mark | 1 | 7 | A | Y | Literal "CETE200" which identifies this version of the CETE | ||||||
First Chronological ID |
8 | 15 |
A | Y | Provides a chronological sequence. The data should be incorporated using this sequence, ascending. |
||||||
Second Chronological ID |
23 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Third Chronological ID |
28 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Target |
33 | 15 |
A | N | Whom the data is targeted to. |
||||||
Target Qualifier |
48 | 1 |
A | N | What is being represented in "Target". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Source |
49 | 15 |
A | N | Who is this message coming from? |
||||||
Source Qualifier |
64 | 1 |
A | N | What is being represented in "Source". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Topic |
65 | 2 |
A | Y | What data is contained in the transaction portion of this message. See each transaction description for the topic code for that data. |
||||||
| Transaction Encoding Method | 67 | 1 | A | N | How is the transaction encoded? P=PIDF, X=XML, *Blank=PIDF | ||||||
Version |
68 | 3 |
A | Y | What is the version of the transaction? | ||||||
Transaction ID |
71 |
15 |
A | Y |
ID which uniquely identifies the transaction contained in the message. Source, Source Qualifier, and Transaction ID combined creates a system-wide unique transaction. |
||||||
|
Transaction Set Count |
86 |
8.0 |
N | Y |
How many individual messages comprise the transaction set (Including all Pilot/Trailer Transactions). |
||||||
|
Agent? |
94 | 1 |
A | Y | Indicates if this message represents itself and/or other transactions. Transactions that are part of a set must have a single "Agent" transaction. Normally, this will be the pilot. For transactions that are not part of a set, they are "self represented". Y = This transaction is the
agent for itself or a set of other transactions. |
||||||
| Exclusive Transaction? | 95 | 1 | A | N | Indicates
if this transaction is exclusive from this particular source.
Once an exclusive transaction is successfully processed, any
subsequent attempt to process a transaction with the same transaction
ID will result in a critical transaction error.
Y = This transaction is exclusive. |
||||||
| Ignore Redundancy Option? | 96 | 1 | A | N | Indicates
if the dispatch request was processed in CIM while ignoring the
target's option to suppress redundant data. Y=Suppress Redundant Data option was ignored. *Blank=Suppress Redundant Data option was not ignored. |
||||||
| Reserved | 97 | 9 | A | N | Reserved for future use. | ||||||
| Total Length | 105 | ||||||||||
|
|||||||||||
Field Description |
Starts At | Length |
Data Type | Required? | Comments |
||||||
| CETE Mark | 1 | 7 | A | Y | Literal "CETE300" which identifies this version of the CETE | ||||||
First Chronological ID |
8 | 15 |
A | Y | Provides a chronological sequence. The data should be incorporated using this sequence, ascending. |
||||||
Second Chronological ID |
23 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Third Chronological ID |
28 | 5 |
A | N | Provides additional chronological sequencing. The data should be incorporated using any previous Chronological fields as well as this one, ascending. |
||||||
Source |
33 | 15 |
A | N | Who is this message coming from? |
||||||
Source Qualifier |
48 | 1 |
A | N | What is being represented in "Source". Valid values are "M" (manufacturer), "S" (supplier), and "R" (retailer) |
||||||
Topic |
49 | 2 |
A | Y | What data is contained in the transaction portion of this message. See each transaction description for the topic code for that data. |
||||||
Version |
51 | 3 |
A | Y | What is the version of the transaction? | ||||||
Transaction ID |
54 |
15 |
A | Y |
ID which uniquely identifies the transaction contained in the message. Source, Source Qualifier, and Transaction ID combined creates a system-wide unique transaction. |
||||||
| Total Length | 68 | ||||||||||
CIM Transaction:
A CV1 CIM Transaction represents a single, logical unit of work. They may
be dispatched individually or as part of a Transaction "Set".
Each transaction has its own version number. Over time, specific
transactions may be enhanced. When this occurs, the version of the
transaction is changed. DAC will, by default, begin to utilize the newer
transaction version when exporting data. It is possible to designate which
transaction version to use for individual targets. This allows a specific
target to continue to receive transactions formatted at a given version rather
than utilize the most recent transaction version-- thereby maintaining data compatibility.
Visit the following link to view an index of available transactions:
CIM
Transaction Set
A CIM Transaction Set is defined as
one or more individual CIM messages that should be processed as a
whole. It consists of two outer encapsulating CIM messages with
other inner CIM messages between them. The inner CIM messages
comprise the logical transaction. The outer CIM messages provide
an encapsulation mechanism and define the structure of a
transaction set. Inner CIM messages may consist of discrete,
stand-alone messages, or may themselves be part of a nested
transaction set. The following illustrates an example of both a
simple transaction set and a nested transaction set.
Simple, non-nested transaction set: Sales Order
| Sales Order Pilot Transaction | |
| Sales Order Header Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Trailer Transaction |
In most business systems, a Sales Order typically consists of "Header" information followed by one or more detail lines. In the above illustration, the sales order has one header transaction and two detail transactions. Collectively, these three individual transactions form the body of a transaction set. The Pilot and Trailer CIM messages are used to encapsulate the body of the transaction set. In the target system, the three encapsulated messages should be processed as a logical transaction. In this example, the net effect would be that a particular sales order is created in the target system.
Nested transaction set: Sales Order Summary
| Sales Order Summary Pilot Transaction | |
| Sales Order Pilot Transaction | |
| Sales Order Header Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Trailer Transaction | |
| Sales Order Pilot Transaction | |
| Sales Order Header Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Detail Transaction | |
| Sales Order Trailer Transaction | |
| Sales Order Summary Trailer Transaction |
A sales order summary transaction set represents ALL sales orders for some entity (I.E. All sales orders for a given customer, or all sales orders for a given employee). The summary may consist of many individual Sales Order transaction sets. As illustrated above, the Sales Order Summary represents a transaction set which contains one or more "nested" Sales Order transaction sets within it.
View an index of available transactions and transaction sets:
Certain fields in the CETE portion of a CIM message play a vital role when using transaction sets. Transaction ID must be the same for all transactions in the set. This is how the CIM Transaction Gateway knows that a set of transactions belong together. Additionally, Transaction ID should be unique for the set with no other Transaction Set using the same Transaction ID.
The CIM Transaction Gateway will process all transactions in the set in the order dictated by the Chronological IDs. These fields must have a numerical value which causes the transactions to be processed in the proper sequence as documented. Generally, a transaction set pilot should have the lowest numerical value, and the transaction set trailer should have the highest.
This section
describes the different data formats for PIDF-based data.
Numeric (N)
Data is considered to be a positive integer. Only 0 - 9 should be placed in a field of this format. Data should be zero-filled to span the entire length of the field. Spaces are not allowed.
Alpha-Numeric (A)
Data consists of free-form text. Any characters in the EBCDIC character set are valid.
Real (R)
Data consists of a "Real" number. This is a very flexible representation of a numeric value. The value may be left-justified or right-justified within the field. Leading zeros may or may not be present. Only the characters 0-9, common numeric formatting characters, and spaces are allowed. A period (.) marks the fractional precision of a numeric value. The "Format/Comment" sections for a field should be observed and conformed to for best results. Valid numeric formatting characters are:
- Dollar Sign ($)
- Period (.)
- Comma (,)
- Dash (-) denotes negative value
- Plus (+) denotes positive value
What follows are samples of valid "Real" formatted data:
1234
$1234.00
$1,234.00-
$1,234.00+
-$1,234.00
+$1,234.00
1234.56
.56
.56789
12345.6789
00001234