Remove vendor from CloudOwner 10/82010/2
authorIttay Stern <ittay.stern@att.com>
Tue, 12 Mar 2019 09:05:45 +0000 (11:05 +0200)
committerIttay Stern <ittay.stern@att.com>
Sun, 17 Mar 2019 15:15:23 +0000 (17:15 +0200)
cloud-owner identifies the vendor and cloud name. First part of
composite key is formatted as vendor-cloudname.

VID will *display* only CLOUDNAME.

Issue-ID: VID-396
Change-Id: I9dd9b2b15d96067023034b5776787c51c3b5eda4
Signed-off-by: Ittay Stern <ittay.stern@att.com>
vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.controller.js
vid-app-common/src/main/webapp/app/vid/scripts/modals/vf-module-homing-data-action/vf-module-homing-data-action.html
vid-app-common/src/main/webapp/app/vid/scripts/services/aaiService.js
vid-app-common/src/main/webapp/app/vid/scripts/services/creationService.js
vid-app-common/src/main/webapp/app/vid/scripts/services/deleteResumeService.js

index 819be93..956ae1d 100644 (file)
@@ -127,6 +127,10 @@ var vfModuleActionModalController = function(COMPONENT, $scope, $uibModal, Creat
         $uibModalInstance.close({requestParams : requestParams, msoType: COMPONENT.MSO_DEACTIVATE_AND_CLOUD_DELETE});
     };
 
+    $scope.removeVendorFromCloudOwner = function(cloudOwner) {
+        return AaiService.removeVendorFromCloudOwner(cloudOwner)
+    };
+
     $scope.cancel = function() {
         $uibModalInstance.dismiss('cancel');
     };
index 6207543..eb67e6e 100644 (file)
@@ -64,7 +64,7 @@
 
                     <option ng-repeat="option in lcpRegionList" value="{{option.cloudRegionId}}"
                             data-ng-if="option.isPermitted && isFeatureFlagCloudOwner">
-                        {{option.cloudRegionId}} ({{option.cloudOwner.trim().toUpperCase().replace("ATT-", "")}})
+                        {{option.cloudRegionId}} ({{removeVendorFromCloudOwner(option.cloudOwner).toUpperCase()}})
                     </option>
                 </select>
             </div>
index bd8bd9b..030faf5 100755 (executable)
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-"use strict";\r
-\r
-var AaiService = function ($http, $log, PropertyService, UtilityService, COMPONENT, FIELD, $q, featureFlags) {\r
-\r
-    function getServiceInstance(serviceInstanceIdentifier, findBy) {\r
-        serviceInstanceIdentifier.trim();\r
-\r
-        return $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + serviceInstanceIdentifier + "/" + findBy + "?r=" + Math.random(), {}, {\r
-            timeout: PropertyService.getServerResponseTimeoutMsec()\r
-        });\r
-    }\r
-\r
-    function getPnfByName(pnfName) {\r
-        var deferred = $q.defer();\r
-        var url = COMPONENT.AAI_GET_PNF_BY_NAME+ encodeURIComponent(pnfName)  ;\r
-        var config = { timeout: PropertyService.getServerResponseTimeoutMsec() };\r
-\r
-        $http.get(url, config)\r
-            .success(function (response) {\r
-                deferred.resolve({data: response});\r
-            })\r
-            .error(function(data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-        return deferred.promise;\r
-    }\r
-    function getGlobalCustomerIdFromServiceInstanceResponse(response) {\r
-        var globalCustomerId = "";\r
-        if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) {\r
-            var customerIndex = 5;\r
-            var customerIdIndex = 6;\r
-            var itemIndex = 0;\r
-\r
-            var item = response.data[FIELD.ID.RESULT_DATA][itemIndex];\r
-            var url = item[FIELD.ID.RESOURCE_LINK];\r
-            var urlParts = url.split("/");\r
-            if (urlParts[customerIndex] === FIELD.ID.CUSTOMER) {\r
-                globalCustomerId = urlParts[customerIdIndex];\r
-            }\r
-        }\r
-        return globalCustomerId;\r
-    }\r
-\r
-    function searchServiceInstances(query) {\r
-        return $http.get( COMPONENT.SEARCH_SERVICE_INSTANCES  + query, {}, {\r
-            timeout : PropertyService.getServerResponseTimeoutMsec()\r
-        }).then(function (response) {\r
-            var displayData = response.data[FIELD.ID.SERVICE_INSTANCES];\r
-            if (!displayData || !displayData.length) {\r
-                displayData = [{\r
-                    globalCustomerId   : null,\r
-                    subscriberName     : null,\r
-                    serviceType                : FIELD.PROMPT.NO_SERVICE_SUB,\r
-                    serviceInstanceId  : FIELD.PROMPT.NO_SERVICE_INSTANCE\r
-                }];\r
-            }\r
-            return {displayData: displayData};\r
-        });\r
-    };\r
-\r
-    function getJoinedQueryString(queries) {\r
-        return queries.filter(function (val) {return val;}).join("&");\r
-    }\r
-\r
-    return {\r
-        getSubscriberName : function(globalCustomerId,\r
-                                     successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscriberName: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            $http.get(\r
-                COMPONENT.AAI_SUB_DETAILS_PATH\r
-                + globalCustomerId + COMPONENT.ASSIGN + Math.random(),\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                var result = {};\r
-                if (response.data) {\r
-                    result.subscriberName = response.data[FIELD.ID.SUBNAME];\r
-                    result.serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS];\r
-                }\r
-                successCallbackFunction(result);\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-        runNamedQuery : function (namedQueryId, globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_SUB_VIEWEDIT_PATH +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(namedQueryId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            return $http.get(url, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-\r
-        getVNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_GET_VNF_INFO +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getPNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {\r
-\r
-            var url = COMPONENT.AAI_GET_PNF_INSTANCE +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    successCallback(response);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            }, function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getCRInformationByInstanceId : function (serviceInstanceId) {\r
-\r
-            var deferred = $q.defer();\r
-\r
-            var url = COMPONENT.AAI_GET_CR_INSTANCE +\r
-                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);\r
-            $http.get(url, {}, {\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                if (response.data != null) {\r
-                    deferred.resolve(response);\r
-                } else {\r
-                    deferred.resolve(response);\r
-                }\r
-            }, function(response) {\r
-                deferred.resolve(response);\r
-            });\r
-            return deferred.promise;\r
-        },\r
-\r
-        searchServiceInstances: searchServiceInstances,\r
-\r
-        getModelVersionId: function (subscriberId, instanceId) {\r
-            var globalCustomerIdQuery = COMPONENT.SELECTED_SUBSCRIBER_SUB_PATH + subscriberId;\r
-            var serviceInstanceQuery = COMPONENT.SELECTED_SERVICE_INSTANCE_SUB_PATH + instanceId;\r
-\r
-            var query = "?" + getJoinedQueryString([globalCustomerIdQuery, serviceInstanceQuery]);\r
-\r
-            var deferred = $q.defer();\r
-\r
-            searchServiceInstances(query).then(function (response) {\r
-                var displayData = response.displayData;\r
-                if (displayData[0] && displayData[0].aaiModelVersionId) {\r
-                    deferred.resolve(displayData[0].aaiModelVersionId);\r
-                } else {\r
-                    deferred.reject(FIELD.ERROR.MODEL_VERSION_ID_MISSING);\r
-                }\r
-            }).catch(function (err) {\r
-                deferred.reject(err);\r
-            });\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getSubDetails : function(selectedSubscriber, selectedServiceInstance, successCallback, errorCallback) {\r
-            var subscriber;\r
-            var displayData;\r
-            $http.get( COMPONENT.AAI_SUB_DETAILS_PATH  + selectedSubscriber, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                displayData = [];\r
-                subscriber = response.data;\r
-                var subscriberName = subscriber[FIELD.ID.SUBNAME];\r
-                if (subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {\r
-                    angular.forEach(subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {\r
-                        var serviceInstanceId = [];\r
-                        var serviceType = "";\r
-                        if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {\r
-                            serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];\r
-                        } else {\r
-                            serviceType = FIELD.PROMPT.NO_SERVICE_SUB;\r
-                        }\r
-                        if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {\r
-                            angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {\r
-                                // put them together, i guess\r
-                                var inst = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID],\r
-                                    "aaiModelInvariantId": instValue[FIELD.ID.MODEL_INVAR_ID],\r
-                                    "aaiModelVersionId": instValue[FIELD.ID.MODEL_VERSION_ID],\r
-                                    "serviceInstanceName": instValue[FIELD.ID.SERVICE_INSTANCE_NAME]\r
-                                };\r
-                                if (selectedServiceInstance != null) {\r
-                                    if ((instValue[FIELD.ID.SERVICE_INSTANCE_ID] == selectedServiceInstance ) || (instValue[FIELD.ID.SERVICE_INSTANCE_NAME] == selectedServiceInstance)) {\r
-                                        serviceInstanceId.push(inst);\r
-                                    }\r
-                                } else {\r
-                                    serviceInstanceId.push(inst);\r
-                                }\r
-                            });\r
-                        } else {\r
-                            serviceInstanceId = [ FIELD.PROMPT.NO_SERVICE_INSTANCE ];\r
-                        }\r
-                        angular.forEach(serviceInstanceId, function(subVal, subKey) {\r
-                            displayData.push({\r
-                                globalCustomerId       : selectedSubscriber,\r
-                                subscriberName         : subscriberName,\r
-                                serviceType            : serviceType,\r
-                                serviceInstanceId      : subVal.serviceInstanceId,\r
-                                aaiModelInvariantId            : subVal.aaiModelInvariantId,\r
-                                aaiModelVersionId\r
-                                    : subVal.aaiModelVersionId,\r
-                                serviceInstanceName    : subVal.serviceInstanceName,\r
-                                isPermitted: serviceSubscription[FIELD.ID.IS_PERMITTED]\r
-                            });\r
-                        });\r
-                    });\r
-                } else {\r
-                    displayData.push({\r
-                        globalCustomerId       : selectedSubscriber,\r
-                        subscriberName         : subscriberName,\r
-                        serviceType            : FIELD.PROMPT.NO_SERVICE_SUB,\r
-                        serviceInstanceId      : FIELD.PROMPT.NO_SERVICE_INSTANCE\r
-                    });\r
-                }\r
-                successCallback(displayData, subscriberName);\r
-            }, function(response) {\r
-                errorCallback(response);});\r
-        },\r
-\r
-        getSubList : function(successCallback, errorCallback ) {\r
-\r
-            $http.get( FIELD.ID.AAI_GET_FULL_SUBSCRIBERS, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                var customerList = [];\r
-                if (response.data.customer != null) {\r
-                    angular.forEach(response.data.customer, function(subVal, subKey) {\r
-                        var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME],\r
-                            "isPermitted": subVal[FIELD.ID.IS_PERMITTED], };\r
-                        customerList.push(cust);\r
-                    });\r
-                    successCallback(customerList);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            },function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getServiceInstance : getServiceInstance,\r
-        getPnfByName : getPnfByName,\r
-\r
-        getGlobalCustomerIdByInstanceIdentifier : function(serviceInstanceIdentifier, findBy) {\r
-            serviceInstanceIdentifier.trim();\r
-\r
-            return getServiceInstance(serviceInstanceIdentifier, findBy)\r
-                .then(function (response) {\r
-                    return getGlobalCustomerIdFromServiceInstanceResponse(response);\r
-            });\r
-        },\r
-\r
-        getMultipleValueParamQueryString: function(values, paramSubPath) {\r
-            if (values.length) {\r
-                return paramSubPath + values.filter(function (val) {return val;}).join("&" + paramSubPath);\r
-            }\r
-        },\r
-\r
-        getJoinedQueryString: getJoinedQueryString,\r
-\r
-        getServices2 : function(successCallback, errorCallback ) {\r
-\r
-            $http.get( FIELD.ID.AAI_GET_SERVICES, {}, {\r
-\r
-\r
-                timeout : PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function(response) {\r
-                var customerList = [];\r
-                if (response.data != null) {\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
-                                "isPermitted" : subVal[FIELD.ID.IS_PERMITTED]\r
-\r
-                            };serviceIdList.push(newVal);\r
-                        });\r
-                    });\r
-                    successCallback(serviceIdList);\r
-                } else {\r
-                    errorCallback(response);\r
-                }\r
-            },function(response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        getPortMirroringData: function (ids) {\r
-            var defer = $q.defer();\r
-\r
-            var url = COMPONENT.AAI_GET_PORT_MIRRORING_CONFIGS_DATA + '?configurationIds=' + ids.join(',');\r
-            $http.get(url).then(function (res) {\r
-                defer.resolve(res);\r
-            }).catch(function (err) {\r
-                $log.error(err);\r
-                defer.resolve({});\r
-            });\r
-\r
-            return defer.promise;\r
-\r
-        },\r
-\r
-        getPortMirroringSourcePorts : function (ids) {\r
-            var defer = $q.defer();\r
-            var url = COMPONENT.AAI_GET_PORT_MIRRORING_SOURCE_PORTS +'?configurationIds=' +  ids.join(',');\r
-            $http.get(url).then(function(res){\r
-                defer.resolve(res);\r
-            }).catch(function(err) {\r
-                $log.error(err);\r
-                defer.resolve({});\r
-            });\r
-            return defer.promise;\r
-        },\r
-\r
-        getVlansByNetworksMapping : function (globalCustomerId, serviceType, serviceInstanceId, sdcModelUuid) {\r
-            var defer = $q.defer();\r
-            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS)) {\r
-                var url = COMPONENT.AAI_GET_PROVIDER_NETWORKS_ASSOCIATIONS + '?'\r
-                    + 'globalCustomerId=' + globalCustomerId\r
-                    + '&serviceType=' + serviceType\r
-                    + '&serviceInstanceId=' + serviceInstanceId\r
-                    + '&sdcModelUuid=' + sdcModelUuid\r
-                ;\r
-\r
-                $http.get(url).then(function(res){\r
-                    defer.resolve(res.data);\r
-                }).catch(function(err) {\r
-                    $log.error(err);\r
-                    defer.resolve({});\r
-                });\r
-\r
-            } else {\r
-                defer.resolve({});\r
-            }\r
-            return defer.promise;\r
-        },\r
-\r
-        getSubscriptionServiceTypeList : function(globalCustomerId,\r
-                                                  successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscriptionServiceTypeList: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            if ( UtilityService.hasContents(globalCustomerId) ) {\r
-                $http.get(\r
-                    COMPONENT.AAI_SUB_DETAILS_PATH\r
-                    + globalCustomerId + COMPONENT.ASSIGN + Math.random(),\r
-                    {\r
-                        timeout : PropertyService\r
-                            .getServerResponseTimeoutMsec()\r
-                    }).then(function(response) {\r
-                    if (response.data && response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS]) {\r
-                        var serviceTypes = [];\r
-                        var serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION];\r
-\r
-                        for (var i = 0; i < serviceSubscriptions.length; i++) {\r
-                            serviceTypes.push({\r
-                                "name":serviceSubscriptions[i][FIELD.ID.SERVICETYPE],\r
-                                "isPermitted": serviceSubscriptions[i][FIELD.ID.IS_PERMITTED],\r
-                                "id": i\r
-                            });}\r
-                        successCallbackFunction(serviceTypes);\r
-                    } else {\r
-                        successCallbackFunction([]);\r
-                    }\r
-                })["catch"]\r
-                (UtilityService.runHttpErrorHandler);\r
-            }\r
-        },\r
-        getLcpCloudRegionTenantList : function(globalCustomerId, serviceType,\r
-                                               successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getLcpCloudRegionTenantList: globalCustomerId: "\r
-                    + globalCustomerId);\r
-            var url =   COMPONENT.AAI_GET_TENANTS\r
-                + globalCustomerId + COMPONENT.FORWARD_SLASH + serviceType + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                var lcpCloudRegionTenants = [];\r
-                var aaiLcpCloudRegionTenants = response.data;\r
-\r
-                for (var i = 0; i < aaiLcpCloudRegionTenants.length; i++) {\r
-                    lcpCloudRegionTenants.push({\r
-                        "cloudRegionId": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_REGION_ID],\r
-                        "cloudOwner": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_OWNER],\r
-                        "tenantName": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_NAME],\r
-                        "tenantId": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_ID],\r
-                        "isPermitted": aaiLcpCloudRegionTenants[i][COMPONENT.IS_PERMITTED]});\r
-                }\r
-\r
-                successCallbackFunction(lcpCloudRegionTenants);\r
-            }).catch(function(error) {\r
-                (UtilityService.runHttpErrorHandler(error.data, error.status));\r
-            })\r
-        },\r
-        getSubscribers : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getSubscribers");\r
-            var url =  FIELD.ID.AAI_GET_SUBSCRIBERS + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response.data.customer);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getProvOptionsFromSystemProp : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getProvOptionsFromSystemProp");\r
-            var url =  COMPONENT.GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH;\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getLoggedInUserID : function(successCallbackFunction, catchCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getLoggedInUserID");\r
-            var url = COMPONENT.GET_USER_ID;\r
-\r
-            $http.get(url,\r
-                {\r
-                    transformResponse: [function (data) {\r
-                        return data;\r
-                    }],\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"] (function(response, status) {\r
-                if (catchCallbackFunction) {\r
-                    catchCallbackFunction();\r
-                }\r
-                UtilityService.runHttpErrorHandler(response, status);\r
-            })\r
-        },\r
-        getServices : function(successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServices");\r
-            var url =  COMPONENT.AAI_GET_SERVICES + COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout: PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function (response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-        getAicZones: function (successCallbackFunction) {\r
-            $log\r
-                .debug("getAicZones:getAicZones");\r
-            var url = COMPONENT.AAI_GET_AIC_ZONES +COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);},\r
-        getAicZoneForPNF: function (globalCustomerId,serviceType,serviceInstanceId,successCallbackFunction) {\r
-            $log\r
-                .debug("getAicZones:getAicZones");\r
-            var url = COMPONENT.AAI_GET_AIC_ZONE_FOR_PNF\r
-                .replace('@serviceInstanceId', serviceInstanceId)\r
-                .replace('@globalCustomerId', globalCustomerId)\r
-                .replace('@serviceType', serviceType);\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                successCallbackFunction(response.data);\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);},\r
-\r
-        getServiceModels : function(globalCustomerId,serviceType,successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServices");\r
-            var url =   COMPONENT.AAI_GET_SERVICES + COMPONENT.FORWARD_SLASH+globalCustomerId+ COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-        getServiceModelsByServiceType : function(namedQueryId,globalCustomerId,serviceType,successCallbackFunction) {\r
-            $log\r
-                .debug("AaiService:getServiceModelsByServiceType");\r
-            var url =   COMPONENT.AAI_GET_SERVICES_BY_TYPE+COMPONENT.FORWARD_SLASH+namedQueryId+COMPONENT.FORWARD_SLASH+globalCustomerId+COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();\r
-\r
-            $http.get(url,\r
-                {\r
-                    timeout : PropertyService\r
-                        .getServerResponseTimeoutMsec()\r
-                }).then(function(response) {\r
-                if (response.data) {\r
-                    successCallbackFunction(response);\r
-                } else {\r
-                    successCallbackFunction([]);\r
-                }\r
-            })["catch"]\r
-            (UtilityService.runHttpErrorHandler);\r
-        },\r
-\r
-               getVnfsByCustomerIdAndServiceType: function(globalSubscriberId, serviceType){\r
-            var deferred = $q.defer();\r
-\r
-            if (UtilityService.hasContents(globalSubscriberId) &&\r
-                               UtilityService.hasContents(serviceType) ) {\r
-\r
-                $http.get(COMPONENT.AAI_GET_VNF_BY_CUSTOMERID_AND_SERVICETYPE + globalSubscriberId + COMPONENT.FORWARD_SLASH\r
-                                       + serviceType )\r
-                    .success(function (response) {\r
-                        if(response) {\r
-                            deferred.resolve({data: response});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getVnfVersionsByInvariantId: function(modelInvariantId){\r
-            var deferred = $q.defer();\r
-\r
-            if (UtilityService.hasContents(modelInvariantId)) {\r
-                var body = {"versions": modelInvariantId};\r
-                $http.post(( COMPONENT.AAI_GET_VERSION_BY_INVARIANT_ID),body)\r
-\r
-                    .success(function (response) {\r
-                        if(response) {\r
-                            deferred.resolve({data: response});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-\r
-\r
-        getSubscriberServiceTypes: function(subscriberUuid) {\r
-            var deferred = $q.defer();\r
-            $log.debug("AaiService:getSubscriberServiceTypes: subscriberUuid: " + subscriberUuid);\r
-\r
-            if (UtilityService.hasContents(subscriberUuid)) {\r
-                $http.get(COMPONENT.AAI_SUB_DETAILS_PATH + subscriberUuid + COMPONENT.ASSIGN + Math.random())\r
-                    .success(function (response) {\r
-                        if(response && [FIELD.ID.SERVICE_SUBSCRIPTIONS]) {\r
-                            deferred.resolve({data: response[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION]});\r
-                        } else {\r
-                            deferred.resolve({data: []});\r
-                        }\r
-                    }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-            }\r
-\r
-            return deferred.promise;\r
-        },\r
-        getVnfInstancesList: function(globalSubscriberId, serviceType, modelVersionId ,modelInvariantId, cloudRegionId)  {\r
-            var deferred = $q.defer();\r
-            $http.get([COMPONENT.AAI_GET_VNF_INSTANCES_LIST,\r
-                    globalSubscriberId,\r
-                    serviceType,\r
-                    modelVersionId,\r
-                    modelInvariantId,\r
-                    cloudRegionId]\r
-                .join(COMPONENT.FORWARD_SLASH))\r
-                .success(function (response) {\r
-                    deferred.resolve(response);\r
-                }).error(function (data, status) {\r
-                    deferred.reject({message: data, status: status});\r
-            });\r
-            return deferred.promise;\r
-        },\r
-        getPnfInstancesList: function (globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegionId, equipVendor, equipModel) {\r
-            var deferred = $q.defer();\r
-            $http.get([COMPONENT.AAI_GET_PNF_INSTANCES_LIST,\r
-                    globalCustomerId, serviceType,\r
-                    modelVersionId, modelInvariantId,\r
-                    cloudRegionId,\r
-                    equipVendor, equipModel\r
-                ].join(COMPONENT.FORWARD_SLASH))\r
-                .success(function (response) {\r
-                    deferred.resolve(response);\r
-                }).error(function (data, status) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-            return deferred.promise;\r
-        },\r
-        getByUri: function(uri)  {\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(COMPONENT.AAI_GET_BY_URI + uri)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: []});\r
-                }).error(function (data, status, headers, config) {\r
-                    deferred.reject({message: data, status: status});\r
-                });\r
-\r
-            return deferred.promise;\r
-        },\r
-        getConfiguration: function(configurationId)  {\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(COMPONENT.AAI_GET_CONFIGURATION + configurationId)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: []});\r
-                }).error(function (data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-            return deferred.promise;\r
-        },\r
-\r
-        getInstanceGroupsByVNFInstanceId: function (vnf_instance_id, successCallback, errorCallback) {\r
-            var url = COMPONENT.AAI_GET_INSTANCE_GROUPS_BY_VNF_INSTANCE_ID_PATH + "/" + vnf_instance_id;\r
-\r
-            $http.get(url, {}, {\r
-                timeout: PropertyService.getServerResponseTimeoutMsec()\r
-            }).then(function (response) {\r
-                successCallback(response);\r
-            }, function (response) {\r
-                errorCallback(response);\r
-            });\r
-        },\r
-\r
-        postPOMBAverificationRequest: function (url, data, config) {\r
-            $http.post(url, data, config)\r
-                .success(function (data, status, headers, config) {\r
-                    //If at some point in the future the result should be handled - this should be the entry point.\r
-                    log.debug("POMBA was called successfully with data: " + data);\r
-                })\r
-                .error(function (data, status, header, config) {\r
-                    log.debug("Error: " +\r
-                        "Data: " + data +\r
-                        "status: " + status +\r
-                        "headers: " + header +\r
-                        "config: " + config);\r
-                });\r
-        },\r
-\r
-        getHomingData: function(vnfInstanceId, vfModuleId)  {\r
-            var url = COMPONENT.AAI_GET_HOMING_DATA.replace('@vnfInstanceId', vnfInstanceId)\r
-                .replace('@vfModuleId', vfModuleId);\r
-\r
-            var deferred = $q.defer();\r
-\r
-            $http.get(url)\r
-                .success(function (response) {\r
-                    deferred.resolve({data: response});\r
-                }).error(function (data, status, headers, config) {\r
-                deferred.reject({message: data, status: status});\r
-            });\r
-\r
-            return deferred.promise;\r
-\r
-        }\r
-    };\r
-};\r
-\r
-appDS2.factory("AaiService", ["$http", "$log", "PropertyService",\r
-    "UtilityService", "COMPONENT", "FIELD", "$q", "featureFlags", AaiService]);\r
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+"use strict";
+
+var AaiService = function ($http, $log, PropertyService, UtilityService, COMPONENT, FIELD, $q, featureFlags) {
+
+    function getServiceInstance(serviceInstanceIdentifier, findBy) {
+        serviceInstanceIdentifier.trim();
+
+        return $http.get(COMPONENT.AAI_GET_SERVICE_INSTANCE_PATH + serviceInstanceIdentifier + "/" + findBy + "?r=" + Math.random(), {}, {
+            timeout: PropertyService.getServerResponseTimeoutMsec()
+        });
+    }
+
+    function getPnfByName(pnfName) {
+        var deferred = $q.defer();
+        var url = COMPONENT.AAI_GET_PNF_BY_NAME+ encodeURIComponent(pnfName)  ;
+        var config = { timeout: PropertyService.getServerResponseTimeoutMsec() };
+
+        $http.get(url, config)
+            .success(function (response) {
+                deferred.resolve({data: response});
+            })
+            .error(function(data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+        return deferred.promise;
+    }
+    function getGlobalCustomerIdFromServiceInstanceResponse(response) {
+        var globalCustomerId = "";
+        if (angular.isArray(response.data[FIELD.ID.RESULT_DATA])) {
+            var customerIndex = 5;
+            var customerIdIndex = 6;
+            var itemIndex = 0;
+
+            var item = response.data[FIELD.ID.RESULT_DATA][itemIndex];
+            var url = item[FIELD.ID.RESOURCE_LINK];
+            var urlParts = url.split("/");
+            if (urlParts[customerIndex] === FIELD.ID.CUSTOMER) {
+                globalCustomerId = urlParts[customerIdIndex];
+            }
+        }
+        return globalCustomerId;
+    }
+
+    function searchServiceInstances(query) {
+        return $http.get( COMPONENT.SEARCH_SERVICE_INSTANCES  + query, {}, {
+            timeout : PropertyService.getServerResponseTimeoutMsec()
+        }).then(function (response) {
+            var displayData = response.data[FIELD.ID.SERVICE_INSTANCES];
+            if (!displayData || !displayData.length) {
+                displayData = [{
+                    globalCustomerId   : null,
+                    subscriberName     : null,
+                    serviceType                : FIELD.PROMPT.NO_SERVICE_SUB,
+                    serviceInstanceId  : FIELD.PROMPT.NO_SERVICE_INSTANCE
+                }];
+            }
+            return {displayData: displayData};
+        });
+    };
+
+    function getJoinedQueryString(queries) {
+        return queries.filter(function (val) {return val;}).join("&");
+    }
+
+    return {
+        getSubscriberName : function(globalCustomerId,
+                                     successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscriberName: globalCustomerId: "
+                    + globalCustomerId);
+            $http.get(
+                COMPONENT.AAI_SUB_DETAILS_PATH
+                + globalCustomerId + COMPONENT.ASSIGN + Math.random(),
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                var result = {};
+                if (response.data) {
+                    result.subscriberName = response.data[FIELD.ID.SUBNAME];
+                    result.serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS];
+                }
+                successCallbackFunction(result);
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+        runNamedQuery : function (namedQueryId, globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_SUB_VIEWEDIT_PATH +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(namedQueryId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            return $http.get(url, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+
+        getVNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_GET_VNF_INFO +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getPNFInformationByServiceTypeAndId : function (globalCustomerId, serviceType, serviceInstanceId, successCallback, errorCallback) {
+
+            var url = COMPONENT.AAI_GET_PNF_INSTANCE +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(globalCustomerId) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceType) +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    successCallback(response);
+                } else {
+                    errorCallback(response);
+                }
+            }, function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getCRInformationByInstanceId : function (serviceInstanceId) {
+
+            var deferred = $q.defer();
+
+            var url = COMPONENT.AAI_GET_CR_INSTANCE +
+                COMPONENT.FORWARD_SLASH + encodeURIComponent(serviceInstanceId);
+            $http.get(url, {}, {
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                if (response.data != null) {
+                    deferred.resolve(response);
+                } else {
+                    deferred.resolve(response);
+                }
+            }, function(response) {
+                deferred.resolve(response);
+            });
+            return deferred.promise;
+        },
+
+        searchServiceInstances: searchServiceInstances,
+
+        getModelVersionId: function (subscriberId, instanceId) {
+            var globalCustomerIdQuery = COMPONENT.SELECTED_SUBSCRIBER_SUB_PATH + subscriberId;
+            var serviceInstanceQuery = COMPONENT.SELECTED_SERVICE_INSTANCE_SUB_PATH + instanceId;
+
+            var query = "?" + getJoinedQueryString([globalCustomerIdQuery, serviceInstanceQuery]);
+
+            var deferred = $q.defer();
+
+            searchServiceInstances(query).then(function (response) {
+                var displayData = response.displayData;
+                if (displayData[0] && displayData[0].aaiModelVersionId) {
+                    deferred.resolve(displayData[0].aaiModelVersionId);
+                } else {
+                    deferred.reject(FIELD.ERROR.MODEL_VERSION_ID_MISSING);
+                }
+            }).catch(function (err) {
+                deferred.reject(err);
+            });
+
+            return deferred.promise;
+        },
+
+        getSubDetails : function(selectedSubscriber, selectedServiceInstance, successCallback, errorCallback) {
+            var subscriber;
+            var displayData;
+            $http.get( COMPONENT.AAI_SUB_DETAILS_PATH  + selectedSubscriber, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                displayData = [];
+                subscriber = response.data;
+                var subscriberName = subscriber[FIELD.ID.SUBNAME];
+                if (subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS] != null) {
+                    angular.forEach(subscriber[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION], function(serviceSubscription, key) {
+                        var serviceInstanceId = [];
+                        var serviceType = "";
+                        if (serviceSubscription[FIELD.ID.SERVICETYPE] != null) {
+                            serviceType = serviceSubscription[FIELD.ID.SERVICETYPE];
+                        } else {
+                            serviceType = FIELD.PROMPT.NO_SERVICE_SUB;
+                        }
+                        if (serviceSubscription[FIELD.ID.SERVICE_INSTANCES] != null) {
+                            angular.forEach(serviceSubscription[FIELD.ID.SERVICE_INSTANCES][FIELD.ID.SERVICE_INSTANCE], function(instValue, instKey) {
+                                // put them together, i guess
+                                var inst = { "serviceInstanceId": instValue[FIELD.ID.SERVICE_INSTANCE_ID],
+                                    "aaiModelInvariantId": instValue[FIELD.ID.MODEL_INVAR_ID],
+                                    "aaiModelVersionId": instValue[FIELD.ID.MODEL_VERSION_ID],
+                                    "serviceInstanceName": instValue[FIELD.ID.SERVICE_INSTANCE_NAME]
+                                };
+                                if (selectedServiceInstance != null) {
+                                    if ((instValue[FIELD.ID.SERVICE_INSTANCE_ID] == selectedServiceInstance ) || (instValue[FIELD.ID.SERVICE_INSTANCE_NAME] == selectedServiceInstance)) {
+                                        serviceInstanceId.push(inst);
+                                    }
+                                } else {
+                                    serviceInstanceId.push(inst);
+                                }
+                            });
+                        } else {
+                            serviceInstanceId = [ FIELD.PROMPT.NO_SERVICE_INSTANCE ];
+                        }
+                        angular.forEach(serviceInstanceId, function(subVal, subKey) {
+                            displayData.push({
+                                globalCustomerId       : selectedSubscriber,
+                                subscriberName         : subscriberName,
+                                serviceType            : serviceType,
+                                serviceInstanceId      : subVal.serviceInstanceId,
+                                aaiModelInvariantId            : subVal.aaiModelInvariantId,
+                                aaiModelVersionId
+                                    : subVal.aaiModelVersionId,
+                                serviceInstanceName    : subVal.serviceInstanceName,
+                                isPermitted: serviceSubscription[FIELD.ID.IS_PERMITTED]
+                            });
+                        });
+                    });
+                } else {
+                    displayData.push({
+                        globalCustomerId       : selectedSubscriber,
+                        subscriberName         : subscriberName,
+                        serviceType            : FIELD.PROMPT.NO_SERVICE_SUB,
+                        serviceInstanceId      : FIELD.PROMPT.NO_SERVICE_INSTANCE
+                    });
+                }
+                successCallback(displayData, subscriberName);
+            }, function(response) {
+                errorCallback(response);});
+        },
+
+        getSubList : function(successCallback, errorCallback ) {
+
+            $http.get( FIELD.ID.AAI_GET_FULL_SUBSCRIBERS, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                var customerList = [];
+                if (response.data.customer != null) {
+                    angular.forEach(response.data.customer, function(subVal, subKey) {
+                        var cust = { "globalCustomerId": subVal[FIELD.ID.GLOBAL_CUSTOMER_ID], "subscriberName": subVal[FIELD.ID.SUBNAME],
+                            "isPermitted": subVal[FIELD.ID.IS_PERMITTED], };
+                        customerList.push(cust);
+                    });
+                    successCallback(customerList);
+                } else {
+                    errorCallback(response);
+                }
+            },function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getServiceInstance : getServiceInstance,
+        getPnfByName : getPnfByName,
+
+        getGlobalCustomerIdByInstanceIdentifier : function(serviceInstanceIdentifier, findBy) {
+            serviceInstanceIdentifier.trim();
+
+            return getServiceInstance(serviceInstanceIdentifier, findBy)
+                .then(function (response) {
+                    return getGlobalCustomerIdFromServiceInstanceResponse(response);
+            });
+        },
+
+        getMultipleValueParamQueryString: function(values, paramSubPath) {
+            if (values.length) {
+                return paramSubPath + values.filter(function (val) {return val;}).join("&" + paramSubPath);
+            }
+        },
+
+        getJoinedQueryString: getJoinedQueryString,
+
+        getServices2 : function(successCallback, errorCallback ) {
+
+            $http.get( FIELD.ID.AAI_GET_SERVICES, {}, {
+
+
+                timeout : PropertyService.getServerResponseTimeoutMsec()
+            }).then(function(response) {
+                var customerList = [];
+                if (response.data != null) {
+                    var serviceIdList = [];
+                    angular.forEach(response.data, function(value, key) {
+                        angular.forEach(value, function(subVal, key) {
+                            var newVal = { "id" : subVal[FIELD.ID.SERVICE_ID], "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION] ,
+                                "isPermitted" : subVal[FIELD.ID.IS_PERMITTED]
+
+                            };serviceIdList.push(newVal);
+                        });
+                    });
+                    successCallback(serviceIdList);
+                } else {
+                    errorCallback(response);
+                }
+            },function(response) {
+                errorCallback(response);
+            });
+        },
+
+        getPortMirroringData: function (ids) {
+            var defer = $q.defer();
+
+            var url = COMPONENT.AAI_GET_PORT_MIRRORING_CONFIGS_DATA + '?configurationIds=' + ids.join(',');
+            $http.get(url).then(function (res) {
+                defer.resolve(res);
+            }).catch(function (err) {
+                $log.error(err);
+                defer.resolve({});
+            });
+
+            return defer.promise;
+
+        },
+
+        getPortMirroringSourcePorts : function (ids) {
+            var defer = $q.defer();
+            var url = COMPONENT.AAI_GET_PORT_MIRRORING_SOURCE_PORTS +'?configurationIds=' +  ids.join(',');
+            $http.get(url).then(function(res){
+                defer.resolve(res);
+            }).catch(function(err) {
+                $log.error(err);
+                defer.resolve({});
+            });
+            return defer.promise;
+        },
+
+        getVlansByNetworksMapping : function (globalCustomerId, serviceType, serviceInstanceId, sdcModelUuid) {
+            var defer = $q.defer();
+            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PRESENT_PROVIDER_NETWORKS_ASSOCIATIONS)) {
+                var url = COMPONENT.AAI_GET_PROVIDER_NETWORKS_ASSOCIATIONS + '?'
+                    + 'globalCustomerId=' + globalCustomerId
+                    + '&serviceType=' + serviceType
+                    + '&serviceInstanceId=' + serviceInstanceId
+                    + '&sdcModelUuid=' + sdcModelUuid
+                ;
+
+                $http.get(url).then(function(res){
+                    defer.resolve(res.data);
+                }).catch(function(err) {
+                    $log.error(err);
+                    defer.resolve({});
+                });
+
+            } else {
+                defer.resolve({});
+            }
+            return defer.promise;
+        },
+
+        getSubscriptionServiceTypeList : function(globalCustomerId,
+                                                  successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscriptionServiceTypeList: globalCustomerId: "
+                    + globalCustomerId);
+            if ( UtilityService.hasContents(globalCustomerId) ) {
+                $http.get(
+                    COMPONENT.AAI_SUB_DETAILS_PATH
+                    + globalCustomerId + COMPONENT.ASSIGN + Math.random(),
+                    {
+                        timeout : PropertyService
+                            .getServerResponseTimeoutMsec()
+                    }).then(function(response) {
+                    if (response.data && response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS]) {
+                        var serviceTypes = [];
+                        var serviceSubscriptions = response.data[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION];
+
+                        for (var i = 0; i < serviceSubscriptions.length; i++) {
+                            serviceTypes.push({
+                                "name":serviceSubscriptions[i][FIELD.ID.SERVICETYPE],
+                                "isPermitted": serviceSubscriptions[i][FIELD.ID.IS_PERMITTED],
+                                "id": i
+                            });}
+                        successCallbackFunction(serviceTypes);
+                    } else {
+                        successCallbackFunction([]);
+                    }
+                })["catch"]
+                (UtilityService.runHttpErrorHandler);
+            }
+        },
+        getLcpCloudRegionTenantList : function(globalCustomerId, serviceType,
+                                               successCallbackFunction) {
+            $log
+                .debug("AaiService:getLcpCloudRegionTenantList: globalCustomerId: "
+                    + globalCustomerId);
+            var url =   COMPONENT.AAI_GET_TENANTS
+                + globalCustomerId + COMPONENT.FORWARD_SLASH + serviceType + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                var lcpCloudRegionTenants = [];
+                var aaiLcpCloudRegionTenants = response.data;
+
+                for (var i = 0; i < aaiLcpCloudRegionTenants.length; i++) {
+                    lcpCloudRegionTenants.push({
+                        "cloudRegionId": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_REGION_ID],
+                        "cloudOwner": aaiLcpCloudRegionTenants[i][COMPONENT.CLOUD_OWNER],
+                        "tenantName": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_NAME],
+                        "tenantId": aaiLcpCloudRegionTenants[i][COMPONENT.TENANT_ID],
+                        "isPermitted": aaiLcpCloudRegionTenants[i][COMPONENT.IS_PERMITTED]});
+                }
+
+                successCallbackFunction(lcpCloudRegionTenants);
+            }).catch(function(error) {
+                (UtilityService.runHttpErrorHandler(error.data, error.status));
+            })
+        },
+        getSubscribers : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getSubscribers");
+            var url =  FIELD.ID.AAI_GET_SUBSCRIBERS + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response.data.customer);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getProvOptionsFromSystemProp : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getProvOptionsFromSystemProp");
+            var url =  COMPONENT.GET_SYSTEM_PROP_VNF_PROV_STATUS_PATH;
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getLoggedInUserID : function(successCallbackFunction, catchCallbackFunction) {
+            $log
+                .debug("AaiService:getLoggedInUserID");
+            var url = COMPONENT.GET_USER_ID;
+
+            $http.get(url,
+                {
+                    transformResponse: [function (data) {
+                        return data;
+                    }],
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"] (function(response, status) {
+                if (catchCallbackFunction) {
+                    catchCallbackFunction();
+                }
+                UtilityService.runHttpErrorHandler(response, status);
+            })
+        },
+        getServices : function(successCallbackFunction) {
+            $log
+                .debug("AaiService:getServices");
+            var url =  COMPONENT.AAI_GET_SERVICES + COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout: PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function (response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+        getAicZones: function (successCallbackFunction) {
+            $log
+                .debug("getAicZones:getAicZones");
+            var url = COMPONENT.AAI_GET_AIC_ZONES +COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);},
+        getAicZoneForPNF: function (globalCustomerId,serviceType,serviceInstanceId,successCallbackFunction) {
+            $log
+                .debug("getAicZones:getAicZones");
+            var url = COMPONENT.AAI_GET_AIC_ZONE_FOR_PNF
+                .replace('@serviceInstanceId', serviceInstanceId)
+                .replace('@globalCustomerId', globalCustomerId)
+                .replace('@serviceType', serviceType);
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                successCallbackFunction(response.data);
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);},
+
+        getServiceModels : function(globalCustomerId,serviceType,successCallbackFunction) {
+            $log
+                .debug("AaiService:getServices");
+            var url =   COMPONENT.AAI_GET_SERVICES + COMPONENT.FORWARD_SLASH+globalCustomerId+ COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+        getServiceModelsByServiceType : function(namedQueryId,globalCustomerId,serviceType,successCallbackFunction) {
+            $log
+                .debug("AaiService:getServiceModelsByServiceType");
+            var url =   COMPONENT.AAI_GET_SERVICES_BY_TYPE+COMPONENT.FORWARD_SLASH+namedQueryId+COMPONENT.FORWARD_SLASH+globalCustomerId+COMPONENT.FORWARD_SLASH +serviceType+COMPONENT.ASSIGN + Math.random();
+
+            $http.get(url,
+                {
+                    timeout : PropertyService
+                        .getServerResponseTimeoutMsec()
+                }).then(function(response) {
+                if (response.data) {
+                    successCallbackFunction(response);
+                } else {
+                    successCallbackFunction([]);
+                }
+            })["catch"]
+            (UtilityService.runHttpErrorHandler);
+        },
+
+               getVnfsByCustomerIdAndServiceType: function(globalSubscriberId, serviceType){
+            var deferred = $q.defer();
+
+            if (UtilityService.hasContents(globalSubscriberId) &&
+                               UtilityService.hasContents(serviceType) ) {
+
+                $http.get(COMPONENT.AAI_GET_VNF_BY_CUSTOMERID_AND_SERVICETYPE + globalSubscriberId + COMPONENT.FORWARD_SLASH
+                                       + serviceType )
+                    .success(function (response) {
+                        if(response) {
+                            deferred.resolve({data: response});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+
+        getVnfVersionsByInvariantId: function(modelInvariantId){
+            var deferred = $q.defer();
+
+            if (UtilityService.hasContents(modelInvariantId)) {
+                var body = {"versions": modelInvariantId};
+                $http.post(( COMPONENT.AAI_GET_VERSION_BY_INVARIANT_ID),body)
+
+                    .success(function (response) {
+                        if(response) {
+                            deferred.resolve({data: response});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+
+
+
+        getSubscriberServiceTypes: function(subscriberUuid) {
+            var deferred = $q.defer();
+            $log.debug("AaiService:getSubscriberServiceTypes: subscriberUuid: " + subscriberUuid);
+
+            if (UtilityService.hasContents(subscriberUuid)) {
+                $http.get(COMPONENT.AAI_SUB_DETAILS_PATH + subscriberUuid + COMPONENT.ASSIGN + Math.random())
+                    .success(function (response) {
+                        if(response && [FIELD.ID.SERVICE_SUBSCRIPTIONS]) {
+                            deferred.resolve({data: response[FIELD.ID.SERVICE_SUBSCRIPTIONS][FIELD.ID.SERVICE_SUBSCRIPTION]});
+                        } else {
+                            deferred.resolve({data: []});
+                        }
+                    }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+            }
+
+            return deferred.promise;
+        },
+        getVnfInstancesList: function(globalSubscriberId, serviceType, modelVersionId ,modelInvariantId, cloudRegionId)  {
+            var deferred = $q.defer();
+            $http.get([COMPONENT.AAI_GET_VNF_INSTANCES_LIST,
+                    globalSubscriberId,
+                    serviceType,
+                    modelVersionId,
+                    modelInvariantId,
+                    cloudRegionId]
+                .join(COMPONENT.FORWARD_SLASH))
+                .success(function (response) {
+                    deferred.resolve(response);
+                }).error(function (data, status) {
+                    deferred.reject({message: data, status: status});
+            });
+            return deferred.promise;
+        },
+        getPnfInstancesList: function (globalCustomerId, serviceType, modelVersionId, modelInvariantId, cloudRegionId, equipVendor, equipModel) {
+            var deferred = $q.defer();
+            $http.get([COMPONENT.AAI_GET_PNF_INSTANCES_LIST,
+                    globalCustomerId, serviceType,
+                    modelVersionId, modelInvariantId,
+                    cloudRegionId,
+                    equipVendor, equipModel
+                ].join(COMPONENT.FORWARD_SLASH))
+                .success(function (response) {
+                    deferred.resolve(response);
+                }).error(function (data, status) {
+                deferred.reject({message: data, status: status});
+            });
+            return deferred.promise;
+        },
+        getByUri: function(uri)  {
+            var deferred = $q.defer();
+
+            $http.get(COMPONENT.AAI_GET_BY_URI + uri)
+                .success(function (response) {
+                    deferred.resolve({data: []});
+                }).error(function (data, status, headers, config) {
+                    deferred.reject({message: data, status: status});
+                });
+
+            return deferred.promise;
+        },
+        getConfiguration: function(configurationId)  {
+            var deferred = $q.defer();
+
+            $http.get(COMPONENT.AAI_GET_CONFIGURATION + configurationId)
+                .success(function (response) {
+                    deferred.resolve({data: []});
+                }).error(function (data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+            return deferred.promise;
+        },
+
+        getInstanceGroupsByVNFInstanceId: function (vnf_instance_id, successCallback, errorCallback) {
+            var url = COMPONENT.AAI_GET_INSTANCE_GROUPS_BY_VNF_INSTANCE_ID_PATH + "/" + vnf_instance_id;
+
+            $http.get(url, {}, {
+                timeout: PropertyService.getServerResponseTimeoutMsec()
+            }).then(function (response) {
+                successCallback(response);
+            }, function (response) {
+                errorCallback(response);
+            });
+        },
+
+        postPOMBAverificationRequest: function (url, data, config) {
+            $http.post(url, data, config)
+                .success(function (data, status, headers, config) {
+                    //If at some point in the future the result should be handled - this should be the entry point.
+                    log.debug("POMBA was called successfully with data: " + data);
+                })
+                .error(function (data, status, header, config) {
+                    log.debug("Error: " +
+                        "Data: " + data +
+                        "status: " + status +
+                        "headers: " + header +
+                        "config: " + config);
+                });
+        },
+
+        getHomingData: function(vnfInstanceId, vfModuleId)  {
+            var url = COMPONENT.AAI_GET_HOMING_DATA.replace('@vnfInstanceId', vnfInstanceId)
+                .replace('@vfModuleId', vfModuleId);
+
+            var deferred = $q.defer();
+
+            $http.get(url)
+                .success(function (response) {
+                    deferred.resolve({data: response});
+                }).error(function (data, status, headers, config) {
+                deferred.reject({message: data, status: status});
+            });
+
+            return deferred.promise;
+
+        },
+
+        removeVendorFromCloudOwner: function(cloudOwner) {
+            // Handle the case where cloud owner is formatted
+            // like "{vendor}-{cloud-name}"
+            return cloudOwner.trim().replace(/^[^-]*-/, '');
+        }
+    };
+};
+
+appDS2.factory("AaiService", ["$http", "$log", "PropertyService",
+    "UtilityService", "COMPONENT", "FIELD", "$q", "featureFlags", AaiService]);
index 739a179..d5fd320 100755 (executable)
-/*-\r
- * ============LICENSE_START=======================================================\r
- * VID\r
- * ================================================================================\r
- * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.\r
- * ================================================================================\r
- * Licensed under the Apache License, Version 2.0 (the "License");\r
- * you may not use this file except in compliance with the License.\r
- * You may obtain a copy of the License at\r
- * \r
- *      http://www.apache.org/licenses/LICENSE-2.0\r
- * \r
- * Unless required by applicable law or agreed to in writing, software\r
- * distributed under the License is distributed on an "AS IS" BASIS,\r
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- * See the License for the specific language governing permissions and\r
- * limitations under the License.\r
- * ============LICENSE_END=========================================================\r
- */\r
-\r
-"use strict";\r
-\r
-/*\r
- * "CreationService" isolates the "component-specific" logic required by the\r
- * "CreationDialog" controller.\r
- *\r
- * "Components" are defined as the 5 element types managed by the dialogs: A)\r
- * Service B) VNF C) VF Module D) Volume Group and E) Network.\r
- * \r
- */\r
-\r
-var CreationService = function($log, AaiService, AsdcService, DataService,VIDCONFIGURATION,\r
-                               ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService, OwningEntityService,featureFlags) {\r
-\r
-    var _this = this;\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
-    /*\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")) || DataService.getE2EService() ) {\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
-                    if(!DataService.getE2EService()) {\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
-            if(!DataService.getE2EService()) {\r
-                parameterList = parameterList.concat([getProjectParameter()]);\r
-                parameterList = parameterList.concat([getOwningEntityParameter()]);\r
-            }\r
-\r
-            //if service model has a pnf, add a PNF ID parameter\r
-            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PNP_INSTANTIATION) && DataService.getPnf()) {\r
-                parameterList = parameterList.concat([ FIELD.PARAMETER.PNF_ID ]);\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
-               // use a select parameter type. \r
-               var i = constraintsArray.length;\r
-               var parameterPushed = false;\r
-               if ( i > 0 ) {\r
-                       while ( (i--) && (!parameterPushed) ) {\r
-                               var keys = Object.keys(constraintsArray[i]);\r
-                               //var keys_len = keys.length;\r
-                               for ( var operator in keys ) {\r
-                                       //console.log ("keys[operator]=" + keys[operator]);\r
-                                       switch (keys[operator]) {\r
-                                       case PARAMETER.VALID_VALUES:\r
-                                               var j = constraintsArray[i][PARAMETER.VALID_VALUES].length;\r
-                                               if ( j > 0 ) {\r
-                                                       var oList = [];\r
-                                                       var option;\r
-                                                       while (j--) {\r
-                                                               option = {\r
-                                                                               name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
-                                                                               isDefault: false\r
-                                                               } \r
-                                                               if ( ( UtilityService.hasContents (inputs[key][PARAMETER.DEFAULT]) ) \r
-                                                                               && (inputs[key][PARAMETER.DEFAULT] === constraintsArray[i][PARAMETER.VALID_VALUES][j] ) ) {\r
-                                                                       option = {\r
-                                                                                       name: constraintsArray[i][PARAMETER.VALID_VALUES][j],\r
-                                                                                       isDefault: true\r
-                                                                       } \r
-                                                               }\r
-                                                               oList.push(option);\r
-                                                       }\r
-                                                       parameter.type = PARAMETER.SELECT;\r
-                                                       parameter.optionList = oList;\r
-                                                       parameterList.push(parameter);\r
-                                                       parameterPushed = true;\r
-                                                       //console.log ("pushed param for valid values");\r
-                                               }\r
-                                       break; \r
-                                       \r
-                                       case PARAMETER.EQUAL: \r
-                                               if ( constraintsArray[i][PARAMETER.EQUAL] != null ) {\r
-                                                       //override parameter type\r
-                                                       parameter.type = PARAMETER.STRING;\r
-                                                       parameter.isReadOnly = true;\r
-                                                       parameter.value = constraintsArray[i][PARAMETER.EQUAL];\r
-                                                       parameterList.push(parameter);\r
-                                                       parameterPushed = true;\r
-                                                       //console.log ("pushed param for equal");\r
-                                               }\r
-                                       break;\r
-                                               \r
-                                       case PARAMETER.LENGTH: \r
-                                               if ( constraintsArray[i][PARAMETER.LENGTH] != null ) {\r
-                                                       parameter.minLength = constraintsArray[i][PARAMETER.LENGTH];\r
-                                                       parameter.maxLength = constraintsArray[i][PARAMETER.LENGTH];\r
-                                                       parameterList.push(parameter);\r
-                                                       parameterPushed = true;\r
-                                                       //console.log ("pushed param for length: ");\r
-                                                       //console.log (JSON.stringify (parameter, null, 4));\r
-                                               }\r
-                                       break;\r
-                                       case PARAMETER.MAX_LENGTH: \r
-                                               if ( constraintsArray[i][PARAMETER.MAX_LENGTH] != null ) {\r
-                                                       parameter.maxLength = constraintsArray[i][PARAMETER.MAX_LENGTH];\r
-                                                       parameterList.push(parameter);\r
-                                                       parameterPushed = true;\r
-                                                       //console.log ("pushed param for max length: ");\r
-                                                       //console.log (JSON.stringify (parameter, null, 4));\r
-                                               }\r
-                                       break;\r
-                                       case PARAMETER.MIN_LENGTH: \r
-                                               if ( constraintsArray[i][PARAMETER.MIN_LENGTH] != null ) {\r
-                                                       parameter.minLength = constraintsArray[i][PARAMETER.MIN_LENGTH];\r
-                                                       parameterList.push(parameter);\r
-                                                       parameterPushed = true;\r
-                                                       //console.log ("pushed param for min length: ");\r
-                                                       //console.log (JSON.stringify (parameter, null, 4));\r
-                                               }\r
-                                       break;\r
-                                       case PARAMETER.IN_RANGE:\r
-                                               if ( constraintsArray[i][PARAMETER.IN_RANGE] != null ) {\r
-                                                       if (constraintsArray[i][PARAMETER.IN_RANGE].length > 1 ) {\r
-                                                               parameter.min = constraintsArray[i][PARAMETER.IN_RANGE][0];\r
-                                                               parameter.max = constraintsArray[i][PARAMETER.IN_RANGE][1];\r
-                                                               parameter.type = PARAMETER.NUMBER;\r
-                                                               parameter.value = inputs[key][PARAMETER.DEFAULT]\r
-                                                               parameterList.push(parameter);\r
-                                                               parameterPushed = true;\r
-                                                               //console.log ("pushed param for in_range");\r
-                                                       }\r
-                                               }\r
-                                       break; \r
-                                       case PARAMETER.GREATER_THAN:\r
-                                               if ( constraintsArray[i][PARAMETER.GREATER_THAN] != null ) {\r
-                                                               parameter.type = PARAMETER.NUMBER;\r
-                                                               parameter.min = constraintsArray[i][PARAMETER.GREATER_THAN];\r
-                                                               parameter.value = inputs[key][PARAMETER.DEFAULT]\r
-                                                               parameterList.push(parameter);\r
-                                                               parameterPushed = true;\r
-                                                               //console.log ("pushed param for greater_than");\r
-                                                       \r
-                                               }\r
-                                       break;\r
-                                       }//switch\r
-                               }//for\r
-                               \r
-                       }//while\r
-               }//if\r
-       };\r
-       var addToList = function(name, value) {\r
-               _this.parameterList.push({\r
-                       name : name,\r
-                       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
-                if(DataService.getE2EService() === true)\r
-                    return "mso_create_e2e_svc_instance";\r
-                else\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 getMsoE2ERequest = function(parameterList) {\r
-        var modelInfo = DataService.getModelInfo(_this.componentId);\r
-\r
-        //region id\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
-        var cloudOwner = _.find(DataService.getCloudRegionTenantList(), function(region){\r
-            return region.cloudRegionId === lcpRegion;\r
-        }).cloudOwner;\r
-\r
-        var params = [];\r
-        var displayInputs = modelInfo.displayInputs;\r
-        var groupBy = _.groupBy(displayInputs, "templateUUID");\r
-\r
-        _.forEach(groupBy, function(nodeTemplateInputs, nodeTemplateUUID) {\r
-            var reqParas = {};\r
-            var vfLocations = [];\r
-\r
-            nodeTemplateInputs.forEach(function(parameter){\r
-                if(parameter.type === 'vf_location') {\r
-                    var loc = {\r
-                        vnfProfileId: parameter.displayName,\r
-                        locationConstraints : {\r
-                            vimId: cloudOwner + '_' + lcpRegion\r
-                        }\r
-                    };\r
-                    vfLocations.push(loc);\r
-                } else if(parameter.type === 'sdn_controller') {\r
-                    if(parameter.value === undefined || parameter.value === null) {\r
-                        reqParas[parameter.name] = '';\r
-                    } else {\r
-                        reqParas[parameter.name] = parameter.value.value;\r
-                    }\r
-                } else {\r
-                    var name;\r
-                    _.forEach(displayInputs, function(item, key){\r
-                        if(item === parameter) {\r
-                            name = key;\r
-                        }\r
-                    });\r
-                    var value = _.find(parameterList, function(item){\r
-                        return item.id === name;\r
-                    }).value;\r
-                    reqParas[parameter.displayName] = value;\r
-                }\r
-            });\r
-\r
-            params.push({\r
-                resourceName: nodeTemplateInputs[0].templateName,\r
-                resourceInvariantUuid: nodeTemplateInputs[0].templateInvariantUUID,\r
-                resourceUuid: nodeTemplateInputs[0].templateUUID,\r
-                resourceCustomizationUuid: nodeTemplateInputs[0].templateCustomizationUUID,\r
-                parameters: {\r
-                    locationConstraints: vfLocations,\r
-                    //TODO resources: [],\r
-                    requestInputs: reqParas\r
-                }\r
-            });\r
-        });\r
-\r
-        var requestBody = {\r
-            service: {\r
-                name: getValueFromList(FIELD.ID.INSTANCE_NAME, parameterList),\r
-                description: modelInfo["description"],\r
-                serviceInvariantUuid: modelInfo["modelInvariantId"],\r
-                serviceUuid: modelInfo["modelNameVersionId"],\r
-                globalSubscriberId: DataService.getGlobalCustomerId(),\r
-                serviceType: getValueFromList(FIELD.ID.SERVICE_TYPE, parameterList) || modelInfo["serviceTypeName"],\r
-                parameters: {\r
-                    locationConstraints: [],\r
-                    resources: params,\r
-                    requestInputs: {} //TODO\r
-                }\r
-            }\r
-        };\r
-\r
-        return requestBody;\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
-        //VoLTE logic goes here\r
-        if(DataService.getE2EService() === true) {\r
-            return getMsoE2ERequest(parameterList);\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 (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) {\r
-            if ((_this.componentId != COMPONENT.SERVICE) || ( DataService.getALaCarte() )) {\r
-                requestDetails.requestParameters.testApi = DataService.getMsoRequestParametersTestApi();\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
-\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
-                var selectedProject = getValueFromList(FIELD.ID.PROJECT, parameterList);\r
-\r
-                if (selectedProject) {\r
-                    requestDetails.project = {\r
-                        projectName: getValueFromList(FIELD.ID.PROJECT, parameterList)\r
-                    };\r
-                }\r
-\r
-                requestDetails.owningEntity = {\r
-                    owningEntityId: owningEntityId,\r
-                    owningEntityName: getOwningEntityNameById(owningEntityId)\r
-                };\r
-\r
-                break;\r
-            case COMPONENT.VNF:\r
-\r
-                requestDetails.requestInfo.productFamilyId = getValueFromList(\r
-                    FIELD.ID.PRODUCT_FAMILY, parameterList);\r
-\r
-                var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);\r
-\r
-                if(lineOfBusiness) {\r
-                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
-\r
-                    requestDetails.lineOfBusiness = {\r
-                        lineOfBusinessName: lineOfBusinessNamesString\r
-                    }\r
-                }\r
-\r
-                requestDetails.platform = {\r
-                    platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)\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
-                if(lineOfBusiness) {\r
-                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");\r
-\r
-                    requestDetails.lineOfBusiness = {\r
-                        lineOfBusinessName: lineOfBusinessNamesString\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
-        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
-\r
-                var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?\r
-                    cloudRegionTenantList[i].cloudRegionId + " (" + cloudRegionTenantList[i].cloudOwner.trim().toLowerCase().replace(/^att-/, "").toUpperCase() + ")" :\r
-                    cloudRegionTenantList[i].cloudRegionId;\r
-\r
-                parameter.optionList.push({\r
-                    id : cloudRegionTenantList[i].cloudRegionId,\r
-                    name: optionName,\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", "OwningEntityService","featureFlags", CreationService ]);\r
+/*-
+ * ============LICENSE_START=======================================================
+ * VID
+ * ================================================================================
+ * Copyright (C) 2017 - 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+"use strict";
+
+/*
+ * "CreationService" isolates the "component-specific" logic required by the
+ * "CreationDialog" controller.
+ *
+ * "Components" are defined as the 5 element types managed by the dialogs: A)
+ * Service B) VNF C) VF Module D) Volume Group and E) Network.
+ * 
+ */
+
+var CreationService = function($log, AaiService, AsdcService, DataService,VIDCONFIGURATION,
+                               ComponentService, COMPONENT, FIELD, PARAMETER, UtilityService, OwningEntityService,featureFlags) {
+
+    var _this = this;
+    var getAsyncOperationList = function() {
+        if (DataService.getLoggedInUserId() == null) {
+            getLoggedInUserID();
+        } else {
+            UtilityService.startNextAsyncOperation();
+        }
+        switch (_this.componentId) {
+            case COMPONENT.SERVICE:
+                return [ getSubscribers, getServices, getAicZones, getOwningEntityProperties ];
+            case COMPONENT.NETWORK:
+                return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];
+            case COMPONENT.VNF:
+                return [ getLcpCloudRegionTenantList, getOwningEntityProperties ];
+            case COMPONENT.VF_MODULE:
+                return [ getLcpCloudRegionTenantList ];
+            case COMPONENT.VOLUME_GROUP:
+                return [ getLcpCloudRegionTenantList ];
+        }
+    };
+
+    /*
+     * "getSummaryList" and "getUserProvidedList" return parameters that should
+     * be displayed in the summary and user provided sections, respectively. The
+     * functions are expected to return lists that are in the format needed by
+     * the parameter-block directive.
+     */
+
+    var getSummaryList = function() {
+
+        /*
+         * These placeholders should be removed and their usage in
+         * "getSummaryList" should be replaced by appropriate code as the
+         * requirements and interfaces firm up.
+         */
+
+        var PLACEHOLDER_RESOURCE_DESCRIPTION = "Resource Description (PLACEHOLDER)";
+        var PLACEHOLDER_SERVICE_CATEGORY = "Service Category (PLACEHOLDER)";
+        var PLACEHOLDER_VF_MODULE_DESCRIPTION = "VF Module Description (PLACEHOLDER)";
+        var PLACEHOLDER_VF_MODULE_LABEL = "VF Module Label (PLACEHOLDER)";
+        var PLACEHOLDER_VF_MODULE_TYPE = "VF Module Type (PLACEHOLDER)";
+
+        _this.parameterList = new Array();
+
+        /*
+         * Common fields displayed at the top of all create instance screens.
+         */
+        if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]==null
+            || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==undefined
+            || DataService.getModelInfo(_this.componentId)["serviceTypeName"]==''){
+            addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
+        }
+
+        switch (_this.componentId) {
+            case COMPONENT.SERVICE:
+                if ( !DataService.getALaCarte() ) {
+                    // for macro instantiation need to add the resource names under the node template list
+                    // this field is called modelCustomizationName in the asdc client code
+                    var p;
+                    var rlist = DataService.getResources();
+                    var res;
+                    if ( rlist != null ) {
+                        for (var i = 0; i < rlist.length; i++) {
+                            res = rlist[i];
+
+                            p = FIELD.NAME.RESOURCE_NAME.concat(" " + (i+1));
+                            addToList(p, res.name );
+                            p = FIELD.NAME.RESOURCE_DESCRIPTION.concat(" " + (i+1));
+                            addToList(p, res.description );
+                        }
+                    }
+                }
+                if(DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=null && DataService.getModelInfo(_this.componentId)["createSubscriberName"]!=''){
+                    addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
+                        .getModelInfo(_this.componentId)["createSubscriberName"]);
+                }
+                if(DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=null && DataService.getModelInfo(_this.componentId)["serviceTypeName"]!=''){
+                    addToList(FIELD.NAME.SERVICE_TYPE, DataService
+                        .getModelInfo(_this.componentId)["serviceTypeName"]);
+                    addToList(FIELD.NAME.SERVICE_NAME, DataService.getServiceName());
+                }
+                addToList(FIELD.NAME.SERVICE_INVARIANT_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
+                addToList(FIELD.NAME.SERVICE_VERSION, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
+                addToList(FIELD.NAME.SERVICE_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
+                addToList(FIELD.NAME.SERVICE_DESCRIPTION, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.DESCRIPTION]);
+                addToList(FIELD.NAME.SERVICE_CATEGORY, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.CATEGORY]);
+                if (DataService.getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE] != "null") {
+                    addToList(FIELD.NAME.SERVICE_TYPE, DataService
+                        .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_TYPE]);
+                    addToList(FIELD.NAME.SERVICE_ROLE, DataService
+                        .getModelInfo(_this.componentId)[FIELD.ID.SERVICE_ROLE]);
+                }
+
+                break;
+            case COMPONENT.VF_MODULE:
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
+                    .getSubscriberName());
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
+                    .getServiceInstanceName());
+                addToList(FIELD.NAME.MODEL_NAME, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
+                addToList(FIELD.NAME.MODEL_VERSION, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
+                addToList(FIELD.NAME.MODEL_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);
+                break;
+            case COMPONENT.VNF:
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
+                    .getSubscriberName());
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
+                    .getServiceInstanceName());
+                addToList(FIELD.NAME.MODEL_NAME, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
+                addToList(FIELD.NAME.MODEL_VERSION, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
+                addToList(FIELD.NAME.MODEL_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_NAME, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_CUSTOMIZATION_NAME]);
+                addToList(FIELD.NAME.MODEL_VNF_TYPE, DataService
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_TYPE]);
+                addToList(FIELD.NAME.MODEL_VNF_ROLE, DataService
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_ROLE]);
+                addToList(FIELD.NAME.MODEL_VNF_FUNCTION, DataService
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_FUNCTION]);
+                addToList(FIELD.NAME.MODEL_VNF_CODE, DataService
+                    .getModelInfo(_this.componentId)[COMPONENT.VNF_CODE]);
+                break;
+            case COMPONENT.NETWORK:
+            case COMPONENT.VOLUME_GROUP:
+                addToList(FIELD.NAME.SUBSCRIBER_NAME, DataService
+                    .getSubscriberName());
+                addToList(FIELD.NAME.SERVICE_INSTANCE_NAME, DataService
+                    .getServiceInstanceName());
+                addToList(FIELD.NAME.MODEL_NAME, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME]);
+                addToList(FIELD.NAME.MODEL_INVARIANT_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_INVARIANT_ID]);
+                addToList(FIELD.NAME.MODEL_VERSION, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_VERSION]);
+                addToList(FIELD.NAME.MODEL_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.MODEL_NAME_VERSION_ID]);
+                addToList(FIELD.NAME.MODEL_CUSTOMIZATION_UUID, DataService
+                    .getModelInfo(_this.componentId)[FIELD.ID.CUSTOMIZATION_UUID]);
+                break;
+        }
+
+        return _this.parameterList;
+    };
+
+    var getUserProvidedList = function() {
+        var parameterList = [];
+        var isUserProvidedNaming = false;
+        if ( ((DataService.getModelInfo(_this.componentId).serviceEcompNaming != null)
+            && (DataService.getModelInfo(_this.componentId).serviceEcompNaming === "false")) || DataService.getE2EService() ) {
+            isUserProvidedNaming = true;
+        }
+
+        var isInTop = DataService.getHideServiceFields() || false;
+        if (_this.componentId === COMPONENT.SERVICE) {
+            if ( DataService.getALaCarte() ) {
+                parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
+                if(!isInTop){
+                    parameterList = parameterList.concat([ getSubscribersParameter(),
+                        FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
+                }
+            }
+            else {
+                // macro
+
+                if(!isInTop){
+                    if (isUserProvidedNaming) {
+                        parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
+
+                    }
+                    parameterList = parameterList.concat([ getSubscribersParameter() ]);
+                    parameterList = parameterList.concat([ getServiceId(),
+                        FIELD.PARAMETER.SERVICE_TYPE,
+                        FIELD.PARAMETER.LCP_REGION,
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
+                        FIELD.PARAMETER.TENANT_DISABLED
+                    ]);
+                    if(!DataService.getE2EService()) {
+                        parameterList = parameterList.concat([getAicZonesParameter()]);
+                    }
+
+                }else{
+                    parameterList = parameterList.concat([ getServiceId(),
+                        FIELD.PARAMETER.LCP_REGION,
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
+                        FIELD.PARAMETER.TENANT_DISABLED ]);
+                }
+            }
+
+            if(!DataService.getE2EService()) {
+                parameterList = parameterList.concat([getProjectParameter()]);
+                parameterList = parameterList.concat([getOwningEntityParameter()]);
+            }
+
+            //if service model has a pnf, add a PNF ID parameter
+            if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_PNP_INSTANTIATION) && DataService.getPnf()) {
+                parameterList = parameterList.concat([ FIELD.PARAMETER.PNF_ID ]);
+            }
+        }
+        else {
+            parameterList = [ FIELD.PARAMETER.INSTANCE_NAME ];
+            switch (_this.componentId) {
+                case COMPONENT.NETWORK:
+                case COMPONENT.VNF:
+                    parameterList = parameterList.concat([ getServiceId(),
+                        getLcpRegionParameter(), FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
+                        FIELD.PARAMETER.TENANT_DISABLED ]);
+                    parameterList = parameterList.concat([ getLineOfBusinessParameter() ]);
+                    parameterList = parameterList.concat([ getPlatformParameter() ]);
+
+                    break;
+                case COMPONENT.VF_MODULE:
+                    parameterList = parameterList.concat([
+                        getLcpRegionParameter(),
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
+                        FIELD.PARAMETER.TENANT_DISABLED
+                    ]);
+
+                    var availableVolumeGroupList = DataService.getAvailableVolumeGroupList();
+
+                    if (availableVolumeGroupList && availableVolumeGroupList.length > 0) {
+                        var availableVolumeGroupNames = [FIELD.STATUS.NONE];
+
+                        for (var i = 0; i < availableVolumeGroupList.length; i++) {
+                            availableVolumeGroupNames.push(availableVolumeGroupList[i].instance.name);
+                        }
+
+                        parameterList.push(addOptionList(
+                            FIELD.PARAMETER.AVAILABLE_VOLUME_GROUP,
+                            availableVolumeGroupNames));
+                    }
+                    break;
+                case COMPONENT.VOLUME_GROUP:
+                    parameterList = parameterList.concat([ getLcpRegionParameter(),
+                        FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN,
+                        FIELD.PARAMETER.TENANT_DISABLED ]);
+            }
+        }
+        parameterList.push(FIELD.PARAMETER.SUPPRESS_ROLLBACK);
+        if(_this.componentId === COMPONENT.VF_MODULE ){
+            parameterList.push({name: FIELD.NAME.SDN_C_PRELOAD,
+                    id: FIELD.ID.SDN_C_PRELOAD,
+                    type: "checkbox",
+                    isEnabled: true,
+                    isRequired: false,
+                    hideFieldAndLabel: true
+                }
+            );
+            parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,
+                    id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,
+                    type: "checkbox",
+                    isEnabled: true,
+                    isRequired: false,
+                    value:false
+                }
+            );
+
+            parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,
+                    id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,
+                    type: "file",
+                    isRequired: false,
+                    isVisiblity: false
+                }
+            );
+        }
+
+        if( VIDCONFIGURATION.UPLOAD_SUPPLEMENTARY_STATUS_CHECK_ENABLED  && _this.componentId === COMPONENT.VOLUME_GROUP){
+            parameterList.push({name: FIELD.NAME.UPLOAD_SUPPLEMENTORY_DATA_FILE,
+                    id: FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE,
+                    type: "checkbox",
+                    isEnabled: true,
+                    isRequired: false
+                }
+            );
+
+            parameterList.push({name: FIELD.NAME.SUPPLEMENTORY_DATA_FILE,
+                    id: FIELD.ID.SUPPLEMENTORY_DATA_FILE,
+                    type: "file",
+                    isRequired: false,
+                    isVisiblity: false
+                }
+            );
+        }
+
+        addArbitraryParameters(parameterList);
+
+        return parameterList;
+    };
+
+    var addArbitraryParameters = function(parameterList) {
+        if ( DataService.getModelInfo(_this.componentId).displayInputs != null ) {
+            var inputs = DataService.getModelInfo(_this.componentId).displayInputs;
+            for ( var key in inputs) {
+                var parameter = {
+                    id : key,
+                    type : PARAMETER.STRING,
+                    name : ComponentService.getFieldDisplayName(key),
+                    value : inputs[key][PARAMETER.DEFAULT],
+                    isRequired : inputs[key][PARAMETER.REQUIRED],
+                    description : inputs[key][PARAMETER.DESCRIPTION]
+                };
+                if ( DataService.getALaCarte() ) {
+                    parameter.name = ComponentService.getFieldDisplayName(inputs[key][PARAMETER.DISPLAY_NAME]);
+                }
+                switch (inputs[key][PARAMETER.TYPE]) {
+                    case PARAMETER.INTEGER:
+                        parameter.type = PARAMETER.NUMBER;
+                        break;
+                    case PARAMETER.BOOLEAN:
+                        parameter.type = PARAMETER.BOOLEAN;
+                        break;
+                    case PARAMETER.RANGE:
+                        break;
+                    case PARAMETER.LIST:
+                        parameter.type = PARAMETER.LIST;
+                        break;
+                    case PARAMETER.MAP:
+                        parameter.type = PARAMETER.MAP;
+                        break;
+                }
+
+                if ( UtilityService.hasContents(inputs[key][PARAMETER.CONSTRAINTS])
+                    && ( inputs[key][PARAMETER.CONSTRAINTS].length > 0 ) ) {
+                    var constraintsArray = inputs[key][PARAMETER.CONSTRAINTS];
+                    //console.log ("Calling addConstraintParameters for input name=" + key);
+                    addConstraintParameters (parameterList, constraintsArray, key, inputs, parameter);
+                }
+                else {
+
+                    parameterList.push(parameter);
+                }
+            }
+            DataService.setArbitraryParameters (parameterList);
+        }
+    };
+
+       var addConstraintParameters = function(parameterList, constraintsArray, key, inputs, parameter) {
+               // If there are constraints and the operator is "valid_values",
+               // use a select parameter type. 
+               var i = constraintsArray.length;
+               var parameterPushed = false;
+               if ( i > 0 ) {
+                       while ( (i--) && (!parameterPushed) ) {
+                               var keys = Object.keys(constraintsArray[i]);
+                               //var keys_len = keys.length;
+                               for ( var operator in keys ) {
+                                       //console.log ("keys[operator]=" + keys[operator]);
+                                       switch (keys[operator]) {
+                                       case PARAMETER.VALID_VALUES:
+                                               var j = constraintsArray[i][PARAMETER.VALID_VALUES].length;
+                                               if ( j > 0 ) {
+                                                       var oList = [];
+                                                       var option;
+                                                       while (j--) {
+                                                               option = {
+                                                                               name: constraintsArray[i][PARAMETER.VALID_VALUES][j],
+                                                                               isDefault: false
+                                                               } 
+                                                               if ( ( UtilityService.hasContents (inputs[key][PARAMETER.DEFAULT]) ) 
+                                                                               && (inputs[key][PARAMETER.DEFAULT] === constraintsArray[i][PARAMETER.VALID_VALUES][j] ) ) {
+                                                                       option = {
+                                                                                       name: constraintsArray[i][PARAMETER.VALID_VALUES][j],
+                                                                                       isDefault: true
+                                                                       } 
+                                                               }
+                                                               oList.push(option);
+                                                       }
+                                                       parameter.type = PARAMETER.SELECT;
+                                                       parameter.optionList = oList;
+                                                       parameterList.push(parameter);
+                                                       parameterPushed = true;
+                                                       //console.log ("pushed param for valid values");
+                                               }
+                                       break; 
+                                       
+                                       case PARAMETER.EQUAL: 
+                                               if ( constraintsArray[i][PARAMETER.EQUAL] != null ) {
+                                                       //override parameter type
+                                                       parameter.type = PARAMETER.STRING;
+                                                       parameter.isReadOnly = true;
+                                                       parameter.value = constraintsArray[i][PARAMETER.EQUAL];
+                                                       parameterList.push(parameter);
+                                                       parameterPushed = true;
+                                                       //console.log ("pushed param for equal");
+                                               }
+                                       break;
+                                               
+                                       case PARAMETER.LENGTH: 
+                                               if ( constraintsArray[i][PARAMETER.LENGTH] != null ) {
+                                                       parameter.minLength = constraintsArray[i][PARAMETER.LENGTH];
+                                                       parameter.maxLength = constraintsArray[i][PARAMETER.LENGTH];
+                                                       parameterList.push(parameter);
+                                                       parameterPushed = true;
+                                                       //console.log ("pushed param for length: ");
+                                                       //console.log (JSON.stringify (parameter, null, 4));
+                                               }
+                                       break;
+                                       case PARAMETER.MAX_LENGTH: 
+                                               if ( constraintsArray[i][PARAMETER.MAX_LENGTH] != null ) {
+                                                       parameter.maxLength = constraintsArray[i][PARAMETER.MAX_LENGTH];
+                                                       parameterList.push(parameter);
+                                                       parameterPushed = true;
+                                                       //console.log ("pushed param for max length: ");
+                                                       //console.log (JSON.stringify (parameter, null, 4));
+                                               }
+                                       break;
+                                       case PARAMETER.MIN_LENGTH: 
+                                               if ( constraintsArray[i][PARAMETER.MIN_LENGTH] != null ) {
+                                                       parameter.minLength = constraintsArray[i][PARAMETER.MIN_LENGTH];
+                                                       parameterList.push(parameter);
+                                                       parameterPushed = true;
+                                                       //console.log ("pushed param for min length: ");
+                                                       //console.log (JSON.stringify (parameter, null, 4));
+                                               }
+                                       break;
+                                       case PARAMETER.IN_RANGE:
+                                               if ( constraintsArray[i][PARAMETER.IN_RANGE] != null ) {
+                                                       if (constraintsArray[i][PARAMETER.IN_RANGE].length > 1 ) {
+                                                               parameter.min = constraintsArray[i][PARAMETER.IN_RANGE][0];
+                                                               parameter.max = constraintsArray[i][PARAMETER.IN_RANGE][1];
+                                                               parameter.type = PARAMETER.NUMBER;
+                                                               parameter.value = inputs[key][PARAMETER.DEFAULT]
+                                                               parameterList.push(parameter);
+                                                               parameterPushed = true;
+                                                               //console.log ("pushed param for in_range");
+                                                       }
+                                               }
+                                       break; 
+                                       case PARAMETER.GREATER_THAN:
+                                               if ( constraintsArray[i][PARAMETER.GREATER_THAN] != null ) {
+                                                               parameter.type = PARAMETER.NUMBER;
+                                                               parameter.min = constraintsArray[i][PARAMETER.GREATER_THAN];
+                                                               parameter.value = inputs[key][PARAMETER.DEFAULT]
+                                                               parameterList.push(parameter);
+                                                               parameterPushed = true;
+                                                               //console.log ("pushed param for greater_than");
+                                                       
+                                               }
+                                       break;
+                                       }//switch
+                               }//for
+                               
+                       }//while
+               }//if
+       };
+       var addToList = function(name, value) {
+               _this.parameterList.push({
+                       name : name,
+                       value : value
+               });
+       };
+       var setInventoryInfo = function(){
+        var inventoryItem = DataService.getInventoryItem();
+        var inventoryInfo = ComponentService.getInventoryInfo(
+            _this.componentId, inventoryItem);
+       }
+
+    /*
+     * The "*Mso*" functions return URL and request details that can be passed
+     * to the MSO controller. The request details defines the info passed as
+     * part of the POST body.
+     */
+
+    var getMsoUrl = function() {
+        switch (_this.componentId) {
+            case COMPONENT.NETWORK:
+                return "mso_create_nw_instance/"
+                    + DataService.getServiceInstanceId();
+            case COMPONENT.SERVICE:
+                if(DataService.getE2EService() === true)
+                    return "mso_create_e2e_svc_instance";
+                else
+                    return "mso_create_svc_instance";
+            case COMPONENT.VNF:
+                return "mso_create_vnf_instance/"
+                    + DataService.getServiceInstanceId();
+            case COMPONENT.VF_MODULE:
+                return "mso_create_vfmodule_instance/"
+                    + DataService.getServiceInstanceId() + "/vnfs/"
+                    + DataService.getVnfInstanceId();
+            case COMPONENT.VOLUME_GROUP:
+                return "mso_create_volumegroup_instance/"
+                    + DataService.getServiceInstanceId() + "/vnfs/"
+                    + DataService.getVnfInstanceId();
+        }
+    };
+
+    var getMsoE2ERequest = function(parameterList) {
+        var modelInfo = DataService.getModelInfo(_this.componentId);
+
+        //region id
+        var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
+        if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
+            lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
+                parameterList);
+        }
+        var cloudOwner = _.find(DataService.getCloudRegionTenantList(), function(region){
+            return region.cloudRegionId === lcpRegion;
+        }).cloudOwner;
+
+        var params = [];
+        var displayInputs = modelInfo.displayInputs;
+        var groupBy = _.groupBy(displayInputs, "templateUUID");
+
+        _.forEach(groupBy, function(nodeTemplateInputs, nodeTemplateUUID) {
+            var reqParas = {};
+            var vfLocations = [];
+
+            nodeTemplateInputs.forEach(function(parameter){
+                if(parameter.type === 'vf_location') {
+                    var loc = {
+                        vnfProfileId: parameter.displayName,
+                        locationConstraints : {
+                            vimId: cloudOwner + '_' + lcpRegion
+                        }
+                    };
+                    vfLocations.push(loc);
+                } else if(parameter.type === 'sdn_controller') {
+                    if(parameter.value === undefined || parameter.value === null) {
+                        reqParas[parameter.name] = '';
+                    } else {
+                        reqParas[parameter.name] = parameter.value.value;
+                    }
+                } else {
+                    var name;
+                    _.forEach(displayInputs, function(item, key){
+                        if(item === parameter) {
+                            name = key;
+                        }
+                    });
+                    var value = _.find(parameterList, function(item){
+                        return item.id === name;
+                    }).value;
+                    reqParas[parameter.displayName] = value;
+                }
+            });
+
+            params.push({
+                resourceName: nodeTemplateInputs[0].templateName,
+                resourceInvariantUuid: nodeTemplateInputs[0].templateInvariantUUID,
+                resourceUuid: nodeTemplateInputs[0].templateUUID,
+                resourceCustomizationUuid: nodeTemplateInputs[0].templateCustomizationUUID,
+                parameters: {
+                    locationConstraints: vfLocations,
+                    //TODO resources: [],
+                    requestInputs: reqParas
+                }
+            });
+        });
+
+        var requestBody = {
+            service: {
+                name: getValueFromList(FIELD.ID.INSTANCE_NAME, parameterList),
+                description: modelInfo["description"],
+                serviceInvariantUuid: modelInfo["modelInvariantId"],
+                serviceUuid: modelInfo["modelNameVersionId"],
+                globalSubscriberId: DataService.getGlobalCustomerId(),
+                serviceType: getValueFromList(FIELD.ID.SERVICE_TYPE, parameterList) || modelInfo["serviceTypeName"],
+                parameters: {
+                    locationConstraints: [],
+                    resources: params,
+                    requestInputs: {} //TODO
+                }
+            }
+        };
+
+        return requestBody;
+    };
+
+    var getMsoRequestDetails = function(parameterList) {
+        console.log("getMsoRequestDetails invoked, parameterList="); console.log(JSON.stringify(parameterList,null,4));
+        //console.log("getMsoRequestDetails invoked, DataService.getArbitraryParameters()=");
+        //console.log(JSON.stringify(DataService.getArbitraryParameters(),null,4));
+
+        //VoLTE logic goes here
+        if(DataService.getE2EService() === true) {
+            return getMsoE2ERequest(parameterList);
+        }
+
+        var modelInfo = DataService.getModelInfo(_this.componentId);
+        var requestorloggedInId = DataService.getLoggedInUserId();
+        var owningEntityId = getValueFromList(FIELD.ID.OWNING_ENTITY, parameterList);
+        if (requestorloggedInId ==  null)
+            requestorloggedInId = "";
+        var isSupRollback = false;
+        if (getValueFromList(FIELD.ID.SUPPRESS_ROLLBACK,parameterList) === "true") {
+            isSupRollback = true;
+        }
+        var requestDetails = {
+            requestInfo : {
+                instanceName : getValueFromList(FIELD.ID.INSTANCE_NAME,
+                    parameterList) || DataService.getVfModuleInstanceName(),
+                source : FIELD.ID.VID,
+                suppressRollback : isSupRollback,
+                requestorId: requestorloggedInId
+            },
+            modelInfo : {
+                modelType : _this.componentId,
+                modelInvariantId : modelInfo.modelInvariantId,
+                modelVersionId : modelInfo.modelNameVersionId,
+                modelName : modelInfo.modelName,
+                modelVersion : modelInfo.modelVersion,
+                modelCustomizationId: modelInfo.customizationUuid,
+                modelCustomizationName : modelInfo.modelCustomizationName
+            },
+            requestParameters : {
+                userParams : getArbitraryParameters(parameterList)
+            }
+        };
+        if (featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ADD_MSO_TESTAPI_FIELD)) {
+            if ((_this.componentId != COMPONENT.SERVICE) || ( DataService.getALaCarte() )) {
+                requestDetails.requestParameters.testApi = DataService.getMsoRequestParametersTestApi();
+            }
+        }
+        if ( (_this.componentId != COMPONENT.SERVICE) || ( !DataService.getALaCarte() ) ) {
+            // include cloud region for everything but service create alacarte
+            var lcpRegion = getValueFromList(FIELD.ID.LCP_REGION, parameterList);
+            if (lcpRegion === FIELD.KEY.LCP_REGION_TEXT) {
+                lcpRegion = getValueFromList(FIELD.ID.LCP_REGION_TEXT,
+                    parameterList);
+            }
+            requestDetails.cloudConfiguration = {
+                lcpCloudRegionId : lcpRegion,
+                tenantId : getValueFromList(FIELD.ID.TENANT, parameterList)
+            };
+        }
+        switch (_this.componentId) {
+
+            case COMPONENT.SERVICE:
+                requestDetails.subscriberInfo = {
+                    globalSubscriberId : DataService.getGlobalCustomerId(),
+                    subscriberName : DataService.getSubscriberName()
+                };
+                var isInTop = DataService.getHideServiceFields() || false;
+                if(isInTop){
+                    requestDetails.requestParameters.subscriptionServiceType = DataService.getModelInfo(_this.componentId)["serviceTypeName"];
+                }else{
+                    requestDetails.requestParameters.subscriptionServiceType = getValueFromList(
+                        FIELD.ID.SERVICE_TYPE, parameterList);
+                }
+                requestDetails.requestParameters.aLaCarte = DataService.getALaCarte();
+                if ( !DataService.getALaCarte() ) {
+                    requestDetails.requestInfo.productFamilyId = getValueFromList(
+                        FIELD.ID.PRODUCT_FAMILY, parameterList);
+                }
+                var svcModelInfo = {
+                    modelType : _this.componentId,
+                    modelInvariantId : modelInfo.modelInvariantId,
+                    modelVersionId : modelInfo.modelNameVersionId,
+                    modelName : modelInfo.modelName,
+                    modelVersion : modelInfo.modelVersion
+                };
+                requestDetails.modelInfo = svcModelInfo;
+
+                var selectedProject = getValueFromList(FIELD.ID.PROJECT, parameterList);
+
+                if (selectedProject) {
+                    requestDetails.project = {
+                        projectName: getValueFromList(FIELD.ID.PROJECT, parameterList)
+                    };
+                }
+
+                requestDetails.owningEntity = {
+                    owningEntityId: owningEntityId,
+                    owningEntityName: getOwningEntityNameById(owningEntityId)
+                };
+
+                break;
+            case COMPONENT.VNF:
+
+                requestDetails.requestInfo.productFamilyId = getValueFromList(
+                    FIELD.ID.PRODUCT_FAMILY, parameterList);
+
+                var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);
+
+                if(lineOfBusiness) {
+                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");
+
+                    requestDetails.lineOfBusiness = {
+                        lineOfBusinessName: lineOfBusinessNamesString
+                    }
+                }
+
+                requestDetails.platform = {
+                    platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)
+                };
+
+                break;
+            case COMPONENT.NETWORK:
+                requestDetails.requestInfo.productFamilyId = getValueFromList(
+                    FIELD.ID.PRODUCT_FAMILY, parameterList);
+                var lineOfBusiness = getValueFromList(FIELD.ID.LINE_OF_BUSINESS, parameterList);
+
+                if(lineOfBusiness) {
+                    var lineOfBusinessNamesString = _.map(lineOfBusiness, "name").join(", ");
+
+                    requestDetails.lineOfBusiness = {
+                        lineOfBusinessName: lineOfBusinessNamesString
+                    }
+                }
+
+                requestDetails.platform = {
+                    platformName: getValueFromList(FIELD.ID.PLATFORM, parameterList)
+                };
+                break;
+            case COMPONENT.VF_MODULE:
+                requestDetails.requestParameters.usePreload = getValueFromList(
+                    FIELD.ID.SDN_C_PRELOAD, parameterList);
+                if(_this.componentId == COMPONENT.VF_MODULE &&(requestDetails.requestParameters.usePreload== null || requestDetails.requestParameters.usePreload === '')){
+                    requestDetails.requestParameters.usePreload = false;
+                }
+                break;
+            case COMPONENT.VOLUME_GROUP:
+                break;
+        }
+
+        var relatedInstanceList = getRelatedInstanceList(parameterList);
+
+        if (relatedInstanceList !== undefined) {
+            requestDetails.relatedInstanceList = relatedInstanceList;
+        }
+
+        return requestDetails;
+    };
+
+    var getRelatedInstanceList = function(parameterList) {
+        var relatedInstanceList = new Array();
+        switch (_this.componentId) {
+            case COMPONENT.SERVICE:
+                return undefined;
+            case COMPONENT.NETWORK:
+            case COMPONENT.VNF:
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,
+                    DataService.getServiceInstanceId());
+                break;
+            case COMPONENT.VF_MODULE:
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,
+                    DataService.getServiceInstanceId());
+                addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService
+                    .getVnfInstanceId());
+
+                var availableVolumeGroup = getValueFromList(
+                    FIELD.ID.AVAILABLE_VOLUME_GROUP, parameterList);
+
+                if (UtilityService.hasContents(availableVolumeGroup) && availableVolumeGroup !== "None") {
+                    var availableVolumeGroups = DataService.getAvailableVolumeGroupList();
+
+                    for (var i = 0; i < availableVolumeGroups.length; i++) {
+                        if (availableVolumeGroups[i].instance.name == availableVolumeGroup) {
+                            DataService.setModelInfo(COMPONENT.VOLUME_GROUP, DataService.getModelInfo(COMPONENT.VF_MODULE));
+                            DataService.setVolumeGroupInstanceId(availableVolumeGroups[i].instance.object["volume-group-id"]);
+                            break;
+                        }
+                    }
+
+                    addRelatedInstance(relatedInstanceList, COMPONENT.VOLUME_GROUP,
+                        DataService.getVolumeGroupInstanceId());
+                }
+                break;
+            case COMPONENT.VOLUME_GROUP:
+                addRelatedInstance(relatedInstanceList, COMPONENT.SERVICE,
+                    DataService.getServiceInstanceId());
+                addRelatedInstance(relatedInstanceList, COMPONENT.VNF, DataService
+                    .getVnfInstanceId());
+                break;
+        }
+
+        return relatedInstanceList;
+    };
+
+    var addRelatedInstance = function(relatedInstanceList, componentId,
+                                      instanceId) {
+        var modelInfo = DataService.getModelInfo(componentId);
+        var relatedInstance;
+        if (modelInfo !== undefined) {
+            if (componentId === COMPONENT.SERVICE) {
+                relatedInstance = {
+                    "instanceId" : instanceId,
+                    "modelInfo" : {
+                        "modelType" : componentId,
+                        "modelName" : modelInfo.modelName,
+                        "modelInvariantId" : modelInfo.modelInvariantId,
+                        "modelVersion" : modelInfo.modelVersion,
+                        "modelVersionId" : modelInfo.modelNameVersionId,
+
+                    }
+                };
+            }
+            else {
+                relatedInstance = {
+                    "instanceId" : instanceId,
+                    "modelInfo" : {
+                        "modelType" : componentId,
+                        "modelName" : modelInfo.modelName,
+                        "modelInvariantId" : modelInfo.modelInvariantId,
+                        "modelVersion" : modelInfo.modelVersion,
+                        "modelVersionId" : modelInfo.modelNameVersionId,
+                        "modelCustomizationId": modelInfo.customizationUuid,
+                        "modelCustomizationName": modelInfo.modelCustomizationName
+                    }
+                }
+            }
+            relatedInstanceList.push({
+                relatedInstance : relatedInstance
+            });
+        }
+    };
+
+    /*
+     * var getArbitraryParameters = function(parameterList) { var
+     * arbitraryParameters = new Object(); for (var i = 0; i <
+     * parameterList.length; i++) { var parameter = parameterList[i]; switch
+     * (parameter.id) { case FIELD.ID.INSTANCE_NAME: case
+     * FIELD.ID.PRODUCT_FAMILY: case FIELD.ID.LCP_REGION: case
+     * FIELD.ID.LCP_REGION_TEXT: case FIELD.ID.SERVICE_TYPE: case
+     * FIELD.ID.TENANT: case FIELD.ID.SUPPRESS_ROLLBACK: break; default:
+     * arbitraryParameters[parameter.id] = parameter.value; } } return
+     * arbitraryParameters; }
+     */
+    var getArbitraryParameters = function(parameterList) {
+        var arbitraryParameters = new Object();
+        var arbitraryArray = new Array();
+        for (var i = 0; i < parameterList.length; i++) {
+            var parameter = parameterList[i];
+            switch (parameter.id) {
+                case FIELD.ID.AVAILABLE_VOLUME_GROUP:
+                case FIELD.ID.INSTANCE_NAME:
+                case FIELD.ID.PRODUCT_FAMILY:
+                case FIELD.ID.LCP_REGION:
+                case FIELD.ID.LCP_REGION_TEXT:
+                case FIELD.ID.SERVICE_TYPE:
+                case FIELD.ID.TENANT:
+                case FIELD.ID.SUPPRESS_ROLLBACK:
+                case FIELD.ID.SUBSCRIBER_NAME:
+                case FIELD.ID.SDN_C_PRELOAD:
+                case FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE:
+                case FIELD.ID.OWNING_ENTITY:
+                case FIELD.ID.PLATFORM:
+                case FIELD.ID.LINE_OF_BUSINESS:
+                case FIELD.ID.PROJECT:
+                    break;
+                case FIELD.ID.SUPPLEMENTORY_DATA_FILE:
+                    arbitraryParameters =  FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value'];
+                    arbitraryArray=arbitraryParameters;
+                    FIELD.PARAMETER.SUPPLEMENTORY_DATA_FILE['value']=[];
+                    break;
+
+                default:
+                    if (parameter.value != '') {
+                        arbitraryParameters = {
+                            name: parameter.id,
+                            value: parameter.value
+                        }
+                        arbitraryArray.push(arbitraryParameters);
+                    }
+            }
+        }
+        return (arbitraryArray);
+    }
+
+    var getModel = function() {
+        AsdcService.getModel(DataService.getModelId(), function(response) {
+            DataService.setModelInfo(_this.componentId, {
+                modelInvariantId : response.data.invariantUUID,
+                modelNameVersionId : response.data.uuid,
+                modelName : response.data.name,
+                modelVersion : response.data.version,
+                inputs : response.data.inputs
+            });
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+
+    var getSubscriptionServiceTypeList = function() {
+        AaiService.getSubscriptionServiceTypeList(DataService
+            .getGlobalCustomerId(), function(response) {
+            DataService.setSubscriptionServiceTypeList(response);
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+
+    var getLoggedInUserID = function() {
+        AaiService.getLoggedInUserID(function(response) {
+            DataService.setLoggedInUserId(response.data);
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+
+    var getSubscribers = function() {
+        AaiService.getSubscribers(function(response) {
+            DataService.setSubscribers(response);
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+    var getServices = function() {
+        AaiService.getServices(function(response) {
+            var serviceIdList = [];
+            angular.forEach(response.data, function(value, key) {
+                angular.forEach(value, function(subVal, key) {
+                    var newVal = {
+                        "id" : subVal[FIELD.ID.SERVICE_ID],
+                        "description" : subVal[FIELD.ID.SERVICE_DESCRIPTION],
+                        "isPermitted" : subVal[FIELD.ID.IS_PERMITTED],
+                    };
+                    serviceIdList.push(newVal);
+                    DataService.setServiceIdList(serviceIdList);
+                });
+            });
+
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+    var getAicZones = function() {
+        AaiService.getAicZones(function(response) {
+            var serviceIdList = [];
+            angular.forEach(response.data, function(value, key) {
+                angular.forEach(value, function(subVal, key) {
+                    var newVal = {
+                        "id" : subVal[FIELD.ID.ZONE_ID],
+                        "name" : subVal[FIELD.ID.ZONE_NAME],
+                    };
+                    serviceIdList.push(newVal);
+                    DataService.setAicZones(serviceIdList);
+                });
+            });
+
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+
+    var getOwningEntityProperties = function() {
+        OwningEntityService.getOwningEntityProperties(function(owningEntityProperties) {
+            DataService.setOwningEntityProperties(owningEntityProperties);
+            UtilityService.startNextAsyncOperation();
+        });
+
+    };
+
+    var getLcpCloudRegionTenantList = function() {
+        AaiService.getLcpCloudRegionTenantList(DataService
+            .getGlobalCustomerId(), DataService.getServiceType(), function(
+            response) {
+            DataService.setCloudRegionTenantList(response);
+            UtilityService.startNextAsyncOperation();
+        });
+    };
+
+    var internalGetParametersHandler = function() {
+        if (angular.isFunction(_this.getParametersHandler)) {
+            _this.getParametersHandler({
+                summaryList : getSummaryList(),
+                userProvidedList : getUserProvidedList()
+            });
+        }
+    };
+
+    var getSubscribersParameter = function() {
+        var subscribers = DataService.getSubscribers();
+        var parameter = FIELD.PARAMETER.SUBSCRIBER_NAME;
+        if ( UtilityService.hasContents(subscribers)) {
+            parameter.optionList = [];
+
+            for (var i = 0; i < subscribers.length; i++) {
+                parameter.optionList.push({
+                    id : subscribers[i][FIELD.ID.GLOBAL_CUSTOMER_ID],
+                    name : subscribers[i][FIELD.ID.SUBNAME],
+                    isPermitted : subscribers[i][FIELD.ID.IS_PERMITTED]
+                })
+            }
+        }
+        return parameter;
+    };
+
+    var getServiceId = function() {
+        var serviceIdList = DataService.getServiceIdList();
+        //var serviceTypeList = DataService.getSubscriptionServiceTypeList();
+        var parameter = FIELD.PARAMETER.PRODUCT_FAMILY;
+        parameter.optionList = new Array();
+        if ( UtilityService.hasContents(serviceIdList) ) {
+            // load them all
+            for (var i = 0; i < serviceIdList.length; i++) {
+                parameter.optionList.push({
+                    id : serviceIdList[i].id,
+                    name : serviceIdList[i].description,
+                    isPermitted : serviceIdList[i].isPermitted
+                });
+            }
+        }
+
+        return parameter;
+    };
+
+    var getAicZonesParameter = function() {
+        var aicList = DataService.getAicZones();
+        var parameter = FIELD.PARAMETER.AIC_ZONES;
+        parameter.optionList = new Array();
+        if ( UtilityService.hasContents(aicList) ) {
+            // load them all
+            for (var i = 0; i < aicList.length; i++) {
+                parameter.optionList.push({
+                    id : aicList[i].id,
+                    name : aicList[i].name,
+                    isPermitted : true
+
+                });
+            }
+        }
+
+        return parameter;
+    };
+
+    var getProjectParameter = function() {
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PROJECT);
+    };
+
+    var getOwningEntityParameter = function() {
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.OWNING_ENTITY);
+    };
+
+    var getLineOfBusinessParameter = function() {
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.LINE_OF_BUSINESS);
+    };
+
+    var getPlatformParameter = function() {
+        return getOwningEntityParameterWithOptions(FIELD.PARAMETER.PLATFORM);
+    };
+
+    var getOwningEntityNameById = function (id) {
+        var properties = DataService.getOwningEntityProperties();
+        var parameter = _.find(properties[FIELD.ID.OWNING_ENTITY], {"id": id});
+        return parameter && parameter.name;
+    };
+
+    var getOwningEntityParameterWithOptions = function(parameter) {
+        var properties = DataService.getOwningEntityProperties();
+        if (properties && properties[parameter.id]) {
+            parameter.optionList = _.map(properties[parameter.id], function(parameter) {
+                return {
+                    "id" : parameter.id,
+                    "name" : parameter.name,
+                    "isPermitted": true
+                };
+            });
+        }
+
+        return parameter;
+    };
+
+    var getLcpRegionParameter = function() {
+        var cloudRegionTenantList = DataService.getCloudRegionTenantList();
+        console.log ( "cloudRegionTenantList=");
+        console.log ( JSON.stringify (cloudRegionTenantList, null, 4 ));
+
+        var parameter = FIELD.PARAMETER.LCP_REGION;
+        if ( UtilityService.hasContents (cloudRegionTenantList) ) {
+            parameter.optionList = new Array();
+            for (var i = 0; i < cloudRegionTenantList.length; i++) {
+                for (var j = 0; j < parameter.optionList.length; j++) {
+                    if (parameter.optionList[j].id === cloudRegionTenantList[i].cloudRegionId) {
+                        parameter.optionList[j].isPermitted =
+                            parameter.optionList[j].isPermitted || cloudRegionTenantList[i].isPermitted;
+                        break;
+                    }
+                }
+                if (j < parameter.optionList.length) {
+                    continue;
+                }
+
+                var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?
+                    cloudRegionTenantList[i].cloudRegionId + " (" + AaiService.removeVendorFromCloudOwner(cloudRegionTenantList[i].cloudOwner).toUpperCase() + ")" :
+                    cloudRegionTenantList[i].cloudRegionId;
+
+                parameter.optionList.push({
+                    id : cloudRegionTenantList[i].cloudRegionId,
+                    name: optionName,
+                    isPermitted : cloudRegionTenantList[i].isPermitted
+                });
+            }
+        }
+        return parameter;
+    };
+
+    var getTenantList = function(cloudRegionId) {
+        var cloudRegionTenantList = DataService.getCloudRegionTenantList();
+        var parameter = "";
+        if ( UtilityService.hasContents (cloudRegionTenantList) ) {
+            parameter = FIELD.PARAMETER.TENANT_ENABLED;
+            parameter.optionList = new Array();
+            for (var i = 0; i < cloudRegionTenantList.length; i++) {
+                if (cloudRegionTenantList[i].cloudRegionId === cloudRegionId) {
+                    parameter.optionList.push({
+                        id : cloudRegionTenantList[i].tenantId,
+                        name : cloudRegionTenantList[i].tenantName,
+                        isPermitted : cloudRegionTenantList[i].isPermitted
+
+                    });
+                }
+            }
+        }
+        return parameter;
+
+    };
+
+    var addOptionList = function(parameter, optionSimpleArray) {
+        var optionList = new Array();
+        if (!angular.isArray(optionSimpleArray)) {
+            return optionList;
+        }
+        for (var i = 0; i < optionSimpleArray.length; i++) {
+            optionList.push({
+                name : optionSimpleArray[i],
+                isPermitted :true,
+            });
+        }
+        parameter.optionList = optionList;
+        return parameter;
+    };
+
+    var getValueFromList = function(id, parameterList) {
+        for (var i = 0; i < parameterList.length; i++) {
+            if (parameterList[i].id === id) {
+                return parameterList[i].value;
+            }
+        }
+    };
+    var updateUserParameterList = function(updatedId, parameterListControl) {
+        console.log ("updateUserParameterList() updatedId=" + updatedId);
+        if (updatedId === FIELD.ID.PRODUCT_FAMILY && DataService.getHideServiceFields()) {
+            var cloudRegionTenantList = new Array();
+            AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {
+                DataService.setCloudRegionTenantList(cloudRegionTenantList);
+                parameterListControl.updateList([ getLcpRegionParameter() ]);
+            });
+        }else if (updatedId === FIELD.ID.SDN_C_PRELOAD) {
+            var list = parameterListControl.getList(updatedId);
+            if($('input[parameter-id="'+updatedId+'"]').is(':checked')){
+                FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED.value=true;
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_CHECKED ]);
+            }else{
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.SDN_C_PRELOAD_UNCHECKED ]);
+            }
+        }else if (updatedId === FIELD.ID.UPLOAD_SUPPLEMENTORY_DATA_FILE) {
+            if($('input[parameter-id="'+updatedId+'"]').is(':checked')){
+                $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').show();
+                FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=true;
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED ]);
+            }else{
+                $('input[parameter-id="'+FIELD.ID.SUPPLEMENTORY_DATA_FILE+'"]').closest('tr').hide();
+                FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_CHECKED.value=false;
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.UPLOAD_SUPPLEMENTORY_DATA_FILE_UNCHECKED ]);
+            }
+        } else if (updatedId === FIELD.ID.SUPPLEMENTORY_DATA_FILE) {
+            var filePath =  $('input[parameter-id="'+updatedId+'"]').val();
+            var arr =filePath.split('.');
+            var fileExt  = arr[arr.length-1];
+            if(fileExt!='' && fileExt.toLowerCase()!='json'){
+                $('input[parameter-id="'+updatedId+'"]').val('');
+                alert("Invalid file format. Please select *.json format file.");
+                return false;
+            }
+        } else  if (updatedId === FIELD.ID.LCP_REGION) {
+            var list = parameterListControl.getList(updatedId);
+            if (list[0].selectedIndex >= 0) {
+                parameterListControl
+                    .updateList([ getTenantList(list[0].value) ]);
+            } else {
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.TENANT_DISABLED ]);
+            }
+            if (list[0].value === FIELD.KEY.LCP_REGION_TEXT) {
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_VISIBLE ]);
+            } else {
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.LCP_REGION_TEXT_HIDDEN ]);
+            }
+        } else if (updatedId === FIELD.ID.SUBSCRIBER_NAME) {
+            var list = parameterListControl.getList(updatedId);
+            if (list[0].selectedIndex >= 0) {
+                DataService.setGlobalCustomerId(list[0].value);
+
+                AaiService.getSubscriptionServiceTypeList(DataService
+                    .getGlobalCustomerId(), function(response) {
+                    DataService.setSubscriptionServiceTypeList(response);
+                    var serviceTypeParameters = FIELD.PARAMETER.SERVICE_TYPE;
+                    serviceTypeParameters.optionList = [];
+
+                    for (var i = 0; i < response.length; i++) {
+                        serviceTypeParameters.optionList.push({
+                            "id" : response[i].name,
+                            "name" : response[i].name,
+                            "isPermitted" :response[i].isPermitted
+
+                        });
+                    }
+                    console.log ( "updateUserParameterList: service type parameters " );
+                    console.log ( JSON.stringify (serviceTypeParameters, null, 4));
+                    parameterListControl.updateList([ serviceTypeParameters ]);
+                });
+
+            }
+        } else if ( updatedId === FIELD.ID.SERVICE_TYPE ) {
+            var list = parameterListControl.getList(updatedId);
+            if (list[0].selectedIndex >= 0) {
+
+                DataService.setServiceType(list[0].value);
+                var cloudRegionTenantList = new Array();
+                AaiService.getLcpCloudRegionTenantList(DataService.getGlobalCustomerId(), DataService.getServiceType(), function(cloudRegionTenantList) {
+                    DataService.setCloudRegionTenantList(cloudRegionTenantList);
+                    parameterListControl.updateList([ getLcpRegionParameter() ]);
+                });
+            } else {
+                parameterListControl
+                    .updateList([ FIELD.PARAMETER.SERVICE_TYPE_DISABLED ]);
+            }
+        }
+
+    };
+
+    return {
+        initializeComponent : function(componentId) {
+            _this.componentId = ComponentService.initialize(componentId);
+        },
+        setHttpErrorHandler : function(httpErrorHandler) {
+            _this.httpErrorHandler = httpErrorHandler;
+        },
+        getComponentDisplayName : ComponentService.getComponentDisplayName,
+        getParameters : function(getParametersHandler) {
+            _this.getParametersHandler = getParametersHandler;
+            UtilityService.setHttpErrorHandler(_this.httpErrorHandler);
+            UtilityService.startAsyncOperations(getAsyncOperationList(),
+                internalGetParametersHandler);
+        },
+        updateUserParameterList : updateUserParameterList,
+        getMsoRequestDetails : getMsoRequestDetails,
+        getMsoUrl : getMsoUrl,
+        setInventoryInfo: setInventoryInfo
+    }
+}
+
+appDS2.factory("CreationService", [ "$log", "AaiService", "AsdcService",
+    "DataService","VIDCONFIGURATION", "ComponentService", "COMPONENT", "FIELD", "PARAMETER",
+    "UtilityService", "OwningEntityService","featureFlags", CreationService ]);
index efb9ebe..6163184 100644 (file)
@@ -424,7 +424,7 @@ var DeleteResumeService = function($log, AaiService, AsdcService, DataService,
                                }
 
                 var optionName = featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_1810_CR_ADD_CLOUD_OWNER_TO_MSO_REQUEST) && cloudRegionTenantList[i].cloudOwner ?
-                    cloudRegionTenantList[i].cloudRegionId + " (" + cloudRegionTenantList[i].cloudOwner.trim().toLowerCase().replace(/^att-/, "").toUpperCase() + ")" :
+                    cloudRegionTenantList[i].cloudRegionId + " (" + AaiService.removeVendorFromCloudOwner(cloudRegionTenantList[i].cloudOwner).toUpperCase() + ")" :
                     cloudRegionTenantList[i].cloudRegionId;
 
                                parameter.optionList.push({