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.