• Air Canada
  • Renault
  • Viber
  • Panasonic

When an SMS message is sent to a recipient, it is expected it will be delivered to the handset within seconds. However, delivering an SMS is a relatively complex process, and an SMSC takes several measures to ensure a reliable service including retrying a message should it fail to deliver. An SMS may fail to deliver to a handset on its first delivery attempt for many reasons. These reasons can either be temporary or permanent, and if the latter, no additional retries will be attempted, and the delivery notification will be sent back to the sender to confirm the message failed.

When an SMSC is notified of a temporary problem either from the HLR status information or an MSC acknowledgement, it can perform one or both of the following actions:

  • Re-send when handset is available

An SMSC may send a command (MAP_REPORT_SM_DELIVERY_STATUS) to a destination network’s HLR, requesting to be notified of when a subscriber handset is available to receive SMS. An HLR knows that a subscriber is ready to receive SMS from one of the following actions:

  • If a subscriber was out of network coverage, and then comes back into coverage, the HLR is notified with a Ready-for-SM command.
  • If a subscriber’s handset was turned off or out of coverage for a long time, a Location Update command is sent to the HLR when the subscriber connects to the network.
  • If the handset experiences a temporary problem such as memory full, then when the subscriber deletes messages to free up memory, a Ready-for-SM command is sent to the HLR.

After receiving one of these commands, the HLR will send an AlertSC command to each SMSC that has requested to be notified that a subscriber is ready to receive SMS. It is this process that results in SMS being delivered to a handset when it is turned on.

  • Time-based retry schedule

In addition to sc-alert notification, an SMSC may attempt to deliver an SMS according to a timed schedule. The schedule used is usually dependent on the error received but is usually cascading i.e. the more it tries the longer it will take between additional retries. Temporary errors such as communication failures would be retried more frequently, for example every minute for 5 minutes, then every 10 minutes for 1 hour, then every hour for 24 hours.

Longer lasting errors such as absent-subscriber may be retried every hour for 7 days depending on the expiry period of the message which could set the maximum validity period of the message and will only be retried until the period is reached.

Back to Glossary.