A message contains at least two important ids and one identifier:
The Bundle.id is the unique id of a Bundle and is assigned by the FHIR framework. Each time a message is sent, the Bundle.id SHALL be changed to a new globally unique value. This SHALL be achieved by using a UUID. The Bundle.Id SHALL never be identical to a former sent Bundle.id.
The Bundle.identifier is also a unique identifier of a Bundle, but can be assigned explicitly by the sending application. The Bundle.identifier MAY be the assigned the same value as the Bundle.id.
The MessageHeader.id is the unique id of a MessageHeader and is assigned by the FHIR framework. Each time a new message is created, it SHALL be assigned a MessageHeader.id, that is globally unique. MessageHeader.id SHALL never be identical to a former sent MessageHeader.id.
When a receiver receives and processes the message, it SHALL respond with an Acknowledgement (a new message) with a new MessageHeader.id wrapped in a Bundle which also has a new Bundle.id. The response message SHALL also quote the request MessageHeader.id in MessageHeader.response.identifier so that the source system can relate the Acknowledgement to its request.
A message has several important timestamps:
In addition, the message MAY have additional timestamps in additional resources in the message. The meaning of these will depend on the message event.