1)User Request to SoulHub from Application

    Description: User sends request to SoulHub for provision devices into property.

    Direction: Application ----> SoulHub

    Request Topic: "NameSpaceId + "/INSTALLER/" + modelNumber + "/" + SERIAL + "/HUB_REQ"
                    e.g. "e.g. "TEST_123/INSTALLER/GENfvb5fdgfgfg4/ClouzerSoulTest-51/HUB_REQ""

    Request Object:

            {
                "type":"provision_device",
                "data":
                    {
                        "queryData":
                            {
                                "DEVICE_ID":["ID1658580670990498783153"]
                            },
                        "userId":"ashwini.tote@bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com",
                        "clientId":"IOSCocoaMQTT3163",
                        "updateData":
                            {
                                "CML_TITLE":"mirabella ebfhg",
                                "STRUCTURE_ID":"ID165786438343196932317753",
                                "CML_SUPPORTED_TYPE":"LIGHT",
                                "CML_INSTALLATION_DATE":"",
                                "TARGET":"/ID1657800689908705780517124/ID1657805052207362508128703/ID165786438343196932317753"},
                        "requestId":"TS_1658580706966",
                        "token":"IOSCocoaMQTT3163_1658580171314",
                        "CallerInfo":
                            {
                                "caller":"UprovisionedView_saveBtn_call",
                                "source":["iOS_ClouzerEdgeInstaller"],
                                "portalAction":true,
                                "tsEntry":1658580707136
                            }
                    }
            }

2)checking soulPy process

    Description: SoulHub checks python process is running or not.

    Direction: SoulHub ----> ProcessMonitor

    process: "soulPy"

    Request Topic: "process/status/get"

    Response Topic: "process/status/get_res"

3)SoulHub request to db for userlist

    Description: if process is running then SoulHub needs to fetch the userlist.

    Direction: SoulHub ----> soulPy

    Request Topic: "soulDb/fetch"

    Direction: soulPy ----> soulHub

    Request Object:

            {
                "data":
                    {
                        "entity_type":"userlist",
                        "and":
                            {
                                "eq":
                                    {
                                        "username":"ashwini.tote@bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com"
                                    }
                            }
                    },
                    "communicationId":"1658580707142get_user242",
                    "CallerInfo":
                        {
                            "caller":"UprovisionedView_saveBtn_call",
                            "source":["iOS_ClouzerEdgeInstaller"],
                            "portalAction":true,"tsEntry":1658580707136
                        }
            }


    Direction: soulPy ----> soulHub

    Response Topic: "soulDb/Response"

    Response Object:

            {
                "data":
                    [
                        {
                            "userId": "ID1657804967919016366261454",
                            "username": "ashwini.tote@bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com",
                            "RECOVERY_MAIL": "ashwini.tote@clouzer.com", 
                            "LKEY_VAL": "ashwini.tote@clouzer.com",
                            "ACTION": "", 
                            "hubId": "ClouzerSoulTest-51", 
                            "RegisterWith": "clouzer",
                            "firstName": "Ashwini", 
                            "lastName": "Tote", 
                            "JWTTOKEN": "", "ACTIVE_STATUS": 1,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "logintype": "user", 
                            "ROLE": 165780494067592, 
                            "USM_IMAGE_PATH": "",
                            "entity_type": "userlist", 
                            "CML_HIDDEN": 0}], 
                            "type": "dbFetch",
                            "communicationId": "1658580707142get_user242", 
                            "CallerInfo": 
                                {
                                    "portalAction": true,
                                    "caller": "UprovisionedView_saveBtn_call", 
                                    "source": ["iOS_ClouzerEdgeInstaller","soulHub", "soulPy"]
                                }
                        }
                    ]
            }

4)SoulHub request to db for role_map

    Description: after fetching userlist SoulHub needs to fetch the role_map table.

    Direction: SoulHub ----> soulPy

    Request Topic: "soulDb/fetch"

    Request Object:

        {
            "data":
                {
                    "entity_type":"role_map",
                    "and":
                    {"eq":{"ROLE":165780494067592}}},
                    "communicationId":"1658580707425role_map109",
                    "CallerInfo":
                        {
                            "portalAction":true,
                            "caller":"UprovisionedView_saveBtn_call",
                            "source":["iOS_ClouzerEdgeInstaller","soulHub","soulPy"]
                        }
                }

    Direction: soulPy ----> soulHub

    Response Topic: "soulDb/Response"

    Response Object:

            {
                "data": 
                    [
                        {
                            "ID": "ID165780494477926", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 54,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        }, 
                        {
                            "ID": "ID165780494450909", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 22,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494519648", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 32, 
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494663324", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 21, 
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494726996", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 1,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494827473", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 100,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494821534", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 23,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780494998496", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 33,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495085440", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 11,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495163810", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 41,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        }, 
                        {
                            "ID": "ID165780495131434", 
                            "ROLE": 165780494067592,
                            "RULE_ID": 31, 
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495256535", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 52,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495312008", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 53,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {   
                            "ID": "ID165780495483303", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 51,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495524338", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 43,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        },
                        {
                            "ID": "ID165780495598081", 
                            "ROLE": 165780494067592, 
                            "RULE_ID": 42,
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_DEPT_ORG_1231231231231_1234#SEC_WIZ_ROLE_0001#TSK_ROL_LST_0002",
                            "entity_type": "role_map"
                        }
                    ], 
                "type": "dbFetch",
                "communicationId": "1658580707425role_map109", 
                "CallerInfo": 
                    {
                        "portalAction": true,
                        "caller": "UprovisionedView_saveBtn_call",
                        "source": ["iOS_ClouzerEdgeInstaller", "soulHub", "soulPy", "soulHub", "soulPy"]
                    }
        }

5)SoulHub request to db for devices

    Description: after fetching role map SoulHub needs to update table device.

    Direction: SoulHub ----> soulPy

    Request Topic: "soulDb/update"

    Resquest Object:

        {
            "data":
                [
                    {
                        "entity_type":"devices",
                        "essentialObj":{"DEVICE_ID":"ID1658580670990498783153"},
                        "and":
                            {
                                "eq":
                                    {
                                        "DEVICE_ID":"ID1658580670990498783153"
                                    }
                            },
                        "set":
                            {
                                "CML_TITLE":"mirabella ebfhg",
                                "STRUCTURE_ID":"ID165786438343196932317753",
                                "CML_SUPPORTED_TYPE":"LIGHT",
                                "CML_INSTALLATION_DATE":"",
                                "TARGET":"/ID1657800689908705780517124/ID1657805052207362508128703/ID165786438343196932317753/ID1658580670990498783153"
                            }
                    }
                ],
                "communicationId":"1658580707704provisionDevice186",
                "CallerInfo":
                    {
                        "portalAction":true,
                        "caller":"UprovisionedView_saveBtn_call",
                        "source":["iOS_ClouzerEdgeInstaller","soulHub","soulPy","soulHub","soulPy"]
                    }
        }

    Direction: soulPy ----> soulHub

    Response Topic: "soulDb/Response"

    Response Object:

        {
            "data": 
                [
                    {
                        "DEVICE_ID": "ID1658580670990498783153", 
                        "LKEY_VAL": "ID1658580670990498783153",
                        "STRUCTURE_ID": "ID165786438343196932317753",
                        "TARGET": "/ID1657800689908705780517124/ID1657805052207362508128703/ID165786438343196932317753/ID1658580670990498783153",
                        "KEY_TYPE": "TSK", 
                        "SUB_KEY_TYPE": "TSK_PRO_DEV_ORG", 
                        "CML_TYPE": "DEVICE",
                        "CML_SUB_TYPE": "LIGHT", 
                        "CML_TITLE": "mirabella ebfhg",
                        "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_ORG_WKS_1657801024796_1670#SEC_PRO_DEV_ORG_1657801029058_79#TSK_PRO_DEV_ORG_1658580672844_57", 
                        "SYNC_PENDING_STATUS": -1, 
                        "CREATED_BY_ON_CLOUZER_SOUL": "",
                        "CREATED_ON_ON_CLOUZER_SOUL": 1658580670517,
                        "LAST_MODIFIED_BY_ON_CLOUZER_SOUL": "",
                        "LAST_MODIFIED_ON_ON_CLOUZER_SOUL": 1658580670517, 
                        "CREATED_BY": "",
                        "CREATED_ON": "", 
                        "LAST_MODIFIED_BY": "", 
                        "LAST_MODIFIED_ON": "", 
                        "ACTIVE_STATUS": 1,
                        "CML_MANUFACTURER_NAME": "mirabella", 
                        "CML_MANUFACTURER_ID": "",
                        "CML_SERIAL_ID": "ebfhg", 
                        "CML_NAME": "mirabella ebfhg", 
                        "CML_TESTABLE": "true",
                        "CML_MAC_ID": "", 
                        "CML_INSTALLATION_DATE": "", 
                        "CML_CONTROLLER_ID": "NA",
                        "CML_CONTROL_MODE": 1, 
                        "CML_EXPIRY_DATE": "", 
                        "IO_MODE": -1,
                        "INPUT_PROTOCOL": "", 
                        "OUTPUT_PROTOCOL": "", 
                        "CML_SUPPORTING_ZONE": "NA",
                        "CML_SUPPORTED_TYPE": "LIGHT", 
                        "CML_DEVICE_FIRMWARE": "NA", 
                        "MODEL_NUMBER": "B82CA0622761",
                        "OWNER_ID": "NA", 
                        "override": "", 
                        "concept": "LIGHT", 
                        "COLOR_SUPPORTED": 0,
                        "CML_DEVICE_REF": "", 
                        "CML_GROUP_REF": "", 
                        "CREDENTIAL_ID": "ID1658578316112136103635188",
                        "INTERFACE_ID": "ID165848557535807991755172", 
                        "entity_type": "devices",
                        "CML_SWITCH_CNTR_ID": "NA",
                        "CML_SHORT_NAME": "smartLight", 
                        "DEVICE_TYPE_ID": ""
                    }
                ],
                "type": "dbUpdate", 
                "communicationId": "1658580707704provisionDevice186",
                "CallerInfo": 
                    {
                        "portalAction": true, 
                        "caller": "UprovisionedView_saveBtn_call",
                        "source": ["iOS_ClouzerEdgeInstaller", "soulHub", "soulPy", "soulSoulHub", "soulPy","soulPy"]
            }
        }

6)SoulHub request to dapi for get properties

    Description: SoulHub request to dapi to get properties.

    Direction: SoulHub ----> dapi

    Request Topic: "getProperties/light/mirabella"

    Request Object:

        {
            "deviceArr":
                [
                    {
                        "device_id":"ID165858369210471115480673",
                        "LKEY_VAL":"ID165858369210471115480673",
                        "STRUCTURE_ID":"ID165786438343196932317753",
                        "TARGET":"/ID1657800689908705780517124/ID1657805052207362508128703/ID165786438343196932317753/ID165858369210471115480673",
                        "KEY_TYPE":"TSK","SUB_KEY_TYPE":"TSK_PRO_DEV_ORG",
                        "cml_type":"DEVICE",
                        "deviceType":"LIGHT",
                        "title":"mirabella ebfhg",
                        "key_val":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_ORG_WKS_1657801024796_1670#SEC_PRO_DEV_ORG_1657801029058_79#TSK_PRO_DEV_ORG_1658583693653_19",
                        "SYNC_PENDING_STATUS":-1,
                        "CREATED_BY_ON_CLOUZER_SOUL":"",
                        "CREATED_ON_ON_CLOUZER_SOUL":1658583692501,
                        "LAST_MODIFIED_BY_ON_CLOUZER_SOUL":"",
                        "LAST_MODIFIED_ON_ON_CLOUZER_SOUL":1658583692501,
                        "CREATED_BY":"",
                        "CREATED_ON":"",
                        "LAST_MODIFIED_BY":"",
                        "LAST_MODIFIED_ON":"",
                        "ACTIVE_STATUS"1,
                        "manufacturer":"mirabella",
                        "CML_MANUFACTURER_ID":"",
                        "id":"ebfhg",
                        "device_name":"mirabella ebfhg",
                        "CML_TESTABLE":"true",
                        "CML_MAC_ID":"",
                        "CML_INSTALLATION_DATE":"",
                        "controllerId":"NA",
                        "CML_CONTROL_MODE":1,
                        "CML_EXPIRY_DATE":"",
                        "IO_MODE":-1,
                        "INPUT_PROTOCOL":"",
                        "OUTPUT_PROTOCOL":"",
                        "supporting_zone":"NA",
                        "supported_type":"LIGHT",
                        "CML_DEVICE_FIRMWARE":"NA",
                        "product_id":"B82CA0622761",
                        "OWNER_ID":"NA",
                        "override":"",
                        "concept":"LIGHT",
                        "COLOR_SUPPORTED":0,
                        "CML_DEVICE_REF":"",
                        "CML_GROUP_REF":"",
                        "CREDENTIAL_ID":"ID1658578316112136103635188",
                        "INTERFACE_ID":"ID165848557535807991755172",
                        "entity_type":"devices",
                        "switchcontrollerId":"NA",
                        "CML_SHORT_NAME":"smartLight",
                        "DEVICE_TYPE_ID":""
                    }
                ],
                "communicationId":"1658583756121provisionDevice18",
                "CallerInfo":
                    {
                        "portalAction":true,
                        "caller":"UprovisionedView_saveBtn_call",
                        "source":["iOS_ClouzerEdgeInstaller","soulHub","soulPy","soulHub","soulPy","soulHub"]
                    }
        }

    Direction: DAPI ----> soulHub

    Response Topic: "getProperties_Response"

        {
            "dataArray":
                [
                    {
                        "status":
                            {
                                "manufacturer":"mirabella",
                                "deviceType":"LIGHT",
                                "state":0,
                                "setpoint":72,
                                "id":"ebfhg",
                                "status":1,                             },
                            "device":
                                {
                                    "id":"ebfhg",
                                    "device_id":"ID165858369210471115480673",
                                    "deviceType":"LIGHT"
                                }
                    }
                ],
            "communicationId":"1658583756121provisionDevice18",
            "portalAction":true
        }

11)SoulHub Sends Response to App

    Description: SoulHub sends response to app with following object

    Direction: SoulHub ----> Application

    Response Topic: "hubActionResponse/installer"

    Response Object:

            {
                "type":"provision_device_hub",
                "dataArray":
                    [
                        {
                            "DEVICE_ID":"ID165858369210471115480673",
                            "LKEY_VAL":"ID165858369210471115480673",
                            "STRUCTURE_ID":"ID165786438343196932317753",
                            "TARGET":"/ID1657800689908705780517124/ID1657805052207362508128703/ID165786438343196932317753/ID165858369210471115480673",
                            "KEY_TYPE":"TSK",
                            "SUB_KEY_TYPE":"TSK_PRO_DEV_ORG",
                            "CML_TYPE":"DEVICE",
                            "CML_SUB_TYPE":"LIGHT",
                            "CML_TITLE":"mirabella ebfhg",
                            "KEY_VAL":"bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com#PRJ_ORG_WKS_1657801024796_1670#SEC_PRO_DEV_ORG_1657801029058_79#TSK_PRO_DEV_ORG_1658583693653_19",
                            "SYNC_PENDING_STATUS":-1,
                            "CREATED_BY_ON_CLOUZER_SOUL":"",
                            "CREATED_ON_ON_CLOUZER_SOUL":1658583692501,
                            "LAST_MODIFIED_BY_ON_CLOUZER_SOUL":"",
                            "LAST_MODIFIED_ON_ON_CLOUZER_SOUL":1658583692501,
                            "CREATED_BY":"",
                            "CREATED_ON":"",
                            "LAST_MODIFIED_BY":"",
                            "LAST_MODIFIED_ON":"",
                            "ACTIVE_STATUS":1,
                            "CML_MANUFACTURER_NAME":"mirabella",
                            "CML_MANUFACTURER_ID":"",
                            "CML_SERIAL_ID":"ebfhg",
                            "CML_NAME":"mirabella ebfhg",
                            "CML_TESTABLE":"true",
                            "CML_MAC_ID":"",
                            "CML_INSTALLATION_DATE":"",
                            "CML_CONTROLLER_ID":"NA",
                            "CML_CONTROL_MODE":1,
                            "CML_EXPIRY_DATE":"",
                            "IO_MODE":-1,
                            "INPUT_PROTOCOL":"",
                            "OUTPUT_PROTOCOL":"",
                            "CML_SUPPORTING_ZONE":"NA",
                            "CML_SUPPORTED_TYPE":"LIGHT",
                            "CML_DEVICE_FIRMWARE":"NA",
                            "MODEL_NUMBER":"B82CA0622761",
                            "OWNER_ID":"NA",
                            "override":"",
                            "concept":"LIGHT",
                            "COLOR_SUPPORTED":0,
                            "CML_DEVICE_REF":"",
                            "CML_GROUP_REF":"",
                            "CREDENTIAL_ID":"ID1658578316112136103635188",
                            "INTERFACE_ID":"ID165848557535807991755172",
                            "entity_type":"devices",
                            "CML_SWITCH_CNTR_ID":"NA",
                            "CML_SHORT_NAME":"smartLight",
                            "DEVICE_TYPE_ID":""
                        }
                    ],
                    "userId":"ashwini.tote@bgfhiaajiafbiicfb.cloudsbuilder.clouzer.com",
                    "requestId":"TS_1658583754599",
                    "CallerInfo":
                        {
                            "portalAction":true,
                            "caller":"UprovisionedView_saveBtn_call",
                            "source":["iOS_ClouzerEdgeInstaller","soulHub","soulPy","soulHub","soulPy","soulHub"]
                        },
                    "CML_HUBSERIAL_ID":"ClouzerSoulTest-51"
                }

Sequence Diagram

test