End-to-End Notification Process

Each MtxNotification MATRIXX Data Container (MDC) specifies one notification contact. For notifications that have multiple recipients and channels, multiple notification MDCs are generated.

The following notification process is for a global processing scenario with a Traffic Routing Agent (TRA) for site independence (TRA-RT-(SI/DR) or TRA-SI).
  1. A notification is triggered by the Charging Server and sent to the ActiveMQ Gateway. The ActiveMQ Gateway delivers it to the message broker (ActiveMQ).
  2. The Notification Server gets the message in compact MDC (CMDC) format from the mtx_notification_queue, and formats the message using a language-specific template determined by the notification type and MtxNotificationContact language field value.
  3. The Notification Server sends the message to the delivery channel (for example, SMTP, SMPP, and so forth).
    Note: The Notification Server uses Apache Camel components to determine the delivery channel and provide access to it. For example, Apache Camel SMPP provides access to an Short Message Service Center (SMSC) over the SMPP protocol to send and receive SMS. The Apache Camel mail component is used to deliver formatted messages to SMTP endpoints. The delivery channel is determined by the notification flag set in MtxNotificationContact MDC. If a notification flag has a value that is not associated with an endpoint, a warning is generated. For example: Notification Flag 256 is not being used for any endpoint. If a custom notification flag is defined in the MtxNotificationContact MDC, the route must be defined in the mtx_notifier_camel.xml file. For more information about defining endpoint routes, see the discussion about configuring notification messaging in MATRIXX Integration.
  4. The Notification Server receives a delivery ID from the delivery channel (for example, an SMTP Message-ID).
  5. The Notification Server creates a message MDC acknowledgment which includes the delivery ID (NotificationDeliveryId) and the formatted message (NotificationContentList) which was delivered to the endpoint and sends it to the ActiveMQ mtx_response_queue.
  6. The ActiveMQ Gateway gets the message MDC and deletes the notification.

    If notification status event generation is enabled, the Charging Server generates an MtxNotificationDoneEvent that includes the NotificationDeliveryId and the NotificationContentList. MtxNotificationDoneEvent is disabled by default. During MATRIXX Engine configuration, you can configure if notification status events are generated for notification message delivery processing and under which circumstances they are created.

    Answer y to the following create_config.info question to copy the MtxNotification MDC to the MtxNotificationDoneEvent Event Detail Record (EDR): Should Notification MDC be copied into the NotificationDone events (y/n)? The default is n.

    See the discussion about notification status events for more information.

If the Charging Server does not receive a delivery acknowledgment, it resends the message based on the notification settings. For more information about notification settings, see the discussion about global system configuration in MATRIXX Configuration. For information about resending failed notifications using the SubMan APIs, see the discussion about resending notifications.

If the Notification Server is stopped and restarted, the Task Manager attempts to resend any messages if the messages were not processed in time. After the Notification Server is restarted, it processes both the original message and any retried messages. The result is an acknowledgment for both the original messages and the retried messages.

Figure 1 shows how notification messages are handled by MATRIXX Engine. After a message is delivered to the configured endpoint, an acknowledgment message is returned to MATRIXX Engine and the notification is removed from the database.
Figure 1. Notification Message Handling
Notifications are not published in the following situations:
  • MATRIXX Engine is not configured to publish notifications.
  • MDCs are not generated for notifications for which the contact is not specified.
  • JMS server information is not configured in the Notification Server properties as described in MATRIXX Configuration.
  • Notification types are not enabled in My MATRIXX.

If notifications cannot be published, the message can be removed from the engine after a configured number of retries. You can configure a message to be removed from the engine after the Notification Server sends an acknowledgment that the message has been received.

When the number of notification retries complete and MATRIXX Engine has not received a response, the MaxRetry Failures notification statistic is updated. For example, if MATRIXX Engine is configured to retry 5 times and the timeout is 10 seconds, MaxRetry Failures is updated after 50 seconds, that is, 5 tries times a 10 second interval. You can configure the amount of time to wait between resending a notification when an acknowledgment of delivery is not received from the ActiveMQ server by configuring the create_config.info question: Global:How much time (in microseconds) should elapse between the time a notification is sent, and the time it is resent?

Configure the maximum number of times to resend a notification when an acknowledgment is not received using the create_config.info question: Global:How many times should a notification be sent if an acknowledgment is not received? For more information, see the discussion about global system configuration in MATRIXX Configuration.

When the engine receives a failure response from the Notification Server, the Notify Server Failures notification statistic is updated. For example, when a request to deliver a notification is sent by email and the email server is down. If the engine receives a filtered response from the notification server, the Notify Server Filtered statistic is updated. This means that the Notification Server was configured not to deliver such a notification, so there is no endpoint to which to send. For example, if the subscriber notification flag is empty, the Notification Server does not know how to deliver the notification.