"vCPE" : ['vCPE/infra', 'vCPE/vbng', 'vCPE/vbrgemu', 'vCPE/vgmux', 'vCPE/vgw'],
                                  "vFWCL" : ['vFWCL/vFWSNK', 'vFWCL/vPKG'],
                                  "vFWNG" : ['vFW_NextGen/templates'],
+                                 "vCPEInfra" : ['vCPE/infra'],
+                                 "vCPEvBNG" : ['vCPE/vbng'],
+                                 "vCPEvBRGEMU" : ['vCPE/vbrgemu'],
+                                 "vCPEvGMUX" : ['vCPE/vgmux'],
+                                 "vCPEvGW" : ['vCPE/vgw'],
                                  }
 
 '''
     "vCPE" : ['vCPE'],
     "vFWCL"  : ['vFWSNK', 'vPKG'],
     "vFWNG"  : ['vFWNG'],
+    "vCPEInfra" : ['vCPEInfra'],
+    "vCPEvBNG" : ['vCPEvBNG'],
+    "vCPEvBRGEMU" : ['vCPEvBRGEMU'],
+    "vCPEvGMUX" : ['vCPEvGMUX'],
+    "vCPEvGW" : ['vCPEvGW'],
                                  }
 
 '''
+
+Map the service to the list of Generic Neutron Networks to be orchestrated
+
+'''
+GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING = {
+    "vCPEInfra" : ['CPE_SIGNAL','CPE_PUBLIC'],
+    "vCPEvBNG" : ['BRG_BNG', 'BNG_MUX'],
+    "vCPEvGMUX" : ['MUX_GW'],
+    "vCPEvBRGEMU" :[],
+    "vCPEvGW" :[],
+    "vFW" :[],
+    "vLB" :[],
+    "vVG" :[],
+    "vFWCL" :[],
+    "vFWNG" :[],
+}
+'''
+
+
+
 This metadata identifes the preloads that need to be done for a VNF as there may be more than one (vLB)
 "template" maps to the parameters in the preload_paramenters.py
   - GLOBAL_PRELOAD_PARAMETERS[<testcase>][<template>] -
     "vPKG"   : [{"isBase" : "true",  "template" : "vpkg_preload.template", "name_pattern": "base_vpkg"}],
     "vFWCL"   : [{"isBase" : "true",   "template" : "vfwsnk_preload.template", "name_pattern": "base_vfw"},
                  {"isBase" : "true",  "template" : "vpkg_preload.template", "name_pattern": "base_vpkg"}],
+    "vCPEInfra" : [{"isBase" : "true",  "template" : "vcpe_infra_preload.template", "name_pattern": "base_infra"}],
+    "vCPEvBNG" : [{"isBase" : "true",  "template" : "vcpe_vbng_preload.template", "name_pattern": "base_vbng"}],
+    "vCPEvBRGEMU" : [{"isBase" : "true",  "template" : "vcpe_vbrgemu_preload.template", "name_pattern": "base_vbrgemu"}],
+    "vCPEvGMUX" : [{"isBase" : "true",  "template" : "vcpe_vgmux_preload.template", "name_pattern": "base_vgmux"}],
+    "vCPEvGW" : [{"isBase" : "true",  "template" : "vcpe_vgw_preload.template", "name_pattern": "base_vgw"}],
 }
 
 '''
                                  "vFWSNK" : 'vfw_name_0',
                                  "vPKG" : 'vpg_name_0',
                                  }
+
 
 ${ASDC_VENDOR_ACTIONS_PATH}    /actions
 ${ASDC_VENDOR_SOFTWARE_UPLOAD_PATH}    /orchestration-template-candidate
 ${ASDC_FE_CATALOG_RESOURCES_PATH}    /sdc1/feProxy/rest/v1/catalog/resources
+${ASDC_FE_CATALOG_SERVICES_PATH}    /sdc1/feProxy/rest/v1/catalog/services
 ${ASDC_CATALOG_RESOURCES_PATH}    /sdc2/rest/v1/catalog/resources
 ${ASDC_CATALOG_SERVICES_PATH}    /sdc2/rest/v1/catalog/services
 ${ASDC_CATALOG_INACTIVE_RESOURCES_PATH}    /sdc2/rest/v1/inactiveComponents/resource
+${ASDC_CATALOG_RESOURCES_QUERY_PATH}    /sdc2/rest/v1/catalog/resources/resourceName
 ${ASDC_CATALOG_INACTIVE_SERVICES_PATH}    /sdc2/rest/v1/inactiveComponents/service
 ${ASDC_CATALOG_LIFECYCLE_PATH}    /lifecycleState
 ${ASDC_CATALOG_SERVICE_RESOURCE_INSTANCE_PATH}    /resourceInstance
 ${ASDC_RESOURCE_INSTANCE_TEMPLATE}    robot/assets/templates/asdc/resource_instance.template
 ${ASDC_RESOURCE_INSTANCE_VNF_PROPERTIES_TEMPLATE}    robot/assets/templates/asdc/catalog_vnf_properties.template
 ${ASDC_RESOURCE_INSTANCE_VNF_INPUTS_TEMPLATE}    robot/assets/templates/asdc/catalog_vnf_inputs.template
+${SDC_CATALOG_NET_RESOURCE_INPUT_TEMPLATE}    robot/assets/templates/asdc/catalog_net_input_properties.template
 ${ASDC_FE_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_FE_IP_ADDR}:${GLOBAL_ASDC_FE_PORT}
 ${ASDC_BE_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_BE_IP_ADDR}:${GLOBAL_ASDC_BE_PORT}
 ${ASDC_BE_ONBOARD_ENDPOINT}     ${GLOBAL_ASDC_SERVER_PROTOCOL}://${GLOBAL_INJECTED_SDC_BE_ONBOARD_IP_ADDR}:${GLOBAL_ASDC_BE_ONBOARD_PORT}
 *** Keywords ***
 Distribute Model From ASDC
     [Documentation]    goes end to end creating all the asdc objects based ona  model and distributing it to the systems. it then returns the service name, vf name and vf module name
-    [Arguments]    ${model_zip_path}   ${catalog_service_name}=    ${cds}=
+    [Arguments]    ${model_zip_path}   ${catalog_service_name}=    ${cds}=    ${service}=
+    #${random}=    Get Current Date
+    #${catalog_service_id}=    Add ASDC Catalog Service    ${catalog_service_name}_${random}
     ${catalog_service_id}=    Add ASDC Catalog Service    ${catalog_service_name}
     ${catalog_resource_ids}=    Create List
     ${catalog_resources}=   Create Dictionary
     \    ${loop_catalog_resource_resp}=    Get ASDC Catalog Resource    ${loop_catalog_resource_id}
     \    Add ASDC Resource Instance    ${catalog_service_id}    ${loop_catalog_resource_id}    ${loop_catalog_resource_resp['name']}
     \    Set To Dictionary    ${catalog_resources}   ${loop_catalog_resource_id}=${loop_catalog_resource_resp}
+    #
+    # do this here because the loop_catalog_resource_resp is different format after adding networks
+    ${vf_module}=   Find Element In Array    ${loop_catalog_resource_resp['groups']}    type    org.openecomp.groups.VfModule
+    #
+    #  do network
+    ${networklist}=   Get From Dictionary    ${GLOBAL_SERVICE_GEN_NEUTRON_NETWORK_MAPPING}    ${service}
+    ${xoffset}=    Set Variable    ${100}
+    ${generic_neutron_net_uuid}=   Get Generic NeutronNet UUID
+    :FOR   ${network}   in   @{networklist}
+    \    ${loop_catalog_resource_id}=   Set Variable    ${generic_neutron_net_uuid}
+    \    Append To List    ${catalog_resource_ids}   ${loop_catalog_resource_id}
+    \    ${loop_catalog_resource_resp}=    Get ASDC Catalog Resource    ${loop_catalog_resource_id}
+    #
+    \    ${loop_catalog_resource_id}=   Add ASDC Resource Instance    ${catalog_service_id}    ${loop_catalog_resource_id}    ${network}    ${xoffset}      ${0}
+    \    ${nf_role}=   Convert To Lowercase   ${network}
+    \    Setup SDC Catalog Resource GenericNeutronNet Properties      ${catalog_service_id}    ${nf_role}   ${loop_catalog_resource_id}
+    \    ${xoffset}=   Set Variable   ${xoffset+100}
+    \    Set To Dictionary    ${catalog_resources}   ${loop_catalog_resource_id}=${loop_catalog_resource_resp}
+    #
     ${catalog_service_resp}=    Get ASDC Catalog Service    ${catalog_service_id}
     Checkin ASDC Catalog Service    ${catalog_service_id}
     Request Certify ASDC Catalog Service    ${catalog_service_id}
         \   Log     Distribution Attempt ${DIST_INDEX}
         \   Distribute ASDC Catalog Service    ${catalog_service_id}
         \   ${catalog_service_resp}=    Get ASDC Catalog Service    ${catalog_service_id}
-        \   ${vf_module}=    Find Element In Array    ${loop_catalog_resource_resp['groups']}    type    org.openecomp.groups.VfModule
         \   ${status}   ${_} =   Run Keyword And Ignore Error   Loop Over Check Catalog Service Distributed       ${catalog_service_resp['uuid']}
        \   Exit For Loop If   '${status}'=='PASS'
         Should Be Equal As Strings  ${status}  PASS
     [Return]    ${catalog_service_resp['name']}    ${loop_catalog_resource_resp['name']}    ${vf_module}   ${catalog_resource_ids}    ${catalog_service_id}   ${catalog_resources}
 
+
+Get Generic NeutronNet UUID
+   [Documentation]   Lookoup the UUID of the Generic NeutronNetwork Resource
+   # http://137.117.87.170:30205/sdc2/rest/v1/catalog/resources/resourceName/Generic%20NeutronNet/resourceVersion/1.0
+   #  411edcfd-c290-41dc-bd2c-5600f9f0af05
+   ${resp}=    Run ASDC Get Request    ${ASDC_CATALOG_RESOURCES_QUERY_PATH}/Generic%20NeutronNet/resourceVersion/1.0   ${ASDC_DESIGNER_USER_ID}   ${ASDC_BE_ENDPOINT}
+   [Return]    ${resp.json()['allVersions']['1.0']}
+
 Loop Over Check Catalog Service Distributed
     [Arguments]    ${catalog_service_id}
     # SO watchdog timeout is 300 seconds need buffer
     
     ${catalog_resource_id}=   Certify ASDC Catalog Resource    ${catalog_resource_id}  ${ASDC_DESIGNER_USER_ID}
     [Return]    ${catalog_resource_id}
+
+Setup SDC Catalog Resource GenericNeutronNet Properties
+    [Documentation]    Set up GenericNeutronNet properties and inputs 
+    [Arguments]    ${catalog_service_id}    ${nf_role}    ${catalog_parent_service_id}
+    # Set component instances properties 
+    ${resp}=    Get ASDC Catalog Resource Component Instances Properties  ${catalog_service_id}
+    #${resp}=    Get ASDC Catalog Resource Component Instances    ${catalog_service_id}
+    ${componentInstances}  Set Variable   @{resp['componentInstancesProperties']}
+    # componentInstances can have 1 or more than 1 entry
+    ${passed}=    Run Keyword And Return Status   Evaluate    type(${componentInstances})
+    ${type}=      Run Keyword If     ${passed}    Evaluate    type(${componentInstances})
+    ${componentInstancesList}=    Run Keyword If   "${type}"!="<type 'list'>"    Create List  ${componentInstances}
+    ...    ELSE   Set Variable    ${componentInstances}
+    :FOR   ${item}  IN   @{componentInstancesList}
+    \    ${test}    ${v}=    Run Keyword and Ignore Error    Should Contain    ${item}     ${nf_role}
+    \    Run Keyword If    '${test}' == 'FAIL'    Continue For Loop
+    \    ${componentInstance1}=   Set Variable    ${item}
+    :FOR    ${comp}    IN    @{resp['componentInstancesProperties']["${componentInstance1}"]}
+    \    ${name}    Set Variable   ${comp['name']}
+    \    ${test}    ${v}=    Run Keyword and Ignore Error    Should Contain    ${name}    network_role
+    \    Run Keyword If    '${test}' == 'FAIL'    Continue For Loop
+    \    ${description}    Set Variable    ${comp['description']}
+    \    ${description}=    Replace String    ${description}    ${\n}   \
+    \    ${uniqueId}    Set Variable    ${comp['uniqueId']}
+    \    ${parentUniqueId}    Set Variable    ${comp['parentUniqueId']}
+    \    ${ownerId}    Set Variable    ${comp['ownerId']}
+    \    ${dict}=    Create Dictionary    parentUniqueId=${parentUniqueId}   ownerId=${ownerId}  uniqueId=${uniqueId}    description=${description}
+    \    Run Keyword If   '${name}'=='network_role'   Set To Dictionary    ${dict}    name=${name}    value=${nf_role}
+    \    ${data}=   Fill JSON Template File    ${SDC_CATALOG_NET_RESOURCE_INPUT_TEMPLATE}    ${dict} 
+    \    ${response}=    Set ASDC Catalog Resource Component Instance Properties    ${catalog_parent_service_id}    ${catalog_service_id}    ${data}
+    #\    Log To Console    resp=${response}
+    [Return]
+
 Setup ASDC Catalog Resource CDS Properties
     [Documentation]    Set up vfwng VNF properties and inputs for CDS
     [Arguments]    ${catalog_resource_id} 
     [Arguments]    ${catalog_resource_id}
     ${resp}=    Run ASDC Get Request    ${ASDC_CATALOG_RESOURCES_PATH}/${catalog_resource_id}    ${ASDC_DESIGNER_USER_ID} 
     [Return]    ${resp.json()}
+
 Get ASDC Catalog Resource Component Instances
     [Documentation]    gets asdc Catalog Resource Component Instances by its id
     [Arguments]    ${catalog_resource_id}
     ${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/filteredDataByParams?include=componentInstances    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
     [Return]    ${resp.json()}
+Get ASDC Catalog Resource Component Instances Properties
+    [Documentation]    gets asdc Catalog Resource Component Instances Properties by its id
+    [Arguments]    ${catalog_resource_id}
+    #${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/filteredDataByParams?include=componentInstancesProperties    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    ${resp}=    Run ASDC Get Request    ${ASDC_CATALOG_SERVICES_PATH}/${catalog_resource_id}/filteredDataByParams?include=componentInstancesProperties    ${ASDC_DESIGNER_USER_ID}    ${ASDC_BE_ENDPOINT}
+    [Return]    ${resp.json()}
+
+
 Get ASDC Catalog Resource Inputs
     [Documentation]    gets asdc Catalog Inputs by its id
     [Arguments]    ${catalog_resource_id}
     ${resp}=    Run ASDC Get Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/filteredDataByParams?include=inputs    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
     [Return]    ${resp.json()}
+
 Get ASDC Catalog Resource Component Instance Properties
     [Documentation]    gets an asdc Catalog Resource properties by its id
     [Arguments]    ${catalog_resource_id}    ${component_instance_id}    ${component_id}
     [Return]    ${resp.json()}
 Set ASDC Catalog Resource Component Instance Properties
     [Documentation]    sets an asdc Catalog Resource by its id
-    [Arguments]    ${catalog_resource_id}    ${component_instance_id}    ${data}
-    ${resp}=    Run ASDC Post Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${catalog_resource_id}/resourceInstance/${component_instance_id}/inputs    ${data}    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    [Arguments]    ${catalog_resource_id}    ${component_parent_service_id}    ${data}
+    #${resp}=    Run ASDC Post Request    ${ASDC_FE_CATALOG_RESOURCES_PATH}/${component_parent_service_id}/resourceInstance/${catalog_resource_id}/inputs    ${data}    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
+    ${resp}=    Run ASDC Post Request    ${ASDC_FE_CATALOG_SERVICES_PATH}/${component_parent_service_id}/resourceInstance/${catalog_resource_id}/properties    ${data}    ${ASDC_DESIGNER_USER_ID}    ${ASDC_FE_ENDPOINT}
     [Return]    ${resp.json()}
+
 Set ASDC Catalog Resource VNF Inputs
     [Documentation]    sets an asdc Catalog Resource by its id
     [Arguments]    ${catalog_resource_id}    ${data}
     [Return]    ${resp.json()}
 Add ASDC Resource Instance
     [Documentation]    Creates an asdc Resource Instance and returns its id
-    [Arguments]    ${catalog_service_id}    ${catalog_resource_id}    ${catalog_resource_name}
+    [Arguments]    ${catalog_service_id}    ${catalog_resource_id}    ${catalog_resource_name}  ${xoffset}=${0}   ${yoffset}=${0}
     ${milli_timestamp}=    Generate MilliTimestamp UUID
-    ${map}=    Create Dictionary    catalog_resource_id=${catalog_resource_id}    catalog_resource_name=${catalog_resource_name}    milli_timestamp=${milli_timestamp}
+    ${xoffset}=    Set Variable   ${xoffset+306}
+    ${yoffset}=    Set Variable   ${yoffset+248}
+    ${map}=    Create Dictionary    catalog_resource_id=${catalog_resource_id}    catalog_resource_name=${catalog_resource_name}    milli_timestamp=${milli_timestamp}   posX=${xoffset}    posY=${yoffset}
     ${data}=   Fill JSON Template File    ${ASDC_RESOURCE_INSTANCE_TEMPLATE}    ${map}
     ${resp}=    Run ASDC Post Request    ${ASDC_CATALOG_SERVICES_PATH}/${catalog_service_id}${ASDC_CATALOG_SERVICE_RESOURCE_INSTANCE_PATH}     ${data}    ${ASDC_DESIGNER_USER_ID}
     Should Be Equal As Strings         ${resp.status_code}     201
     [Return]    ${resp.json()['uniqueId']}
+
 Get Catalog Service Distribution
     [Documentation]    gets an asdc catalog Service distrbution
     [Arguments]    ${catalog_service_uuid}
 
     ${uuid}=    Generate UUID
     ${headers}=  Create Dictionary     Accept=application/json    Content-Type=application/json    USER_ID=${GLOBAL_VID_USERNAME}    X-TransactionId=${GLOBAL_APPLICATION_ID}-${uuid}    X-FromAppId=${GLOBAL_APPLICATION_ID}
     ${resp}=   Post Request    vid     ${data_path}   data=${vid_data}    headers=${headers}
-
+       
 Load Customer
     [Documentation]   Use openECOMP to Orchestrate a service.
     [Arguments]    ${customer_name}
     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
     ${region}=   Get Openstack Region
     Create Customer For VNF Demo    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${GLOBAL_AAI_CLOUD_OWNER}    ${region}   ${TENANT_ID}
+    Create Customer For VNF Demo    ${CUSTOMER_NAME}    ${CUSTOMER_NAME}    INFRA    ${GLOBAL_AAI_CLOUD_OWNER}    RegionTlab  50b190410b2a4c229d8a6044a80ab7c1 
 
 Load Models
     [Documentation]   Use openECOMP to Orchestrate a service.
     [Arguments]    ${customer_name}
     Set Test Variable    ${CUSTOMER_NAME}    ${customer_name}
+    Log To Console   Distibuting vFWCL
     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vFWCL   ${DEMO_PREFIX}VFWCL
+    Log To Console   Distibuting vLB
     ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vLB   ${DEMO_PREFIX}VLB
-    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPE   ${DEMO_PREFIX}VCPE
+    ##${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPE   ${DEMO_PREFIX}VCPE
     ##${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vIMS   ${DEMO_PREFIX}VIMS
+    Log To Console   Distibuting vCPEInfra
+    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEInfra   ${DEMO_PREFIX}VCPEInfra
+    Log To Console   Distibuting vCPEvBNG
+    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvBNG   ${DEMO_PREFIX}VCPEvBNG
+    Log To Console   Distibuting vCPEvBRGEMU
+    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvBRGEMU   ${DEMO_PREFIX}VCPEvBRGEMU 
+    Log To Console   Distibuting vCPEvGMUX
+    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvGMUX    ${DEMO_PREFIX}VCPEvGMUX
+    Log To Console   Distibuting vCPEvGW (this is not vCPEResCust service)
+    ${status}   ${value}=   Run Keyword And Ignore Error   Distribute Model   vCPEvGW    ${DEMO_PREFIX}VCPEvGW
 
 Distribute Model
     [Arguments]   ${service}   ${modelName}
 Instantiate VNF
     [Arguments]   ${service}   ${vf_module_label}=NULL
     Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
-    ${vf_module_name}    ${service}    ${generic_vnfs}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${TENANT_NAME}
+    ${vf_module_name}    ${service}=    Orchestrate VNF    DemoCust    ${service}   ${service}    ${TENANT_NAME}
     Save For Delete
     Log to Console   Customer Name=${CUSTOMER_NAME}
     Log to Console   VNF Module Name=${vf_module_name}
-    # Don't get from MSO for now due to SO-1186
-    # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
-    ${model_invariant_id}=   Set Variable   ${EMPTY}
-    :for    ${vf_module}    in    @{generic_vnfs}
-    \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
-    \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'    ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
+    ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
     Log to Console   ModelInvariantID=${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}
 Instantiate Demo VNF
     [Arguments]   ${service}   ${vf_module_label}=NULL
     Setup Orchestrate VNF    ${GLOBAL_AAI_CLOUD_OWNER}    SharedNode    OwnerType    v1    CloudZone
-    ${vf_module_name}    ${service}    ${generic_vnfs}=    Orchestrate Demo VNF    Demonstration    ${service}   ${service}    ${TENANT_NAME}
+    ${vf_module_name}    ${service}=    Orchestrate Demo VNF    Demonstration    ${service}   ${service}    ${TENANT_NAME}
     #Save For Delete
     Log to Console   Customer Name=${CUSTOMER_NAME}
     Log to Console   VNF Module Name=${vf_module_name}
-    # Don't get from MSO for now due to SO-1186
-    # ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
-    ${model_invariant_id}=   Set Variable   ${EMPTY}
-    :for    ${vf_module}    in    @{generic_vnfs}
-    \    ${generic_vnf}=    Get From Dictionary    ${generic_vnfs}    ${vf_module}
-    \    ${model_invariant_id}=    Set Variable If    '${vf_module_label}' in '${vf_module}'    ${generic_vnf['model-invariant-id']}    ${model_invariant_id}
+    ${model_invariant_id}=  Run MSO Get ModelInvariantId   ${SUITE_SERVICE_MODEL_NAME}  ${vf_module_label}
     Log to Console   ModelInvariantID=${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  Update vVFWCL Policy   ${model_invariant_id}
     ${status}   ${value}=   Run Keyword And Ignore Error  APPC Mount Point    ${vf_module_name}