org.onap migration
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / services / creationService.js
index 2849812..838ab37 100755 (executable)
  */\r
 \r
 var CreationService = function($log, AaiService, AsdcService, DataService,VIDCONFIGURATION,\r
-               ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService) {\r
-\r
-       var _this = this;\r
-\r
-       var getAsyncOperationList = function() {\r
-               if (DataService.getLoggedInUserId() == null)\r
-                       getLoggedInUserID();\r
-               switch (_this.componentId) {\r
-               case COMPONENT.SERVICE:\r
-                       return [ getSubscribers, getServices ];\r
-               case COMPONENT.NETWORK:\r
-                       return [ getLcpCloudRegionTenantList ];\r
-               case COMPONENT.VNF:\r
-                       return [ getLcpCloudRegionTenantList ];\r
-               case COMPONENT.VF_MODULE:\r
-                       return [ getLcpCloudRegionTenantList ];\r
-               case COMPONENT.VOLUME_GROUP:\r
-                       return [ getLcpCloudRegionTenantList ];\r
-               }\r
-       };\r
+                               ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService, OwningEntityService) {\r
 \r
-       /*\r
-        * "getSummaryList" and "getUserProvidedList" return parameters that should\r
-        * be displayed in the summary and user provided sections, respectively. The\r
-        * functions are expected to return lists that are in the format needed by\r
-        * the parameter-block directive.\r
-        */\r
-\r
-       var getSummaryList = function() {\r
-\r
-               /*\r
-                * These placeholders should be removed and their usage in\r
-                * "getSummaryList" should be replaced by appropriate code as the\r
-                * requirements and interfaces firm up.\r
-                */\r
-\r
-               var PLACEHOLDER_RESOURCE_DESCRIPTION = "Resource Description (PLACEHOLDER)";\r
-               var PLACEHOLDER_SERVICE_CATEGORY = "Service Category (PLACEHOLDER)";\r
-               var PLACEHOLDER_VF_MODULE_DESCRIPTION = "VF Module Description (PLACEHOLDER)";\r
-               var PLACEHOLDER_VF_MODULE_LABEL = "VF Module Label (PLACEHOLDER)";\r
-               var PLACEHOLDER_VF_MODULE_TYPE = "VF Module Type (PLACEHOLDER)";\r
-\r
-               _this.parameterList = new Array();\r
-\r
-               /*\r
-                * Common fields displayed at the top of all create instance screens.\r
-                */\r
-               if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]==null \r
-                               || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==undefined\r
-                               || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==''){\r
-                       addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
-               }\r
-\r
-               switch (_this.componentId) {\r
-               case COMPONENT.SERVICE:\r
-                       if ( !DataService.getALaCarte() ) {\r
-                               // for macro instantiation need to add the resource names under the node template list\r
-                               // this field is called modelCustomizationName in the asdc client code\r
-                               var p;\r
-                               var rlist = DataService.getResources();\r
-                               var res;\r
-                               if ( rlist != null ) { \r
-                                       for (var i = 0; i < rlist.length; i++) {\r
-                                               res = rlist[i];\r
-                                       \r
-                                               p = FIELD.NAME.RESOURCE_NAME.concat(" " + (i+1));\r
-                                               addToList(p, res.name );\r
-                                               p = FIELD.NAME.RESOURCE_DESCRIPTION.concat(" " + (i+1));\r
-                                               addToList(p, res.description );\r
-                                       }\r
-                               }\r
-                       }\r
-                       if(DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=null && DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=''){\r
-                               addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
-                                               .getModelInfo(_this.componentId)["createSubscriberName"]);\r
-                       }\r
-                       if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=null && DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=''){\r
-                               addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
-                                               .getModelInfo(_this.componentId)["serviceTypeName"]);\r
-                               addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
-                       }\r
-                       addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
-                       addToList(FIELD.NAME.SERVICE_VERSION, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
-                       addToList(FIELD.NAME.SERVICE_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
-                       addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);\r
-                       addToList(FIELD.NAME.SERVICE_CATEGORY, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);\r
-                       break;\r
-               case COMPONENT.VF_MODULE:\r
-                       addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
-                                       .getSubscriberName());\r
-                       addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
-                                       .getServiceInstanceName());\r
-                       addToList(FIELD.NAME.MODEL_NAME, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
-                       addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
-                       addToList(FIELD.NAME.MODEL_VERSION, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
-                       addToList(FIELD.NAME.MODEL_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
-                       addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
-                       break;\r
-               case COMPONENT.VNF:\r
-                       addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
-                                       .getSubscriberName());\r
-                       addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
-                                       .getServiceInstanceName());\r
-                       addToList(FIELD.NAME.MODEL_NAME, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
-                       addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
-                       addToList(FIELD.NAME.MODEL_VERSION, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
-                       addToList(FIELD.NAME.MODEL_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
-                       addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
-                       addToList(FIELD.NAME.MODEL_CUSTOMIZATION_NAME, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_CUSTOMIZATION_NAME]);\r
-                       addToList(FIELD.NAME.MODEL_VNF_TYPE, DataService\r
-                                       .getModelInfo(_this.componentId)[COMPONENT.VNF_TYPE]);\r
-                       addToList(FIELD.NAME.MODEL_VNF_ROLE, DataService\r
-                                       .getModelInfo(_this.componentId)[COMPONENT.VNF_ROLE]);\r
-                       addToList(FIELD.NAME.MODEL_VNF_FUNCTION, DataService\r
-                                       .getModelInfo(_this.componentId)[COMPONENT.VNF_FUNCTION]);\r
-                       addToList(FIELD.NAME.MODEL_VNF_CODE, DataService\r
-                                       .getModelInfo(_this.componentId)[COMPONENT.VNF_CODE]);\r
-                       break;\r
-               case COMPONENT.NETWORK:\r
-               case COMPONENT.VOLUME_GROUP:\r
-                       addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
-                                       .getSubscriberName());\r
-                       addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
-                                       .getServiceInstanceName());\r
-                       addToList(FIELD.NAME.MODEL_NAME, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
-                       addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
-                       addToList(FIELD.NAME.MODEL_VERSION, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
-                       addToList(FIELD.NAME.MODEL_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
-                       addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
-                                       .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
-                       break;\r
-               }\r
-\r
-               return _this.parameterList;\r
-       };\r
+    var _this = this;\r
 \r
-       var getUserProvidedList = function() {\r
-               parameterList = [];\r
-               var isUserProvidedNaming = false;\r
-               if ( (DataService.getModelInfo(_this.componentId).serviceEcompNaming != null) \r
-                               && (DataService.getModelInfo(_this.componentId).serviceEcompNaming === "false") ) {\r
-                       isUserProvidedNaming = true;\r
-               }\r
-               var parameterList;\r
-               var hsf = DataService.getHideServiceFields() || false;\r
-               if (_this.componentId === COMPONENT.SERVICE && !hsf) {  \r
-                       if ( DataService.getALaCarte() ) {\r
-                               parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
-                               parameterList = parameterList.concat([ getSubscribersParameter(),\r
-                                   FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
-                       }\r
-                       else {\r
-                               // macro\r
-                               if (isUserProvidedNaming) {\r
-                                       parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
-                                       \r
-                               }\r
-                               parameterList = parameterList.concat([ getSubscribersParameter() ]);\r
-                               parameterList = parameterList.concat([ getServiceId(),\r
-                                       FIELD.PARAMETER.SERVICE_TYPE,\r
-                                       FIELD.PARAMETER.LCP_REGION,\r
-                                       FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
-                                       FIELD.PARAMETER.TENANT_DISABLED ]);\r
-                       }\r
-               }\r
-               else {\r
-                       parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
-                       switch (_this.componentId) {\r
-                       case COMPONENT.NETWORK:\r
-                       case COMPONENT.VNF:\r
-                               parameterList = parameterList.concat([ getServiceId(),\r
-                                               getLcpRegion(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
-                                               FIELD.PARAMETER.TENANT_DISABLED ]);\r
-                               break;\r
-                       case COMPONENT.VF_MODULE:\r
-                               parameterList = parameterList.concat([\r
-                                       getLcpRegion(),\r
-                                               FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
-                                               FIELD.PARAMETER.TENANT_DISABLED\r
-                               ]);\r
-                               \r
-                               var availableVolumeGroupList = DataService.getAvailableVolumeGroupList();\r
-                               \r
-                               if (availableVolumeGroupList && availableVolumeGroupList.length > 0) {\r
-                                       var availableVolumeGroupNames = [FIELD.STATUS.NONE];\r
-       \r
-                                       for (var i = 0; i < availableVolumeGroupList.length; i++) {\r
-                                               availableVolumeGroupNames.push(availableVolumeGroupList[i].instance.name);\r
-                                       }\r
-                                       \r
-                                       parameterList.push(addOptionList(\r
-                                                       FIELD.PARAMETER.AVAILABLE_VOLUME_GROUP,\r
-                                                       availableVolumeGroupNames));\r
-                               }\r
-                               break;\r
-                       case COMPONENT.VOLUME_GROUP:\r
-                               parameterList = parameterList.concat([ getLcpRegion(),\r
-                                               FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
-                                               FIELD.PARAMETER.TENANT_DISABLED ]);\r
-                       }\r
-               }\r
-               parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);\r
-               if(_this.componentId === COMPONENT.VF_MODULE ){\r
-                       parameterList.push({name: "SDN-C Pre-Load",\r
-                               id: "sdncPreload",\r
-                               type: "checkbox",\r
-                               isEnabled: true,\r
-                               isRequired: false\r
-                               }\r
-                       );\r
-                       parameterList.push({name: "Upload Supplementory Data file",\r
-                               id: "uploadSupplementoryDataFile",\r
-                               type: "checkbox",\r
-                               isEnabled: true,\r
-                               isRequired: false\r
-                               }\r
-                       );\r
-                       \r
-                       parameterList.push({name: "Supplemetory file (JSON format)",\r
-                               id: "supplementoryDataFile",\r
-                               type: "file",\r
-                               isRequired: false,\r
-                               isVisiblity: false\r
-                               }\r
-                       );\r
-               }\r
-               \r
-               if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED  && _this.componentId === COMPONENT.VOLUME_GROUP){\r
-                               parameterList.push({name: "Upload Supplementory Data file",\r
-                                       id: "uploadSupplementoryDataFile",\r
-                                       type: "checkbox",\r
-                                       isEnabled: true,\r
-                                       isRequired: false\r
-                                       }\r
-                               );\r
-                               \r
-                               parameterList.push({name: "Supplemetory file (JSON format)",\r
-                                       id: "supplementoryDataFile",\r
-                                       type: "file",\r
-                                       isRequired: false,\r
-                                       isVisiblity: false\r
-                                       }\r
-                               );\r
-                       }\r
-\r
-               addArbitraryParameters(parameterList);\r
-\r
-               return parameterList;\r
-       };\r
+    var getAsyncOperationList = function() {\r
+        if (DataService.getLoggedInUserId() == null) {\r
+            getLoggedInUserID();\r
+        } else {\r
+            UtilityService.startNextAsyncOperation();\r
+        }\r
+        switch (_this.componentId) {\r
+            case COMPONENT.SERVICE:\r
+                return [ getSubscribers, getServices, getAicZones, getOwningEntityProperties ];\r
+            case COMPONENT.NETWORK:\r
+                return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];\r
+            case COMPONENT.VNF:\r
+                return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];\r
+            case COMPONENT.VF_MODULE:\r
+                return [ getLcpCloudRegionTenantList ];\r
+            case COMPONENT.VOLUME_GROUP:\r
+                return [ getLcpCloudRegionTenantList ];\r
+        }\r
+    };\r
 \r
-       var addArbitraryParameters = function(parameterList) {\r
-               if ( DataService.getModelInfo(_this.componentId).displayInputs != null ) {\r
-                       var inputs = DataService.getModelInfo(_this.componentId).displayInputs;  \r
-                       for ( var key in inputs) {\r
-                               var parameter = {\r
-                                               id : key,\r
-                                               type : PARAMETER.STRING,\r
-                                               name : ComponentService.getFieldDisplayName(key),\r
-                                               value : inputs[key][PARAMETER.DEFAULT],\r
-                                               isRequired : inputs[key][PARAMETER.REQUIRED],\r
-                                               description : inputs[key][PARAMETER.DESCRIPTION]\r
-                               };\r
-                               switch (inputs[key][PARAMETER.TYPE]) {\r
-                                       case PARAMETER.INTEGER:\r
-                                               parameter.type = PARAMETER.NUMBER;\r
-                                               break;\r
-                                       case PARAMETER.BOOLEAN:\r
-                                               parameter.type = PARAMETER.BOOLEAN;\r
-                                               break;\r
-                                       case PARAMETER.RANGE:\r
-                                               break;\r
-                                       case PARAMETER.LIST:\r
-                                               parameter.type = PARAMETER.LIST;\r
-                                               break;\r
-                                       case PARAMETER.MAP:\r
-                                               parameter.type = PARAMETER.MAP;\r
-                                               break;\r
-                               }\r
-                       \r
-                               if ( UtilityService.hasContents(inputs[key][PARAMETER.CONSTRAINTS]) \r
-                                               && ( inputs[key][PARAMETER.CONSTRAINTS].length > 0 ) ) {\r
-                                       var constraintsArray = inputs[key][PARAMETER.CONSTRAINTS];\r
-                                       //console.log ("Calling addConstraintParameters for input name=" + key);\r
-                                       addConstraintParameters (parameterList, constraintsArray, key, inputs, parameter);\r
-                               }\r
-                               else {\r
-                                       \r
-                                       parameterList.push(parameter);\r
-                               }\r
-                       }\r
-                       DataService.setArbitraryParameters (parameterList);\r
-               }\r
-       };\r
+    /*\r
+     * "getSummaryList" and "getUserProvidedList" return parameters that should\r
+     * be displayed in the summary and user provided sections, respectively. The\r
+     * functions are expected to return lists that are in the format needed by\r
+     * the parameter-block directive.\r
+     */\r
+\r
+    var getSummaryList = function() {\r
+\r
+        /*\r
+         * These placeholders should be removed and their usage in\r
+         * "getSummaryList" should be replaced by appropriate code as the\r
+         * requirements and interfaces firm up.\r
+         */\r
+\r
+        var PLACEHOLDER_RESOURCE_DESCRIPTION = "Resource Description (PLACEHOLDER)";\r
+        var PLACEHOLDER_SERVICE_CATEGORY = "Service Category (PLACEHOLDER)";\r
+        var PLACEHOLDER_VF_MODULE_DESCRIPTION = "VF Module Description (PLACEHOLDER)";\r
+        var PLACEHOLDER_VF_MODULE_LABEL = "VF Module Label (PLACEHOLDER)";\r
+        var PLACEHOLDER_VF_MODULE_TYPE = "VF Module Type (PLACEHOLDER)";\r
+\r
+        _this.parameterList = new Array();\r
+\r
+        /*\r
+         * Common fields displayed at the top of all create instance screens.\r
+         */\r
+        if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]==null\r
+            || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==undefined\r
+            || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==''){\r
+            addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
+        }\r
+\r
+        switch (_this.componentId) {\r
+            case COMPONENT.SERVICE:\r
+                if ( !DataService.getALaCarte() ) {\r
+                    // for macro instantiation need to add the resource names under the node template list\r
+                    // this field is called modelCustomizationName in the asdc client code\r
+                    var p;\r
+                    var rlist = DataService.getResources();\r
+                    var res;\r
+                    if ( rlist != null ) {\r
+                        for (var i = 0; i < rlist.length; i++) {\r
+                            res = rlist[i];\r
+\r
+                            p = FIELD.NAME.RESOURCE_NAME.concat(" " + (i+1));\r
+                            addToList(p, res.name );\r
+                            p = FIELD.NAME.RESOURCE_DESCRIPTION.concat(" " + (i+1));\r
+                            addToList(p, res.description );\r
+                        }\r
+                    }\r
+                }\r
+                if(DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=null && DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=''){\r
+                    addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
+                        .getModelInfo(_this.componentId)["createSubscriberName"]);\r
+                }\r
+                if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=null && DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=''){\r
+                    addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
+                        .getModelInfo(_this.componentId)["serviceTypeName"]);\r
+                    addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());\r
+                }\r
+                addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+                addToList(FIELD.NAME.SERVICE_VERSION, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
+                addToList(FIELD.NAME.SERVICE_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
+                addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);\r
+                addToList(FIELD.NAME.SERVICE_CATEGORY, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);\r
+                if (DataService.getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE] != "null") {\r
+                    addToList(FIELD.NAME.SERVICE_TYPE, DataService\r
+                        .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE]);\r
+                    addToList(FIELD.NAME.SERVICE_ROLE, DataService\r
+                        .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_ROLE]);\r
+                }\r
+\r
+                break;\r
+            case COMPONENT.VF_MODULE:\r
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
+                    .getSubscriberName());\r
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
+                    .getServiceInstanceName());\r
+                addToList(FIELD.NAME.MODEL_NAME, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+                addToList(FIELD.NAME.MODEL_VERSION, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
+                addToList(FIELD.NAME.MODEL_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
+                break;\r
+            case COMPONENT.VNF:\r
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
+                    .getSubscriberName());\r
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
+                    .getServiceInstanceName());\r
+                addToList(FIELD.NAME.MODEL_NAME, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+                addToList(FIELD.NAME.MODEL_VERSION, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
+                addToList(FIELD.NAME.MODEL_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_NAME, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_CUSTOMIZATION_NAME]);\r
+                addToList(FIELD.NAME.MODEL_VNF_TYPE, DataService\r
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_TYPE]);\r
+                addToList(FIELD.NAME.MODEL_VNF_ROLE, DataService\r
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_ROLE]);\r
+                addToList(FIELD.NAME.MODEL_VNF_FUNCTION, DataService\r
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_FUNCTION]);\r
+                addToList(FIELD.NAME.MODEL_VNF_CODE, DataService\r
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_CODE]);\r
+                break;\r
+            case COMPONENT.NETWORK:\r
+            case COMPONENT.VOLUME_GROUP:\r
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService\r
+                    .getSubscriberName());\r
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService\r
+                    .getServiceInstanceName());\r
+                addToList(FIELD.NAME.MODEL_NAME, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);\r
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);\r
+                addToList(FIELD.NAME.MODEL_VERSION, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);\r
+                addToList(FIELD.NAME.MODEL_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);\r
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService\r
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);\r
+                break;\r
+        }\r
+\r
+        return _this.parameterList;\r
+    };\r
+\r
+    var getUserProvidedList = function() {\r
+        var parameterList = [];\r
+        var isUserProvidedNaming = false;\r
+        if ( (DataService.getModelInfo(_this.componentId).serviceEcompNaming != null)\r
+            && (DataService.getModelInfo(_this.componentId).serviceEcompNaming === "false") ) {\r
+            isUserProvidedNaming = true;\r
+        }\r
+\r
+        var isInTop = DataService.getHideServiceFields() || false;\r
+        if (_this.componentId === COMPONENT.SERVICE) {\r
+            if ( DataService.getALaCarte() ) {\r
+                parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
+                if(!isInTop){\r
+                    parameterList = parameterList.concat([ getSubscribersParameter(),\r
+                        FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
+                }\r
+            }\r
+            else {\r
+                // macro\r
+\r
+                if(!isInTop){\r
+                    if (isUserProvidedNaming) {\r
+                        parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
+\r
+                    }\r
+                    parameterList = parameterList.concat([ getSubscribersParameter() ]);\r
+                    parameterList = parameterList.concat([ getServiceId(),\r
+                        FIELD.PARAMETER.SERVICE_TYPE,\r
+                        FIELD.PARAMETER.LCP_REGION,\r
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
+                        FIELD.PARAMETER.TENANT_DISABLED\r
+                    ]);\r
+                    parameterList = parameterList.concat([ getAicZonesParameter() ]);\r
+\r
+\r
+                }else{\r
+                    parameterList = parameterList.concat([ getServiceId(),\r
+                        FIELD.PARAMETER.LCP_REGION,\r
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
+                        FIELD.PARAMETER.TENANT_DISABLED ]);\r
+                }\r
+            }\r
+\r
+            parameterList = parameterList.concat([ getProjectParameter() ]);\r
+            parameterList = parameterList.concat([ getOwningEntityParameter() ]);\r
+\r
+        }\r
+        else {\r
+            parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];\r
+            switch (_this.componentId) {\r
+                case COMPONENT.NETWORK:\r
+                case COMPONENT.VNF:\r
+                    parameterList = parameterList.concat([ getServiceId(),\r
+                        getLcpRegionParameter(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
+                        FIELD.PARAMETER.TENANT_DISABLED ]);\r
+                    parameterList = parameterList.concat([ getLineOfBusinessParameter() ]);\r
+                    parameterList = parameterList.concat([ getPlatformParameter() ]);\r
+\r
+                    break;\r
+                case COMPONENT.VF_MODULE:\r
+                    parameterList = parameterList.concat([\r
+                        getLcpRegionParameter(),\r
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
+                        FIELD.PARAMETER.TENANT_DISABLED\r
+                    ]);\r
+\r
+                    var availableVolumeGroupList = DataService.getAvailableVolumeGroupList();\r
+\r
+                    if (availableVolumeGroupList && availableVolumeGroupList.length > 0) {\r
+                        var availableVolumeGroupNames = [FIELD.STATUS.NONE];\r
+\r
+                        for (var i = 0; i < availableVolumeGroupList.length; i++) {\r
+                            availableVolumeGroupNames.push(availableVolumeGroupList[i].instance.name);\r
+                        }\r
+\r
+                        parameterList.push(addOptionList(\r
+                            FIELD.PARAMETER.AVAILABLE_VOLUME_GROUP,\r
+                            availableVolumeGroupNames));\r
+                    }\r
+                    break;\r
+                case COMPONENT.VOLUME_GROUP:\r
+                    parameterList = parameterList.concat([ getLcpRegionParameter(),\r
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,\r
+                        FIELD.PARAMETER.TENANT_DISABLED ]);\r
+            }\r
+        }\r
+        parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);\r
+        if(_this.componentId === COMPONENT.VF_MODULE ){\r
+            parameterList.push({name: FIELD.NAME.SDN_C_PRELOAD,\r
+                    id: FIELD.ID.SDN_C_PRELOAD,\r
+                    type: "checkbox",\r
+                    isEnabled: true,\r
+                    isRequired: false,\r
+                    hideFieldAndLabel: true\r
+                }\r
+            );\r
+            parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+                    id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+                    type: "checkbox",\r
+                    isEnabled: true,\r
+                    isRequired: false,\r
+                    value:false\r
+                }\r
+            );\r
+\r
+            parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
+                    id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
+                    type: "file",\r
+                    isRequired: false,\r
+                    isVisiblity: false\r
+                }\r
+            );\r
+        }\r
+\r
+        if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED  && _this.componentId === COMPONENT.VOLUME_GROUP){\r
+            parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+                    id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,\r
+                    type: "checkbox",\r
+                    isEnabled: true,\r
+                    isRequired: false\r
+                }\r
+            );\r
+\r
+            parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,\r
+                    id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,\r
+                    type: "file",\r
+                    isRequired: false,\r
+                    isVisiblity: false\r
+                }\r
+            );\r
+        }\r
+\r
+        addArbitraryParameters(parameterList);\r
+\r
+        return parameterList;\r
+    };\r
+\r
+    var addArbitraryParameters = function(parameterList) {\r
+        if ( DataService.getModelInfo(_this.componentId).displayInputs != null ) {\r
+            var inputs = DataService.getModelInfo(_this.componentId).displayInputs;\r
+            for ( var key in inputs) {\r
+                var parameter = {\r
+                    id : key,\r
+                    type : PARAMETER.STRING,\r
+                    name : ComponentService.getFieldDisplayName(key),\r
+                    value : inputs[key][PARAMETER.DEFAULT],\r
+                    isRequired : inputs[key][PARAMETER.REQUIRED],\r
+                    description : inputs[key][PARAMETER.DESCRIPTION]\r
+                };\r
+                if ( DataService.getALaCarte() ) {\r
+                    parameter.name = ComponentService.getFieldDisplayName(inputs[key][PARAMETER.DISPLAY_NAME]);\r
+                }\r
+                switch (inputs[key][PARAMETER.TYPE]) {\r
+                    case PARAMETER.INTEGER:\r
+                        parameter.type = PARAMETER.NUMBER;\r
+                        break;\r
+                    case PARAMETER.BOOLEAN:\r
+                        parameter.type = PARAMETER.BOOLEAN;\r
+                        break;\r
+                    case PARAMETER.RANGE:\r
+                        break;\r
+                    case PARAMETER.LIST:\r
+                        parameter.type = PARAMETER.LIST;\r
+                        break;\r
+                    case PARAMETER.MAP:\r
+                        parameter.type = PARAMETER.MAP;\r
+                        break;\r
+                }\r
+\r
+                if ( UtilityService.hasContents(inputs[key][PARAMETER.CONSTRAINTS])\r
+                    && ( inputs[key][PARAMETER.CONSTRAINTS].length > 0 ) ) {\r
+                    var constraintsArray = inputs[key][PARAMETER.CONSTRAINTS];\r
+                    //console.log ("Calling addConstraintParameters for input name=" + key);\r
+                    addConstraintParameters (parameterList, constraintsArray, key, inputs, parameter);\r
+                }\r
+                else {\r
+\r
+                    parameterList.push(parameter);\r
+                }\r
+            }\r
+            DataService.setArbitraryParameters (parameterList);\r
+        }\r
+    };\r
 \r
        var addConstraintParameters = function(parameterList, constraintsArray, key, inputs, parameter) {\r
                // If there are constraints and the operator is "valid_values",\r
@@ -459,546 +495,697 @@ var CreationService = function($log, AaiService, AsdcService, DataService,VIDCON
                        value : value\r
                });\r
        };\r
+       var setInventoryInfo = function(){\r
+        var inventoryItem = DataService.getInventoryItem();\r
+        var inventoryInfo = ComponentService.getInventoryInfo(\r
+            _this.componentId, inventoryItem);\r
+       }\r
 \r
-       /*\r
-        * The "*Mso*" functions return URL and request details that can be passed\r
-        * to the MSO controller. The request details defines the info passed as\r
-        * part of the POST body.\r
-        */\r
-\r
-       var getMsoUrl = function() {\r
-               switch (_this.componentId) {\r
-               case COMPONENT.NETWORK:\r
-                       return "mso_create_nw_instance/"\r
-                                       + DataService.getServiceInstanceId();\r
-               case COMPONENT.SERVICE:\r
-                       return "mso_create_svc_instance";\r
-               case COMPONENT.VNF:\r
-                       return "mso_create_vnf_instance/"\r
-                                       + DataService.getServiceInstanceId();\r
-               case COMPONENT.VF_MODULE:\r
-                       return "mso_create_vfmodule_instance/"\r
-                                       + DataService.getServiceInstanceId() + "/vnfs/"\r
-                                       + DataService.getVnfInstanceId();\r
-               case COMPONENT.VOLUME_GROUP:\r
-                       return "mso_create_volumegroup_instance/"\r
-                                       + DataService.getServiceInstanceId() + "/vnfs/"\r
-                                       + DataService.getVnfInstanceId();\r
-               }\r
-       };\r
+    /*\r
+     * The "*Mso*" functions return URL and request details that can be passed\r
+     * to the MSO controller. The request details defines the info passed as\r
+     * part of the POST body.\r
+     */\r
 \r
-       var getMsoRequestDetails = function(parameterList) {\r
-               console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));\r
-               //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()="); \r
-               //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));\r
-               \r
-               var modelInfo = DataService.getModelInfo(_this.componentId);\r
-               var requestorloggedInId = DataService.getLoggedInUserId();\r
-               if (requestorloggedInId ==  null)\r
-                       requestorloggedInId = "";\r
-               var isSupRollback = false;\r
-               if (getValueFromList(FIELD.ID.SUPPRESS_ROLLBACK,parameterList) === "true") {\r
-                       isSupRollback = true;\r
-               }\r
-               var requestDetails = {\r
-                       requestInfo : {\r
-                               instanceName : getValueFromList(FIELD.ID.INSTANCE_NAME,\r
-                                               parameterList),\r
-                               source : FIELD.ID.VID,\r
-                               suppressRollback : isSupRollback,\r
-                               requestorId: requestorloggedInId\r
-                       },\r
-                       modelInfo : {\r
-                               modelType : _this.componentId,\r
-                               modelInvariantId : modelInfo.modelInvariantId,\r
-                               modelVersionId : modelInfo.modelNameVersionId,\r
-                               modelName : modelInfo.modelName,\r
-                               modelVersion : modelInfo.modelVersion,\r
-                               modelCustomizationId: modelInfo.customizationUuid,\r
-                               modelCustomizationName : modelInfo.modelCustomizationName\r
-                       },\r
-                       requestParameters : {\r
-                               userParams : getArbitraryParameters(parameterList)\r
-                       }\r
-               };\r
-               if ( (_this.componentId != COMPONENT.SERVICE) || ( !DataService.getALaCarte() ) ) {\r
-                       // include cloud region for everything but service create alacarte\r
-                       var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);\r
-                       if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {\r
-                               lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,\r
-                                               parameterList);\r
-                       }\r
-                       requestDetails.cloudConfiguration = {\r
-                                       lcpCloudRegionId : lcpRegion,\r
-                                       tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)\r
-                       };      \r
-               }\r
-               switch (_this.componentId) {\r
-               case COMPONENT.SERVICE:\r
-                       requestDetails.subscriberInfo = {\r
-                               globalSubscriberId : DataService.getGlobalCustomerId(),\r
-                               subscriberName : DataService.getSubscriberName()\r
-                       };\r
-                       requestDetails.requestParameters.subscriptionServiceType = getValueFromList(\r
-                                       FIELD.ID.SERVICE_TYPE, parameterList);\r
-                       requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();\r
-                       if ( !DataService.getALaCarte() ) {\r
-                               requestDetails.requestInfo.productFamilyId = getValueFromList(\r
-                                       FIELD.ID.PRODUCT_FAMILY, parameterList);\r
-                       }\r
-                       var svcModelInfo = {\r
-                                       modelType : _this.componentId,\r
-                                       modelInvariantId : modelInfo.modelInvariantId,\r
-                                       modelVersionId : modelInfo.modelNameVersionId,\r
-                                       modelName : modelInfo.modelName,\r
-                                       modelVersion : modelInfo.modelVersion\r
-                               };\r
-                               requestDetails.modelInfo = svcModelInfo;\r
-                       break;\r
-               case COMPONENT.VNF:\r
-                       \r
-                       requestDetails.requestInfo.productFamilyId = getValueFromList(\r
-                                       FIELD.ID.PRODUCT_FAMILY, parameterList);\r
-                       break;\r
-               case COMPONENT.NETWORK:\r
-                       requestDetails.requestInfo.productFamilyId = getValueFromList(\r
-                                       FIELD.ID.PRODUCT_FAMILY, parameterList);\r
-                       \r
-                       break;\r
-               case COMPONENT.VF_MODULE:\r
-                               break;\r
-               case COMPONENT.VOLUME_GROUP:\r
-                       break;\r
-               }\r
-\r
-               var relatedInstanceList = getRelatedInstanceList(parameterList);\r
-\r
-               if (relatedInstanceList !== undefined) {\r
-                       requestDetails.relatedInstanceList = relatedInstanceList;\r
-               }\r
-\r
-               return requestDetails;\r
-       };\r
+    var getMsoUrl = function() {\r
+        switch (_this.componentId) {\r
+            case COMPONENT.NETWORK:\r
+                return "mso_create_nw_instance/"\r
+                    + DataService.getServiceInstanceId();\r
+            case COMPONENT.SERVICE:\r
+                return "mso_create_svc_instance";\r
+            case COMPONENT.VNF:\r
+                return "mso_create_vnf_instance/"\r
+                    + DataService.getServiceInstanceId();\r
+            case COMPONENT.VF_MODULE:\r
+                return "mso_create_vfmodule_instance/"\r
+                    + DataService.getServiceInstanceId() + "/vnfs/"\r
+                    + DataService.getVnfInstanceId();\r
+            case COMPONENT.VOLUME_GROUP:\r
+                return "mso_create_volumegroup_instance/"\r
+                    + DataService.getServiceInstanceId() + "/vnfs/"\r
+                    + DataService.getVnfInstanceId();\r
+        }\r
+    };\r
 \r
-       var getRelatedInstanceList = function(parameterList) {\r
-               var relatedInstanceList = new Array();\r
-               switch (_this.componentId) {\r
-               case COMPONENT.SERVICE:\r
-                       return undefined;\r
-               case COMPONENT.NETWORK:\r
-               case COMPONENT.VNF:\r
-                       addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
-                                       DataService.getServiceInstanceId());\r
-                       break;\r
-               case COMPONENT.VF_MODULE:\r
-                       addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
-                                       DataService.getServiceInstanceId());\r
-                       addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
-                                       .getVnfInstanceId());\r
-\r
-                       var availableVolumeGroup = getValueFromList(\r
-                                       FIELD.ID.AVAILABLE_VOLUME_GROUP, parameterList);\r
-                       \r
-                       if (UtilityService.hasContents(availableVolumeGroup) && availableVolumeGroup !== "None") {\r
-                               var availableVolumeGroups = DataService.getAvailableVolumeGroupList();\r
-                               \r
-                               for (var i = 0; i < availableVolumeGroups.length; i++) {\r
-                                       if (availableVolumeGroups[i].instance.name == availableVolumeGroup) {\r
-                                               DataService.setModelInfo(COMPONENT.VOLUME_GROUP, DataService.getModelInfo(COMPONENT.VF_MODULE));\r
-                                               DataService.setVolumeGroupInstanceId(availableVolumeGroups[i].instance.object["volume-group-id"]);\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               \r
-                               addRelatedInstance(relatedInstanceList, COMPONENT.VOLUME_GROUP,\r
-                                               DataService.getVolumeGroupInstanceId());\r
-                       }\r
-                       break;\r
-               case COMPONENT.VOLUME_GROUP:\r
-                       addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
-                                       DataService.getServiceInstanceId());\r
-                       addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
-                                       .getVnfInstanceId());\r
-                       break;\r
-               }\r
-\r
-               return relatedInstanceList;\r
-       };\r
+    var getMsoRequestDetails = function(parameterList) {\r
+        console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));\r
+        //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()=");\r
+        //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));\r
 \r
-       var addRelatedInstance = function(relatedInstanceList, componentId,\r
-                       instanceId) {\r
-               var modelInfo = DataService.getModelInfo(componentId);\r
-               var relatedInstance;\r
-               if (modelInfo !== undefined) {\r
-                       if (componentId === COMPONENT.SERVICE) {\r
-                               relatedInstance = {\r
-                                       "instanceId" : instanceId,\r
-                                       "modelInfo" : {\r
-                                               "modelType" : componentId,\r
-                                               "modelName" : modelInfo.modelName,\r
-                                               "modelInvariantId" : modelInfo.modelInvariantId,\r
-                                               "modelVersion" : modelInfo.modelVersion,\r
-                                               "modelVersionId" : modelInfo.modelNameVersionId,\r
-                                               \r
-                                       }\r
-                               };\r
-                       }\r
-                       else {\r
-                               relatedInstance = {\r
-                                               "instanceId" : instanceId,\r
-                                               "modelInfo" : {\r
-                                                       "modelType" : componentId,\r
-                                                       "modelName" : modelInfo.modelName,\r
-                                                       "modelInvariantId" : modelInfo.modelInvariantId,\r
-                                                       "modelVersion" : modelInfo.modelVersion,\r
-                                                       "modelVersionId" : modelInfo.modelNameVersionId,\r
-                                                       "modelCustomizationId": modelInfo.customizationUuid,\r
-                                                       "modelCustomizationName": modelInfo.modelCustomizationName\r
-                                               }\r
-                               }\r
-                       }\r
-                       relatedInstanceList.push({\r
-                               relatedInstance : relatedInstance\r
-                       });\r
-               }\r
-       };\r
+        var modelInfo = DataService.getModelInfo(_this.componentId);\r
+        var requestorloggedInId = DataService.getLoggedInUserId();\r
+        var owningEntityId = getValueFromList(FIELD.ID.OWNING_ENTITY, parameterList);\r
+        if (requestorloggedInId ==  null)\r
+            requestorloggedInId = "";\r
+        var isSupRollback = false;\r
+        if (getValueFromList(FIELD.ID.SUPPRESS_ROLLBACK,parameterList) === "true") {\r
+            isSupRollback = true;\r
+        }\r
+        var requestDetails = {\r
+            requestInfo : {\r
+                instanceName : getValueFromList(FIELD.ID.INSTANCE_NAME,\r
+                    parameterList) || DataService.getVfModuleInstanceName(),\r
+                source : FIELD.ID.VID,\r
+                suppressRollback : isSupRollback,\r
+                requestorId: requestorloggedInId\r
+            },\r
+            modelInfo : {\r
+                modelType : _this.componentId,\r
+                modelInvariantId : modelInfo.modelInvariantId,\r
+                modelVersionId : modelInfo.modelNameVersionId,\r
+                modelName : modelInfo.modelName,\r
+                modelVersion : modelInfo.modelVersion,\r
+                modelCustomizationId: modelInfo.customizationUuid,\r
+                modelCustomizationName : modelInfo.modelCustomizationName\r
+            },\r
+            requestParameters : {\r
+                userParams : getArbitraryParameters(parameterList)\r
+            }\r
+        };\r
+        if ( (_this.componentId != COMPONENT.SERVICE) || ( !DataService.getALaCarte() ) ) {\r
+            // include cloud region for everything but service create alacarte\r
+            var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);\r
+            if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {\r
+                lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,\r
+                    parameterList);\r
+            }\r
+            requestDetails.cloudConfiguration = {\r
+                lcpCloudRegionId : lcpRegion,\r
+                tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)\r
+            };\r
+        }\r
+        switch (_this.componentId) {\r
+            case COMPONENT.SERVICE:\r
+                requestDetails.subscriberInfo = {\r
+                    globalSubscriberId : DataService.getGlobalCustomerId(),\r
+                    subscriberName : DataService.getSubscriberName()\r
+                };\r
+                var isInTop = DataService.getHideServiceFields() || false;\r
+                if(isInTop){\r
+                    requestDetails.requestParameters.subscriptionServiceType = DataService.getModelInfo(_this.componentId)["serviceTypeName"];\r
+                }else{\r
+                    requestDetails.requestParameters.subscriptionServiceType = getValueFromList(\r
+                        FIELD.ID.SERVICE_TYPE, parameterList);\r
+                }\r
+                requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();\r
+                if ( !DataService.getALaCarte() ) {\r
+                    requestDetails.requestInfo.productFamilyId = getValueFromList(\r
+                        FIELD.ID.PRODUCT_FAMILY, parameterList);\r
+                }\r
+                var svcModelInfo = {\r
+                    modelType : _this.componentId,\r
+                    modelInvariantId : modelInfo.modelInvariantId,\r
+                    modelVersionId : modelInfo.modelNameVersionId,\r
+                    modelName : modelInfo.modelName,\r
+                    modelVersion : modelInfo.modelVersion\r
+                };\r
+                requestDetails.modelInfo = svcModelInfo;\r
 \r
-       /*\r
-        * var getArbitraryParameters = function(parameterList) { var\r
-        * arbitraryParameters = new Object(); for (var i = 0; i <\r
-        * parameterList.length; i++) { var parameter = parameterList[i]; switch\r
-        * (parameter.id) { case FIELD.ID.INSTANCE_NAME: case\r
-        * FIELD.ID.PRODUCT_FAMILY: case FIELD.ID.LCP_REGION: case\r
-        * FIELD.ID.LCP_REGION_TEXT: case FIELD.ID.SERVICE_TYPE: case\r
-        * FIELD.ID.TENANT: case FIELD.ID.SUPPRESS_ROLLBACK: break; default:\r
-        * arbitraryParameters[parameter.id] = parameter.value; } } return\r
-        * arbitraryParameters; }\r
-        */\r
-       var getArbitraryParameters = function(parameterList) {\r
-               var arbitraryParameters = new Object();\r
-               var arbitraryArray = new Array();\r
-               for (var i = 0; i < parameterList.length; i++) {\r
-                       var parameter = parameterList[i];\r
-                       switch (parameter.id) {\r
-                       case FIELD.ID.AVAILABLE_VOLUME_GROUP:\r
-                               break;\r
-                       case FIELD.ID.INSTANCE_NAME:\r
-                               break;\r
-                       case FIELD.ID.PRODUCT_FAMILY:\r
-                               break;\r
-                       case FIELD.ID.LCP_REGION:\r
-                               break;\r
-                       case FIELD.ID.LCP_REGION_TEXT:\r
-                               break;\r
-                       case FIELD.ID.SERVICE_TYPE:\r
-                               break;\r
-                       case FIELD.ID.TENANT:\r
-                               break;\r
-                       case FIELD.ID.SUPPRESS_ROLLBACK:\r
-                               break;\r
-                       case FIELD.ID.SUBSCRIBER_NAME:\r
-                               break;\r
-                       default:\r
-                               arbitraryParameters = {\r
-                                       name : parameter.id,\r
-                                       value : parameter.value\r
-                               }\r
-                               arbitraryArray.push(arbitraryParameters);\r
-                       }\r
-               }\r
-               return (arbitraryArray);\r
-       }\r
+                var selectedProject = getValueFromList(FIELD.ID.PROJECT, parameterList);\r
 \r
-       var getModel = function() {\r
-               AsdcService.getModel(DataService.getModelId(), function(response) {\r
-                       DataService.setModelInfo(_this.componentId, {\r
-                               modelInvariantId : response.data.invariantUUID,\r
-                               modelNameVersionId : response.data.uuid,\r
-                               modelName : response.data.name,\r
-                               modelVersion : response.data.version,\r
-                               inputs : response.data.inputs\r
-                       });\r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
+                if (selectedProject) {\r
+                    requestDetails.project = {\r
+                        projectName: getValueFromList(FIELD.ID.PROJECT, parameterList)\r
+                    };\r
+                }\r
 \r
-       var getSubscriptionServiceTypeList = function() {\r
-               AaiService.getSubscriptionServiceTypeList(DataService\r
-                               .getGlobalCustomerId(), function(response) {\r
-                       DataService.setSubscriptionServiceTypeList(response);\r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
+                requestDetails.owningEntity = {\r
+                    owningEntityId: owningEntityId,\r
+                    owningEntityName: getOwningEntityNameById(owningEntityId)\r
+                };\r
 \r
-       var getLoggedInUserID = function() {\r
-               AaiService.getLoggedInUserID(function(response) {\r
-                       DataService.setLoggedInUserId(response.data);\r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
-       \r
-       var getSubscribers = function() {\r
-               AaiService.getSubscribers(function(response) {\r
-                       DataService.setSubscribers(response);\r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
-       var getServices = function() {\r
-               AaiService.getServices(function(response) {\r
-                       var serviceIdList = [];\r
-                       angular.forEach(response.data, function(value, key) {\r
-                               angular.forEach(value, function(subVal, key) {\r
-                                       var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] };\r
-                                       serviceIdList.push(newVal);\r
-                                       DataService.setServiceIdList(serviceIdList);\r
-                               });\r
-                       });\r
-               \r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
-       var getLcpCloudRegionTenantList = function() {\r
-               AaiService.getLcpCloudRegionTenantList(DataService\r
-                               .getGlobalCustomerId(), DataService.getServiceType(), function(\r
-                               response) {\r
-                       DataService.setCloudRegionTenantList(response);\r
-                       UtilityService.startNextAsyncOperation();\r
-               });\r
-       };\r
+                break;\r
+            case COMPONENT.VNF:\r
 \r
-       var internalGetParametersHandler = function() {\r
-               if (angular.isFunction(_this.getParametersHandler)) {\r
-                       _this.getParametersHandler({\r
-                               summaryList : getSummaryList(),\r
-                               userProvidedList : getUserProvidedList()\r
-                       });\r
-               }\r
-       };\r
+                requestDetails.requestInfo.productFamilyId = getValueFromList(\r
+                    FIELD.ID.PRODUCT_FAMILY, parameterList);\r
 \r
-       var getSubscribersParameter = function() {\r
-               var subscribers = DataService.getSubscribers();\r
-               var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;\r
-               if ( UtilityService.hasContents(subscribers)) {\r
-                       parameter.optionList = [];\r
-       \r
-                       for (var i = 0; i < subscribers.length; i++) {\r
-                               parameter.optionList.push({\r
-                                       id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],\r
-                                       name : subscribers[i][FIELD.ID.SUBNAME]\r
-                               })\r
-                       }\r
-               }\r
-               return parameter;\r
-       };\r
+                var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
 \r
-       var getServiceId = function() {\r
-               var serviceIdList = DataService.getServiceIdList();\r
-               //var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
-               var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;\r
-               parameter.optionList = new Array();\r
-               if ( UtilityService.hasContents(serviceIdList) ) {\r
-                       // load them all\r
-                       for (var i = 0; i < serviceIdList.length; i++) {\r
-                               parameter.optionList.push({\r
-                                       id : serviceIdList[i].id,\r
-                                       name : serviceIdList[i].description\r
-                               });\r
-                       }\r
-               }\r
-\r
-               return parameter;\r
-       };\r
+                if(lineOfBusiness) {\r
+                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
 \r
-       var getLcpRegion = function() {\r
-               var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
-               console.log ( "cloudRegionTenantList=");\r
-               console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));\r
-\r
-               var parameter = FIELD.PARAMETER.LCP_REGION;\r
-               if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
-                       parameter.optionList = new Array();\r
-                       for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
-                               for (var j = 0; j < parameter.optionList.length; j++) {\r
-                                       if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {\r
-                                               break;\r
-                                       }\r
-                               }\r
-                               if (j < parameter.optionList.length) {\r
-                                       continue;\r
-                               }\r
-                               parameter.optionList.push({\r
-                                       id : cloudRegionTenantList[i].cloudRegionId\r
-                               });\r
-                       }\r
-               }\r
-               return parameter;\r
-       };\r
+                    requestDetails.lineOfBusiness = {\r
+                        lineOfBusinessName: lineOfBusinessNamesString\r
+                    }\r
+                }\r
 \r
-       var getTenantList = function(cloudRegionId) {\r
-               var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
-               var parameter = "";\r
-               if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
-                       parameter = FIELD.PARAMETER.TENANT_ENABLED;\r
-                       parameter.optionList = new Array();\r
-                       for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
-                               if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {\r
-                                       parameter.optionList.push({\r
-                                               id : cloudRegionTenantList[i].tenantId,\r
-                                               name : cloudRegionTenantList[i].tenantName\r
-                                       });\r
-                               }\r
-                       }\r
-               }\r
-               return parameter;\r
+                requestDetails.platform = {\r
+                    platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
+                };\r
 \r
-       };\r
+                break;\r
+            case COMPONENT.NETWORK:\r
+                requestDetails.requestInfo.productFamilyId = getValueFromList(\r
+                    FIELD.ID.PRODUCT_FAMILY, parameterList);\r
+                var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
 \r
-       var addOptionList = function(parameter, optionSimpleArray) {\r
-               var optionList = new Array();\r
-               if (!angular.isArray(optionSimpleArray)) {\r
-                       return optionList;\r
-               }\r
-               for (var i = 0; i < optionSimpleArray.length; i++) {\r
-                       optionList.push({\r
-                               name : optionSimpleArray[i]\r
-                       });\r
-               }\r
-               parameter.optionList = optionList;\r
-               return parameter;\r
-       };\r
+                if(lineOfBusiness) {\r
+                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
 \r
-       var getValueFromList = function(id, parameterList) {\r
-               for (var i = 0; i < parameterList.length; i++) {\r
-                       if (parameterList[i].id === id) {\r
-                               return parameterList[i].value;\r
-                       }\r
-               }\r
-       };\r
-       var updateUserParameterList = function(updatedId, parameterListControl) {\r
-               console.log ("updateUserParameterList() updatedId=" + updatedId);\r
-               if (updatedId === FIELD.ID.SDN_C_PRELOAD) {\r
-                       var list = parameterListControl.getList(updatedId);\r
-                       if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
-                               FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;\r
-                               parameterListControl\r
-                               .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);\r
-                       }else{\r
-                               parameterListControl\r
-                               .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);\r
-                       }\r
-               }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {\r
-                       if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
-                               $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();\r
-                                FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;\r
-                               parameterListControl\r
-                               .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);\r
-                       }else{\r
-                               $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();\r
-                               parameterListControl\r
-                               .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);\r
-                       }\r
-               } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
-                       var filePath =  $('input[parameter-id="'+updatedId+'"]').val();\r
-                       var arr =filePath.split('.');\r
-                       var fileExt  = arr[arr.length-1];\r
-                       if(fileExt!='' && fileExt.toLowerCase()!='json'){\r
-                                $('input[parameter-id="'+updatedId+'"]').val('');\r
-                               showError("Invalid file format.", 'Please select *.json format file.');\r
-                               return false;\r
-                       }\r
-                       var fileJsonData={};\r
-                       var fileInput = document.getElementById(updatedId);\r
-                       var file = fileInput.files[0];\r
-                       var reader = new FileReader();\r
-                       reader.onload = function(e) {\r
-                               try{\r
-                                       fileJsonData = JSON.parse(reader.result);\r
-                                       FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=(JSON.stringify(fileJsonData)).toString();\r
-                                       parameterListControl\r
-                                       .updateList([ FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE ]);\r
-                               }catch(e){\r
-                                       alert('Invalid json format.');\r
-                                       showError("Invalid data format.", 'Please check your file content it is not in json format.');\r
-                               }\r
-                       }\r
-                       reader.readAsText(file);\r
-               } else  if (updatedId === FIELD.ID.LCP_REGION) {\r
-                       var list = parameterListControl.getList(updatedId);\r
-                       if (list[0].selectedIndex >= 0) {\r
-                               parameterListControl\r
-                                               .updateList([ getTenantList(list[0].value) ]);\r
-                       } else {\r
-                               parameterListControl\r
-                                               .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);\r
-                       }\r
-                       if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {\r
-                               parameterListControl\r
-                                               .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);\r
-                       } else {\r
-                               parameterListControl\r
-                                               .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);\r
-                       }\r
-               } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {\r
-                       var list = parameterListControl.getList(updatedId);\r
-                       if (list[0].selectedIndex >= 0) {\r
-                               DataService.setGlobalCustomerId(list[0].value);\r
-\r
-                               AaiService.getSubscriptionServiceTypeList(DataService\r
-                                               .getGlobalCustomerId(), function(response) {\r
-                                       DataService.setSubscriptionServiceTypeList(response);\r
-                                       var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;\r
-                                       serviceTypeParameters.optionList = [];\r
-\r
-                                       for (var i = 0; i < response.length; i++) {\r
-                                               serviceTypeParameters.optionList.push({\r
-                                                       "id" : response[i],\r
-                                                       "name" : response[i]\r
-                                               });\r
-                                       }\r
-                                       console.log ( "updateUserParameterList: service type parameters " ); \r
-                                       console.log ( JSON.stringify (serviceTypeParameters, null, 4));\r
-                                       parameterListControl.updateList([ serviceTypeParameters ]);\r
-                               });\r
-\r
-                       } \r
-               } else if ( updatedId === FIELD.ID.SERVICE_TYPE ) {\r
-                       var list = parameterListControl.getList(updatedId);\r
-                       if (list[0].selectedIndex >= 0) {\r
-\r
-                               DataService.setServiceType(list[0].value);\r
-                               var cloudRegionTenantList = new Array();\r
-                               AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
-                                       DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
-                                       parameterListControl.updateList([ getLcpRegion() ]);\r
-                               }); \r
-                       } else {\r
-                               parameterListControl\r
-                               .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
-                       }\r
-               }\r
+                    requestDetails.lineOfBusiness = {\r
+                        lineOfBusinessName: lineOfBusinessNamesString\r
+                    }\r
+                }\r
 \r
-       };\r
+                requestDetails.platform = {\r
+                    platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\r
+                };\r
+                break;\r
+            case COMPONENT.VF_MODULE:\r
+                requestDetails.requestParameters.usePreload = getValueFromList(\r
+                    FIELD.ID.SDN_C_PRELOAD, parameterList);\r
+                if(_this.componentId == COMPONENT.VF_MODULE &&(requestDetails.requestParameters.usePreload== null || requestDetails.requestParameters.usePreload === '')){\r
+                    requestDetails.requestParameters.usePreload = false;\r
+                }\r
+                break;\r
+            case COMPONENT.VOLUME_GROUP:\r
+                break;\r
+        }\r
 \r
-       return {\r
-               initializeComponent : function(componentId) {\r
-                       _this.componentId = ComponentService.initialize(componentId);\r
-               },\r
-               setHttpErrorHandler : function(httpErrorHandler) {\r
-                       _this.httpErrorHandler = httpErrorHandler;\r
-               },\r
-               getComponentDisplayName : ComponentService.getComponentDisplayName,\r
-               getParameters : function(getParametersHandler) {\r
-                       _this.getParametersHandler = getParametersHandler;\r
-                       UtilityService.setHttpErrorHandler(_this.httpErrorHandler);\r
-                       UtilityService.startAsyncOperations(getAsyncOperationList(),\r
-                                       internalGetParametersHandler);\r
-               },\r
-               updateUserParameterList : updateUserParameterList,\r
-               getMsoRequestDetails : getMsoRequestDetails,\r
-               getMsoUrl : getMsoUrl\r
-       }\r
+        var relatedInstanceList = getRelatedInstanceList(parameterList);\r
+\r
+        if (relatedInstanceList !== undefined) {\r
+            requestDetails.relatedInstanceList = relatedInstanceList;\r
+        }\r
+\r
+        return requestDetails;\r
+    };\r
+\r
+    var getRelatedInstanceList = function(parameterList) {\r
+        var relatedInstanceList = new Array();\r
+        switch (_this.componentId) {\r
+            case COMPONENT.SERVICE:\r
+                return undefined;\r
+            case COMPONENT.NETWORK:\r
+            case COMPONENT.VNF:\r
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
+                    DataService.getServiceInstanceId());\r
+                break;\r
+            case COMPONENT.VF_MODULE:\r
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
+                    DataService.getServiceInstanceId());\r
+                addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
+                    .getVnfInstanceId());\r
+\r
+                var availableVolumeGroup = getValueFromList(\r
+                    FIELD.ID.AVAILABLE_VOLUME_GROUP, parameterList);\r
+\r
+                if (UtilityService.hasContents(availableVolumeGroup) && availableVolumeGroup !== "None") {\r
+                    var availableVolumeGroups = DataService.getAvailableVolumeGroupList();\r
+\r
+                    for (var i = 0; i < availableVolumeGroups.length; i++) {\r
+                        if (availableVolumeGroups[i].instance.name == availableVolumeGroup) {\r
+                            DataService.setModelInfo(COMPONENT.VOLUME_GROUP, DataService.getModelInfo(COMPONENT.VF_MODULE));\r
+                            DataService.setVolumeGroupInstanceId(availableVolumeGroups[i].instance.object["volume-group-id"]);\r
+                            break;\r
+                        }\r
+                    }\r
+\r
+                    addRelatedInstance(relatedInstanceList, COMPONENT.VOLUME_GROUP,\r
+                        DataService.getVolumeGroupInstanceId());\r
+                }\r
+                break;\r
+            case COMPONENT.VOLUME_GROUP:\r
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,\r
+                    DataService.getServiceInstanceId());\r
+                addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService\r
+                    .getVnfInstanceId());\r
+                break;\r
+        }\r
+\r
+        return relatedInstanceList;\r
+    };\r
+\r
+    var addRelatedInstance = function(relatedInstanceList, componentId,\r
+                                      instanceId) {\r
+        var modelInfo = DataService.getModelInfo(componentId);\r
+        var relatedInstance;\r
+        if (modelInfo !== undefined) {\r
+            if (componentId === COMPONENT.SERVICE) {\r
+                relatedInstance = {\r
+                    "instanceId" : instanceId,\r
+                    "modelInfo" : {\r
+                        "modelType" : componentId,\r
+                        "modelName" : modelInfo.modelName,\r
+                        "modelInvariantId" : modelInfo.modelInvariantId,\r
+                        "modelVersion" : modelInfo.modelVersion,\r
+                        "modelVersionId" : modelInfo.modelNameVersionId,\r
+\r
+                    }\r
+                };\r
+            }\r
+            else {\r
+                relatedInstance = {\r
+                    "instanceId" : instanceId,\r
+                    "modelInfo" : {\r
+                        "modelType" : componentId,\r
+                        "modelName" : modelInfo.modelName,\r
+                        "modelInvariantId" : modelInfo.modelInvariantId,\r
+                        "modelVersion" : modelInfo.modelVersion,\r
+                        "modelVersionId" : modelInfo.modelNameVersionId,\r
+                        "modelCustomizationId": modelInfo.customizationUuid,\r
+                        "modelCustomizationName": modelInfo.modelCustomizationName\r
+                    }\r
+                }\r
+            }\r
+            relatedInstanceList.push({\r
+                relatedInstance : relatedInstance\r
+            });\r
+        }\r
+    };\r
+\r
+    /*\r
+     * var getArbitraryParameters = function(parameterList) { var\r
+     * arbitraryParameters = new Object(); for (var i = 0; i <\r
+     * parameterList.length; i++) { var parameter = parameterList[i]; switch\r
+     * (parameter.id) { case FIELD.ID.INSTANCE_NAME: case\r
+     * FIELD.ID.PRODUCT_FAMILY: case FIELD.ID.LCP_REGION: case\r
+     * FIELD.ID.LCP_REGION_TEXT: case FIELD.ID.SERVICE_TYPE: case\r
+     * FIELD.ID.TENANT: case FIELD.ID.SUPPRESS_ROLLBACK: break; default:\r
+     * arbitraryParameters[parameter.id] = parameter.value; } } return\r
+     * arbitraryParameters; }\r
+     */\r
+    var getArbitraryParameters = function(parameterList) {\r
+        var arbitraryParameters = new Object();\r
+        var arbitraryArray = new Array();\r
+        for (var i = 0; i < parameterList.length; i++) {\r
+            var parameter = parameterList[i];\r
+            switch (parameter.id) {\r
+                case FIELD.ID.AVAILABLE_VOLUME_GROUP:\r
+                case FIELD.ID.INSTANCE_NAME:\r
+                case FIELD.ID.PRODUCT_FAMILY:\r
+                case FIELD.ID.LCP_REGION:\r
+                case FIELD.ID.LCP_REGION_TEXT:\r
+                case FIELD.ID.SERVICE_TYPE:\r
+                case FIELD.ID.TENANT:\r
+                case FIELD.ID.SUPPRESS_ROLLBACK:\r
+                case FIELD.ID.SUBSCRIBER_NAME:\r
+                case FIELD.ID.SDN_C_PRELOAD:\r
+                case FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE:\r
+                case FIELD.ID.OWNING_ENTITY:\r
+                case FIELD.ID.PLATFORM:\r
+                case FIELD.ID.LINE_OF_BUSINESS:\r
+                case FIELD.ID.PROJECT:\r
+                    break;\r
+                case FIELD.ID.SUPPLEMENTORY_DATA_FILE:\r
+                    arbitraryParameters =  FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'];\r
+                    arbitraryArray=arbitraryParameters;\r
+                    FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=[];\r
+                    break;\r
+\r
+                default:\r
+                    if (parameter.value != '') {\r
+                        arbitraryParameters = {\r
+                            name: parameter.id,\r
+                            value: parameter.value\r
+                        }\r
+                        arbitraryArray.push(arbitraryParameters);\r
+                    }\r
+            }\r
+        }\r
+        return (arbitraryArray);\r
+    }\r
+\r
+    var getModel = function() {\r
+        AsdcService.getModel(DataService.getModelId(), function(response) {\r
+            DataService.setModelInfo(_this.componentId, {\r
+                modelInvariantId : response.data.invariantUUID,\r
+                modelNameVersionId : response.data.uuid,\r
+                modelName : response.data.name,\r
+                modelVersion : response.data.version,\r
+                inputs : response.data.inputs\r
+            });\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+\r
+    var getSubscriptionServiceTypeList = function() {\r
+        AaiService.getSubscriptionServiceTypeList(DataService\r
+            .getGlobalCustomerId(), function(response) {\r
+            DataService.setSubscriptionServiceTypeList(response);\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+\r
+    var getLoggedInUserID = function() {\r
+        AaiService.getLoggedInUserID(function(response) {\r
+            DataService.setLoggedInUserId(response.data);\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+\r
+    var getSubscribers = function() {\r
+        AaiService.getSubscribers(function(response) {\r
+            DataService.setSubscribers(response);\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+    var getServices = function() {\r
+        AaiService.getServices(function(response) {\r
+            var serviceIdList = [];\r
+            angular.forEach(response.data, function(value, key) {\r
+                angular.forEach(value, function(subVal, key) {\r
+                    var newVal = {\r
+                        "id" : subVal[FIELD.ID.SERVICE_ID],\r
+                        "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION],\r
+                        "isPermitted" : subVal[FIELD.ID.IS_PERMITTED],\r
+                    };\r
+                    serviceIdList.push(newVal);\r
+                    DataService.setServiceIdList(serviceIdList);\r
+                });\r
+            });\r
+\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+    var getAicZones = function() {\r
+        AaiService.getAicZones(function(response) {\r
+            var serviceIdList = [];\r
+            angular.forEach(response.data, function(value, key) {\r
+                angular.forEach(value, function(subVal, key) {\r
+                    var newVal = {\r
+                        "id" : subVal[FIELD.ID.ZONE_ID],\r
+                        "name" : subVal[FIELD.ID.ZONE_NAME],\r
+                    };\r
+                    serviceIdList.push(newVal);\r
+                    DataService.setAicZones(serviceIdList);\r
+                });\r
+            });\r
+\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+\r
+    var getOwningEntityProperties = function() {\r
+        OwningEntityService.getOwningEntityProperties(function(owningEntityProperties) {\r
+            DataService.setOwningEntityProperties(owningEntityProperties);\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+\r
+    };\r
+\r
+    var getLcpCloudRegionTenantList = function() {\r
+        AaiService.getLcpCloudRegionTenantList(DataService\r
+            .getGlobalCustomerId(), DataService.getServiceType(), function(\r
+            response) {\r
+            DataService.setCloudRegionTenantList(response);\r
+            UtilityService.startNextAsyncOperation();\r
+        });\r
+    };\r
+\r
+    var internalGetParametersHandler = function() {\r
+        if (angular.isFunction(_this.getParametersHandler)) {\r
+            _this.getParametersHandler({\r
+                summaryList : getSummaryList(),\r
+                userProvidedList : getUserProvidedList()\r
+            });\r
+        }\r
+    };\r
+\r
+    var getSubscribersParameter = function() {\r
+        var subscribers = DataService.getSubscribers();\r
+        var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;\r
+        if ( UtilityService.hasContents(subscribers)) {\r
+            parameter.optionList = [];\r
+\r
+            for (var i = 0; i < subscribers.length; i++) {\r
+                parameter.optionList.push({\r
+                    id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],\r
+                    name : subscribers[i][FIELD.ID.SUBNAME],\r
+                    isPermitted : subscribers[i][FIELD.ID.IS_PERMITTED]\r
+                })\r
+            }\r
+        }\r
+        return parameter;\r
+    };\r
+\r
+    var getServiceId = function() {\r
+        var serviceIdList = DataService.getServiceIdList();\r
+        //var serviceTypeList = DataService.getSubscriptionServiceTypeList();\r
+        var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;\r
+        parameter.optionList = new Array();\r
+        if ( UtilityService.hasContents(serviceIdList) ) {\r
+            // load them all\r
+            for (var i = 0; i < serviceIdList.length; i++) {\r
+                parameter.optionList.push({\r
+                    id : serviceIdList[i].id,\r
+                    name : serviceIdList[i].description,\r
+                    isPermitted : serviceIdList[i].isPermitted\r
+                });\r
+            }\r
+        }\r
+\r
+        return parameter;\r
+    };\r
+\r
+    var getAicZonesParameter = function() {\r
+        var aicList = DataService.getAicZones();\r
+        var parameter = FIELD.PARAMETER.AIC_ZONES;\r
+        parameter.optionList = new Array();\r
+        if ( UtilityService.hasContents(aicList) ) {\r
+            // load them all\r
+            for (var i = 0; i < aicList.length; i++) {\r
+                parameter.optionList.push({\r
+                    id : aicList[i].id,\r
+                    name : aicList[i].name,\r
+                    isPermitted : true\r
+\r
+                });\r
+            }\r
+        }\r
+\r
+        return parameter;\r
+    };\r
+\r
+    var getProjectParameter = function() {\r
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PROJECT);\r
+    };\r
+\r
+    var getOwningEntityParameter = function() {\r
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.OWNING_ENTITY);\r
+    };\r
+\r
+    var getLineOfBusinessParameter = function() {\r
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.LINE_OF_BUSINESS);\r
+    };\r
+\r
+    var getPlatformParameter = function() {\r
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PLATFORM);\r
+    };\r
+\r
+    var getOwningEntityNameById = function (id) {\r
+        var properties = DataService.getOwningEntityProperties();\r
+        var parameter = _.find(properties[FIELD.ID.OWNING_ENTITY], {"id": id});\r
+        return parameter && parameter.name;\r
+    };\r
+\r
+    var getOwningEntityParameterWithOptions = function(parameter) {\r
+        var properties = DataService.getOwningEntityProperties();\r
+        if (properties && properties[parameter.id]) {\r
+            parameter.optionList = _.map(properties[parameter.id], function(parameter) {\r
+                return {\r
+                    "id" : parameter.id,\r
+                    "name" : parameter.name,\r
+                    "isPermitted": true\r
+                };\r
+            });\r
+        }\r
+\r
+        return parameter;\r
+    };\r
+\r
+    var getLcpRegionParameter = function() {\r
+        var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
+        console.log ( "cloudRegionTenantList=");\r
+        console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));\r
+\r
+        var parameter = FIELD.PARAMETER.LCP_REGION;\r
+        if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
+            parameter.optionList = new Array();\r
+            for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
+                for (var j = 0; j < parameter.optionList.length; j++) {\r
+                    if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {\r
+                        parameter.optionList[j].isPermitted =\r
+                            parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;\r
+                        break;\r
+                    }\r
+                }\r
+                if (j < parameter.optionList.length) {\r
+                    continue;\r
+                }\r
+                parameter.optionList.push({\r
+                    id : cloudRegionTenantList[i].cloudRegionId,\r
+                    isPermitted : cloudRegionTenantList[i].isPermitted\r
+                });\r
+            }\r
+        }\r
+        return parameter;\r
+    };\r
+\r
+    var getTenantList = function(cloudRegionId) {\r
+        var cloudRegionTenantList = DataService.getCloudRegionTenantList();\r
+        var parameter = "";\r
+        if ( UtilityService.hasContents (cloudRegionTenantList) ) {\r
+            parameter = FIELD.PARAMETER.TENANT_ENABLED;\r
+            parameter.optionList = new Array();\r
+            for (var i = 0; i < cloudRegionTenantList.length; i++) {\r
+                if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {\r
+                    parameter.optionList.push({\r
+                        id : cloudRegionTenantList[i].tenantId,\r
+                        name : cloudRegionTenantList[i].tenantName,\r
+                        isPermitted : cloudRegionTenantList[i].isPermitted\r
+\r
+                    });\r
+                }\r
+            }\r
+        }\r
+        return parameter;\r
+\r
+    };\r
+\r
+    var addOptionList = function(parameter, optionSimpleArray) {\r
+        var optionList = new Array();\r
+        if (!angular.isArray(optionSimpleArray)) {\r
+            return optionList;\r
+        }\r
+        for (var i = 0; i < optionSimpleArray.length; i++) {\r
+            optionList.push({\r
+                name : optionSimpleArray[i],\r
+                isPermitted :true,\r
+            });\r
+        }\r
+        parameter.optionList = optionList;\r
+        return parameter;\r
+    };\r
+\r
+    var getValueFromList = function(id, parameterList) {\r
+        for (var i = 0; i < parameterList.length; i++) {\r
+            if (parameterList[i].id === id) {\r
+                return parameterList[i].value;\r
+            }\r
+        }\r
+    };\r
+    var updateUserParameterList = function(updatedId, parameterListControl) {\r
+        console.log ("updateUserParameterList() updatedId=" + updatedId);\r
+        if (updatedId === FIELD.ID.PRODUCT_FAMILY && DataService.getHideServiceFields()) {\r
+            var cloudRegionTenantList = new Array();\r
+            AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
+                DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
+                parameterListControl.updateList([ getLcpRegionParameter() ]);\r
+            });\r
+        }else if (updatedId === FIELD.ID.SDN_C_PRELOAD) {\r
+            var list = parameterListControl.getList(updatedId);\r
+            if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
+                FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);\r
+            }else{\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);\r
+            }\r
+        }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {\r
+            if($('input[parameter-id="'+updatedId+'"]').is(':checked')){\r
+                $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();\r
+                FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);\r
+            }else{\r
+                $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();\r
+                FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=false;\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);\r
+            }\r
+        } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {\r
+            var filePath =  $('input[parameter-id="'+updatedId+'"]').val();\r
+            var arr =filePath.split('.');\r
+            var fileExt  = arr[arr.length-1];\r
+            if(fileExt!='' && fileExt.toLowerCase()!='json'){\r
+                $('input[parameter-id="'+updatedId+'"]').val('');\r
+                alert("Invalid file format. Please select *.json format file.");\r
+                return false;\r
+            }\r
+        } else  if (updatedId === FIELD.ID.LCP_REGION) {\r
+            var list = parameterListControl.getList(updatedId);\r
+            if (list[0].selectedIndex >= 0) {\r
+                parameterListControl\r
+                    .updateList([ getTenantList(list[0].value) ]);\r
+            } else {\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);\r
+            }\r
+            if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);\r
+            } else {\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);\r
+            }\r
+        } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {\r
+            var list = parameterListControl.getList(updatedId);\r
+            if (list[0].selectedIndex >= 0) {\r
+                DataService.setGlobalCustomerId(list[0].value);\r
+\r
+                AaiService.getSubscriptionServiceTypeList(DataService\r
+                    .getGlobalCustomerId(), function(response) {\r
+                    DataService.setSubscriptionServiceTypeList(response);\r
+                    var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;\r
+                    serviceTypeParameters.optionList = [];\r
+\r
+                    for (var i = 0; i < response.length; i++) {\r
+                        serviceTypeParameters.optionList.push({\r
+                            "id" : response[i].name,\r
+                            "name" : response[i].name,\r
+                            "isPermitted" :response[i].isPermitted\r
+\r
+                        });\r
+                    }\r
+                    console.log ( "updateUserParameterList: service type parameters " );\r
+                    console.log ( JSON.stringify (serviceTypeParameters, null, 4));\r
+                    parameterListControl.updateList([ serviceTypeParameters ]);\r
+                });\r
+\r
+            }\r
+        } else if ( updatedId === FIELD.ID.SERVICE_TYPE ) {\r
+            var list = parameterListControl.getList(updatedId);\r
+            if (list[0].selectedIndex >= 0) {\r
+\r
+                DataService.setServiceType(list[0].value);\r
+                var cloudRegionTenantList = new Array();\r
+                AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {\r
+                    DataService.setCloudRegionTenantList(cloudRegionTenantList);\r
+                    parameterListControl.updateList([ getLcpRegionParameter() ]);\r
+                });\r
+            } else {\r
+                parameterListControl\r
+                    .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);\r
+            }\r
+        }\r
+\r
+    };\r
+\r
+    return {\r
+        initializeComponent : function(componentId) {\r
+            _this.componentId = ComponentService.initialize(componentId);\r
+        },\r
+        setHttpErrorHandler : function(httpErrorHandler) {\r
+            _this.httpErrorHandler = httpErrorHandler;\r
+        },\r
+        getComponentDisplayName : ComponentService.getComponentDisplayName,\r
+        getParameters : function(getParametersHandler) {\r
+            _this.getParametersHandler = getParametersHandler;\r
+            UtilityService.setHttpErrorHandler(_this.httpErrorHandler);\r
+            UtilityService.startAsyncOperations(getAsyncOperationList(),\r
+                internalGetParametersHandler);\r
+        },\r
+        updateUserParameterList : updateUserParameterList,\r
+        getMsoRequestDetails : getMsoRequestDetails,\r
+        getMsoUrl : getMsoUrl,\r
+        setInventoryInfo: setInventoryInfo\r
+    }\r
 }\r
 \r
 appDS2.factory("CreationService", [ "$log", "AaiService", "AsdcService",\r
-               "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
-               "UtilityService", CreationService ]);\r
+    "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",\r
+    "UtilityService", "OwningEntityService", CreationService ]);\r