A.2.2 CMC subscribing to and obtaining MCPTT configuration documents
24.4843GPPMission Critical Services (MCS) configuration managementProtocol specificationRelease 18TS
Figure A.2.2-1 shows a flow for a CMC subscribing to and obtaining MCPTT configuration documents
The hostname of CMS-1 is cms1.example.com.
The user of the CMC is user2@example.com.
Figure A.2.2-1: CMC subscribing to and obtaining MCPTT configuration documents
Figure A.2.2-1 shows a CMC subscribing to and obtaining MCPTT configuration documents. The details of the flow are as follows:
1. SIP SUBSCRIBE request (CMC in MCPTT UE to SIP Core) – see example in table A.2.2-1
A CMC in a MCPTT UE wishes to obtain and get a notification when his configuration management documents are modified. In order to initiate a subscription to XCAP document changes in the CMS, the MCPTT UE generates a SIP SUBSCRIBE request indicating support for "xcap-diff", together with "message/external-body". The Content-Type of the body is "multipart/mixed" since two MIME parts are included in the body of the SIP SUBSCRIBE. One body is of application/vnd.3gpp.mcptt-info+xml containing the MCPTT access token in order that the CMS can authenticate the MCPTT user and the other is of application/resource-lists+xml containing a list of XCAP URIs of the configuration management documents being subscribed to.
Table A.2.2-1: SIP SUBSCRIBE request (CMC in MCPTT UE to SIP core)
SUBSCRIBE sip:cms1.example.net SIP/2.0
Via: SIP/2.0/UDP [5555::aaa:bbb:ccc:ddd]:1357;branch=z9hG4bKehuefdam
Max-Forwards: 70
P-Access-Network-Info: 3GPP-E-UTRAN-TDD; utran-cell-id-3gpp=234151D0FCE11
Route: <sip:pcscf1.home1.net:7531;lr; >, <sip:orig@scscf1.home1.net;lr>
P-Preferred-Identity: <sip:user2_public1@home1.net>
Privacy: none
From: <sip:user2_public1@home1.net>;tag=31415
To: <sip:cms1.example.nett>
Call-ID: b89rjhnedlrfjflslj40a222
CSeq: 123 SUBSCRIBE
Require: sec-agree
Proxy-Require: sec-agree
Security-Verify: ipsec-3gpp; q=0.1; alg=hmac-sha-1-96; spi-c=98765432; spi-s=87654321; port-c=8642; port-s=7531
P-Preferred-Service:urn:urn-7:3gpp-service.ims.icsi.mcptt
Event: xcap-diff;diff-processing=aggregate
Expires: 7200
Accept: application/xcap-diff+xml, message/external-body
Contact: <sip:user2_public1@home1.net;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6">; +g.3gpp.icsi-ref="urn:urn-7:3gpp-service.ims.icsi.mcptt"
Content-Type: multipart/mixed; boundary=boundaryMCPTT
Content-Length: (…)
–boundaryMCPTT
Content-Type: application/vnd.3gpp.mcptt-info+xml
<?xml version="1.0" encoding="UTF-8"?>
<mcpttinfo xmlns="urn:3gpp:ns:mcpttInfo:1.0">
<mcptt-Params>
<mcptt-access-token> eyJhbGciOiJSUzI1NiJ9.eyJtY3B0dF9pZCI6ImFsaWNlQG9yZy5jb20iLCJleHAiOjE0NTM1MDYxMjEsInNjb3BlIjpbIm9wZW5pZCIsIjNncHA6bWNwdHQ6cHR0X3NlcnZlciJdLCJjbGllbnRfaWQiOiJtY3B0dF9jbGllbnQifQ.XYIqai4YKSZCKRNMLipGC_5nV4BE79IJpvjexWjIqqcqiEx6AmHHIRo0mhcxeCESrXei9krom9e8Goxr_hgF3szvgbwl8JRbFuv97XgepDLjEq4jL3Cbu41Q9b0WdXAdFmeEbiB8wo_xggiGwv6IDR1b3TgAAsdjkRxSK4ctIKPaOJSRmM7MKMcKhIug3BEkSC9-aXBTSIv5fAGN-ShDbPvHycBpjzKWXBvMIR5PaCg-9fwjELXZXdRwz8C6JbRM8aqzhdt4CVhQ3-Arip-S9CKd0tu-qhHfF2rvJDRlg8ZBiihdPH8mJs-qpTFep_1-kON3mL0_g54xVmlMwN0XQA</mcptt-access-token>
</mcptt-Params>
</mcpttinfo>
–boundaryMCPTT
Content-Type: application/resource-lists+xml
<?xml version="1.0" encoding="UTF-8"?>
<resource-lists xmlns="urn:ietf:params:xml:ns:resource-lists">
<entry uri="org.3gpp.mcptt.ue-config/users/user1@example.com/"/>
<entry uri="org.3gpp.mcptt.user-profile/users/user1@example.com/"/>
<entry uri="org.3gpp.mcptt.service-config/global/"/>
</list>
</resource-lists>
Request-URI: The public service identity of CMS-1 (sip:cms1.example.net).
Event: This header field is populated with the value "xcap-diff" to specify the use of the xcap-diff package to get notified of changes to XCAP configuration management documents.
Accept: This header field is populated with the value "application/xcap-diff+xml" indicating that the MCPTT UE supports the XCAP-diff MIME type and also the value "message/external-body" indicating that the MCPTT UE supports content indirection (to avoid XCAP content that contains sensitive information being included in a SIP NOTIFY request).
To: Same as the Request-URI.
Contact: The contact URI and the feature tag g.3gpp.icsi-ref set to the MCPTT feature tag "urn:urn-7:3gpp-service.ims.icsi.mcptt"
Content-Type: Set to multipart/mixed as there are multiple body parts in the body of the SIP SUBSCRIBE request.
<mcptt-access-token>: The access token received from the Identity management Server included within the application/vnd.3gpp.mcptt-info+xml body part.
<entry uri>: Contains the XCAP request URIs for the documents being subscribed to,. Relative paths (excluding the "CMSXCAPRootURI") may be used.
2. SIP SUBSCRIBE request (SIP core to CMS) – see example in table A.2.2-2
The SIP core forwards the SIP SUBSCRIBE request to the CMS.
Table A.2.2-2 SIP SUBSCRIBE request (SIP core to CMS)
SUBSCRIBE sip:cms1.example.net SIP/2.0
Via: SIP/2.0/UDP scscf1.home1.net;branch=z9hG4bK344a65.1, SIP/2.0/UDP pcscf1.home1.net;branch=z9hG4bK120f34.1, SIP/2.0/UDP [5555::aaa:bbb:ccc:ddd]:1357;branch=z9hG4bKehuefdam
Max-Forwards: 68
P-Access-Network-Info:
P-Asserted-Identity: <sip:user2_public1@home1.net>, <tel:+1-212-555-1111>
P-Charging-Vector: icid-value="AyretyU0dm+6O2IrT5tAFrbHLso=223551024"; orig-ioi=home1.net
P-Charging-Function-Addresses: ccf=[5555::b99:c88:d77:e66]; ccf=[5555::a55:b44:c33:d22]; ecf=[5555::1ff:2ee:3dd:4ee]; ecf=[5555::6aa:7bb:8cc:9dd]
Privacy:
Record-Route: <sip:orig@scscf1.home1.net;lr>, <sip:pcscf1.home1.net;lr>
Route: <sip:cms1.home1.net;lr>, <sip:orig@scscf1.home1.net;lr>
From:
To:
Call-ID:
CSeq:
P-Asserted-Service: urn:urn-7:3gpp-service.ims.icsi.mcptt
Event:
Supported:
Expires:
Accept:
Contact:
Content-Type:
Content-Length:
(…)
3. Authorization
The CMS performs the MCPTT user authorization based on the MCPTT access token in the application/vnd.3gpp.mcptt-info+xml MIME body in the SIP SUBSCRIBE request to identify the MCPTT user and ensure that he/she is authorized to subscribe to configuration managment document changes and to identify the MCPTT user profile configuration document(s) of the MCPTT user.
– In this example authorisation is sucessful, so the CMS sends a SIP 200 (OK) response to the SIP core.
4. SIP 200 (OK) response (CMS to SIP core) – see example in table A.2.2-4
The CMS sends a SIP 200(OK) response to the SIP core.
Table A.2.2-4: SIP 200 (OK) response (CMS to SIP core)
SIP/2.0 200 OK
Via: SIP/2.0/UDP scscf1.home1.net;branch=z9hG4bK344a65.1, SIP/2.0/UDP pcscf1.home1.net;branch=z9hG4bK120f34.1, SIP/2.0/UDP [5555::aaa:bbb:ccc:ddd]:1357;branch=z9hG4bKehuefdam
P-Charging-Vector: icid-value="AyretyU0dm+6O2IrT5tAFrbHLso=223551024"; orig-ioi=home1.net; term-ioi=home1.net
Record-Route:
From:
To: <sip:cms1.example.net>;tag=151170
Call-ID:
CSeq:
Expires:
Contact: <sip:cms1.example.net;gr>
Content-Length: 0
5. SIP 200 (OK) response (S-CSCF to CMC in MCPTT UE) – see example in table A.2.2-5
The SIP core forwards the SIP 200(OK) response to the CMC in the MCPTT UE.
Table A.2.2-5: SIP 200 (OK) response (SIP core to CMC in MCPTT UE)
SIP/2.0 200 OK
Via: SIP/2.0/UDP [5555::aaa:bbb:ccc:ddd]:1357;branch=z9hG4bKehuefdam
Record-Route: <sip:orig@scscf1.home1.net;lr>, <sip:pcscf1.home1.net:7531;lr>
From:
To:
Call-ID:
CSeq:
Expires:
Contact:
Content-Length:
6. Obtaining and generating the configuration management document
The CMS obtains the MCPTT user profile for the MCPTT user from the MCPTT user database (see 3GPP TS 29.283 [7]), The MCPTT service configuration document is identified solely by the entry uri="/MissionCriticalOrg/MCO-12345/;/org.3gpp.mcptt.service-config/global/service-config.xml" and an off network MCPTT service configuration document is generated that contains the <common> and <off-network> elements. The CMS mints XCAP URIs for each of these configuration management documents.
7. SIP NOTIFY request (CMS to SIP core) – see example in table A.2.2-7
The CMS generates a SIP NOTIFY request including the xcap-diff document as a result of the SIP SUBSCRIBE request. As this is the initial SIP NOTIFY it contains only the new-etag, a previous etag and sel attributes for the MCPTT UE configuration document, MCPTT user profile configuration document and the off network MCPTT service configuration document.
Table A.2.3-7 SIP NOTIFY request (CMS to SIP core)
NOTIFY sip:user2_public1@home1.net;gr=urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6 SIP/2.0
Via: SIP/2.0/UDP cms1.example.com;branch=z9hG4bK240f34.1
Max-Forwards: 70
P-Charging-Vector: icid-value="AyretyU0dm+6O2IrT5tAFrbHLso=323551024"; orig-ioi=home1.net
P-Charging-Function-Addresses: ccf=[5555::b99:c88:d77:e66]; ccf=[5555::a55:b44:c33:d22]; ecf=[5555::1ff:2ee:3dd:4ee]; ecf=[5555::6aa:7bb:8cc:9dd]
Route: <sip:scscf1.home1.net;lr>, <sip:pcscf1.home1.net;lr>
From: <sip:cms1.example.com>;tag=151170
To: <sip:user2_public1@home1.net>;tag=31415
Call-ID: b89rjhnedlrfjflslj40a222
CSeq: 89 NOTIFY
P-Asserted-Service: urn:urn-7:3gpp-service.ims.icsi.mcptt
Subscription-State: active;expires=7200
Event: xcap-diff
Contact: <sip:cms1.example.net;gr>
Content-Type: application/xcap-diff+xml;charset="UTF-8"
Content-Length: (..)
<?xml version="1.0" encoding="UTF-8"?>
<xcap-diff xmlns="urn:ietf:params:xml:ns:xcap-diff"
xcap-root=https://MissionCriticalOrg/MCO-12345/>
<document sel="org.3gpp.mcptt.ue-config/users/user1@example.com/imei-90420156-025763-0/mcptt-ue-config.xml"
new-etag="g8tyah7"
previous-etag="g8tyah7">
</document>
<document sel="org.3gpp.mcptt.user-profile/users/user1@example.com/user-profile-0.xml"
new-etag="7hahsd"
previous-etag="7hahsd">
</document>
<document sel="org.3gpp.mcptt.service-config/global/service-config.xml"
new-etag="ffds66a"
previous-etag="ffds66a">
</document>
</xcap-diff>
The content of each document element contains a new-etag and a previous etag attribute with identical value and no list of instructions. This way it is indicated that this is the reference XML diff document. This documents has only the information about the etags and the document URI’s covered by that subscription
8. SIP NOTIFY request (SIP core to CMC in MCPTT UE) – see example in table A.2.2-8
The SIP core forwards the SIP NOTIFY request to the CMC in the MCPTT UE.
Table A.2.2-8: SIP NOTIFY request (SIP core to CMC in MCPTT UE)
NOTIFY sip:[5555::aaa:bbb:ccc:ddd]:1357 SIP/2.0
Via: SIP/2.0/UDP pcscf1.home1.net;branch=240f34.1, SIP/2.0/UDP scscf1.home1.net;branch=z9hG4bK332b23.1, SIP/2.0/UDP cms1.example.com;branch=z9hG4bK240f34.1
Max-Forwards: 68
Record-Route: <sip:scscf1.home1.net;lr>, <sip:pcscf1.home1.net:7531;lr>
From:
To:
Call-ID:
P-Asserted-Service:
CSeq:
Subscription-State:
Event:
Contact:
Content-Length:
(…)
9. SIP 200 (OK) response (CMC in MCPTT UE to SIP core) – see example in table A.2.2-9
The CMC in MCPTT UE acknowledges the SIP NOTIFY request with a SIP 200 (OK) response to the SIP core.
Table A.2.2-9: SIP 200 (OK) response (CMC in MCPTT UE to SIP core)
SIP/2.0 200 OK
Via: SIP/2.0/UDP pcscf1.home1.net;branch=240f34.1, SIP/2.0/UDP scscf1.home1.net;branch=z9hG4bK332b23.1, SIP/2.0/UDP cms1.example.com;branch=z9hG4bK240f34.1
P-Access-Network-Info: 3GPP-E-UTRAN-TDD; utran-cell-id-3gpp=234151D0FCE11
From:
To:
Call-ID:
CSeq:
Content-Length: 0
10. SIP 200 (OK) response (SIP core to CMS) – see example in table A.2.2-10
The SIP core forwards the SIP 200(OK) response to the CMS.
Table A.2.2-10: SIP 200 (OK) response (SIP core to CMS)
SIP/2.0 200 OK
Via: SIP/2.0/UDP cms1.example.com;branch=z9hG4bK240f34.1
P-Access-Network-Info:
P-Charging-Vector: icid-value="AyretyU0dm+6O2IrT5tAFrbHLso=323551024"; orig-ioi=home1.net; term-ioi=home1.net
From:
To:
Call-ID:
CSeq:
Content-Length:
11. HTTP GET request (CMC in MCPTT UE to CMS) – see example in table A.2.2-11
The CMC obtains the MCPTT UE configuration document by generating an HTTP GET request using the XCAP URI from the sel attribute of the <document> element in the SIP NOTIFY request.
Table A.2.2-11: HTTP GET request (CMC in MCPTT UE to CMS)
GET https://MissionCriticalOrg/MCO-12345/org.3gpp.mcptt.ue-config/users/user1@example.com/imei-90420156-025763-0/mcptt-ue-config.xml HTTP/1.1
Host: cms1.example.com
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtY3B0dF9pZCI6ImFsaWNlQG9yZy5jb20iLCJleHAiOjE0NTM1MDYxMjEsInNjb3BlIjpbIm9wZW5pZCIsIjNncHA6bWNwdHQ6cHR0X3NlcnZlciJdLCJjbGllbnRfaWQiOiJtY3B0dF9jbGllbnQifQ.XYIqai4YKSZCKRNMLipGC_5nV4BE79IJpvjexWjIqqcqiEx6AmHHIRo0mhcxeCESrXei9krom9e8Goxr_hgF3szvgbwl8JRbFuv97XgepDLjEq4jL3Cbu41Q9b0WdXAdFmeEbiB8wo_xggiGwv6IDR1b3TgAAsdjkRxSK4ctIKPaOJSRmM7MKMcKhIug3BEkSC9-aXBTSIv5fAGN-ShDbPvHycBpjzKWXBvMIR5PaCg-9fwjELXZXdRwz8C6JbRM8aqzhdt4CVhQ3-Arip-S9CKd0tu-qhHfF2rvJDRlg8ZBiihdPH8mJs-qpTFep_1-kON3mL0_g54xVmlMwN0XQA
Content-Length: 0
12. HTTP 200 (OK) response (CMC in MCPTT UE to CMS) – see example in table A.2.2-12
After the CMS has performed the authorization check on the access token in the Authorization header field to ensure that the MCPTT user is allowed to fetch the MCPTT UE configuration document, the CMS sends a HTTP 200 (OK) response to the CMC including the MCPTT UE configuration document in the body of the response.
Table A.2.2-12: HTTP 200 (OK) response (CMS to CMC in MCPTT UE)
HTTP/1.1 200 OK
Etag: "g8tyah7"
Content-Type: application/org.3gpp.mcptt-ue-config+xml; charset="utf-8"
Content-Length: (…)
<?xml version="1.0" encoding="UTF-8"?>
<mcptt-UE-configuration xmlns="urn:3gpp:mcptt:mcpttUEConfig:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:3gpp:mcptt:ue-config:1.0 ue-config.xsd"XUI-URI="sip:User2@example.com" domain="example.com">
<name xml:lang="en-GB">Default Duty Shift Profile of Officer 12345</name>
<common index="0">
<private-call>
<Max-Simul-Call-N10>3</Max-Simul-Call-N10>
</private-call>
<MCPTT-Group-Call>
<Max-Simul-Call-N4>2</Max-Simul-Call-N4>
<Max-Simul-Trans-N5>1</Max-Simul-Trans-N5>
<Prioritized-MCPTT-Group>
<MCPTT-Group-Priority index="0">
<MCPTT-Group-ID>sip:MCPTTGroupEmergency@example.com</MCPTT-Group-ID>
<group-priority-hierarchy>7</group-priority-hierarchy>
</MCPTT-Group-Priority>
<MCPTT-Group-Priority index="1">
<MCPTT-Group-ID>sip:MCPTTGroup-A@example.com</MCPTT-Group-ID>
<group-priority-hierarchy>4</group-priority-hierarchy>
</MCPTT-Group-Priority>
<MCPTT-Group-Priority index="2">
<MCPTT-Group-ID>sip:MCPTTGroup-B@example.com</MCPTT-Group-ID>
<group-priority-hierarchy>3</group-priority-hierarchy>
</MCPTT-Group-Priority>
<MCPTT-Group-Priority index="3">
<MCPTT-Group-ID>sip:MCPTTGroup-C@example.com</MCPTT-Group-ID>
<group-priority-hierarchy>2</group-priority-hierarchy>
</MCPTT-Group-Priority>
<MCPTT-Group-Priority index="4">
<MCPTT-Group-ID>sip:MCPTTGroup-C@example.com</MCPTT-Group-ID>
<group-priority-hierarchy>1</group-priority-hierarchy>
</MCPTT-Group-Priority>
</Prioritized-MCPTT-Group>
</MCPTT-Group-Call>
<anyExt/>
</common>
<on-network index="0">
<IPv6Preferred>true</IPv6Preferred>
<Relay-Service>true</Relay-Service>
<Relayed-MCPTT-Group index="0">
<MCPTT-Group-ID>sip:MCPTTGroupEmergency@example.com</MCPTT-Group-ID>
<Relay-Service-Code>"71abcde"</Relay-Service-Code>
<anyExt/>
</Relayed-MCPTT-Group>
<Relayed-MCPTT-Group index="1">
<MCPTT-Group-ID>sip:MCPTTGroup-A@example.com</MCPTT-Group-ID>
<Relay-Service-Code>"491Fac4"</Relay-Service-Code>
<anyExt/>
</Relayed-MCPTT-Group>
<Relayed-MCPTT-Group index="2">
<MCPTT-Group-ID>sip:MCPTTGroup-B@example.com</MCPTT-Group-ID>
<Relay-Service-Code>"3912cd"</Relay-Service-Code>
<anyExt/>
</Relayed-MCPTT-Group>
<anyExt/>
</on-network>
<anyExt/>
</mcptt-UE-configuration>
13. HTTP GET request (CMC in MCPTT UE to CMS) – see example in table A.2.2-13
The CMC obtains the MCPTT user profile configuration document by generating an HTTP GET request using the XCAP URI from the sel attribute of the <document> element in the SIP NOTIFY request.
Table A.2.2-13: HTTP GET request (CMC in MCPTT UE to CMS)
GET https://MissionCriticalOrg/MCO-12345/org.3gpp.mcptt.user-profile/users/user1@example.com /user-profile-0.xml HTTP/1.1
Host: cms1.example.com
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtY3B0dF9pZCI6ImFsaWNlQG9yZy5jb20iLCJleHAiOjE0NTM1MDYxMjEsInNjb3BlIjpbIm9wZW5pZCIsIjNncHA6bWNwdHQ6cHR0X3NlcnZlciJdLCJjbGllbnRfaWQiOiJtY3B0dF9jbGllbnQifQ.XYIqai4YKSZCKRNMLipGC_5nV4BE79IJpvjexWjIqqcqiEx6AmHHIRo0mhcxeCESrXei9krom9e8Goxr_hgF3szvgbwl8JRbFuv97XgepDLjEq4jL3Cbu41Q9b0WdXAdFmeEbiB8wo_xggiGwv6IDR1b3TgAAsdjkRxSK4ctIKPaOJSRmM7MKMcKhIug3BEkSC9-aXBTSIv5fAGN-ShDbPvHycBpjzKWXBvMIR5PaCg-9fwjELXZXdRwz8C6JbRM8aqzhdt4CVhQ3-Arip-S9CKd0tu-qhHfF2rvJDRlg8ZBiihdPH8mJs-qpTFep_1-kON3mL0_g54xVmlMwN0XQA
Content-Length: 0
14. HTTP 200 (OK) response (CMS to CMC in MCPTT UE) – see example in table A.2.2-14
After the CMS has performed the authorization check on the access token in the Authorization header field to ensure that the MCPTT user is allowed to fetch the MCPTT user profile configuration document, the CMS sends a HTTP 200 (OK) response to the CMC including the MCPTT user profile configuration document in the body of the response.
Table A.2.2-14: HTTP 200 (OK) response (CMS to CMC in MCPTT UE)
HTTP/1.1 200 OK
Etag: "7hahsd"
Content-Type: application/org.3gpp.mcptt.user-profile+xml; charset="utf-8"
Content-Length: (…)
<?xml version="1.0" encoding="UTF-8"?>
<mcptt-user-profile xmlns:cp="urn:ietf:params:xml:ns:common-policy" xmlns ="urn:3gpp:mcptt:user-profile:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:3gpp:mcptt:user-profile:1.0 mcptt-user-profile.xsd" XUI-URI="sip:User2@example.com" user-profile-index="0">
<Name xml:lang="en-GB">Default Duty Shift Profile of Officer 12345</Name>
<Status>true</Status>
<ProfileName xml:lang="en-GB">Default Duty Shift Profile of Officer 12345</ProfileName>
<Pre-selected-indication/>
<Common index="0">
<UserAlias>
<alias-entry index="0" xml:lang="en-GB">Officer 12345</alias-entry>
<anyExt/>
</UserAlias>
<MCPTTUserID>
<uri-entry>sip:user2@example.com</uri-entry>
<display-name xml:lang="en-GB">User 2</display-name>
<anyExt/>
</MCPTTUserID>
<PrivateCall>
<PrivateCallList index="0">
<PrivateCallURI index="0">
<uri-entry>sip:user1@example.com</uri-entry>
<display-name xml:lang="en-GB">User 1</display-name>
<anyExt/>
</PrivateCallURI>
<PrivateCallURI index="1">
<uri-entry>sip:user3@example.com</uri-entry>
<display-name xml:lang="en-GB">User 3</display-name>
<anyExt/>
</PrivateCallURI>
<PrivateCallURI index="2">
<uri-entry>sip:user4@example.com</uri-entry>
<display-name xml:lang="en-GB">User 4</display-name>
<anyExt/>
</PrivateCallURI>
<PrivateCallProSeUser index="0">
<DiscoveryGroupID>123abc87</DiscoveryGroupID>
<User-Info-ID>1234afcd5521</User-Info-ID>
<anyExt/>
</PrivateCallProSeUser>
<PrivateCallProSeUser index="1">
<DiscoveryGroupID>123abd01</DiscoveryGroupID>
<User-Info-ID>1234afcd4567</User-Info-ID>
<anyExt/>
</PrivateCallProSeUser>
<PrivateCallProSeUser index="2">
<DiscoveryGroupID>123abc84</DiscoveryGroupID>
<User-Info-ID>1234afcd591f</User-Info-ID>
<anyExt/>
</PrivateCallProSeUser>
<anyExt>
<PrivateCallKMSURI>
<PrivateCallKMSURI>
<uri-entry>https://KMS.example.com</uri-entry>
<anyExt/>
</PrivateCallKMSURI>
</PrivateCallKMSURI>
</anyExt>
</PrivateCallList>
<EmergencyCall>
<MCPTTPrivateRecipient>
<entry entry-info="UsePreConfigured" index="0">
<uri-entry>sip:user1@example.com</uri-entry>
<display-name>User 1</display-name>
<anyExt/>
</entry>
<ProSeUserID-entry index="0">
<DiscoveryGroupID>123abc87</DiscoveryGroupID>
<User-Info-ID>1234afcd5521</User-Info-ID>
<anyExt/>
</ProSeUserID-entry>
<anyExt/>
</MCPTTPrivateRecipient>
</EmergencyCall>
<anyExt/>
</PrivateCall>
<MCPTT-group-call>
<MaxSimultaneousCallsN6>3</MaxSimultaneousCallsN6>
<EmergencyCall>
<MCPTTGroupInitiation>
<entry entry-info="DedicatedGroup" index="0">
<uri-entry>sip:MCPTTGroupEmergency@example.com</uri-entry>
<display-name>Emergency MCPTT Group</display-name>
<anyExt/>
</entry>
</MCPTTGroupInitiation>
</EmergencyCall>
<ImminentPerilCall>
<MCPTTGroupInitiation>
<entry entry-info="DedicatedGroup" index="0">
<uri-entry>sip:MCPTTGroupEmergency@example.com</uri-entry>
<display-name>Emergency MCPTT Group</display-name>
<anyExt/>
</entry>
</MCPTTGroupInitiation>
<anyExt/>
</ImminentPerilCall>
<EmergencyAlert>
<entry entry-info="UsePreConfigured" index="0">
<uri-entry>sip:user1@example.com</uri-entry>
<display-name>User 1</display-name>
<anyExt/>
</entry>
<anyExt/>
</EmergencyAlert>
<Priority>56</Priority>
<anyExt/>
</MCPTT-group-call>
<ParticipantType>First Responder</ParticipantType>
<MissionCriticalOrganization>Gotham PD</MissionCriticalOrganization>
<anyExt/>
</Common>
<OnNetwork index="0">
<MCPTTGroupInfo xml:lang="en-GB" index="0">
<entry index="0">
<uri-entry>sip:MCPTTGroup-A@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group A</display-name>
<anyExt/>
</entry>
<entry index="1">
<uri-entry>sip:MCPTTGroup-B@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group B</display-name>
<anyExt/>
</entry>
<entry index="2">
<uri-entry>sip:MCPTTGroup-C@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group C</display-name>
<anyExt/>
</entry>
<entry index="3">
<uri-entry>sip:MCPTTGroup-D@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group D</display-name>
<anyExt/>
</entry>
<anyExt/>
</MCPTTGroupInfo>
<MaxAffiliationsN2>3</MaxAffiliationsN2>
<ImplicitAffiliations xml:lang="en-GB" index="0">
<entry index="0">
<uri-entry>sip:MCPTTGroup-A@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group A</display-name>
<anyExt/>
</entry>
<entry index="1">
<uri-entry>sip:MCPTTGroup-B@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group B</display-name>
<anyExt/>
</entry>
<anyExt/>
</ImplicitAffiliations>
<MaxSimultaneousTransmissionsN7>1</MaxSimultaneousTransmissionsN7>
<PrivateEmergencyAlert>
<entry entry-info="UsePreConfigured" index="0">
<uri-entry>sip:user1@example.com</uri-entry>
<display-name xml:lang="en-GB">User 1</display-name>
<anyExt/>
</entry>
</PrivateEmergencyAlert>
<anyExt>
<RemoteGroupSelectionURIList>
<entry index="0">
<uri-entry>sip:user3@example.com</uri-entry>
<display-name xml:lang="en-GB">User 3</display-name>
<anyExt/>
</entry>
<anyExt/>
</RemoteGroupSelectionURIList>
<GroupServerInfo>
<GMS-Serv-Id index="0">
<entry index="0">
<uri-entry>https://GMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</GMS-Serv-Id>
<IDMS-token-endpoint index="0">
<entry index="0">
<uri-entry>https://IDMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</IDMS-token-endpoint>
<KMS-URI index="0">
<entry index="0">
<uri-entry>https://KMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</KMS-URI>
<anyExt/>
</GroupServerInfo>
</anyExt>
</OnNetwork>
<OffNetwork index="0">
<MCPTTGroupInfo index="0">
<entry entry-info="DedicatedGroup" index="0">
<uri-entry>sip:MCPTTGroup-A@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group A</display-name>
<anyExt/>
</entry>
<entry entry-info="DedicatedGroup" index="1">
<uri-entry>sip:MCPTTGroup-B@example.com</uri-entry>
<display-name xml:lang="en-GB">MCPTT Group B</display-name>
<anyExt/>
</entry>
</MCPTTGroupInfo>
<User-Info-ID>5ff37ab2c103</User-Info-ID>
<anyExt>
<OffNetworkGroupServerInfo>
<GMS-Serv-Id index="0">
<entry index="0">
<uri-entry>https://GMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</GMS-Serv-Id>
<IDMS-token-endpoint index="0">
<entry index="0">
<uri-entry>https://IDMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</IDMS-token-endpoint>
<KMS-URI index="0">
<entry index="0">
<uri-entry>https://KMS.example.com</uri-entry>
<anyExt/>
</entry>
<anyExt/>
</KMS-URI>
<anyExt/>
</OffNetworkGroupServerInfo>
</anyExt>
</OffNetwork>
<cp:ruleset>
<cp:rule id="f3g44r0">
<cp:conditions>
<identity>
<one id="sip:user2@example.com"/>
</identity>
</cp:conditions>
<cp:actions>
<allow-presence-status>false</allow-presence-status>
<allow-request-presence>false</allow-request-presence>
<allow-query-availability-for-private-calls>false</allow-query-availability-for-private-calls>
<allow-enable-disable-user>false</allow-enable-disable-user>
<allow-enable-disable-UE>false</allow-enable-disable-UE>
<allow-create-delete-user-alias>false</allow-create-delete-user-alias>
<allow-private-call>true</allow-private-call>
<allow-manual-commencement>true</allow-manual-commencement>
<allow-automatic-commencement>true</allow-automatic-commencement>
<allow-force-auto-answer>false</allow-force-auto-answer>
<allow-failure-restriction>false</allow-failure-restriction>
<allow-emergency-group-call>true</allow-emergency-group-call>
<allow-emergency-private-call>true</allow-emergency-private-call>
<allow-cancel-group-emergency>true</allow-cancel-group-emergency>
<allow-cancel-private-emergency-call>true</allow-cancel-private-emergency-call>
<allow-imminent-peril-call>true</allow-imminent-peril-call>
<allow-cancel-imminent-peril>true</allow-cancel-imminent-peril>
<allow-activate-emergency-alert>true</allow-activate-emergency-alert>
<allow-cancel-emergency-alert>true</allow-cancel-emergency-alert>
<allow-offnetwork>true</allow-offnetwork>
<allow-imminent-peril-change>true</allow-imminent-peril-change>
<allow-private-call-media-protection>true</allow-private-call-media-protection>
<allow-private-call-floor-control-protection>true</allow-private-call-floor-control-protection>
<allow-request-affiliated-groups>true</allow-request-affiliated-groups>
<allow-request-to-affiliate-other-users>false</allow-request-to-affiliate-other-users>
<allow-recommend-to-affiliate-other-users>false</allow-recommend-to-affiliate-other-users>
<allow-private-call-to-any-user>false</allow-private-call-to-any-user>
<allow-regroup>true</allow-regroup>
<allow-private-call-participation>true</allow-private-call-participation>
<allow-override-of-transmission>false</allow-override-of-transmission>
<allow-listen-both-overriding-and-overridden>false</allow-listen-both-overriding-and-overridden>
<allow-transmit-during-override>false</allow-transmit-during-override>
<allow-off-network-group-call-change-to-emergency>true</allow-off-network-group-call-change-to-emergency>
<allow-revoke-transmit>false</allow-revoke-transmit>
<allow-create-group-broadcast-group>false</allow-create-group-broadcast-group>
<allow-create-user-broadcast-group>false</allow-create-user-broadcast-group>
<anyExt>
<allow-request-private-call-call-back>false</allow-request-private-call-call-back>
<allow-cancel-private-call-call-back>false</allow-cancel-private-call-call-back>
<allow-request-remote-initiated-ambient-listening>false</allow-request-remote-initiated-ambient-listening>
<allow-request-locally-initiated-ambient-listening>false</allow-request-locally-initiated-ambient-listening>
<allow-request-first-to-answer-call>true</allow-request-first-to-answer-call>
<allow-request-remote-init-private-call>true</allow-request-remote-init-private-call>
<allow-request-remote-init-group-call>true</allow-request-remote-init-group-call>
</anyExt>
</cp:actions>
<cp:transformations/>
</cp:rule>
</cp:ruleset>
<anyExt/>
</mcptt-user-profile>
15. HTTP GET request (CMC in MCPTT UE to CMS) – see example in table A.2.2-15
The CMC obtains the off network MCPTT service configuration document by generating an HTTP GET request using the XCAP URI from the sel attribute of the <document> element in the SIP NOTIFY request.
Table A.2.2-15: HTTP GET request (CMC in MCPTT UE to CMS)
GET https://MissionCriticalOrg/MCO-12345/org.3gpp.mcptt.service-config/global/service-config.xml HTTP/1.1
Host: cms1.example.com
Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtY3B0dF9pZCI6ImFsaWNlQG9yZy5jb20iLCJleHAiOjE0NTM1MDYxMjEsInNjb3BlIjpbIm9wZW5pZCIsIjNncHA6bWNwdHQ6cHR0X3NlcnZlciJdLCJjbGllbnRfaWQiOiJtY3B0dF9jbGllbnQifQ.XYIqai4YKSZCKRNMLipGC_5nV4BE79IJpvjexWjIqqcqiEx6AmHHIRo0mhcxeCESrXei9krom9e8Goxr_hgF3szvgbwl8JRbFuv97XgepDLjEq4jL3Cbu41Q9b0WdXAdFmeEbiB8wo_xggiGwv6IDR1b3TgAAsdjkRxSK4ctIKPaOJSRmM7MKMcKhIug3BEkSC9-aXBTSIv5fAGN-ShDbPvHycBpjzKWXBvMIR5PaCg-9fwjELXZXdRwz8C6JbRM8aqzhdt4CVhQ3-Arip-S9CKd0tu-qhHfF2rvJDRlg8ZBiihdPH8mJs-qpTFep_1-kON3mL0_g54xVmlMwN0XQA
Content-Length: 0
16. HTTP 200 (OK) response (CMS to CMC in MCPTT UE) – see example in table A.2.2-16
After the CMS has performed the authorization check on the access token in the Authorization header field to ensure that the MCPTT user is allowed to fetch the off network MCPTT service configuration document, the CMS sends a HTTP 200 (OK) response to the CMC including the common and off network elements from the MCPTT service configuration document in the body of the response.
Table A.2.2-16: HTTP 200 (OK) response (CMS to CMC in MCPTT UE)
HTTP/1.1 200 OK
Etag: "ffds66a"
Content-Type: application/org.3gpp.mcptt-service-config+xml; charset="utf-8"
Content-Length: (…)
<?xml version="1.0" encoding="UTF-8"?>
<service-configuration-info xmlns="urn:3gpp:ns:mcpttServiceConfig:1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="Servconf.xsd">
<service-configuration-params domain="example.com">
<common>
<min-length-alias>5</min-length-alias>
<broadcast-group>
<num-levels-group-hierarchy>6</num-levels-group-hierarchy>
<num-levels-user-hierarchy>6</num-levels-user-hierarchy>
<anyExt/>
</broadcast-group>
<anyExt/>
</common>
<off-network>
<emergency-call>
<private-cancel-timeout>PT13S</private-cancel-timeout>
<group-time-limit>PT1300S</group-time-limit>
<anyExt/>
</emergency-call>
<private-call>
<hang-time>PT13S</hang-time>
<max-duration-with-floor-control>PT1300S</max-duration-with-floor-control>
<max-duration-without-floor-control>PT1300S</max-duration-without-floor-control>
<anyExt/>
</private-call>
<num-levels-priority-hierarchy>6</num-levels-priority-hierarchy>
<transmit-time>
<time-limit>PT13S</time-limit>
<time-warning>PT1300S</time-warning>
</transmit-time>
<hang-time-warning>PT8S</hang-time-warning>
<default-prose-per-packet-priority>
<mcptt-private-call-signalling>4</mcptt-private-call-signalling>
<mcptt-private-call-media>3</mcptt-private-call-media>
<mcptt-emergency-private-call-signalling>7</mcptt-emergency-private-call-signalling>
<mcptt-emergency-private-call-media>6</mcptt-emergency-private-call-media>
</default-prose-per-packet-priority>
<allow-log-metadata>true</allow-log-metadata>
<anyExt/>
</off-network>
</service-configuration-params>
<anyExt/>
</service-configuration-info>