UML Diagrams¶
Here we present you the sequence diagrams of the main interactions between the GLPI Plugin and Flyve MDM Agent.
Enrollment MQTT¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
participant U as User
A->>P: create invitation to enroll with user email
P->>P: create user in DB with given email
P->>U: send invitation to user email account
U-->>Ag: open invitation in the device, fill information
Ag-->>P: send user information and inventory through HTTP request
P->>P: update user account, add Agent to DB, create MQTT credentials
P->>B: send MQTT credentials
B->>Ag: send MQTT credentials
Ag-->>B: connect to MQTT server
Enrollment FCM¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
participant U as User
A->>P: create invitation to enroll with user email
P->>P: create user in DB with given email
P->>U: send invitation to user email account
U-->>Ag: open invitation in the device
Ag->>Ag: conect to FCM
U-->>Ag: fill information
Ag-->>P: send user information, FCM credentials and inventory through HTTP request
P->>P: update user account, add Agent to DB, receive FCM credentials
Status Online/Offline MQTT¶
sequenceDiagram
participant P as Plugin
participant B as Broker
participant Ag as Agent
Ag->>B: connect to MQTT
Ag->>Ag: update UI
Ag->>B: last will status Offline
B->>B: save last will message
Ag-->>B: status Online
B-->>P: status Online
P->>P: update UI
loop Maintain connection
Ag->>B: Ping message
B->>Ag: Ping response
end
Note right of Ag: For some reason, <br/>the agent looses connectivity
Ag->>Ag: update UI
Note right of B: Closing TCP socket
B-->>P: status Offline
P->>P: update UI
Status Online/Offline FCM¶
sequenceDiagram
participant P as Plugin
participant B as Broker
participant Ag as Agent
Ag->>B: connect to FCM
Ag->>Ag: update UI
Ag->>P:send through HTTP status Online
P->>P: update UI
The Offline status is only sent to the backend when there is an unenrollment or wipe, if the Agent looses connectivity in any other form, it won’t send the status
Implementation of policies MQTT¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
participant U as User
alt fleet without Agent(s)
A->>P: create fleet and set policies
A->>P: assign agents to fleet
else fleet with Agent(s)
A->>P: add policy
end
opt device
A->>P: set policy
end
P->>B: send policies individually
B->>Ag: send policies individually
Ag->>Ag: apply policies
Ag-->>P: send task status through HTTP
P->>P: update UI
U->>Ag: change a setting controlled by a policy
par get broadcast
Ag->>Ag: check policy value
Ag->>Ag: maintain policy value given by the Administrator
end
Implementation of policies FCM¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
alt fleet without Agent(s)
A->>P: create fleet and set policies
A->>P: assign agents to fleet
else fleet with Agent(s)
A->>P: add policy
end
opt device
A->>P: set policy
end
P->>B: send policies individually
B->>Ag: send policies individually
Ag->>Ag: apply policies
Ag-->>P: send task status through HTTP
P->>P: update UI
File & App download¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
participant U as User
A->>P: upload file/app
A->>P: send download policy
P->>B: send download policy
B->>Ag: send download policy
Ag-->>P: send HTTP request to download file
Note right of Ag: For files the Agent has all priveleges <br/> to download them
alt Agent has system privileges
P->>Ag: send file/app through HTTP
Ag->>Ag: download file/app
else Agent doesn't have system privileges
P->>Ag: send app through HTTP
Note right of U: The request is available for API 23+ <br/> the user MUST enable unknown sources in minor versions <br/> to download the app
Ag->>U: request to allow unknown sources
U-->>Ag: allow unknown sources
Ag->>Ag: download app
end
Ag-->>P: send task status through HTTP
P->>P: update UI
Ping request¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: send ping request
P->>B: send ping request
B->>Ag: send ping request
Ag-->>P: ping response through HTTP
P->>P: update UI
Geolocation¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: request Geolocation
P->>B: request Geolocation
B->>Ag: request Geolocation
alt Agent answers immediately
Ag->>P: send status Geolocation
P->>P: save Geolocation in DB
else Agent doesn't answer immediately
P->>P: display timeout error
end
Wipe¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: send wipe command
P->>B: send wipe command
B->>Ag: send wipe command
Ag->>Ag: wipe phone data
Ag-->>P: send task status and Offline status through HTTP
P->>P: update UI
Lock/Unlock¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: send lock/unlock command
P->>B: send lock/unlock command
B->>Ag: send lock/unlock command
Ag->>Ag: lock/unlock phone
Ag-->>P: send task status through HTTP
P->>P: update UI
Inventory¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: request inventory
P->>B: request inventory
B->>Ag: request inventory
Ag->>Ag: create inventory
Ag-->>P: send inventory in XML format through HTTP
P->>P: update UI
Unenrollment MQTT¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: send unenrollment
P->>B: send unenrollment
B->>Ag: send unenrollment
Note right of Ag: Policies will have the last<br/> value sent by the Plugin,<br/> the user can now modify them
Ag->>Ag: Update UI, remove constraint on policies
Ag-->>B: disconnect MQTT
Ag->>B: status unenrolled
B-->>P: status unenrolled
P->>P: remove user account, remove MQTT credentials
alt removal successful
P->>P: delete data related to the Agent, delete Agent from DB
else removal unsuccessful
P->>P: Agent remains in DB
end
Unenrollment FCM¶
sequenceDiagram
participant A as Administrator
participant P as Plugin
participant B as Broker
participant Ag as Agent
A->>P: send unenrollment
P->>B: send unenrollment
B->>Ag: send unenrollment
Note right of Ag: Policies will have the last<br/> value sent by the Plugin,<br/> the user can now modify them
Ag->>Ag: Update UI, remove constraint on policies, remove FCM credentials
Ag->>P: status unenrolled and status Offline
P->>P: remove user account
alt removal successful
P->>P: delete data related to the Agent, delete Agent from DB
else removal unsuccessful
P->>P: Agent remains in DB
end