You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficcontrol.apache.org by sr...@apache.org on 2023/08/31 22:28:55 UTC

[trafficcontrol] branch master updated: Update TP to use API v5 (#7766)

This is an automated email from the ASF dual-hosted git repository.

srijeet0406 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/trafficcontrol.git


The following commit(s) were added to refs/heads/master by this push:
     new d385dcb04e Update TP to use API v5 (#7766)
d385dcb04e is described below

commit d385dcb04ebce7792d4b13370b98c604b59408f5
Author: Steve Hamrick <sh...@gmail.com>
AuthorDate: Thu Aug 31 16:28:49 2023 -0600

    Update TP to use API v5 (#7766)
    
    * Update TP to use API v5
    
    * Add changelog and update GHA
    
    * Address feedback
    
    * Missed a cachegroup
    
    ---------
    
    Co-authored-by: Steve Hamrick <sh...@apache.org>
---
 .github/actions/tp-integration-tests/entrypoint.sh |   6 +-
 CHANGELOG.md                                       |   1 +
 .../app/src/common/api/DeliveryServiceService.js   |  12 +--
 .../modules/form/server/FormServerController.js    |  19 ++--
 .../modules/form/server/form.server.tpl.html       |  41 ++++----
 .../form/server/new/FormNewServerController.js     |   2 +-
 .../TableAssignDSServersController.js              |   4 +-
 .../table/servers/TableServersController.js        |  16 ++--
 .../app/src/modules/private/servers/new/index.js   |   2 +-
 traffic_portal/app/src/scripts/config.js           |   2 +-
 traffic_portal/test/integration/CommonUtils/API.ts |  11 ++-
 traffic_portal/test/integration/Data/asns.ts       |  12 +--
 traffic_portal/test/integration/Data/cachegroup.ts |  32 +++----
 .../test/integration/Data/coordinates.ts           |   6 +-
 .../test/integration/Data/deliveryservices.ts      |  21 ++--
 traffic_portal/test/integration/Data/divisions.ts  |   2 +-
 traffic_portal/test/integration/Data/jobs.ts       |   2 +-
 traffic_portal/test/integration/Data/origins.ts    |   8 +-
 traffic_portal/test/integration/Data/parameters.ts |   4 +-
 .../test/integration/Data/physlocations.ts         |  18 ++--
 traffic_portal/test/integration/Data/servers.ts    |  68 ++++++-------
 .../integration/Data/serverservercapabilities.ts   | 106 ++++++++++-----------
 .../test/integration/Data/servicecategories.ts     |   6 +-
 traffic_portal/test/integration/Data/topologies.ts |  37 ++++---
 .../test/integration/PageObjects/ASNs.po.ts        |   4 +-
 .../test/integration/PageObjects/CacheGroup.po.ts  |   2 +-
 .../integration/PageObjects/CoordinatesPage.po.ts  |   6 +-
 .../PageObjects/PhysLocationsPage.po.ts            |   2 +-
 .../test/integration/PageObjects/ServersPage.po.ts |   2 +-
 .../PageObjects/ServiceCategories.po.ts            |   4 +-
 traffic_portal/test/integration/config.json        |   2 +-
 31 files changed, 230 insertions(+), 230 deletions(-)

diff --git a/.github/actions/tp-integration-tests/entrypoint.sh b/.github/actions/tp-integration-tests/entrypoint.sh
index 82e0706c7c..30a8d385a6 100755
--- a/.github/actions/tp-integration-tests/entrypoint.sh
+++ b/.github/actions/tp-integration-tests/entrypoint.sh
@@ -131,7 +131,7 @@ jq " .capabilities.chromeOptions.args = [
     \"--no-sandbox\",
     \"--disable-gpu\",
     \"--ignore-certificate-errors\"
-  ] | .params.apiUrl = \"${to_fqdn}/api/4.0\" | .params.baseUrl =\"${tp_fqdn}\"
+  ] | .params.apiUrl = \"${to_fqdn}/api/5.0\" | .params.baseUrl =\"${tp_fqdn}\"
   | .capabilities[\"goog:chromeOptions\"].w3c = false | .capabilities.chromeOptions.w3c = false" \
   config.json > config.json.tmp && mv config.json.tmp config.json
 
@@ -139,10 +139,10 @@ npm run build
 
 # Wait for tp/to build
 timeout 5m bash <<TMOUT
-  while ! curl -Lvsk "${tp_fqdn}/api/4.0/ping" >/dev/null 2>&1; do
+  while ! curl -Lvsk "${tp_fqdn}/api/5.0/ping" >/dev/null 2>&1; do
     echo "waiting for TP/TO server to start on '${tp_fqdn}'"
     sleep 10
   done
 TMOUT
 
-npm test -- --params.baseUrl="${tp_fqdn}" --params.apiUrl="${to_fqdn}/api/4.0"
+npm test -- --params.baseUrl="${tp_fqdn}" --params.apiUrl="${to_fqdn}/api/5.0"
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 728dc46ad4..73eb365285 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -77,6 +77,7 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/).
 - [#7742](https://github.com/apache/trafficcontrol/pull/7742) *Traffic Ops* Changed api tests to supply the absolute path of certs.
 - [#7718](https://github.com/apache/trafficcontrol/pull/7718) *Traffic Ops* `/servers` endpoint now responds with RFC3339 timestamps for all timestamp fields. Cleaned up naming conventions and superfluous data.
 - [#7765](https://github.com/apache/trafficcontrol/pull/7765) *Traffic Stats* now uses Traffic Ops APIv5
+- [#7766](https://github.com/apache/trafficcontrol/pull/7766) *Traffic Portal* now uses TO APIv5
 
 ### Fixed
 - [#7767](https://github.com/apache/trafficcontrol/pull/7767) *Traffic Ops* Fixed ASN update logic for APIv5
diff --git a/traffic_portal/app/src/common/api/DeliveryServiceService.js b/traffic_portal/app/src/common/api/DeliveryServiceService.js
index a0972de388..f3d76db18d 100644
--- a/traffic_portal/app/src/common/api/DeliveryServiceService.js
+++ b/traffic_portal/app/src/common/api/DeliveryServiceService.js
@@ -99,7 +99,7 @@ class DeliveryServiceService {
 	 * @returns {Promise<DeliveryService[]>} The response property of the response.
 	 */
 	async getDeliveryServices(params) {
-		const result = await this.$http.get(`${this.ENV.api.next}deliveryservices`, { params });
+		const result = await this.$http.get(`${this.ENV.api.unstable}deliveryservices`, { params });
 		return result.data.response;
 	}
 
@@ -110,7 +110,7 @@ class DeliveryServiceService {
 	 * @returns {Promise<DeliveryService>} The requested Delivery Service.
 	 */
 	async getDeliveryService(id) {
-		const result = await this.$http.get(`${this.ENV.api.next}deliveryservices`, { params: { id } });
+		const result = await this.$http.get(`${this.ENV.api.unstable}deliveryservices`, { params: { id } });
 		return result.data.response[0];
 	}
 
@@ -124,7 +124,7 @@ class DeliveryServiceService {
 		// strip out any falsy values or duplicates from consistentHashQueryParams
 		ds.consistentHashQueryParams = Array.from(new Set(ds.consistentHashQueryParams)).filter(i => i);
 
-		const response = await this.$http.post(`${this.ENV.api.next}deliveryservices`, ds);
+		const response = await this.$http.post(`${this.ENV.api.unstable}deliveryservices`, ds);
 		return response.data;
 	}
 
@@ -138,7 +138,7 @@ class DeliveryServiceService {
 		// strip out any falsy values or duplicates from consistentHashQueryParams
 		ds.consistentHashQueryParams = Array.from(new Set(ds.consistentHashQueryParams)).filter(i => i);
 
-		const response = await this.$http.put(`${this.ENV.api.next}deliveryservices/${ds.id}`, ds);
+		const response = await this.$http.put(`${this.ENV.api.unstable}deliveryservices/${ds.id}`, ds);
 		return response.data;
 	}
 
@@ -149,7 +149,7 @@ class DeliveryServiceService {
 	 * @returns {Promise<{alerts: {level: string; text: string}[]}>} The full API response
 	 */
 	async deleteDeliveryService(ds) {
-		const response = await this.$http.delete(`${this.ENV.api.next}deliveryservices/${ds.id}`);
+		const response = await this.$http.delete(`${this.ENV.api.unstable}deliveryservices/${ds.id}`);
 		return response.data;
 	}
 
@@ -219,7 +219,7 @@ class DeliveryServiceService {
 	 * @returns {Promise<DeliveryService[]>} The Delivery Services for which the identified server is responsible for serving content.
 	 */
 	async getServerDeliveryServices(serverID) {
-		const result = await this.$http.get(`${this.ENV.api.next}servers/${serverID}/deliveryservices`);
+		const result = await this.$http.get(`${this.ENV.api.unstable}servers/${serverID}/deliveryservices`);
 		return result.data.response;
 	}
 
diff --git a/traffic_portal/app/src/common/modules/form/server/FormServerController.js b/traffic_portal/app/src/common/modules/form/server/FormServerController.js
index bbb707a1cb..4ca3e4d587 100644
--- a/traffic_portal/app/src/common/modules/form/server/FormServerController.js
+++ b/traffic_portal/app/src/common/modules/form/server/FormServerController.js
@@ -45,7 +45,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal
     var getPhysLocations = function() {
         physLocationService.getPhysLocations()
             .then(function(result) {
-                $scope.physLocations = result;
+                $scope.physicalLocations = result;
             });
     };
 
@@ -87,10 +87,10 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal
     $scope.addProfile = function() {
         $scope.serverForm.$setDirty();
 
-        if (!$scope.server.profileNames) {
-            $scope.server.profileNames = [null];
+        if (!$scope.server.profiles) {
+            $scope.server.profiles = [null];
         } else {
-            $scope.server.profileNames.push(null);
+            $scope.server.profiles.push(null);
         }
     }
 
@@ -105,7 +105,7 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal
 
     $scope.deleteProfile = function(index) {
         $scope.serverForm.$setDirty();
-        $scope.server.profileNames.splice(index, 1);
+        $scope.server.profiles.splice(index, 1);
     }
 
     var updateStatus = function(status) {
@@ -184,8 +184,8 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal
     }
 
     $scope.onCDNChange = function() {
-        $scope.server.profileId = null; // the cdn of the server changed, so we need to blank out the selected server profile (if any)
-        getProfiles($scope.server.cdnId); // and get a new list of profiles (for the selected cdn)
+        $scope.server.profileID = null; // the cdn of the server changed, so we need to blank out the selected server profile (if any)
+        getProfiles($scope.server.cdnID); // and get a new list of profiles (for the selected cdn)
     };
 
     $scope.isLargeCIDR = function(address) {
@@ -264,7 +264,10 @@ var FormServerController = function(server, $scope, $location, $state, $uibModal
         getCacheGroups();
         getTypes();
         getCDNs();
-        getProfiles(($scope.server.cdnId) ? $scope.server.cdnId : 0); // hacky but does the job. only when a cdn is selected can we fetch the appropriate profiles. otherwise, show no profiles.
+        getProfiles(($scope.server.cdnID) ? $scope.server.cdnID : 0); // hacky but does the job. only when a cdn is selected can we fetch the appropriate profiles. otherwise, show no profiles.
+
+        $scope.server.revalPending = $scope.server.revalApplyTime && $scope.server.revalUpdateTime && $scope.server.revalApplyTime < $scope.server.RevalUpdateTime;
+        $scope.server.updPending = $scope.server.configApplyTime && $scope.server.configUpdateTime && $scope.server.configApplyTime < $scope.server.configUpdateTime;
     };
     init();
 
diff --git a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html
index 22247902cf..2ca5e7bf76 100644
--- a/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html
+++ b/traffic_portal/app/src/common/modules/form/server/form.server.tpl.html
@@ -47,7 +47,7 @@ under the License.
 
             <label for="status">Status *</label>
             <div>
-                <select id="status" name="status" class="form-control" ng-model="server.statusId" ng-options="status.id as status.name for status in statuses" ng-disabled="!settings.isNew"></select>
+                <select id="status" name="status" class="form-control" ng-model="server.statusID" ng-options="status.id as status.name for status in statuses" ng-disabled="!settings.isNew"></select>
             </div>
 
             <label ng-if="!settings.isNew" for="statusLastUpdated">Status Last Updated</label>
@@ -85,29 +85,28 @@ under the License.
 
             <label for="cdn" ng-class="{'has-error': hasError(serverForm.cdn)}">CDN *</label>
             <div ng-class="{'has-error': hasError(serverForm.cdn), 'has-feedback': hasError(serverForm.cdn)}">
-                <select name="cdn" id="cdn" class="form-control" ng-change="onCDNChange()" ng-model="server.cdnId" ng-options="cdn.id as cdn.name for cdn in cdns" required>
+                <select name="cdn" id="cdn" class="form-control" ng-change="onCDNChange()" ng-model="server.cdnID" ng-options="cdn.id as cdn.name for cdn in cdns" required>
                     <option hidden selected disabled value="">Select...</option>
                 </select>
                 <small class="input-error" ng-show="hasPropertyError(serverForm.cdn, 'required')">Required</small>
-                <small ng-show="server.cdnId"><a ng-href="/#!/cdns/{{server.cdnId}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
+                <small ng-show="server.cdnID"><a ng-href="/#!/cdns/{{server.cdnID}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
             </div>
 
-            <label for="cachegroup" ng-class="{'has-error': hasError(serverForm.cachegroup)}">Cache Group *</label>
-            <div ng-class="{'has-error': hasError(serverForm.cachegroup), 'has-feedback': hasError(serverForm.cachegroup)}">
-                <select id="cachegroup" name="cachegroup" class="form-control" ng-model="server.cachegroupId" ng-options="cachegroup.id as cachegroup.name for cachegroup in cacheGroups" required>
+            <label for="cachegroup" ng-class="{'has-error': hasError(serverForm.cacheGroup)}">Cache Group *</label>
+            <div ng-class="{'has-error': hasError(serverForm.cacheGroup), 'has-feedback': hasError(serverForm.cacheGroup)}">
+                <select id="cachegroup" name="cachegroup" class="form-control" ng-model="server.cacheGroupID" ng-options="cacheGroup.id as cacheGroup.name for cacheGroup in cacheGroups" required>
                     <option hidden selected disabled value="">Select...</option>
                 </select>
-                <small class="input-error" ng-show="hasPropertyError(serverForm.cachegroup, 'required')">Required</small>
-                <small ng-show="server.cachegroupId"><a ng-href="/#!/cache-groups/{{server.cachegroupId}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
+                <small class="input-error" ng-show="hasPropertyError(serverForm.cacheGroup, 'required')">Required</small>
+                <small ng-show="server.cacheGroupID"><a ng-href="/#!/cache-groups/{{server.cacheGroupID}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
             </div>
-
             <label for="type" ng-class="{'has-error': hasError(serverForm.type)}">Type *</label>
             <div ng-class="{'has-error': hasError(serverForm.type), 'has-feedback': hasError(serverForm.type)}">
-                <select id="type" name="type" class="form-control" ng-model="server.typeId" ng-options="type.id as type.name for type in types" required>
+                <select id="type" name="type" class="form-control" ng-model="server.typeID" ng-options="type.id as type.name for type in types" required>
                     <option hidden selected disabled value="">Select...</option>
                 </select>
                 <small class="input-error" ng-show="hasPropertyError(serverForm.type, 'required')">Required</small>
-                <small ng-show="server.typeId"><a ng-href="/#!/types/{{server.typeId}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
+                <small ng-show="server.typeID"><a ng-href="/#!/types/{{server.typeID}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
             </div>
 
             <fieldset>
@@ -120,25 +119,25 @@ under the License.
                     For example, P1 and P2 are two profiles associated with a server, S1. Parameters of P1 will have a <u>higher</u> priority over that of P2.
                     And if there exists parameters with same name but different values, then P1's parameters will <b>not</b> be overwritten.
                 </p>
-                <fieldset ng-repeat="profile in server.profileNames track by $index"> {{$index + 1}}
+                <fieldset ng-repeat="profile in server.profiles track by $index"> {{$index + 1}}
                     <select ng-class="{'has-error': hasPropertyError(serverForm['activeProfile-'+$index], 'required'), 'has-feedback': hasPropertyError(serverForm['activeProfile-'+$index], 'required')}"
-                            id="activeProfile-{{$index}}" name="activeProfile-{{$index}}" class="form-control" ng-model="server.profileNames[$index]"
-                            ng-options="profile.name as profile.name for profile in profiles|excludeFilter:profile:server.profileNames" required>
+                            id="activeProfile-{{$index}}" name="activeProfile-{{$index}}" class="form-control" ng-model="server.profiles[$index]"
+                            ng-options="profile.name as profile.name for profile in profiles|excludeFilter:profile:server.profiles" required>
                         <option hidden selected disabled value="">Select...</option>
                     </select>
                     <small class="input-error" ng-show="hasPropertyError(serverForm['activeProfile-'+$index], 'required')">Required</small>
-                    <a ng-href="{{getProfileID(server.profileNames[$index])}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a>
-                    <button class="btn btn-danger right-button btn-xs" type="button" title="remove this profile from the server" ng-if="server.profileNames.length>1" ng-click="deleteProfile($index)"><i class="fa fa-minus"></i></button>
+                    <a ng-href="{{getProfileID(server.profiles[$index])}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a>
+                    <button class="btn btn-danger right-button btn-xs" type="button" title="remove this profile from the server" ng-if="server.profiles.length>1" ng-click="deleteProfile($index)"><i class="fa fa-minus"></i></button>
                 </fieldset>
             </fieldset>
 
-            <label for="physLocation" ng-class="{'has-error': hasError(serverForm.physLocation)}">Physical Location *</label>
-            <div ng-class="{'has-error': hasError(serverForm.physLocation), 'has-feedback': hasError(serverForm.physLocation)}">
-                <select id="physLocation" name="physLocation" class="form-control" ng-model="server.physLocationId" ng-options="physLocation.id as physLocation.name for physLocation in physLocations" required>
+            <label for="physicalLocation" ng-class="{'has-error': hasError(serverForm.physicalLocation)}">Physical Location *</label>
+            <div ng-class="{'has-error': hasError(serverForm.physicalLocation), 'has-feedback': hasError(serverForm.physicalLocation)}">
+                <select id="physicalLocation" name="physicalLocation" class="form-control" ng-model="server.physicalLocationID" ng-options="pL.id as pL.name for pL in physicalLocations" required>
                     <option value="">Select...</option>
                 </select>
-                <small class="input-error" ng-show="hasPropertyError(serverForm.physLocation, 'required')">Required</small>
-                <small ng-show="server.physLocationId"><a ng-href="/#!/phys-locations/{{server.physLocationId}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
+                <small class="input-error" ng-show="hasPropertyError(serverForm.physicalLocation, 'required')">Required</small>
+                <small ng-show="server.physicalLocationID"><a ng-href="/#!/phys-locations/{{server.physicalLocationID}}" target="_blank">View Details&nbsp;&nbsp;<i class="fa fs-xs fa-external-link"></i></a></small>
             </div>
 
             <label for="tcpPort" ng-class="{'has-error': hasError(serverForm.tcpPort)}">TCP Port</label>
diff --git a/traffic_portal/app/src/common/modules/form/server/new/FormNewServerController.js b/traffic_portal/app/src/common/modules/form/server/new/FormNewServerController.js
index a1fbeef4b4..58f3e44c25 100644
--- a/traffic_portal/app/src/common/modules/form/server/new/FormNewServerController.js
+++ b/traffic_portal/app/src/common/modules/form/server/new/FormNewServerController.js
@@ -38,7 +38,7 @@ var FormNewServerController = function(server, $anchorScroll, $scope, $controlle
                 $scope.statuses = result;
                 // Issue #2651 - Enabling server status for New Server but still defaulting enabled dropdown to OFFLINE
                 const offlineStatus = result.find(status => status.name === 'OFFLINE');
-                $scope.server.statusId = offlineStatus.id;
+                $scope.server.statusID = offlineStatus.id;
             });
     };
 
diff --git a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
index 289bc89613..ce6bbbf7b6 100644
--- a/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
+++ b/traffic_portal/app/src/common/modules/table/deliveryServiceServers/TableAssignDSServersController.js
@@ -39,10 +39,10 @@ var TableAssignDSServersController = function(deliveryService, servers, assigned
 			headerName: "Profile(s)",
 			field: "profile",
 			valueGetter:  function(params) {
-				return params.data.profileNames;
+				return params.data.profiles;
 			},
 			tooltipValueGetter: function(params) {
-				return params.data.profileNames.join(", ");
+				return params.data.profiles.join(", ");
 			}
 		}
 	];
diff --git a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
index d0e9260ade..e6e031f5ec 100644
--- a/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
+++ b/traffic_portal/app/src/common/modules/table/servers/TableServersController.js
@@ -38,12 +38,12 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
 	$scope.columns = [
 		{
 			headerName: "Cache Group",
-			field: "cachegroup",
+			field: "cacheGroup",
 			hide: false
 		},
 		{
 			headerName: "CDN",
-			field: "cdnName",
+			field: "cdn",
 			hide: false
 		},
 		{
@@ -170,7 +170,7 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
 		},
 		{
 			headerName: "Phys Location",
-			field: "physLocation",
+			field: "physicalLocation",
 			hide: true
 		},
 		{
@@ -178,10 +178,10 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
 			field: "profileName",
 			hide: false,
 			valueGetter:  function(params) {
-				return params.data.profileNames;
+				return params.data.profiles;
 			},
 			tooltipValueGetter: function(params) {
-				return params.data.profileNames.join(", ");
+				return params.data.profiles.join(", ");
 			},
 			filter: 'arrayTextColumnFilter'
 		},
@@ -384,9 +384,11 @@ var TableServersController = function(servers, $scope, $state, $uibModal, locati
 		function(x) {
 			x.lastUpdated = x.lastUpdated ? new Date(x.lastUpdated.replace("+00", "Z")) : x.lastUpdated;
 			x.statusLastUpdated = x.statusLastUpdated ? new Date(x.statusLastUpdated): x.statusLastUpdated;
+			x.revalPending = x.revalApplyTime && x.revalUpdateTime && x.revalApplyTime < x.RevalUpdateTime;
+			x.updPending = x.configApplyTime && x.configUpdateTime && x.configApplyTime < x.configUpdateTime;
 			Object.assign(x, serverUtils.toLegacyIPInfo(x.interfaces));
-			if (x.profileNames !== undefined) {
-				x.profileName = x.profileNames[0]
+			if (x.profiles !== undefined) {
+				x.profileName = x.profiles[0]
 			}
 			return x;
 	});
diff --git a/traffic_portal/app/src/modules/private/servers/new/index.js b/traffic_portal/app/src/modules/private/servers/new/index.js
index 6e70449257..64ce24a8a5 100644
--- a/traffic_portal/app/src/modules/private/servers/new/index.js
+++ b/traffic_portal/app/src/modules/private/servers/new/index.js
@@ -44,7 +44,7 @@ module.exports = angular.module('trafficPortal.private.servers.new', [])
                                             monitor: true
                                         }
                                     ],
-                                    profileNames: []
+                                    profiles: []
                                 };
                             }
                         }
diff --git a/traffic_portal/app/src/scripts/config.js b/traffic_portal/app/src/scripts/config.js
index 850da4424c..cc2ab123fc 100644
--- a/traffic_portal/app/src/scripts/config.js
+++ b/traffic_portal/app/src/scripts/config.js
@@ -26,4 +26,4 @@
 
 angular.module('config', [])
 
-.constant('ENV', { api: { next: "/api/5.0/", unstable:'/api/4.1/', stable: "/api/4.0/" } });
+.constant('ENV', { api: { next: "/api/5.0/", unstable:'/api/5.0/', stable: "/api/4.1/" } });
diff --git a/traffic_portal/test/integration/CommonUtils/API.ts b/traffic_portal/test/integration/CommonUtils/API.ts
index 0570f021a0..885e569aea 100644
--- a/traffic_portal/test/integration/CommonUtils/API.ts
+++ b/traffic_portal/test/integration/CommonUtils/API.ts
@@ -302,6 +302,11 @@ export class API {
         if(hasProperty(data, 'requiredCapability')) {
             data.requiredCapability = data.requiredCapability + randomize;
         }
+        if(hasProperty(data, 'requiredCapabilities', 'Array')) {
+            data.requiredCapabilities.forEach((_cap, i) => {
+                data.requiredCapabilities[i] += randomize;
+            })
+        }
         if(hasProperty(data, 'serverCapability')) {
             data.serverCapability = data.serverCapability + randomize;
         }
@@ -337,9 +342,9 @@ export class API {
                 }
             }
         }
-        if(hasProperty(data, 'profileNames', "Array")){
-            for (const index in data.profileNames) {
-                data.profileNames[index] = data.profileNames[index]+randomize
+        if(hasProperty(data, 'profiles', "Array")){
+            for (const index in data.profiles) {
+                data.profiles[index] = data.profiles[index]+randomize
             }
         }
     }
diff --git a/traffic_portal/test/integration/Data/asns.ts b/traffic_portal/test/integration/Data/asns.ts
index 7ecded9d29..043d0caffd 100644
--- a/traffic_portal/test/integration/Data/asns.ts
+++ b/traffic_portal/test/integration/Data/asns.ts
@@ -158,13 +158,13 @@ export const ASNs = {
 					description: "create an ASN with existence number",
 					ASNs: "2222",
 					CacheGroup: "asntestcg1",
-					validationMessage: "an asn with the specified number already exists"
+					validationMessage: "already exists"
 				},
 				{
 					description: "create an ASN with existence number different cachegroup",
 					ASNs: "2222",
 					CacheGroup: "asntestcg2",
-					validationMessage: "an asn with the specified number already exists"
+					validationMessage: "already exists"
 				}
 			],
 			update: [
@@ -178,7 +178,7 @@ export const ASNs = {
 					description: "update an ASN to have existence number",
 					ASNs: "3333",
 					NewASNs: "2222",
-					validationMessage: "another asn exists for this number"
+					validationMessage: "already exists"
 				},
 				{
 					description: "update cachegroup of an ASN",
@@ -252,13 +252,13 @@ export const ASNs = {
 					description: "create an ASN with existence number",
 					ASNs: "4444",
 					CacheGroup: "asntestcg1",
-					validationMessage: "an asn with the specified number already exists"
+					validationMessage: "already exists"
 				},
 				{
 					description: "create an ASN with existence number different cachegroup",
 					ASNs: "4444",
 					CacheGroup: "asntestcg2",
-					validationMessage: "an asn with the specified number already exists"
+					validationMessage: "already exists"
 				}
 			],
 			update: [
@@ -272,7 +272,7 @@ export const ASNs = {
 					description: "update an ASN to have existence number",
 					ASNs: "6666",
 					NewASNs: "5555",
-					validationMessage: "another asn exists for this number"
+					validationMessage: "already exists"
 				},
 				{
 					description: "update cachegroup of an ASN",
diff --git a/traffic_portal/test/integration/Data/cachegroup.ts b/traffic_portal/test/integration/Data/cachegroup.ts
index ce21dbc22d..92500b97fc 100644
--- a/traffic_portal/test/integration/Data/cachegroup.ts
+++ b/traffic_portal/test/integration/Data/cachegroup.ts
@@ -54,7 +54,7 @@ export const cachegroups = {
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
 					FailoverCG: "albany-ny-usa",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				},
 				{
 					Description: "create multiple EDGE_LOC cachegroup",
@@ -66,7 +66,7 @@ export const cachegroups = {
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
 					FailoverCG: "",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				},
 				{
 					Description: "create a MID_LOC cachegroup",
@@ -77,7 +77,7 @@ export const cachegroups = {
 					Longitude: "0",
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				}
 			],
 			update: [
@@ -86,7 +86,7 @@ export const cachegroups = {
 					Name: "TP_Cache1",
 					Type: "EDGE_LOC",
 					FailoverCG: "TP_Cache2",
-					validationMessage: "cachegroup was updated."
+					validationMessage: "cache group was updated"
 				},
 				{
 					Description: "Validate cannot add cache group fallback if the cache group fall back is a different Type",
@@ -104,19 +104,19 @@ export const cachegroups = {
 					Description: "change Type of the Cache Groups",
 					Name: "TP_Cache1",
 					Type: "MID_LOC",
-					validationMessage: "cachegroup was updated."
+					validationMessage: "cache group was updated"
 				}
 			],
 			remove: [
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache1",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				},
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache3",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				}
 			]
 		},
@@ -209,7 +209,7 @@ export const cachegroups = {
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
 					FailoverCG: "albany-ny-usa",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				},
 				{
 					Description: "create multiple EDGE_LOC cachegroup",
@@ -221,7 +221,7 @@ export const cachegroups = {
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
 					FailoverCG: "",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				},
 				{
 					Description: "create a MID_LOC cachegroup",
@@ -232,7 +232,7 @@ export const cachegroups = {
 					Longitude: "0",
 					ParentCacheGroup: "infrastructure",
 					SecondaryParentCG: "infrastructure",
-					validationMessage: "cachegroup was created."
+					validationMessage: "cache group was created."
 				}
 			],
 			update: [
@@ -241,7 +241,7 @@ export const cachegroups = {
 					Name: "TP_Cache4",
 					Type: "EDGE_LOC",
 					FailoverCG: "TP_Cache5",
-					validationMessage: "cachegroup was updated."
+					validationMessage: "cache group was updated"
 				},
 				{
 					Description: "Validate cannot add cache group fallback if the cache group fall back is a different Type",
@@ -259,29 +259,29 @@ export const cachegroups = {
 					Description: "change Type of the Cache Groups",
 					Name: "TP_Cache4",
 					Type: "MID_LOC",
-					validationMessage: "cachegroup was updated."
+					validationMessage: "cache group was updated"
 				}
 			],
 			remove: [
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache2",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				},
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache4",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				},
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache5",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				},
 				{
 					Description: "delete a cachegroup",
 					Name: "TP_Cache6",
-					validationMessage: "cachegroup was deleted."
+					validationMessage: "was deleted"
 				}
 			]
 		}
diff --git a/traffic_portal/test/integration/Data/coordinates.ts b/traffic_portal/test/integration/Data/coordinates.ts
index bc2af5f44d..9cd63acd4e 100644
--- a/traffic_portal/test/integration/Data/coordinates.ts
+++ b/traffic_portal/test/integration/Data/coordinates.ts
@@ -72,7 +72,7 @@ export const coordinates = {
 					Name: "TPCoordinates1",
 					Latitude: 0,
 					Longitude: 0,
-					validationMessage: "coordinate was created."
+					validationMessage: "created"
 				}
 			],
 			update: [
@@ -80,14 +80,14 @@ export const coordinates = {
 					description: "update coordinates latitude",
 					Name: "TPCoordinates1",
 					Latitude: 1,
-					validationMessage: "coordinate was updated."
+					validationMessage: "updated"
 				}
 			],
 			remove: [
 				{
 					description: "delete a Coordinates",
 					Name: "TPCoordinates1",
-					validationMessage: "coordinate was deleted."
+					validationMessage: "deleted"
 				}
 			]
 		},
diff --git a/traffic_portal/test/integration/Data/deliveryservices.ts b/traffic_portal/test/integration/Data/deliveryservices.ts
index 60e2dcc934..fc2dabe187 100644
--- a/traffic_portal/test/integration/Data/deliveryservices.ts
+++ b/traffic_portal/test/integration/Data/deliveryservices.ts
@@ -142,7 +142,7 @@ export const deliveryservices = {
 			method: "post",
 			data: [
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 0,
 					displayName: "DSTestReadOnly",
 					dscp: 0,
@@ -151,7 +151,6 @@ export const deliveryservices = {
 					initialDispersion: 1,
 					ipv6RoutingEnabled: true,
 					logsEnabled: false,
-					maxOriginConnections: 4500,
 					missLat: 41.881944,
 					missLong: -87.627778,
 					multiSiteOrigin: false,
@@ -159,7 +158,6 @@ export const deliveryservices = {
 					protocol: 0,
 					qstringIgnore: 0,
 					rangeRequestHandling: 0,
-					regional: false,
 					regionalGeoBlocking: false,
 					requiredCapabilities: ["DSTestCap"],
 					tenantId: 0,
@@ -246,8 +244,8 @@ export const deliveryservices = {
 			method: "post",
 			data: [
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cachegroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "DSTest",
 					httpsPort: 443,
@@ -282,32 +280,31 @@ export const deliveryservices = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 11,
-					updPending: false,
+					typeID: 11,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "DSTest",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cachegroupID"
 						}
 					]
 				}
diff --git a/traffic_portal/test/integration/Data/divisions.ts b/traffic_portal/test/integration/Data/divisions.ts
index 994bcfb475..a6a821f19b 100644
--- a/traffic_portal/test/integration/Data/divisions.ts
+++ b/traffic_portal/test/integration/Data/divisions.ts
@@ -81,7 +81,7 @@ export const divisions = {
 					description: "update Division's name",
 					Name: "TPDivision1",
 					NewName: "NewDivision1",
-					validationMessage: "division was updated."
+					validationMessage: "division was updated"
 				}
 			],
 			remove: [
diff --git a/traffic_portal/test/integration/Data/jobs.ts b/traffic_portal/test/integration/Data/jobs.ts
index fc52caa598..4d91bb4d69 100644
--- a/traffic_portal/test/integration/Data/jobs.ts
+++ b/traffic_portal/test/integration/Data/jobs.ts
@@ -44,7 +44,7 @@ export const jobs = {
 			method: "post",
 			data: [
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 0,
 					displayName: "DSJobTest",
 					dscp: 0,
diff --git a/traffic_portal/test/integration/Data/origins.ts b/traffic_portal/test/integration/Data/origins.ts
index a60e67ee07..dd167bd402 100644
--- a/traffic_portal/test/integration/Data/origins.ts
+++ b/traffic_portal/test/integration/Data/origins.ts
@@ -77,7 +77,7 @@ export const origins = {
 			method: "post",
 			data: [
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 2,
 					displayName: "ds1",
 					dscp: 0,
@@ -107,7 +107,7 @@ export const origins = {
 					]
 				},
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 2,
 					displayName: "ds2",
 					dscp: 0,
@@ -137,7 +137,7 @@ export const origins = {
 					]
 				},
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 2,
 					displayName: "ds3",
 					dscp: 0,
@@ -167,7 +167,7 @@ export const origins = {
 					]
 				},
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 2,
 					displayName: "ds4",
 					dscp: 0,
diff --git a/traffic_portal/test/integration/Data/parameters.ts b/traffic_portal/test/integration/Data/parameters.ts
index 0a3ba90826..79cd03e658 100644
--- a/traffic_portal/test/integration/Data/parameters.ts
+++ b/traffic_portal/test/integration/Data/parameters.ts
@@ -99,7 +99,7 @@ export const parameters = {
 				{
 					description: "delete a Parameters",
 					Name: "TPParamtest1",
-					validationMessage: "param was deleted."
+					validationMessage: "parameter was deleted."
 				}
 			]
 		},
@@ -199,7 +199,7 @@ export const parameters = {
 				{
 					description: "delete a Parameters",
 					Name: "TPParamtest1",
-					validationMessage: "param was deleted."
+					validationMessage: "parameter was deleted."
 				}
 			]
 		}
diff --git a/traffic_portal/test/integration/Data/physlocations.ts b/traffic_portal/test/integration/Data/physlocations.ts
index e6628ddd27..0115d2cce7 100644
--- a/traffic_portal/test/integration/Data/physlocations.ts
+++ b/traffic_portal/test/integration/Data/physlocations.ts
@@ -164,8 +164,8 @@ export const physLocations = {
 			method: "post",
 			data: [
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "PhysTest",
 					httpsPort: 443,
@@ -200,32 +200,32 @@ export const physLocations = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
+					typeID: 12,
 					updPending: false,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				}
@@ -286,7 +286,7 @@ export const physLocations = {
 				{
 					description: "delete a PhysLocation that currently link with a Server",
 					Name: "TPPhysLocation2",
-					validationMessage: "cannot delete phys_location because it is being used by a server"
+					validationMessage: "can not delete a phys_location"
 				}
 			]
 		},
diff --git a/traffic_portal/test/integration/Data/servers.ts b/traffic_portal/test/integration/Data/servers.ts
index 58490dea9d..14f1d46063 100644
--- a/traffic_portal/test/integration/Data/servers.ts
+++ b/traffic_portal/test/integration/Data/servers.ts
@@ -275,8 +275,8 @@ export const servers = {
 			method: "post",
 			data: [
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "servertestremove2",
 					httpsPort: 443,
@@ -311,38 +311,38 @@ export const servers = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
+					typeID: 12,
 					updPending: false,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "servertestremoveop2",
 					httpsPort: 443,
@@ -377,38 +377,38 @@ export const servers = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
+					typeID: 12,
 					updPending: false,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "servertestremove3",
 					httpsPort: 443,
@@ -443,38 +443,38 @@ export const servers = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 11,
+					typeID: 11,
 					updPending: false,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "servertestremoveop3",
 					httpsPort: 443,
@@ -509,32 +509,32 @@ export const servers = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 11,
+					typeID: 11,
 					updPending: false,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				}
@@ -590,7 +590,7 @@ export const servers = {
 			method: "post",
 			data: [
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 0,
 					displayName: "servertestds1",
 					dscp: 0,
@@ -626,7 +626,7 @@ export const servers = {
 					]
 				},
 				{
-					active: true,
+					active: "PRIMED",
 					cdnId: 0,
 					displayName: "servertestdsop1",
 					dscp: 0,
diff --git a/traffic_portal/test/integration/Data/serverservercapabilities.ts b/traffic_portal/test/integration/Data/serverservercapabilities.ts
index 222fd8acef..3aaa6c52a6 100644
--- a/traffic_portal/test/integration/Data/serverservercapabilities.ts
+++ b/traffic_portal/test/integration/Data/serverservercapabilities.ts
@@ -232,8 +232,8 @@ export const serverServerCapabilities = {
 			method: "post",
 			data: [
 				{
-					cachegroupId: 0,
-					cdnId: 0,
+					cacheGroupID: 0,
+					cdnID: 0,
 					domainName: "test.net",
 					hostName: "testserver1",
 					httpsPort: 443,
@@ -268,38 +268,37 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 0,
-					profileNames: ["testProfile"],
+					physicalLocationID: 0,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
-					updPending: false,
+					typeID: 12,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 8,
-					cdnId: 2,
+					cacheGroupID: 8,
+					cdnID: 2,
 					domainName: "test.net",
 					hostName: "testserver2",
 					httpsPort: 443,
@@ -334,38 +333,37 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 2,
-					profileNames: ["testProfile"],
+					physicalLocationID: 2,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
-					updPending: false,
+					typeID: 12,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 8,
-					cdnId: 2,
+					cacheGroupID: 8,
+					cdnID: 2,
 					domainName: "test.net",
 					hostName: "testserver3",
 					httpsPort: 443,
@@ -400,38 +398,37 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 2,
-					profileNames: ["testProfile"],
+					physicalLocationID: 2,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 13,
-					updPending: false,
+					typeID: 13,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 8,
-					cdnId: 2,
+					cacheGroupID: 8,
+					cdnID: 2,
 					domainName: "test.net",
 					hostName: "testserver4",
 					httpsPort: 443,
@@ -466,38 +463,37 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 2,
-					profileNames: ["testProfile"],
+					physicalLocationID: 2,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
-					updPending: false,
+					typeID: 12,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 8,
-					cdnId: 2,
+					cacheGroupID: 8,
+					cdnID: 2,
 					domainName: "test.net",
 					hostName: "testserver5",
 					httpsPort: 443,
@@ -532,38 +528,37 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 2,
-					profileNames: ["testProfile"],
+					physicalLocationID: 2,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 12,
-					updPending: false,
+					typeID: 12,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				},
 				{
-					cachegroupId: 8,
-					cdnId: 2,
+					cacheGroupID: 8,
+					cdnID: 2,
 					domainName: "test.net",
 					hostName: "testserver6",
 					httpsPort: 443,
@@ -598,32 +593,31 @@ export const serverServerCapabilities = {
 					mgmtIpGateway: "",
 					mgmtIpNetmask: "",
 					offlineReason: "",
-					physLocationId: 2,
-					profileNames: ["testProfile"],
+					physicalLocationID: 2,
+					profiles: ["testProfile"],
 					routerHostName: "",
 					routerPortName: "",
 					statusId: 3,
 					tcpPort: 80,
-					typeId: 13,
-					updPending: false,
+					typeID: 13,
 					getRequest: [
 						{
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TPPhysLocation2",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
 						{
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "dummycdn",
-							replace: "cdnId"
+							replace: "cdnID"
 						},
 						{
 							route: "/cachegroups",
 							queryKey: "name",
 							queryValue: "testCG",
-							replace: "cachegroupId"
+							replace: "cacheGroupID"
 						}
 					]
 				}
@@ -701,7 +695,7 @@ export const serverServerCapabilities = {
 				{
 					description: "delete server capability linked with one or more servers",
 					ServerCapability: "servercap2",
-					validationMessage: "cannot delete server_capability because it is being used by a server_server_capability"
+					validationMessage: "can not delete a server capability with 2 assigned servers"
 				},
 				{
 					description: "delete server capabilities that is not link to any server",
@@ -793,7 +787,7 @@ export const serverServerCapabilities = {
 				{
 					description: "delete server capability linked with one or more servers",
 					ServerCapability: "servercap2",
-					validationMessage: "cannot delete server_capability because it is being used by a server_server_capability"
+					validationMessage: "can not delete a server capability with 4 assigned servers"
 				},
 				{
 					description: "delete server capabilities that is not link to any server",
diff --git a/traffic_portal/test/integration/Data/servicecategories.ts b/traffic_portal/test/integration/Data/servicecategories.ts
index 8cea9ab475..792aaf7a77 100644
--- a/traffic_portal/test/integration/Data/servicecategories.ts
+++ b/traffic_portal/test/integration/Data/servicecategories.ts
@@ -59,7 +59,7 @@ export const serviceCategories = {
 				{
 					description: "create a Service Categories",
 					Name: "TPServiceCategories1",
-					validationMessage: "serviceCategory was created."
+					validationMessage: "was created"
 				}
 			],
 			update: [
@@ -67,14 +67,14 @@ export const serviceCategories = {
 					description: "update service categories name",
 					Name: "TPServiceCategories1",
 					NewName: "TPSCNew1",
-					validationMessage: "was successful."
+					validationMessage: "was updated"
 				}
 			],
 			remove: [
 				{
 					description: "delete a service categories",
 					Name: "TPSCNew1",
-					validationMessage: "serviceCategory was deleted."
+					validationMessage: "was deleted"
 				}
 			]
 		},
diff --git a/traffic_portal/test/integration/Data/topologies.ts b/traffic_portal/test/integration/Data/topologies.ts
index 1edc774068..c8c9e346de 100644
--- a/traffic_portal/test/integration/Data/topologies.ts
+++ b/traffic_portal/test/integration/Data/topologies.ts
@@ -40,7 +40,7 @@ export const topologies = {
                             route: "/servers",
                             queryKey: "hostName",
                             queryValue: "topologieserver1",
-                            replace: "route"                           
+                            replace: "route"
                         }
                     ]
                 },
@@ -51,7 +51,7 @@ export const topologies = {
                             route: "/servers",
                             queryKey: "hostName",
                             queryValue: "topologieserver3",
-                            replace: "route"   
+                            replace: "route"
                         }
                     ]
                 }
@@ -314,9 +314,8 @@ export const topologies = {
             method: "post",
             data: [
                 {
-                    cachegroupId: 0,
-                    
-                    cdnId: 2,
+                    cacheGroupID: 0,
+                    cdnID: 2,
                     domainName: "test.net",
                     hostName: "topologieserver1",
                     httpsPort: 443,
@@ -351,38 +350,38 @@ export const topologies = {
                     mgmtIpGateway: "",
                     mgmtIpNetmask: "",
                     offlineReason: "",
-                    physLocationId: 2,
-                    profileNames: ["TopTestPf"],
+                    physLocationID: 2,
+                    profiles: ["TopTestPf"],
                     routerHostName: "",
                     routerPortName: "",
                     statusId: 3,
                     tcpPort: 80,
-                    typeId: 12,
+                    typeID: 12,
                     getRequest: [
                         {
                             route: "/cachegroups",
                             queryKey: "name",
                             queryValue: "TopoTestCGE2",
-                            replace: "cachegroupId"
+                            replace: "cacheGroupID"
                         },
                         {
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TopTestPhys",
-							replace: "physLocationId"
+							replace: "physicalLocationID"
 						},
                         {
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "TopTestCDN",
-							replace: "cdnId"
+							replace: "cdnID"
 						}
                     ],
                     updPending: false
                 },
                 {
-                    cachegroupId: 0,
-                    cdnId: 2,
+                    cacheGroupID: 0,
+                    cdnID: 2,
                     domainName: "test.net",
                     hostName: "topologieserver3",
                     httpsPort: 443,
@@ -417,31 +416,31 @@ export const topologies = {
                     mgmtIpGateway: "",
                     mgmtIpNetmask: "",
                     offlineReason: "",
-                    physLocationId: 2,
-                    profileNames: ["TopTestPf"],
+                    physicalLocationID: 2,
+                    profiles: ["TopTestPf"],
                     routerHostName: "",
                     routerPortName: "",
                     statusId: 3,
                     tcpPort: 80,
-                    typeId: 12,
+                    typeID: 12,
                     getRequest: [
                         {
                             route: "/cachegroups",
                             queryKey: "name",
                             queryValue: "TopoTestCGE3",
-                            replace: "cachegroupId"
+                            replace: "cacheGroupID"
                         },
                         {
 							route: "/phys_locations",
 							queryKey: "name",
 							queryValue: "TopTestPhys",
-							replace: "physLocationId"
+							replace: "physLocationID"
 						},
                         {
 							route: "/cdns",
 							queryKey: "name",
 							queryValue: "TopTestCDN",
-							replace: "cdnId"
+							replace: "cdnID"
 						}
                     ],
                     updPending: false
diff --git a/traffic_portal/test/integration/PageObjects/ASNs.po.ts b/traffic_portal/test/integration/PageObjects/ASNs.po.ts
index 4d4de85806..1a7c6752c8 100644
--- a/traffic_portal/test/integration/PageObjects/ASNs.po.ts
+++ b/traffic_portal/test/integration/PageObjects/ASNs.po.ts
@@ -65,7 +65,7 @@ export class ASNsPage extends BasePage {
         await this.txtASN.sendKeys(asns.ASNs + twoNumberRandomize);
         await this.txtCacheGroup.sendKeys(asns.CacheGroup)
         await basePage.ClickCreate();
-        return await basePage.GetOutputMessage().then(v => asns.validationMessage === v);
+        return await basePage.GetOutputMessage().then(v => v.indexOf(asns.validationMessage ?? "") > -1);
     }
 
     public async SearchASNs(nameASNs: string): Promise<boolean> {
@@ -103,7 +103,7 @@ export class ASNsPage extends BasePage {
             result = false;
         }
         result = await basePage.GetOutputMessage().then(function (value) {
-            if (asns.validationMessage == value) {
+            if (value.indexOf(asns.validationMessage ?? "") > -1) {
                 return true;
             } else {
                 return false;
diff --git a/traffic_portal/test/integration/PageObjects/CacheGroup.po.ts b/traffic_portal/test/integration/PageObjects/CacheGroup.po.ts
index 43bcf934b8..d4ebeb0e06 100644
--- a/traffic_portal/test/integration/PageObjects/CacheGroup.po.ts
+++ b/traffic_portal/test/integration/PageObjects/CacheGroup.po.ts
@@ -144,7 +144,7 @@ export class CacheGroupPage extends BasePage {
         await this.txtConfirmCacheGroupName.sendKeys(name);
         if (await basePage.ClickDeletePermanently() == true) {
             result = await basePage.GetOutputMessage().then(function (value) {
-                if (outputMessage == value) {
+                if (value.indexOf(outputMessage) > -1) {
                     return true
                 } else {
                     return false;
diff --git a/traffic_portal/test/integration/PageObjects/CoordinatesPage.po.ts b/traffic_portal/test/integration/PageObjects/CoordinatesPage.po.ts
index 30b1c115f5..c126736289 100644
--- a/traffic_portal/test/integration/PageObjects/CoordinatesPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/CoordinatesPage.po.ts
@@ -70,7 +70,7 @@ export class CoordinatesPage extends BasePage {
         await this.txtLongitude.sendKeys(coordinates.Longitude)
         await basePage.ClickCreate();
         result = await basePage.GetOutputMessage().then(function (value) {
-            if (coordinates.validationMessage == value) {
+            if (value.indexOf(coordinates.validationMessage ?? "") > -1) {
                 return true;
             } else {
                 return false;
@@ -107,7 +107,7 @@ export class CoordinatesPage extends BasePage {
         }
         if (result = !undefined) {
             result = await basePage.GetOutputMessage().then(function (value) {
-                if (coordinates.validationMessage == value) {
+                if (value.indexOf(coordinates.validationMessage ?? "") > -1) {
                     return true;
                 } else {
                     return false;
@@ -125,7 +125,7 @@ export class CoordinatesPage extends BasePage {
         await this.txtConfirmName.sendKeys(coordinates.Name + this.randomize);
         await basePage.ClickDeletePermanently();
         result = await basePage.GetOutputMessage().then(function (value) {
-            if (coordinates.validationMessage == value) {
+            if (value.indexOf(coordinates.validationMessage ?? "") > -1) {
                 return true;
             } else {
                 return false;
diff --git a/traffic_portal/test/integration/PageObjects/PhysLocationsPage.po.ts b/traffic_portal/test/integration/PageObjects/PhysLocationsPage.po.ts
index d2b73c5049..ea21224325 100644
--- a/traffic_portal/test/integration/PageObjects/PhysLocationsPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/PhysLocationsPage.po.ts
@@ -138,7 +138,7 @@ export class PhysLocationsPage extends BasePage {
     await this.txtConfirmName.sendKeys(physlocation.Name + this.randomize);
     await basePage.ClickDeletePermanently();
     result = await basePage.GetOutputMessage().then(function (value) {
-      if (physlocation.validationMessage === value) {
+      if (value.indexOf(physlocation.validationMessage ?? "") > -1) {
         return true;
       } else {
         return false;
diff --git a/traffic_portal/test/integration/PageObjects/ServersPage.po.ts b/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
index 10f61fbcf8..8dbbb2e428 100644
--- a/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
+++ b/traffic_portal/test/integration/PageObjects/ServersPage.po.ts
@@ -64,7 +64,7 @@ export class ServersPage extends BasePage {
   private txtHostName = element(by.xpath("//ol[@class='breadcrumb pull-left']//li[@class='active ng-binding']"))
   private txtDomainName = element(by.name('domainName'));
   private txtProfile = element(by.name('activeProfile-0'));
-  private txtPhysLocation = element(by.name('physLocation'));
+  private txtPhysLocation = element(by.name('physicalLocation'));
   private lblInputError = element(by.className("input-error"));
 
   private txtHostname = element(by.name('hostName'));
diff --git a/traffic_portal/test/integration/PageObjects/ServiceCategories.po.ts b/traffic_portal/test/integration/PageObjects/ServiceCategories.po.ts
index 1b9f078308..bac32353e7 100644
--- a/traffic_portal/test/integration/PageObjects/ServiceCategories.po.ts
+++ b/traffic_portal/test/integration/PageObjects/ServiceCategories.po.ts
@@ -65,7 +65,7 @@ export class ServiceCategoriesPage extends BasePage {
         await this.txtName.sendKeys(serviceCategories.Name + this.randomize);
         await basePage.ClickCreate();
         result = await basePage.GetOutputMessage().then(function (value) {
-            if (serviceCategories.validationMessage == value) {
+            if (value.indexOf(serviceCategories.validationMessage ?? "") > -1) {
                 return true;
             } else {
                 return false;
@@ -107,7 +107,7 @@ export class ServiceCategoriesPage extends BasePage {
         await this.txtConfirmName.sendKeys(name);
         await basePage.ClickDeletePermanently();
         result = await basePage.GetOutputMessage().then(function (value) {
-            if (serviceCategories.validationMessage == value) {
+            if (value.indexOf(serviceCategories.validationMessage ?? "") > -1) {
                 return true;
             } else {
                 return false;
diff --git a/traffic_portal/test/integration/config.json b/traffic_portal/test/integration/config.json
index 5890ddf3a5..2568e925bb 100644
--- a/traffic_portal/test/integration/config.json
+++ b/traffic_portal/test/integration/config.json
@@ -29,7 +29,7 @@
     "stopSpecOnExpectationFailure": true
   },
   "params": {
-    "apiUrl": " https://localhost:443/api/4.0",
+    "apiUrl": "https://localhost:443/api/5.0",
     "baseUrl": "https://localhost",
     "login": {
       "username": "admin",