A.2 Signalling flows for MCPTT user profile configuration document creation

24.4843GPPMission Critical Services (MCS) configuration managementProtocol specificationRelease 18TS

A.2.1 CMC creating a MCPTT user profile configuration document on behalf of MCPTT user

Figure A.2.1-1 shows a flow for a system adminstrator using configuration management client CMC-1 creating an MCPTT user profile configuration document on a configuration management server CMS-1 which then uploads it to the MCPTT user database.

CMC-1 serves the system administrator (user1@example.com). The CMC-1 is configured with the CMSXCAPRootURI/MissionCriticalOrg/MCO-12345/.

In the example below the MCPTT user profile configuration document is user-profile-0.xml and is created on behalf of user2@example.com (MCPTT ID sip:user2@example.com) who has an alias of "Officer 12345".

The XUI of the document is the owner of the document (user1@example.com).

The document contains a single user profile for user2@example.com (Default Duty Shift Profile of Officer 12345).

The user profile configures user2@example.com to be allowed to place private calls to three users (user1@example.com, user3@example.com and user4@example.com).

The user profile is configured to allow making an emergency group call to MCPTTGroupEmergency@example.com and is alowed to have up to two simultaneous group calls. The user is allowed to place an emergency private call to user1@example.com.

The user profile is configured to allow making an imminent peril call to MCPTTGroupEmergency@example.com The user is allowed to place an Emergency Alert to user1@example.com.

The user profile is configured to allow making on network group calls to four groups (MCPTTGroup-A@example.com, MCPTTGroup-B@example.com, MCPTTGroup-C@example.com and MCPTTGroup-D@example.com).

The user is allowed to affiliate to a maximum of three groups and is implictly affiliated to MCPTTGroup-A@example.com and MCPTTGroup-B@example.com. The maximum number of simultaneous transmissions with a group is limited to one.

The user profile is configured to allow making off network group calls to two groups (MCPTTGroup-A@example.com, and MCPTTGroup-B@example.com).

The hostname of CMS-1 is cms1.example.com.

Figure A.2.1-1: CMC-1 creating a MCPTT user profile configuration document on CMS-1 which is uploaded to the MCPTT user database

The details of the flows are as follows:

1) CMC-1 sends an HTTP PUT request shown in table A.2.1-1 to the CMS-1.

Table A.2.1-1: HTTP PUT request

PUT /MissionCriticalOrg/MCO-12345/org.3gpp.mcptt.user-profile/users/sip:User2@example.com/user-profile-0.xml HTTP/1.1

Host: cms1.example.com

Content-Type: application/org.3gpp.mcptt.user-profile+xml; charset="utf-8"

Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJtY3B0dF9pZCI6ImFsaWNlQG9yZy5jb20iLCJleHAiOjE0NTM1MDYxMjEsInNjb3BlIjpbIm9wZW5pZCIsIjNncHA6bWNwdHQ6cHR0X3NlcnZlciJdLCJjbGllbnRfaWQiOiJtY3B0dF9jbGllbnQifQ.XYIqai4YKSZCKRNMLipGC_5nV4BE79IJpvjexWjIqqcqiEx6AmHHIRo0mhcxeCESrXei9krom9e8Goxr_hgF3szvgbwl8JRbFuv97XgepDLjEq4jL3Cbu41Q9b0WdXAdFmeEbiB8wo_xggiGwv6IDR1b3TgAAsdjkRxSK4ctIKPaOJSRmM7MKMcKhIug3BEkSC9-aXBTSIv5fAGN-ShDbPvHycBpjzKWXBvMIR5PaCg-9fwjELXZXdRwz8C6JbRM8aqzhdt4CVhQ3-Arip-S9CKd0tu-qhHfF2rvJDRlg8ZBiihdPH8mJs-qpTFep_1-kON3mL0_g54xVmlMwN0XQA

<?xml version="1.0" encoding="UTF-8"?>

<mcptt-user-profile user-profile-index="0" XUI-URI="sip:User1@example.com" xsi:schemaLocation="urn:3gpp:mcptt:user-profile:1.0 mcptt-user-profile.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:3gpp:mcptt:user-profile:1.0" xmlns:cp="urn:ietf:params:xml:ns:common-policy">

<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-entryindex="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>

2) CMS-1 authenticates User1using the access token in the authorization header field and creates the MCPTT user profile configuration document so that it is accessible using the XCAP URI http://MissionCriticalOrg/MCO-12345/sip:User2@example.com/user-profile-0.xml and then uploads the document to the MCPTT user database (see 3GPP TS 29.283 [7]).

3) Once CMS-1 receives confirmation from the MCPTT user database that the new MCPTT user profile document is stored then the CMS-1 sends a HTTP 201 (Created) response to indicate that the creation was successful.