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>