In Mobile Signature Service (MSS), messages are routed between Mobile Signature Service Providers (MSSPs). Interconnected MSSPs are called a Mesh and routing messages between MSSPs in the Mesh is called MSS roaming.

The benefit of interconnecting MSSPs is that Application Providers (APs) can reach any Mobile User that’s connected to any of the MSSPs.
ETSI has standardized a protocol for MSSP messaging in ETSI TS 102 207. Methics wrote a white paper to explain MSS Roaming and to help in implementing it. Roaming is a pillar which all MSS vendors should implement properly for MSS to work well in large.
Roaming Features
MSS Roaming, when properly implemented, has the following properties:
- All messages in a single transaction go through the same route.
- Message’s path is recorded.
- Allows following requests to use the same route.
- Allows humans to easily monitor the route.
- Sender can control message route.
- Allows reaching services that are available in specific MSSPs.
RoamingHeader
Roaming messages have a SOAP Header named RoaminHeader. The RoamingHeader is a part of both request and response messages.
RoamingHeader contains two element types:
- RoamingHeaderEntry: Each MSSP writes a log entry (History).
- CommonHeader: Defines which MSSPs the message is routed to (Plan).
The following figure shows how the RoamingHeader is used:

Roaming Header Example
<?xml version="1.0" encoding="UTF-8"?> <env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:msrs="http://uri.etsi.org/TS102207/v1.1.2#" xmlns:mss="http://uri.etsi.org/TS102204/v1.1.2#" xmlns:fi="http://mss.ficom.fi/TS102204/v1.0.0#"> <env:Header> <msrs:RoamingHeader env:mustUnderstand="true" env:role="http://www.w3.org/2003/05/soap-envelope/role/next"> <msrs:RoamingHeaderEntry> … </msrs:RoamingHeaderEntry> <msrs:RoamingHeaderEntry> … </msrs:RoamingHeaderEntry> <msrs:CommonHeader> … </msrs:CommonHeader> </msrs:RoamingHeader> </env:Header> <env:Body> <mss:MSS_Signature xmlns=""> … </mss:MSS_Signature> </env:Body> </env:Envelope>
RoamingHeaderEntry Example
<msrs:RoamingHeaderEntry MajorVersion="1" MinorVersion="1"> <msrs:RE_SenderInfo Instant="2015-09-24T09:12:59.625+03:00" RE_TransactionID="AEd2u5" TimeOut="59"> <msrs:RE_Sender Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_AcquiringEntity"> <msrs:MeshMember> <mss:URI>http://mssp.a.com</mss:URI> </msrs:MeshMember> </msrs:RE_Sender> </msrs:RE_SenderInfo> <msrs:RE_Receiver Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_RoutingEntity"> <msrs:MeshMember> <mss:URI>http://mssp.b.com</mss:URI> </msrs:MeshMember> </msrs:RE_Receiver> </msrs:RoamingHeaderEntry>
CommonHeader Example
<msrs:CommonHeader AE_TransactionID="_11629"> <msrs:MeshStartPoint Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_AcquiringEntity"> <msrs:MeshMember> <mss:URI>http://mssp.a.com</mss:URI> </msrs:MeshMember> </msrs:MeshStartPoint> <msrs:MeshEndPoint Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_HomeMSSP"> <msrs:MeshMember> <mss:URI>http://mssp.c.com</mss:URI> </msrs:MeshMember> </msrs:MeshEndPoint> <msrs:MeshIntermediaryNode Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_RoutingEntity"> <msrs:MeshMember> <mss:URI>http://mssp.b.com</mss:URI> </msrs:MeshMember> </msrs:MeshIntermediaryNode> <msrs:CurrentMeshTarget Mesh_Role="http://uri.etsi.org/TS102207/v1.1.2#role_RoutingEntity"> <msrs:MeshMember> <mss:URI>http://mssp.b.com</mss:URI> </msrs:MeshMember> </msrs:CurrentMeshTarget> </msrs:CommonHeader>
For further reading, check out Methics’ white paper.