You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@trafficcontrol.apache.org by GitBox <gi...@apache.org> on 2018/09/14 15:19:48 UTC

[GitHub] dangogh closed pull request #2819: removes TP v1

dangogh closed pull request #2819: removes TP v1
URL: https://github.com/apache/trafficcontrol/pull/2819
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

diff --git a/LICENSE b/LICENSE
index fb89ab86d..8bdf33d92 100644
--- a/LICENSE
+++ b/LICENSE
@@ -270,7 +270,6 @@ For the downloadjs component:
 
 For the angular-loading-bar component:
 @traffic_portal/app/src/styles/loading.scss
-@traffic_portal/v1/app/src/styles/loading.scss
 ./licenses/MIT-angular_loading_bar
 
 For the gentelella admin theme:
diff --git a/traffic_portal/v1/.bowerrc b/traffic_portal/v1/.bowerrc
deleted file mode 100644
index ba0accc5a..000000000
--- a/traffic_portal/v1/.bowerrc
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    "directory": "app/bower_components"
-}
diff --git a/traffic_portal/v1/.gitignore b/traffic_portal/v1/.gitignore
deleted file mode 100644
index a6d8ee586..000000000
--- a/traffic_portal/v1/.gitignore
+++ /dev/null
@@ -1,9 +0,0 @@
-.tmp
-.sass-cache
-app/bower_components
-app/dist
-app/src/scripts/config.js
-node_modules
-rpm/rpmbuild
-rpm/*.rpm
-server/log/access.log
diff --git a/traffic_portal/v1/.jshintrc b/traffic_portal/v1/.jshintrc
deleted file mode 100644
index 6b2ddc7a8..000000000
--- a/traffic_portal/v1/.jshintrc
+++ /dev/null
@@ -1,23 +0,0 @@
-{
-    "browser": true,
-    "esnext": true,
-    "bitwise": true,
-    "camelcase": true,
-    "curly": true,
-    "eqeqeq": true,
-    "immed": true,
-    "indent": 2,
-    "latedef": true,
-    "newcap": true,
-    "noarg": true,
-    "quotmark": "single",
-    "regexp": true,
-    "undef": true,
-    "unused": true,
-    "strict": true,
-    "trailing": true,
-    "smarttabs": true,
-    "globals": {
-        "angular": false
-    }
-}
diff --git a/traffic_portal/v1/Gruntfile.js b/traffic_portal/v1/Gruntfile.js
deleted file mode 100755
index f86d919c3..000000000
--- a/traffic_portal/v1/Gruntfile.js
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-'use strict';
-
-module.exports = function (grunt) {
-    var os = require("os");
-    var globalConfig = require('./grunt/globalConfig');
-
-    // load time grunt - helps with optimizing build times
-    require('time-grunt')(grunt);
-
-    // load grunt task configurations
-    require('load-grunt-config')(grunt);
-
-    // default task - runs in dev mode
-    grunt.registerTask('default', ['dev']);
-
-    // dev task - when you type 'grunt dev' <-- builds unminified app and starts dev node.js server and watches for source file changes
-    grunt.registerTask('dev', [
-        'build-dev',
-        'express:dev',
-        'watch'
-    ]);
-
-    // dist task - when you type 'grunt dist' <-- builds minified app for distribution and generates node dependencies all wrapped up nicely in a /dist folder
-    grunt.registerTask('dist', [
-        'build',
-        'install-dependencies'
-    ]);
-
-    // build tasks
-    grunt.registerTask('build', [
-        'ngconstant:prod',
-        'clean',
-        'copy:dist',
-        'build-css',
-        'build-js',
-        'build-shared-libs'
-    ]);
-
-    grunt.registerTask('build-dev', [
-        'ngconstant:dev',
-        'clean',
-        'copy:dev',
-        'build-css-dev',
-        'build-js-dev',
-        'build-shared-libs-dev'
-    ]);
-
-    // css
-    grunt.registerTask('build-css', [
-        'compass:prod'
-    ]);
-
-    grunt.registerTask('build-css-dev', [
-        'compass:dev'
-    ]);
-
-    // js (custom)
-    grunt.registerTask('build-js', [
-        'html2js',
-        'browserify2:app-prod',
-        'browserify2:app-config'
-    ]);
-
-    grunt.registerTask('build-js-dev', [
-        'html2js',
-        'browserify2:app-dev',
-        'browserify2:app-config'
-    ]);
-
-    // js (libraries)
-    grunt.registerTask('build-shared-libs', [
-        'browserify2:shared-libs-prod'
-    ]);
-
-    grunt.registerTask('build-shared-libs-dev', [
-        'browserify2:shared-libs-dev'
-    ]);
-
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/README.md b/traffic_portal/v1/README.md
deleted file mode 100644
index 92a0fa98b..000000000
--- a/traffic_portal/v1/README.md
+++ /dev/null
@@ -1,5 +0,0 @@
-# Traffic Portal
-
-An AngularJS client served from a lightweight Node.js web server designed to consume the Traffic Ops 1.x API.
-
-Installation instructions found in traffic_portal/build directory.
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/AppController.js b/traffic_portal/v1/app/src/AppController.js
deleted file mode 100644
index b9e87d7fa..000000000
--- a/traffic_portal/v1/app/src/AppController.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var AppController = function() {};
-
-AppController.$inject = [];
-module.exports = AppController;
diff --git a/traffic_portal/v1/app/src/app.js b/traffic_portal/v1/app/src/app.js
deleted file mode 100755
index 9d7ac4a7f..000000000
--- a/traffic_portal/v1/app/src/app.js
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-'use strict';
-require('app-templates');
-
-var App = function($urlRouterProvider) {
-    $urlRouterProvider.otherwise('/');
-};
-
-App.$inject = ['$urlRouterProvider'];
-
-var trafficPortal = angular.module('trafficPortal', [
-        'config',
-        'ngAnimate',
-        'ngResource',
-        'ngSanitize',
-        'ngRoute',
-        'ui.router',
-        'ui.bootstrap',
-        'ui.bootstrap.datetimepicker',
-        'app.templates',
-        'angular-loading-bar',
-
-        // public modules
-        require('./modules/public').name,
-        require('./modules/public/home').name,
-        require('./modules/public/home/landing').name,
-        require('./modules/public/about').name,
-
-        // private modules
-        require('./modules/private').name,
-
-        // collateral
-        require('./modules/private/collateral').name,
-
-        // dashboard
-        require('./modules/private/dashboard').name,
-        require('./modules/private/dashboard/overview').name,
-
-        // delivery service
-        require('./modules/private/deliveryService').name,
-        require('./modules/private/deliveryService/new').name,
-        require('./modules/private/deliveryService/view').name,
-        require('./modules/private/deliveryService/view/overview').name,
-        require('./modules/private/deliveryService/view/overview/detail').name,
-
-        // delivery service charts
-        require('./modules/private/deliveryService/view/charts').name,
-        require('./modules/private/deliveryService/view/charts/bandwidthPerSecond').name,
-        require('./modules/private/deliveryService/view/charts/httpStatus').name,
-        require('./modules/private/deliveryService/view/charts/transactionsPerSecond').name,
-
-        // user
-        require('./modules/private/user').name,
-        require('./modules/private/user/edit').name,
-        require('./modules/private/user/register').name,
-        require('./modules/private/user/reset').name,
-
-        // common modules
-        require('./common/modules/cacheGroups').name,
-        require('./common/modules/chart/bandwidthPerSecond').name,
-        require('./common/modules/chart/capacity').name,
-        require('./common/modules/chart/dates').name,
-        require('./common/modules/chart/httpStatus').name,
-        require('./common/modules/chart/routing').name,
-        require('./common/modules/chart/transactionsPerSecond').name,
-        require('./common/modules/dates').name,
-        require('./common/modules/deliveryService/config/edit').name,
-        require('./common/modules/dialog/confirm').name,
-        require('./common/modules/dialog/reset').name,
-        require('./common/modules/footer').name,
-        require('./common/modules/header').name,
-        require('./common/modules/message').name,
-        require('./common/modules/release/version').name,
-        require('./common/modules/tools/purge').name,
-
-        require('./common/models').name,
-        require('./common/api').name,
-
-        //directives
-        require('./common/directives/enter').name,
-        require('./common/directives/formattedDate').name,
-        require('./common/directives/match').name,
-        require('./common/directives/rcSubmit').name,
-        require('./common/directives/rcVerifySet').name,
-        require('./common/directives/selectOnClick').name,
-
-        // services
-        require('./common/service/application').name,
-        require('./common/service/utils').name,
-        require('./common/service/utils/date').name,
-
-        //filters
-        require('./common/filters').name
-
-    ], App)
-
-        .controller('AppController', require('./AppController'))
-
-        .config(function($stateProvider, $logProvider, $controllerProvider) {
-            $controllerProvider.allowGlobals();
-            $logProvider.debugEnabled(true);
-            $stateProvider
-                .state('trafficPortal', {
-                    url: '/',
-                    abstract: true,
-                    templateUrl: 'common/templates/master.tpl.html',
-                    controller: 'AppController',
-                    resolve: {
-                        properties: function(portalService, propertiesModel) {
-                            return portalService.getProperties()
-                                .then(function(result) {
-                                    propertiesModel.setProperties(result);
-                                });
-                        }
-                    }
-                });
-        })
-
-        .run(function(applicationService) {
-            applicationService.startup();
-        })
-    ;
-
-trafficPortal.factory('authInterceptor', function ($q, $location, $timeout, dateUtils, messageModel, userModel) {
-    return {
-        responseError: function (rejection) {
-            var url = $location.url(),
-                alerts = [];
-
-            try { alerts = rejection.data.alerts; }
-            catch(e) {}
-
-            // 401, 403, 404 and 5xx errors handled globally; all others handled in fault handler
-            if (rejection.status === 401) {
-                userModel.resetUser();
-                if (url == '/' || $location.search().redirect) {
-                    messageModel.setMessages(alerts, false);
-                } else {
-                    $timeout(function () {
-                        messageModel.setMessages(alerts, true);
-                        // forward the to the home page with ?redirect=page/they/were/trying/to/reach
-                        $location.url('/').search({ redirect: encodeURIComponent(url) });
-                    }, 200);
-                }
-            } else if (rejection.status === 403 || rejection.status === 404) {
-                $timeout(function () {
-                    messageModel.setMessages(alerts, false);
-                }, 200);
-            } else if (rejection.status.toString().match(/^5\d[01356789]$/)) {
-                // matches 5xx EXCEPT for 502's and 504's which indicate a timeout and will be handled by each service call accordingly
-                $timeout(function () {
-                    messageModel.setMessages([ { level: 'error', text: rejection.status.toString() + ': ' + rejection.statusText + ' (' + dateUtils.dateFormat(new Date(), "UTC:dd/mmm/yyyy:HH:MM:ss o") + ')'  } ], false);
-                }, 200);
-            }
-
-            return $q.reject(rejection);
-        }
-    };
-});
-
-trafficPortal.config(function ($httpProvider) {
-    $httpProvider.interceptors.push('authInterceptor');
-});
-
-
diff --git a/traffic_portal/v1/app/src/assets/css/custom.css b/traffic_portal/v1/app/src/assets/css/custom.css
deleted file mode 100644
index c0c95c3b9..000000000
--- a/traffic_portal/v1/app/src/assets/css/custom.css
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-
-/*
-    This file is a placeholder for custom styles for Traffic Portal. To customize styles, create your own custom.css and copy it
-    to /resources/assets/css/ on your web server replacing the old, blank one. This file should remain blank in source control.
-    If the default bootstrap styles are sufficient, do nothing.
-*/
diff --git a/traffic_portal/v1/app/src/assets/images/favicon.png b/traffic_portal/v1/app/src/assets/images/favicon.png
deleted file mode 100755
index da095e976..000000000
Binary files a/traffic_portal/v1/app/src/assets/images/favicon.png and /dev/null differ
diff --git a/traffic_portal/v1/app/src/assets/js/.keep b/traffic_portal/v1/app/src/assets/js/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/traffic_portal/v1/app/src/assets/other/collateral.txt b/traffic_portal/v1/app/src/assets/other/collateral.txt
deleted file mode 100644
index f402ca715..000000000
--- a/traffic_portal/v1/app/src/assets/other/collateral.txt
+++ /dev/null
@@ -1 +0,0 @@
-This is a document you want to share with your traffic portal users.
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/AuthService.js b/traffic_portal/v1/app/src/common/api/AuthService.js
deleted file mode 100644
index c3fea82eb..000000000
--- a/traffic_portal/v1/app/src/common/api/AuthService.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var AuthService = function($http, $state, $location, $q, userModel, deliveryServicesModel, messageModel, ENV) {
-
-    this.login = function(username, password) {
-        userModel.resetUser();
-        deliveryServicesModel.resetDeliveryServices();
-        var promise = $http.post(
-                ENV.apiEndpoint['1.2'] + "user/login", { u: username, p: password })
-            .success(function(result) {
-                var redirect = decodeURIComponent($location.search().redirect);
-                if (redirect !== 'undefined') {
-                    $location.search('redirect', null); // remove the redirect query param
-                    $location.url(redirect);
-                } else {
-                    $location.url('/dashboard');
-                }
-                return result;
-            })
-            .error(function(fault) {
-                return fault;
-            });
-
-        return promise;
-    };
-
-    this.tokenLogin = function(token) {
-        userModel.resetUser();
-        deliveryServicesModel.resetDeliveryServices();
-        var deferred = $q.defer();
-        $http.post(
-                ENV.apiEndpoint['1.2'] + "user/login/token", { t: token })
-            .success(function(result) {
-                deferred.resolve(result);
-            })
-            .error(function(fault) {
-                deferred.reject(fault);
-            });
-
-        return deferred.promise;
-    };
-
-    this.logout = function() {
-        userModel.resetUser();
-        deliveryServicesModel.resetDeliveryServices();
-        var promise = $http.post(
-                ENV.apiEndpoint['1.2'] + "user/logout")
-            .success(function(result) {
-                if ($state.current.name == 'trafficPortal.public.home.landing') {
-                    messageModel.setMessages(result.alerts, false);
-                } else {
-                    messageModel.setMessages(result.alerts, true);
-                    $state.go('trafficPortal.public.home.landing');
-                }
-                return result;
-            })
-            .error(function(fault) {
-                return fault;
-            });
-
-        return promise;
-    };
-
-};
-
-AuthService.$inject = ['$http', '$state', '$location', '$q', 'userModel', 'deliveryServicesModel', 'messageModel', 'ENV'];
-module.exports = AuthService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/DeliveryServiceService.js b/traffic_portal/v1/app/src/common/api/DeliveryServiceService.js
deleted file mode 100644
index e2f29764b..000000000
--- a/traffic_portal/v1/app/src/common/api/DeliveryServiceService.js
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceService = function($http, $q, deliveryServicesModel, messageModel, propertiesModel, ENV) {
-
-    var capacityRequest,
-        routingMethodsRequest,
-        cacheGroupHealthRequest;
-
-    var displayTimoutError = function(options) {
-        var msg = (angular.isDefined(options.message)) ? options.message : 'Request timeout';
-        if (options.status.toString().match(/^5\d[24]$/)) {
-            // 502 or 504
-            messageModel.setMessages([ { level: 'error', text: msg } ], false);
-        }
-    };
-
-    this.getDeliveryServices = function() {
-        var promise = $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices.json")
-            .success(function(result) {
-                deliveryServicesModel.setDeliveryServices(result.response);
-                return result.response;
-            })
-            .error(function(fault) {
-            });
-
-        return promise;
-    };
-
-    this.getDeliveryService = function(deliveryServiceId) {
-        var deferred = $q.defer();
-        $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices/" + deliveryServiceId + ".json")
-            .success(function(result) {
-                deferred.resolve(result.response[0]);
-            })
-            .error(function(fault) {
-                deferred.resolve(null);
-            });
-
-        return deferred.promise;
-    };
-
-    this.getState = function(deliveryServiceId, ignoreLoadingBar) {
-        var deferred = $q.defer();
-        $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices/" + deliveryServiceId + "/state.json", { ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                deferred.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                displayTimoutError({ status: status });
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.getCapacity = function(deliveryServiceId, ignoreLoadingBar, showTimeoutError) {
-        if (capacityRequest) {
-            capacityRequest.reject();
-        }
-        capacityRequest = $q.defer();
-
-        $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices/" + deliveryServiceId + "/capacity.json",
-            { timeout: capacityRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                capacityRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showTimeoutError) displayTimoutError({ status: status });
-                capacityRequest.reject();
-            });
-
-        return capacityRequest.promise;
-    };
-
-
-    this.getRoutingMethods = function(deliveryServiceId, ignoreLoadingBar, showTimeoutError) {
-        if (routingMethodsRequest) {
-            routingMethodsRequest.reject();
-        }
-        routingMethodsRequest = $q.defer();
-
-        $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices/" + deliveryServiceId + "/routing.json",
-            { timeout: routingMethodsRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                routingMethodsRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showTimeoutError) displayTimoutError({ status: status });
-                routingMethodsRequest.reject();
-            });
-
-        return routingMethodsRequest.promise;
-    };
-
-    this.getCacheGroupHealth = function(deliveryServiceId, ignoreLoadingBar, showTimeoutError) {
-        if (cacheGroupHealthRequest) {
-            cacheGroupHealthRequest.reject();
-        }
-        cacheGroupHealthRequest = $q.defer();
-
-        $http.get(ENV.apiEndpoint['1.2'] + "deliveryservices/" + deliveryServiceId + "/health.json",
-            { timeout: cacheGroupHealthRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                cacheGroupHealthRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showTimeoutError) displayTimoutError({ status: status });
-                cacheGroupHealthRequest.reject();
-            });
-
-        return cacheGroupHealthRequest.promise;
-    };
-
-    this.getPurgeJobs = function(deliveryServiceId, ignoreLoadingBar) {
-        var deferred = $q.defer();
-        $http.get(ENV.apiEndpoint['1.2'] + "user/current/jobs.json?dsId=" + deliveryServiceId + "&keyword=PURGE", { ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                deferred.resolve(result.response);
-            })
-            .error(function(fault) {
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.getServers = function(deliveryServiceId, ignoreLoadingBar) {
-        var deferred = $q.defer();
-        $http.get(ENV.apiEndpoint['1.2'] + "servers.json?orderby=type&dsId=" + deliveryServiceId, { ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                deferred.resolve(result.response);
-            })
-            .error(function(fault) {
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.createDSRequest = function(dsData) {
-        var deferred = $q.defer();
-        $http.post(ENV.apiEndpoint['1.2'] + "deliveryservices/request", { emailTo: propertiesModel.properties.deliveryService.request.email, details: dsData } )
-            .success(function(result) {
-                if (angular.isDefined(result.alerts)) {
-                    messageModel.setMessages(result.alerts, false);
-                }
-                deferred.resolve(result);
-            })
-            .error(function(fault) {
-                if (angular.isDefined(fault.alerts)) {
-                    messageModel.setMessages(fault.alerts, false);
-                }
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-};
-
-DeliveryServiceService.$inject = ['$http', '$q', 'deliveryServicesModel', 'messageModel', 'propertiesModel', 'ENV'];
-module.exports = DeliveryServiceService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/HealthService.js b/traffic_portal/v1/app/src/common/api/HealthService.js
deleted file mode 100644
index a7948cd64..000000000
--- a/traffic_portal/v1/app/src/common/api/HealthService.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var HealthService = function($http, $q, ENV) {
-
-    var displayTimoutError = function(options) {
-        var msg = (angular.isDefined(options.message)) ? options.message : 'Request timeout. Failed to load cache groups.';
-        if (options.status.toString().match(/^5\d[24]$/)) {
-            // 502 or 504
-            messageModel.setMessages([ { level: 'error', text: msg } ], false);
-        }
-    };
-
-    this.getCacheGroupHealth = function(entityId, ignoreLoadingBar, showTimeoutError) {
-        var deferred = $q.defer();
-        $http.get(ENV.apiEndpoint['1.2'] + "cdns/health.json", { ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                deferred.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showTimeoutError) displayTimoutError({ status: status });
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-};
-
-HealthService.$inject = ['$http', '$q', 'ENV'];
-module.exports = HealthService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/PortalService.js b/traffic_portal/v1/app/src/common/api/PortalService.js
deleted file mode 100644
index baadf8edb..000000000
--- a/traffic_portal/v1/app/src/common/api/PortalService.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var PortalService = function($http, $q) {
-
-    this.getReleaseVersionInfo = function() {
-        var deferred = $q.defer();
-        $http.get('traffic_portal_release.json')
-            .success(function(result) {
-                deferred.resolve(result);
-            });
-
-        return deferred.promise;
-    };
-
-    this.getProperties = function() {
-        var deferred = $q.defer();
-        $http.get('traffic_portal_properties.json')
-            .success(function(result) {
-                deferred.resolve(result.properties);
-            });
-
-        return deferred.promise;
-    };
-
-};
-
-PortalService.$inject = ['$http', '$q'];
-module.exports = PortalService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/StatsService.js b/traffic_portal/v1/app/src/common/api/StatsService.js
deleted file mode 100644
index 98ab370da..000000000
--- a/traffic_portal/v1/app/src/common/api/StatsService.js
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var StatsService = function($http, $q, messageModel, ENV) {
-
-    var edgeBandwidthRequest,
-        edgeBandwidthSummaryRequest;
-
-    var edgeTransactionsRequest,
-        edgeTransactionsSummaryRequest;
-
-    var retentionPeriodInDays; // used as an influxdb override, leave null if no override
-
-    var displayTimoutError = function(options) {
-        var msg = (angular.isDefined(options.message)) ? options.message : 'Request timeout. Please narrow your chart window.';
-        if (options.status.toString().match(/^5\d[24]$/)) {
-            // 502 or 504
-            messageModel.setMessages([ { level: 'error', text: msg } ], false);
-        }
-    };
-
-    this.getEdgeBandwidthBatch = function(deliveryService, start, end, interval, exclude, ignoreLoadingBar, showError) {
-        var deferred = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'kbps', serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: exclude, retentionPeriodInDays: retentionPeriodInDays };
-
-        $http.get(url, { params: params, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                deferred.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.getEdgeBandwidth = function(deliveryService, start, end, interval, exclude, ignoreLoadingBar, showError) {
-        if (edgeBandwidthRequest) {
-            edgeBandwidthRequest.reject();
-        }
-        edgeBandwidthRequest = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'kbps', serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: exclude, retentionPeriodInDays: retentionPeriodInDays};
-
-        $http.get(url, { params: params, timeout: edgeBandwidthRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                edgeBandwidthRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                edgeBandwidthRequest.reject();
-            });
-
-        return edgeBandwidthRequest.promise;
-    };
-
-    this.getEdgeBandwidthSummary = function(deliveryService, start, end, interval, exclude, ignoreLoadingBar, showError) {
-        if (edgeBandwidthSummaryRequest) {
-            edgeBandwidthSummaryRequest.reject();
-        }
-        edgeBandwidthSummaryRequest = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'kbps', serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: exclude, retentionPeriodInDays: retentionPeriodInDays };
-
-        $http.get(url, { params: params, timeout: edgeBandwidthSummaryRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                edgeBandwidthSummaryRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                edgeBandwidthSummaryRequest.reject();
-            });
-
-        return edgeBandwidthSummaryRequest.promise;
-    };
-
-    this.getEdgeTransactions = function(deliveryService, start, end, interval, exclude, ignoreLoadingBar, showError) {
-        if (edgeTransactionsRequest) {
-            edgeTransactionsRequest.reject();
-        }
-        edgeTransactionsRequest = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'tps_total', serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: exclude, retentionPeriodInDays: retentionPeriodInDays };
-
-        $http.get(url, { params: params, timeout: edgeTransactionsRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                edgeTransactionsRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                edgeTransactionsRequest.reject();
-            });
-
-        return edgeTransactionsRequest.promise;
-    };
-
-    this.getEdgeTransactionsSummary = function(deliveryService, start, end, interval, ignoreLoadingBar, showError) {
-        if (edgeTransactionsSummaryRequest) {
-            edgeTransactionsSummaryRequest.reject();
-        }
-        edgeTransactionsSummaryRequest = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'tps_total', serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: 'series', retentionPeriodInDays: retentionPeriodInDays };
-
-        $http.get(url, { params: params, timeout: edgeTransactionsSummaryRequest.promise, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                edgeTransactionsSummaryRequest.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                edgeTransactionsSummaryRequest.reject();
-            });
-
-        return edgeTransactionsSummaryRequest.promise;
-    };
-
-    this.getEdgeTransactionsByStatusGroup = function(deliveryService, httpStatus, start, end, interval, exclude, ignoreLoadingBar, showError) {
-        var request = $q.defer();
-
-        var url = ENV.apiEndpoint['1.2'] + "deliveryservice_stats.json",
-            params = { deliveryServiceName: deliveryService.xmlId, metricType: 'tps_' + httpStatus, serverType: 'edge', startDate: start.seconds(00).format(), endDate: end.seconds(00).format(), interval: interval, exclude: exclude, retentionPeriodInDays: retentionPeriodInDays };
-
-        $http.get(url, { params: params, ignoreLoadingBar: ignoreLoadingBar })
-            .success(function(result) {
-                request.resolve(result.response);
-            })
-            .error(function(fault, status) {
-                if (showError) displayTimoutError({ status: status });
-                request.reject();
-            });
-
-        return request.promise;
-    };
-
-};
-
-StatsService.$inject = ['$http', '$q', 'messageModel', 'ENV'];
-module.exports = StatsService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/UserService.js b/traffic_portal/v1/app/src/common/api/UserService.js
deleted file mode 100755
index e393dfab3..000000000
--- a/traffic_portal/v1/app/src/common/api/UserService.js
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserService = function($http, $state, $q, $location, authService, userModel, messageModel, ENV) {
-
-    var service = this;
-
-    this.getCurrentUser = function() {
-        var token = $location.search().token,
-            deferred = $q.defer();
-
-        if (angular.isDefined(token)) {
-            $location.search('token', null); // remove the token query param
-            authService.tokenLogin(token)
-                .then(
-                    function(response) {
-                        service.getCurrentUser();
-                    }
-                );
-        } else {
-            $http.get(ENV.apiEndpoint['1.2'] + "user/current.json")
-                .success(function(result) {
-                    userModel.setUser(result.response);
-                    deferred.resolve(result.response);
-                })
-                .error(function(fault) {
-                    deferred.reject(fault);
-                });
-
-            return deferred.promise;
-        }
-    };
-
-    this.updateCurrentUser = function(userData) {
-        var deferred = $q.defer();
-        var user = _.omit(userData, 'loaded'); // let's pull the loaded key off of there
-        $http.post(ENV.apiEndpoint['1.2'] + "user/current/update", { user: user })
-            .success(function(result) {
-                userModel.setUser(userData);
-                messageModel.setMessages(result.alerts, false);
-                deferred.resolve(result);
-            })
-            .error(function(fault) {
-                if (angular.isDefined(fault.alerts)) {
-                    messageModel.setMessages(fault.alerts, false);
-                }
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.resetPassword = function(email) {
-        var deferred = $q.defer();
-        $http.post(
-                ENV.apiEndpoint['1.2'] + "user/reset_password", { email: email })
-            .success(function(result) {
-                messageModel.setMessages(result.alerts, false);
-                deferred.resolve(result);
-            })
-            .error(function(fault) {
-                if (angular.isDefined(fault.alerts)) {
-                    messageModel.setMessages(fault.alerts, false);
-                }
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-    this.createUserPurgeJob = function(jobParams) {
-        var deferred = $q.defer();
-        $http.post(ENV.apiEndpoint['1.2'] + "user/current/jobs", jobParams)
-            .success(function(result) {
-                messageModel.setMessages(result.alerts, false);
-                deferred.resolve(result);
-            })
-            .error(function(fault) {
-                if (angular.isDefined(fault.alerts)) {
-                    messageModel.setMessages(fault.alerts, false);
-                }
-                deferred.reject();
-            });
-
-        return deferred.promise;
-    };
-
-};
-
-UserService.$inject = ['$http', '$state', '$q', '$location', 'authService', 'userModel', 'messageModel', 'ENV'];
-module.exports = UserService;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/api/index.js b/traffic_portal/v1/app/src/common/api/index.js
deleted file mode 100755
index 8d8effea5..000000000
--- a/traffic_portal/v1/app/src/common/api/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.api', [])
-    .service('authService', require('./AuthService'))
-    .service('deliveryServiceService', require('./DeliveryServiceService'))
-    .service('healthService', require('./HealthService'))
-    .service('portalService', require('./PortalService'))
-    .service('statsService', require('./StatsService'))
-    .service('userService', require('./UserService'))
-;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/directives/enter/EnterDirective.js b/traffic_portal/v1/app/src/common/directives/enter/EnterDirective.js
deleted file mode 100644
index a2b49e3bd..000000000
--- a/traffic_portal/v1/app/src/common/directives/enter/EnterDirective.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var EnterDirective = function() {
-    return function (scope, element, attrs) {
-        element.bind("keydown keypress", function (event) {
-            if(event.which === 13) {
-                scope.$apply(function (){
-                    scope.$eval(attrs.enter);
-                });
-                event.preventDefault();
-            }
-        });
-    };
-};
-
-module.exports = EnterDirective;
diff --git a/traffic_portal/v1/app/src/common/directives/enter/index.js b/traffic_portal/v1/app/src/common/directives/enter/index.js
deleted file mode 100644
index d141390e8..000000000
--- a/traffic_portal/v1/app/src/common/directives/enter/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.enter',[])
-    .directive('enter', require('./EnterDirective'))
-;
diff --git a/traffic_portal/v1/app/src/common/directives/formattedDate/FormattedDateDirective.js b/traffic_portal/v1/app/src/common/directives/formattedDate/FormattedDateDirective.js
deleted file mode 100644
index 0d77baae1..000000000
--- a/traffic_portal/v1/app/src/common/directives/formattedDate/FormattedDateDirective.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var FormattedDateDirective = function(dateUtils) {
-    return {
-        link: function (scope, element, attrs, ctrl) {
-            ctrl.$formatters.unshift(function (modelValue) {
-                return dateUtils.dateFormat(modelValue, "mmm d yyyy h:MM tt (Z)")
-            });
-
-            ctrl.$parsers.unshift(function (viewValue) {
-                return dateUtils.dateFormat(modelValue, "mmm d yyyy h:MM tt (Z)")
-            });
-        },
-        restrict: 'A',
-        require: 'ngModel'
-    }
-};
-
-module.exports = FormattedDateDirective;
diff --git a/traffic_portal/v1/app/src/common/directives/formattedDate/index.js b/traffic_portal/v1/app/src/common/directives/formattedDate/index.js
deleted file mode 100644
index d2c25ac4b..000000000
--- a/traffic_portal/v1/app/src/common/directives/formattedDate/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.formattedDate',[])
-    .directive('formattedDate', require('./FormattedDateDirective'))
-;
diff --git a/traffic_portal/v1/app/src/common/directives/match/MatchDirective.js b/traffic_portal/v1/app/src/common/directives/match/MatchDirective.js
deleted file mode 100644
index 5b4aac756..000000000
--- a/traffic_portal/v1/app/src/common/directives/match/MatchDirective.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var MatchDirective = function() {
-    return {
-        require: 'ngModel',
-        link: function (scope, elem, attrs, ctrl) {
-            scope.$watch('[' + attrs.ngModel + ', ' + attrs.match + ']', function(value) {
-                var a = value[0] || '';
-                var b = value[1] || '';
-                ctrl.$setValidity('match', a === b);
-            }, true);
-        }
-    }
-};
-
-module.exports = MatchDirective;
diff --git a/traffic_portal/v1/app/src/common/directives/match/index.js b/traffic_portal/v1/app/src/common/directives/match/index.js
deleted file mode 100644
index 2abd1300e..000000000
--- a/traffic_portal/v1/app/src/common/directives/match/index.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.match',[])
-    .directive('match', require('./MatchDirective'))
-;
diff --git a/traffic_portal/v1/app/src/common/directives/rcSubmit/RCSubmitDirective.js b/traffic_portal/v1/app/src/common/directives/rcSubmit/RCSubmitDirective.js
deleted file mode 100644
index be42077c0..000000000
--- a/traffic_portal/v1/app/src/common/directives/rcSubmit/RCSubmitDirective.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var rcSubmitDirective = {
-    'rcSubmit': ['$parse', function ($parse) {
-        return {
-            restrict: 'A',
-            require: ['rcSubmit', '?form'],
-            controller: ['$scope', function ($scope) {
-
-                var formController = null;
-                var attemptHandlers = [];
-
-                this.attempted = false;
-
-                this.onAttempt = function(handler) {
-                    attemptHandlers.push(handler);
-                };
-
-                this.setAttempted = function() {
-                    this.attempted = true;
-
-                    angular.forEach(attemptHandlers, function (handler) {
-                        handler();
-                    });
-                };
-
-                this.setFormController = function(controller) {
-                    formController = controller;
-                };
-
-                this.needsAttention = function (fieldModelController) {
-                    if (!formController) return false;
-
-                    if (fieldModelController) {
-                        return fieldModelController.$invalid &&
-                            (fieldModelController.$dirty || this.attempted);
-                    } else {
-                        return formController && formController.$invalid &&
-                            (formController.$dirty || this.attempted);
-                    }
-                };
-            }],
-            compile: function(cElement, cAttributes, transclude) {
-                return {
-                    pre: function(scope, formElement, attributes, controllers) {
-
-                        var submitController = controllers[0];
-                        var formController = (controllers.length > 1) ? controllers[1] : null;
-
-                        submitController.setFormController(formController);
-
-                        scope.rc = scope.rc || {};
-                        scope.rc[attributes.name] = submitController;
-                    },
-                    post: function(scope, formElement, attributes, controllers) {
-
-                        var submitController = controllers[0];
-                        var formController = (controllers.length > 1) ? controllers[1] : null;
-                        var fn = $parse(attributes.rcSubmit);
-
-                        formElement.bind('submit', function () {
-                            submitController.setAttempted();
-                            if (!scope.$$phase) scope.$apply();
-
-                            if (!formController.$valid) return false;
-
-                            scope.$apply(function() {
-                                fn(scope, {$event:event});
-                            });
-                        });
-                    }
-                };
-            }
-        };
-    }]
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/directives/rcSubmit/index.js b/traffic_portal/v1/app/src/common/directives/rcSubmit/index.js
deleted file mode 100644
index a5ca41c23..000000000
--- a/traffic_portal/v1/app/src/common/directives/rcSubmit/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.rcSubmit',[])
-    .directive('rcSubmit', require('./RCSubmitDirective'));
diff --git a/traffic_portal/v1/app/src/common/directives/rcVerifySet/RCVerifySetDirective.js b/traffic_portal/v1/app/src/common/directives/rcVerifySet/RCVerifySetDirective.js
deleted file mode 100644
index ae9f86af3..000000000
--- a/traffic_portal/v1/app/src/common/directives/rcVerifySet/RCVerifySetDirective.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var rcVerifySetDirective = {
-    'rcVerifySet': function () {
-        return {
-            restrict: 'A',
-            require: ['^rcSubmit', 'ngModel'],
-            link: function (scope, element, attributes, controllers) {
-                var submitController = controllers[0];
-                var modelController = controllers[1];
-
-                submitController.onAttempt(function() {
-                    modelController.$setViewValue(element.val());
-                });
-            }
-        };
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/directives/rcVerifySet/index.js b/traffic_portal/v1/app/src/common/directives/rcVerifySet/index.js
deleted file mode 100644
index d9131f15f..000000000
--- a/traffic_portal/v1/app/src/common/directives/rcVerifySet/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.rcVerifySet',[])
-    .directive('rcVerifySet', require('./RCVerifySetDirective'));
diff --git a/traffic_portal/v1/app/src/common/directives/selectOnClick/SelectOnClickDirective.js b/traffic_portal/v1/app/src/common/directives/selectOnClick/SelectOnClickDirective.js
deleted file mode 100644
index fdd154b3b..000000000
--- a/traffic_portal/v1/app/src/common/directives/selectOnClick/SelectOnClickDirective.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var SelectOnClickDirective = function() {
-    return {
-        restrict: 'A',
-        link: function (scope, element, attrs) {
-            element.on('click', function () {
-                this.select();
-            });
-        }
-    };
-};
-
-module.exports = SelectOnClickDirective;
diff --git a/traffic_portal/v1/app/src/common/directives/selectOnClick/index.js b/traffic_portal/v1/app/src/common/directives/selectOnClick/index.js
deleted file mode 100644
index ad458307b..000000000
--- a/traffic_portal/v1/app/src/common/directives/selectOnClick/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.directives.selectOnClick',[])
-    .directive('selectOnClick', require('./SelectOnClickDirective'));
diff --git a/traffic_portal/v1/app/src/common/filters/DateRangeFilter.js b/traffic_portal/v1/app/src/common/filters/DateRangeFilter.js
deleted file mode 100644
index b5f9d1c53..000000000
--- a/traffic_portal/v1/app/src/common/filters/DateRangeFilter.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DateRangeFilter = function() {
-    return function(items, dateRange) {
-        if (_.isUndefined(dateRange)) return items;
-        var filteredItems = _.filter(items, function(item) {
-            return (
-                ( moment(item.date).isAfter(dateRange.start, 'day') || moment(item.date).isSame(dateRange.start, 'day') ) &&
-                ( moment(item.date).isBefore(dateRange.end, 'day') || moment(item.date).isSame(dateRange.end, 'day') )
-            );
-        });
-        return filteredItems;
-    };
-};
-
-DateRangeFilter.$inject = [];
-module.exports = DateRangeFilter;
diff --git a/traffic_portal/v1/app/src/common/filters/OffsetFilter.js b/traffic_portal/v1/app/src/common/filters/OffsetFilter.js
deleted file mode 100644
index 0e0e9c01f..000000000
--- a/traffic_portal/v1/app/src/common/filters/OffsetFilter.js
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var OffsetFilter = function() {
-    return function(input, start) {
-        if($.isArray(input)) {
-            start = parseInt(start, 10);
-            return input.slice(start);
-        }
-    };
-};
-
-OffsetFilter.$inject = [];
-module.exports = OffsetFilter;
diff --git a/traffic_portal/v1/app/src/common/filters/PartitionFilter.js b/traffic_portal/v1/app/src/common/filters/PartitionFilter.js
deleted file mode 100644
index d3f03aff8..000000000
--- a/traffic_portal/v1/app/src/common/filters/PartitionFilter.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var PartitionFilter = function() {
-    var cache = {};
-    return function(arr, size) {
-        if (!arr) { return; }
-        var newArr = [];
-        for (var i=0; i<arr.length; i+=size) {
-            newArr.push(arr.slice(i, i+size));
-        }
-        var arrString = JSON.stringify(arr);
-        var fromCache = cache[arrString+size];
-        if (JSON.stringify(fromCache) === JSON.stringify(newArr)) {
-            return fromCache;
-        }
-        cache[arrString+size] = newArr;
-        return newArr;
-    };
-};
-
-PartitionFilter.$inject = [];
-module.exports = PartitionFilter;
diff --git a/traffic_portal/v1/app/src/common/filters/PercentFilter.js b/traffic_portal/v1/app/src/common/filters/PercentFilter.js
deleted file mode 100644
index 3f871e379..000000000
--- a/traffic_portal/v1/app/src/common/filters/PercentFilter.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var PercentFilter = function() {
-    return function(input) {
-        input = parseFloat(input);
-        input *= 100;
-        if(input % 1 === 0) {
-            input = input.toFixed(0);
-        }
-        else {
-            input = input.toFixed(2);
-        }
-        return input + '%';
-    };
-};
-
-PercentFilter.$inject = [];
-module.exports = PercentFilter;
diff --git a/traffic_portal/v1/app/src/common/filters/UnitsFilter.js b/traffic_portal/v1/app/src/common/filters/UnitsFilter.js
deleted file mode 100644
index eff8a8d3c..000000000
--- a/traffic_portal/v1/app/src/common/filters/UnitsFilter.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UnitsFilter = function(numberUtils) {
-    return function(kilobits, prettify) {
-        var friendlyUnit = numberUtils.shrink(kilobits);
-        return (prettify) ? numberUtils.addCommas(friendlyUnit[0]) + ' ' + friendlyUnit[1] : friendlyUnit[0];
-    };
-};
-
-UnitsFilter.$inject = ['numberUtils'];
-module.exports = UnitsFilter;
diff --git a/traffic_portal/v1/app/src/common/filters/index.js b/traffic_portal/v1/app/src/common/filters/index.js
deleted file mode 100755
index 042237073..000000000
--- a/traffic_portal/v1/app/src/common/filters/index.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.filters', [])
-    //filters
-    .filter('dateRangeFilter', require('./DateRangeFilter'))
-    .filter('offsetFilter', require('./OffsetFilter'))
-    .filter('partitionFilter', require('./PartitionFilter'))
-    .filter('percentFilter', require('./PercentFilter'))
-    .filter('unitsFilter', require('./UnitsFilter'))
-;
diff --git a/traffic_portal/v1/app/src/common/models/AuthModel.js b/traffic_portal/v1/app/src/common/models/AuthModel.js
deleted file mode 100644
index ac61e9a15..000000000
--- a/traffic_portal/v1/app/src/common/models/AuthModel.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var AuthModel = function() {};
-
-AuthModel.$inject = [];
-module.exports = AuthModel;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/models/ChartModel.js b/traffic_portal/v1/app/src/common/models/ChartModel.js
deleted file mode 100644
index 6a7c74fb0..000000000
--- a/traffic_portal/v1/app/src/common/models/ChartModel.js
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartModel = function($rootScope, $location, $interval, messageModel) {
-
-    var chart,
-        model = this;
-
-    var autoRefreshInterval;
-
-    var increment = 1,
-        unit = 'm';
-
-    var createAutoRefreshInterval = function() {
-        killAutoRefreshInterval();
-        autoRefreshInterval = $interval(function() { rollDates() }, (increment*60*1000)); // every X minutes
-    };
-
-    var killAutoRefreshInterval = function() {
-        if (angular.isDefined(autoRefreshInterval)) {
-            $interval.cancel(autoRefreshInterval);
-            autoRefreshInterval = undefined;
-        }
-    };
-
-    var rollDates = function() {
-        var locationStart = $location.search().start,
-            locationEnd = $location.search().end;
-
-        model.chart.start = moment(model.chart.start).add(increment, unit);
-        model.chart.end = moment(model.chart.end).add(increment, unit);
-
-        if (locationStart) {
-            $location.search('start', model.chart.start.format());
-        }
-
-        if (locationEnd) {
-            $location.search('end', model.chart.end.format());
-        }
-
-        $rootScope.$broadcast('chartModel::dateRoll', { start: model.chart.start, end: model.chart.end });
-    };
-
-    this.resetChart = function() {
-        var start = $location.search().start,
-            end = $location.search().end;
-
-        chart = {};
-        chart.start = moment().subtract(1, 'd');
-        chart.end = moment();
-        chart.autoRefresh = true;
-
-        if (angular.isDefined(start) && angular.isDefined(end)) {
-            if (moment(start).isValid() && moment(end).isValid()) {
-                chart.start = moment(start);
-                chart.end =  moment(end);
-                chart.autoRefresh = false;
-            } else {
-                messageModel.setMessages([ { level: 'error', text: 'Invalid date format detected. Reverting to default.' } ], true);
-            }
-        }
-
-        if (chart.autoRefresh) {
-            createAutoRefreshInterval();
-        } else {
-            killAutoRefreshInterval();
-        }
-
-        var rangeParams = model.calculateRange(chart.start, chart.end);
-        chart.range = chart.end.diff(chart.start, rangeParams.interval) + rangeParams.abbrev;
-        if (!rangeParams.exact) {
-            chart.range = '~' + chart.range;
-        }
-
-        this.chart = chart;
-    };
-
-    this.changeDates = function(start, end) {
-        $location.search('start', start.format());
-        $location.search('end', end.format());
-        $rootScope.$broadcast('chartModel::dateChange', { start: start, end: end });
-    };
-
-    this.calculateRange = function(start, end) {
-        // if greater than 1d, use day, if greater than 1hr, use hr, else minute
-        var rangeParams = {};
-        if (end.diff(start, 'days', true) >= 1) {
-            rangeParams = { interval: 'days', abbrev: 'd', exact: (end.diff(start, 'days', true) % 1) == 0 };
-        } else if (end.diff(start, 'hours', true) >= 1) {
-            rangeParams = { interval: 'hours', abbrev: 'h', exact: (end.diff(start, 'hours', true) % 1) == 0 };
-        } else {
-            rangeParams = { interval: 'minutes', abbrev: 'm', exact: (end.diff(start, 'minutes', true) % 1) == 0 };
-        }
-        return rangeParams;
-    };
-
-    $rootScope.$watch(
-        function() { return model.chart.autoRefresh; },
-        function(newValue, oldValue) {
-            if (newValue !== oldValue) {
-                if (newValue) {
-                    createAutoRefreshInterval();
-                } else {
-                    killAutoRefreshInterval();
-                }
-            }
-        }
-    );
-
-    $rootScope.$watch('online', function(newStatus) {
-        if (newStatus === false) {
-            model.chart.autoRefresh = false;
-        }
-    });
-
-    var init = function () {
-        model.resetChart();
-    };
-    init();
-
-};
-
-ChartModel.$inject = ['$rootScope', '$location', '$interval', 'messageModel'];
-module.exports = ChartModel;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/models/DeliveryServicesModel.js b/traffic_portal/v1/app/src/common/models/DeliveryServicesModel.js
deleted file mode 100644
index 260541fe7..000000000
--- a/traffic_portal/v1/app/src/common/models/DeliveryServicesModel.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServicesModel = function() {
-
-    var model = this;
-
-    var deliveryServices = [];
-    var loaded = false;
-
-    this.deliveryServices = deliveryServices;
-    this.loaded = loaded;
-
-    this.getDeliveryService = function(dsId) {
-        return _.find(model.deliveryServices, function(ds){ return parseInt(ds.id) == parseInt(dsId) });
-    };
-
-    this.setDeliveryServices = function(deliveryServicesData) {
-        this.deliveryServices = deliveryServicesData;
-        this.loaded = true;
-    };
-
-    this.resetDeliveryServices = function() {
-        this.deliveryServices = [];
-        this.loaded = false;
-    };
-
-};
-
-DeliveryServicesModel.$inject = [];
-module.exports = DeliveryServicesModel;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/models/MessageModel.js b/traffic_portal/v1/app/src/common/models/MessageModel.js
deleted file mode 100644
index ca0d00750..000000000
--- a/traffic_portal/v1/app/src/common/models/MessageModel.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var MessageModel = function($rootScope) {
-
-    var model = this;
-    var queue = [];
-
-    var messages = {};
-    messages.loaded = false;
-    messages.content = [];
-
-    this.messages = messages;
-
-    this.setMessages = function(messagesArray, delay) {
-        // delay should be true if a redirect follows...
-        if (!angular.isArray(messagesArray)) return;
-        var messages = {};
-        messages.loaded = true;
-        messages.content = messagesArray;
-        if (delay) {
-            queue[0] = messages; // queue up messages to display after a location change
-        } else {
-            model.messages = messages; // show the messages asap
-            queue = []; // clear the queue as messages will be shown immediately
-        }
-    };
-
-    this.resetMessages = function() {
-        messages = {};
-        messages.loaded = false;
-        messages.content = [];
-
-        this.messages = messages;
-    };
-
-    this.removeMessage = function(message) {
-        model.messages.content = _.without(model.messages.content, message);
-    };
-
-    $rootScope.$on("$locationChangeStart", function() {
-        model.resetMessages();
-    });
-
-    $rootScope.$on("$locationChangeSuccess", function() {
-        model.messages = queue.shift() || {};
-    });
-
-};
-
-MessageModel.$inject = ['$rootScope'];
-module.exports = MessageModel;
diff --git a/traffic_portal/v1/app/src/common/models/PropertiesModel.js b/traffic_portal/v1/app/src/common/models/PropertiesModel.js
deleted file mode 100644
index 32c8a734a..000000000
--- a/traffic_portal/v1/app/src/common/models/PropertiesModel.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var PropertiesModel = function() {
-
-    this.properties = {};
-    this.loaded = false;
-
-    this.setProperties = function(properties) {
-        this.properties = properties;
-        this.loaded = true;
-    };
-
-};
-
-PropertiesModel.$inject = [];
-module.exports = PropertiesModel;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/models/UserModel.js b/traffic_portal/v1/app/src/common/models/UserModel.js
deleted file mode 100755
index 07f39c232..000000000
--- a/traffic_portal/v1/app/src/common/models/UserModel.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserModel = function($rootScope, messageModel) {
-
-    var user = {};
-    user.loaded = false;
-    this.user = user;
-
-    this.setUser = function(userData) {
-        user.loaded = true;
-        user = angular.extend(user, userData);
-        if (user.newUser) {
-            user.username = ''; // new users were given a temp username that needs to be ditched
-        }
-        if (!user.localUser) {
-            messageModel.setMessages([ { level: 'success', text: 'Logged in as read-only user.' } ], false);
-        }
-        $rootScope.$broadcast('userModel::userUpdated', user);
-    };
-
-    this.resetUser = function() {
-        user = {};
-        user.loaded = false;
-        this.user = user;
-        $rootScope.$broadcast('userModel::userUpdated', user);
-    };
-
-};
-
-UserModel.$inject = ['$rootScope', 'messageModel'];
-module.exports = UserModel;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/models/index.js b/traffic_portal/v1/app/src/common/models/index.js
deleted file mode 100755
index 873c311e1..000000000
--- a/traffic_portal/v1/app/src/common/models/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.models', [])
-    .service('authModel', require('./AuthModel'))
-    .service('chartModel', require('./ChartModel'))
-    .service('deliveryServicesModel', require('./DeliveryServicesModel'))
-    .service('messageModel', require('./MessageModel'))
-    .service('propertiesModel', require('./PropertiesModel'))
-    .service('userModel', require('./UserModel'));
diff --git a/traffic_portal/v1/app/src/common/modules/cacheGroups/CacheGroupsController.js b/traffic_portal/v1/app/src/common/modules/cacheGroups/CacheGroupsController.js
deleted file mode 100644
index 93e94fa46..000000000
--- a/traffic_portal/v1/app/src/common/modules/cacheGroups/CacheGroupsController.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var CacheGroupsController = function(entityId, service, showDownload, $scope, $rootScope, $interval, jsonUtils, messageModel) {
-
-    var locationsInterval;
-
-    var getLocations = function(showTimeoutError) {
-        if (!$rootScope.online) return;
-
-        var ignoreLoadingBar = true;
-        service.getCacheGroupHealth(entityId, ignoreLoadingBar, showTimeoutError)
-            .then(
-            function(response) {
-                $scope.locationHealth = response;
-            },
-            function(fault) {
-                // do nothing
-            }).finally(function() {
-                $scope.loaded = true;
-            });
-    };
-
-    $scope.loaded = false;
-
-    $scope.showDownload = showDownload;
-
-    $scope.locationHealth = {
-        totalOnline: 0,
-        totalOffline: 0,
-        locations: []
-    };
-
-    // pagination
-    $scope.currentLocationPage = 1;
-    $scope.locationsPerPage = 10;
-
-    $scope.onlinePercent = function(location) {
-        return location.online / (location.online + location.offline);
-    };
-
-    $scope.downloadCaches = function() {
-        service.getServers(entityId, false)
-            .then(
-                function(response) {
-                    jsonUtils.convertToCSV(response, 'Caches', ['hostName', 'domainName', 'type', 'cachegroup', 'ipAddress', 'ip6Address']);
-                },
-                function(fault) {
-                    messageModel.setMessages([ { level: 'error', text: 'Failed to download cache servers.' } ], false);
-                }
-            );
-    };
-
-    $scope.$on("$destroy", function() {
-        if (angular.isDefined(locationsInterval)) {
-            $interval.cancel(locationsInterval);
-            locationsInterval = undefined;
-        }
-    });
-
-    var init = function () {
-        getLocations(true);
-        locationsInterval = $interval(function() { getLocations(false) }, 60 * 1000);
-    };
-    init();
-};
-
-CacheGroupsController.$inject = ['entityId', 'service', 'showDownload', '$scope', '$rootScope', '$interval', 'jsonUtils', 'messageModel'];
-module.exports = CacheGroupsController;
diff --git a/traffic_portal/v1/app/src/common/modules/cacheGroups/_cacheGroups.scss b/traffic_portal/v1/app/src/common/modules/cacheGroups/_cacheGroups.scss
deleted file mode 100644
index 01c8d519a..000000000
--- a/traffic_portal/v1/app/src/common/modules/cacheGroups/_cacheGroups.scss
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#cache-groups-outer-container {
-
-  #cacheGroupsOverallHealth {
-
-    position: relative;
-
-    .download-caches-file {
-      position: absolute;
-      top: 10px;
-      right: 20px;
-    }
-
-  }
-
-  #cacheGroupsContainer {
-    max-height: 452px;
-    margin-bottom: 0;
-
-    .list-group-item {
-      background-color: transparent;
-    }
-
-    .cache-group-health {
-      height: 45px;
-
-      .cache-groups-table {
-        margin-top: -10px;
-        border-style: none;
-
-        td {
-          border-top: none !important;
-          padding: 12px 8px !important;
-        }
-
-      }
-
-    }
-
-  }
-
-  .cache-groups-pagination {
-    margin: 0 0 10px 0;
-    float: left;
-  }
-
-  .cache-group-search-form {
-    float: right;
-    width: 250px;
-    margin-bottom: 10px;
-  }
-
-}
-
-#cacheGroupsLoadingContainer {
-  height: 555px;
-  background-color: transparent;
-}
diff --git a/traffic_portal/v1/app/src/common/modules/cacheGroups/cacheGroups.tpl.html b/traffic_portal/v1/app/src/common/modules/cacheGroups/cacheGroups.tpl.html
deleted file mode 100644
index 0db1915f8..000000000
--- a/traffic_portal/v1/app/src/common/modules/cacheGroups/cacheGroups.tpl.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="cache-groups-outer-container" ng-show="loaded">
-    <div id="cacheGroupsOverallHealth">
-        <h4 class="cache-groups-online">Cache Groups <small>{{locationHealth.totalOnline/(locationHealth.totalOnline + locationHealth.totalOffline) | percentFilter}} online</small></h4>
-        <i class="download-caches-file fa fa-download fa-lg" title="Download Cache Servers" ng-click="downloadCaches()" ng-show="showDownload"></i>
-    </div>
-    <div id="cacheGroupsContainer">
-        <div class="alert alert-info" ng-show="(locationHealth.cachegroups | filter:search:strict).length == 0">
-            No matching cache groups
-        </div>
-        <div class="list-group">
-            <a class="cache-group-health list-group-item" ng-repeat="location in locationHealth.cachegroups | orderBy:[onlinePercent, 'name'] | filter:search:strict | offsetFilter:(currentLocationPage-1)*locationsPerPage | limitTo:locationsPerPage">
-                <div class="row">
-                    <table class="cache-groups-table table">
-                        <tbody>
-                        <tr>
-                            <td class="col-lg-4 col-md-4 col-sm-4">{{location.name}}</td>
-                            <td class="col-lg-4 col-md-4 col-sm-4">{{location.online/(location.online + location.offline) | percentFilter}} Online</td>
-                            <td class="col-lg-4 col-md-4 col-sm-4">{{location.online}} Servers Online | {{location.offline}} Servers Offline</td>
-                        </tr>
-                        </tbody>
-                    </table>
-                </div>
-            </a>
-        </div>
-    </div>
-    <div>
-        <div ng-show="(locationHealth.cachegroups | filter:search:strict).length > 0">
-            <uib-pagination class="cache-groups-pagination pagination-md" boundary-links="true" max-size="2" total-items="(locationHealth.cachegroups | filter:search:strict).length" items-per-page="locationsPerPage" ng-model="currentLocationPage" previous-text="&lsaquo;" next-text="&rsaquo;" first-text="&laquo;" last-text="&raquo;"></uib-pagination>
-        </div>
-        <div class="input-group cache-group-search-form">
-            <input type="text" class="filter-input form-control" placeholder="Filter cache groups..." ng-model="search.name">
-            <span class="filter-input-group-btn input-group-btn">
-                <button class="btn btn-default" type="button"><i class="fa fa-search"></i></button>
-            </span>
-        </div>
-    </div>
-</div>
-<div id="cacheGroupsLoadingContainer" class="jumbotron loading-text" ng-show="!loaded">Loading cache groups...</div>
diff --git a/traffic_portal/v1/app/src/common/modules/cacheGroups/index.js b/traffic_portal/v1/app/src/common/modules/cacheGroups/index.js
deleted file mode 100644
index 7c15e7588..000000000
--- a/traffic_portal/v1/app/src/common/modules/cacheGroups/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.cacheGroups', [])
-    .controller('CacheGroupsController', require('./CacheGroupsController'));
diff --git a/traffic_portal/v1/app/src/common/modules/chart/_chart.scss b/traffic_portal/v1/app/src/common/modules/chart/_chart.scss
deleted file mode 100644
index 31e828446..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/_chart.scss
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-.metrics {
-  .header {
-    padding: 10px;
-    margin-top: 20px;
-    margin-bottom: 0px;
-  }
-  .summary-hr {
-    margin-top: 5px;
-    margin-bottom: 5px;
-  }
-}
-
-.show-summary-header {
-  height: 10px;
-}
-
-.show-summary {
-  float: right;
-}
-
-.hide-summary {
-  position: absolute;
-  top: 35px;
-  right: 25px;
-}
-
-.summary-metrics {
-  font-size: 13px;
-  padding: 10px;
-
-  table {
-    margin-bottom: 0px;
-  }
-
-  .total {
-    text-transform: uppercase;
-  }
-
-}
-
-.nav > li > a:hover, .nav > li > a:focus {
-  text-decoration: underline;
-  background-color: transparent;
-}
-
-.nav-pills > li.header {
-  text-align: center;
-  color: #fff;
-  background-color: #428bca;
-  padding: 22px;
-  font-size: 16px;
-}
-
-.nav-pills > li > a {
-  border-radius: 0px;
-}
-
-.nav-stacked > li {
-  margin-top: 0px !important;
-  margin-left: 0;
-  border-bottom:1px solid #A8A8A8;
-  border-left:1px solid #A8A8A8;
-  border-right:1px solid #A8A8A8;
-  &:first-child {
-    border-top:1px solid #A8A8A8;
-    border-bottom:2px solid #A8A8A8;
-  }
-}
-
-.selected-chart {
-  border-right:4px solid #428bca;
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/ChartBandwidthPerSecondController.js b/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/ChartBandwidthPerSecondController.js
deleted file mode 100644
index f5221a946..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/ChartBandwidthPerSecondController.js
+++ /dev/null
@@ -1,224 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartBandwidthPerSecondController = function(entity, showSummary, $rootScope, $scope, $uibModal, $q, $timeout, $filter, dateUtils, numberUtils, messageModel, propertiesModel, statsService) {
-
-    $scope.chartName = propertiesModel.properties.charts.bandwidthPerSecond.name;
-
-    var chartDatesChanged = false,
-        chartStart,
-        chartEnd;
-
-    var summaryStart,
-        summaryEnd;
-
-    var chartRangeTimer;
-
-    var loadBandwidth = function(start, end) {
-        if (!entity || !chartDatesChanged) return;
-        chartDatesChanged = false;
-        $scope.bandwidthChartDates = {
-            start: start,
-            end: end
-        };
-        getBandwidth(start, end);
-        $scope.refreshBpsSummaryMetrics(0);
-    };
-
-    var getBandwidth = function(start, end) {
-
-        var exclude = '',
-            ignoreLoadingBar = true,
-            showError = true,
-            promises = [];
-
-        // edge bandwidth
-        promises.push(statsService.getEdgeBandwidth(entity, start, end, $scope.bandwidthChartInterval, exclude, ignoreLoadingBar, showError));
-
-        $q.all(promises)
-            .then(
-                function(responses) {
-                    // set chart data
-                    var edgeBandwidthChartData = buildEdgeBandwidthChartData(responses[0], start, false);
-
-                    $timeout(function () {
-                        buildBandwidthChart(edgeBandwidthChartData);
-                    }, 100);
-                },
-                function(fault) {
-                    buildBandwidthChart([]); // build an empty chart
-                }).finally(function() {
-                    $scope.bandwidthLoaded = true;
-                });
-    };
-
-    var buildEdgeBandwidthChartData = function(result, start, incremental) {
-        var normalizedChartData = [],
-            summary = result.summary,
-            series = result.series;
-
-        if (angular.isDefined(series)) {
-            if (!incremental && angular.isDefined(summary)) {
-                $scope.unitSize = numberUtils.shrink(summary.average)[1];
-            }
-            _.each(series.values, function(seriesItem) {
-                if (moment(seriesItem[0]).isSame(start) || moment(seriesItem[0]).isAfter(start)) {
-                    if (_.isNumber(seriesItem[1]) || !incremental) {
-                        normalizedChartData.push([ moment(seriesItem[0]).valueOf(), numberUtils.convertTo(seriesItem[1], $scope.unitSize) ]); // converts data to appropriate unit
-                    }
-                }
-            });
-        }
-
-        return normalizedChartData;
-    };
-
-    var buildBandwidthChart = function(edgeBandwidthChartData) {
-
-        var options = {
-            xaxis: {
-                mode: "time",
-                timezone: "browser",
-                twelveHourClock: true
-            },
-            yaxes: [
-                {
-                    position: "left",
-                    axisLabel: $scope.unitSize + "ps",
-                    axisLabelUseCanvas: true,
-                    axisLabelFontSizePixels: 12,
-                    axisLabelFontFamily: 'Verdana, Arial',
-                    axisLabelPadding: 3
-                }
-            ],
-            grid: { hoverable: true },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    var tooltipString = dateUtils.dateFormat(xval, "ddd mmm d yyyy h:MM:ss tt (Z)") + '<br>';
-                    tooltipString += '<span>' + label + ': ' + $filter('number')(yval, 2) + ' ' + $scope.unitSize + 'ps</span><br>'
-                    return tooltipString;
-                }
-            }
-        };
-
-        $.plot($("#bps-chart"), [ { label: "Edge", data: edgeBandwidthChartData } ], options);
-
-    };
-
-    var updateChartDates = function(start, end) {
-        $scope.dateRangeText = dateUtils.dateFormat(start.toDate(), "ddd mmm d yyyy h:MM tt (Z)") + ' to ' + dateUtils.dateFormat(end.toDate(), "ddd mmm d yyyy h:MM tt (Z)");
-    };
-
-    var getSummaryMetrics = function(start, end) {
-
-        var exclude = 'series',
-            ignoreLoadingBar = true,
-            showError = false,
-            promises = [];
-
-        // edge summary
-        promises.push(statsService.getEdgeBandwidthSummary(entity, start, end, $scope.bandwidthChartInterval, exclude, ignoreLoadingBar, showError));
-
-        $q.all(promises)
-            .then(
-                function(responses) {
-                    var edgeSummary = responses[0].summary;
-                    if (angular.isDefined(edgeSummary)) {
-                        $scope.bpsEdgeSummary = edgeSummary;
-                    } else {
-                        $scope.resetEdgeSummary();
-                    }
-                },
-                function(fault) {
-                    $scope.resetEdgeSummary();
-                }).finally(function() {
-                    $scope.updatingBpsSummaryMetrics = false;
-                });
-    };
-
-    var onDateChange = function(args) {
-        chartDatesChanged = true;
-        chartStart = args.start;
-        chartEnd = args.end;
-        summaryStart = args.start;
-        summaryEnd = args.end;
-        updateChartDates(chartStart, chartEnd);
-        loadBandwidth(chartStart, chartEnd);
-    };
-
-    $scope.showSummary = showSummary;
-
-    $scope.updatingBpsSummaryMetrics = false;
-
-    $scope.bandwidthLoaded = false;
-
-    $scope.bandwidthChartInterval = '60s';
-
-    $scope.unitSize = 'Kb';
-
-    $scope.ratio = numberUtils.ratio;
-
-    $scope.resetEdgeSummary = function() {
-        $timeout(function(){
-            $scope.bpsEdgeSummary = {
-                max: 0,
-                min: 0,
-                totalBytes: 0,
-                average: 0,
-                fifthPercentile: 0,
-                ninetyFifthPercentile: 0,
-                ninetyEighthPercentile: 0
-            };
-        });
-    };
-    $scope.resetEdgeSummary();
-
-    $scope.refreshBpsSummaryMetrics = function(delay) {
-        if (!$scope.showSummary) return; // don't bother. summary hidden...
-
-        $timeout(function() { $scope.updatingBpsSummaryMetrics = true; });
-        if (chartRangeTimer) {
-            $timeout.cancel(chartRangeTimer);
-        }
-        chartRangeTimer = $timeout(function () {
-            getSummaryMetrics(summaryStart, summaryEnd);
-        }, delay);
-    };
-
-    $scope.hideSummaryMetrics = function() {
-        $scope.showSummary = false;
-        $scope.resetEdgeSummary();
-    };
-
-    $scope.showSummaryMetrics = function() {
-        $scope.showSummary = true;
-        $scope.refreshBpsSummaryMetrics(0);
-    };
-
-    $scope.$on('chartModel::dateChange', function(event, args) {
-        onDateChange(args);
-    });
-
-    $scope.$on('chartModel::dateRoll', function(event, args) {
-        onDateChange(args);
-    });
-
-};
-
-ChartBandwidthPerSecondController.$inject = ['entity', 'showSummary', '$rootScope', '$scope', '$uibModal', '$q', '$timeout', '$filter', 'dateUtils', 'numberUtils', 'messageModel', 'propertiesModel', 'statsService'];
-module.exports = ChartBandwidthPerSecondController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/_chart.bandwidthPerSecond.scss b/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/_chart.bandwidthPerSecond.scss
deleted file mode 100644
index 6eddf96c0..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/_chart.bandwidthPerSecond.scss
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#bpsChartContainer {
-  position: relative;
-  text-align: center;
-  background-color: transparent;
-  padding: 30px 60px;
-
-  #bps-loading, #bps-chart {
-    height: 400px;
-    min-width: 310px;
-  }
-
-  #bps-loading {
-    padding-top: 40px;
-  }
-
-  #bps-metrics {
-    .header {
-      margin-bottom: 0;
-    }
-  }
-
-}
-
diff --git a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond.tpl.html
deleted file mode 100644
index 9848a81bf..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond.tpl.html
+++ /dev/null
@@ -1,66 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="chart-container">
-    <div id="bpsChartContainer">
-        <h6>{{chartName}} ({{unitSize}}ps)</h6>
-        <div id="bps-loading" ng-show="!bandwidthLoaded">
-            <div class="loading-text">Loading bandwidth...</div>
-        </div>
-        <div id="bps-chart" ng-show="bandwidthLoaded"></div>
-    </div>
-    <h6 ng-show="!showSummary" class="show-summary-header"><small class="show-summary">[ <a ng-click="showSummaryMetrics()">show summary metrics</a> ]</small></h6>
-    <div id="bps-metrics" ng-show="showSummary" class="row metrics">
-        <div class="col-sm-12 col-md-12">
-            <h6 class="header">
-                <div>{{chartName}} Summary Metrics
-                    <small ng-show="updatingBpsSummaryMetrics">[ calculating <i class="fa fa-spin fa-spinner fa-fw"></i> ]</small>
-                    <small ng-show="!updatingBpsSummaryMetrics" class="summary-refresh">[ <a ng-click="refreshBpsSummaryMetrics(0)">refresh</a> ]</small>
-                    <small class="hide-summary">[ <a ng-click="hideSummaryMetrics()">hide summary metrics</a> ]</small>
-                </div>
-                <hr class="summary-hr">
-                <div><small>{{dateRangeText}}</small></div>
-            </h6>
-            <div class="summary-metrics">
-                <table class="table table-condensed">
-                    <thead>
-                    <tr>
-                        <th>Server Type</th>
-                        <th>Delivered</th>
-                        <th>95th percentile</th>
-                        <th>Max</th>
-                        <th>Min</th>
-                        <th>Avg</th>
-                        <th>Peak-to-Avg</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        <td>Edge</td>
-                        <td class="total">{{bpsEdgeSummary.totalBytes | unitsFilter:true}}</td>
-                        <td>{{bpsEdgeSummary.ninetyFifthPercentile | unitsFilter:true}}ps</td>
-                        <td>{{bpsEdgeSummary.max | unitsFilter:true}}ps</td>
-                        <td>{{bpsEdgeSummary.min | unitsFilter:true}}ps</td>
-                        <td>{{bpsEdgeSummary.average | unitsFilter:true}}ps</td>
-                        <td>{{ratio(bpsEdgeSummary.max, bpsEdgeSummary.average)}}</td>
-                    </tr>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/index.js b/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/index.js
deleted file mode 100644
index 2ced45ddd..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/bandwidthPerSecond/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.bandwidthPerSecond', [])
-    .controller('ChartBandwidthPerSecondController', require('./ChartBandwidthPerSecondController'));
diff --git a/traffic_portal/v1/app/src/common/modules/chart/capacity/ChartCapacityController.js b/traffic_portal/v1/app/src/common/modules/chart/capacity/ChartCapacityController.js
deleted file mode 100644
index deb664f1c..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/capacity/ChartCapacityController.js
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartCapacityController = function(entityId, service, $rootScope, $scope, $interval, $filter) {
-
-    var capacityInterval,
-        capacityLoaded = false;
-
-    var getCapacity = function(showTimeoutError) {
-        if (!$rootScope.online) return;
-
-        var ignoreLoadingBar = true;
-        service.getCapacity(entityId, ignoreLoadingBar, showTimeoutError)
-            .then(
-            function(response) {
-                capacityLoaded = true;
-                var maintenancePercent = Math.round(response.maintenancePercent * 100) / 100,
-                    unavailablePercent = Math.round(response.unavailablePercent * 100) / 100,
-                    availablePercent = Math.round(response.availablePercent * 100) / 100,
-                    utilizedPercent = Math.round(response.utilizedPercent * 100) / 100;
-
-                var data = [];
-
-                if (maintenancePercent > 0) {
-                    data.push({
-                        label: "Maintenance",
-                        color: '#cccccc',
-                        data: [ [ maintenancePercent, 1 ] ]
-                    });
-                }
-                if (unavailablePercent > 0) {
-                    data.push({
-                        label: "Down",
-                        color: '#a94442',
-                        data: [ [ unavailablePercent, 1 ] ]
-                    });
-                }
-                if (availablePercent > 0) {
-                    data.push({
-                        label: "Available",
-                        color: '#91ca32',
-                        data: [ [ availablePercent, 1 ] ]
-                    });
-                }
-                if (utilizedPercent > 0) {
-                    data.push({
-                        label: "Utilized",
-                        color: '#357ebd',
-                        data: [ [ utilizedPercent, 1 ] ]
-                    });
-                }
-
-                buildCapacityChart(data);
-            });
-    };
-
-    var buildCapacityChart = function(data) {
-
-        var options = {
-            series: {
-                stack: true,
-                lines: {show: false, steps: false },
-                bars: {
-                    show: true,
-                    horizontal: true,
-                    barWidth: 0.9,
-                    align: 'center'
-                }
-            },
-            grid: {
-                borderWidth: 0,
-                hoverable: true
-            },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    return '<span>' + label + ': ' + $filter('number')(xval, 2) + '%</span><br>';
-                }
-            },
-            yaxis: {
-                ticks: [[ 1,'%' ]]
-            }
-        };
-
-        $.plot($("#capacity-chart"), data, options);
-    };
-
-    angular.element(document).ready(function () {
-        getCapacity(true);
-        capacityInterval = $interval(function() { getCapacity(false) }, 5 * 60 * 1000); // every 5 mins capacity will refresh
-    });
-
-    $scope.$on("$destroy", function() {
-        if (angular.isDefined(capacityInterval)) {
-            $interval.cancel(capacityInterval);
-            capacityInterval = undefined;
-        }
-    });
-
-};
-
-ChartCapacityController.$inject = ['entityId', 'service', '$rootScope', '$scope', '$interval', '$filter'];
-module.exports = ChartCapacityController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/capacity/_chart.capacity.scss b/traffic_portal/v1/app/src/common/modules/chart/capacity/_chart.capacity.scss
deleted file mode 100644
index 5fee0865c..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/capacity/_chart.capacity.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#capacityChartContainer {
-  text-align: center;
-}
-
-#capacity-chart {
-  height: 200px;
-  width: 100%;
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/capacity/chart.capacity.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/capacity/chart.capacity.tpl.html
deleted file mode 100644
index b5b1ca71f..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/capacity/chart.capacity.tpl.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="capacityChartContainer">
-    <h6>Overall Capacity %</h6>
-    <div id="capacity-chart"></div>
-</div>
-
diff --git a/traffic_portal/v1/app/src/common/modules/chart/capacity/index.js b/traffic_portal/v1/app/src/common/modules/chart/capacity/index.js
deleted file mode 100644
index b60e0db43..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/capacity/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.capacity', [])
-    .controller('ChartCapacityController', require('./ChartCapacityController'));
diff --git a/traffic_portal/v1/app/src/common/modules/chart/dates/ChartDatesController.js b/traffic_portal/v1/app/src/common/modules/chart/dates/ChartDatesController.js
deleted file mode 100644
index f0bc83eb7..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/dates/ChartDatesController.js
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartDatesController = function(customLabel, showAutoRefreshBtn, $scope, $location, $timeout, chartModel, messageModel) {
-
-    var setRange = function() {
-        var rangeParams = chartModel.calculateRange($scope.chartData.start, $scope.chartData.end);
-        $scope.tempChartData.range = $scope.chartData.end.diff($scope.chartData.start, rangeParams.interval) + rangeParams.abbrev;
-        if (!rangeParams.exact) {
-            $scope.tempChartData.range = '~' + $scope.tempChartData.range;
-        }
-        $scope.chartData.range = $scope.tempChartData.range;
-    };
-
-    var createNowBtn = function() {
-        var $nowBtn = $('<button type="button" class="dates-now-btn btn btn-block action-btn">Now</button>');
-        $nowBtn.click(function () {
-            angular.element(document.getElementById('rangeInput')).scope().setEndToNow();
-        });
-        $nowBtn.appendTo($('.end-dropdown .datetimepicker'));
-    };
-
-    $scope.chartData = chartModel.chart;
-
-    $scope.tempChartData = {
-        range: $scope.chartData.range
-    };
-
-    $scope.customLabel = customLabel;
-
-    $scope.showAutoRefreshBtn = showAutoRefreshBtn;
-
-    $scope.closeStart = function() {
-        $scope.startDropdown = {
-            isopen: false
-        };
-    };
-    $scope.closeStart();
-
-    $scope.closeEnd = function() {
-        $scope.endDropdown = {
-            isopen: false
-        };
-    };
-    $scope.closeEnd();
-
-    $scope.setStart = function(newDate, oldDate) {
-        if (moment(newDate).isAfter()) {
-            $scope.chartData.start = moment(oldDate);
-            messageModel.setMessages([ { level: 'error', text: "Can't set start date to the future." } ], false);
-        } else {
-            $scope.chartData.start = moment(newDate);
-            setRange();
-        }
-    };
-
-    $scope.setEnd = function(newDate, oldDate) {
-        if (moment(newDate).isAfter()) {
-            $scope.chartData.end = moment(oldDate);
-            messageModel.setMessages([ { level: 'error', text: "Can't set end date to the future." } ], false);
-        } else {
-            $scope.chartData.end = moment(newDate);
-            setRange();
-        }
-    };
-
-    $scope.setEndToNow = function() {
-        $scope.chartData.end = moment();
-        setRange();
-    };
-
-    $scope.toggleAutoRefresh = function() {
-        $scope.chartData.autoRefresh = !$scope.chartData.autoRefresh;
-        if ($scope.chartData.autoRefresh) {
-            $scope.applyRange(); // applying the range moves it to current
-        }
-    };
-
-    $scope.revertRange = function() {
-        $scope.tempChartData.range = $scope.chartData.range;
-    };
-
-    $scope.applyRange = function() {
-
-        var regex = /(\d+)([h|d|w|m|M]$)/, // range must be in the format 1m, 1h, 2d, 3w, 4M
-            params = $scope.tempChartData.range.match(regex);
-
-        if (params && params.length == 3) {
-            $scope.chartData.start = moment().subtract(params[1], params[2]);
-            $scope.chartData.end = moment();
-            $scope.chartData.range = $scope.tempChartData.range;
-            $scope.changeDates($scope.chartData.start, $scope.chartData.end);
-            $scope.chartData.autoRefresh = true && $scope.showAutoRefreshBtn; // showAutoRefreshBtn trumps all. if no show, no autorefresh...EVER!
-        } else {
-            messageModel.setMessages([ { level: 'error', text: "Invalid date range. Valid increments are 'm' (minute), 'h' (hour), 'd' (day), 'w' (week) or 'M' (month). Example: '30m', '12h', '3d', '3w', '3M'" } ], false);
-        }
-
-        $timeout(function () {
-            $('#rangeInput').blur(); // need to blur input to hide popover and for some reason a delay helps
-        }, 500);
-
-    };
-
-    $scope.changeDates = function(start, end) {
-        if (!start.isValid() || !end.isValid()) {
-            messageModel.setMessages([ { level: 'error', text: 'Invalid date format detected. Please fix.' } ], false);
-        } else {
-            chartModel.changeDates(start, end);
-        }
-    };
-
-    angular.element(document).ready(function () {
-        $scope.changeDates(chartModel.chart.start, chartModel.chart.end);
-        createNowBtn();
-    });
-
-    var init = function () {
-        $scope.chartData.autoRefresh = $scope.showAutoRefreshBtn && $scope.chartData.autoRefresh;
-    };
-    init();
-
-};
-
-ChartDatesController.$inject = ['customLabel', 'showAutoRefreshBtn', '$scope', '$location', '$timeout', 'chartModel', 'messageModel'];
-module.exports = ChartDatesController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/dates/_chart.dates.scss b/traffic_portal/v1/app/src/common/modules/chart/dates/_chart.dates.scss
deleted file mode 100644
index 6bdf3f4b8..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/dates/_chart.dates.scss
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#chartDatesForm {
-  text-align: center;
-  padding: 10px 0px;
-  margin: 0;
-  border: 1px solid #A8A8A8;
-
-  .input-group-addon {
-    background-color: transparent;
-  }
-
-  .pause-btn, .play-btn, .apply-btn {
-    border-radius: 0 !important;
-  }
-
-  .apply-btn {
-    margin-left: -1px;
-  }
-
-  .chart-range-input {
-    width: 75px !important;
-    margin-left: -1px;
-    cursor:auto;
-  }
-
-  .date-text {
-    cursor: pointer !important;
-    width: 210px !important;
-  }
-
-  .input-group {
-    margin-bottom: 0;
-  }
-
-  .input-group-addon {
-    font-size: 12px;
-  }
-
-  .dates-btn:focus {
-    outline: none;
-  }
-
-  .start-dropdown, .end-dropdown {
-    display: inline-block;
-  }
-
-  .dates-now-btn {
-    width: 310px;
-    margin-left: 5px;
-  }
-
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/dates/chart.dates.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/dates/chart.dates.tpl.html
deleted file mode 100644
index e13d24746..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/dates/chart.dates.tpl.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="chartDatesForm">
-    <form name="chartDatesForm" class="form-inline" role="form">
-        <div class="form-group">
-            <div class="start-dropdown" uib-dropdown is-open="startDropdown.isopen">
-                <button id="start-button" type="button" class="dates-btn btn btn-link" uib-dropdown-toggle>
-                    <div class="input-group">
-                        <span class="input-group-addon"><strong>From:</strong></span>
-                        <input type="text" class="form-control date-text" formatted-date data-ng-model="chartData.start" ng-disabled="true">
-                    </div>
-                </button>
-                <ul class="uib-dropdown-menu datetimepicker-dropdown-menu" role="menu" aria-labelledby="start-button">
-                    <datetimepicker data-ng-model="chartData.start" data-on-set-time="setStart(newDate, oldDate); closeStart()" data-datetimepicker-config="{ minuteStep: 1 }"/>
-                </ul>
-            </div>
-        </div>
-        <div class="form-group">
-            <div class="end-dropdown" uib-dropdown is-open="endDropdown.isopen">
-                <button id="end-button" type="button" class="dates-btn btn btn-link" uib-dropdown-toggle>
-                    <div class="input-group">
-                        <span class="input-group-addon"><strong>To:</strong></span>
-                        <input type="text" class="form-control date-text" formatted-date data-ng-model="chartData.end" ng-disabled="true">
-                    </div>
-                </button>
-                <ul class="uib-dropdown-menu datetimepicker-dropdown-menu" role="menu" aria-labelledby="end-button">
-                    <datetimepicker data-ng-model="chartData.end" data-on-set-time="setEnd(newDate, oldDate); closeEnd()" data-datetimepicker-config="{ minuteStep: 1 }"/>
-                </ul>
-            </div>
-        </div>
-        <div class="form-group">
-            <div class="input-group">
-                <span class="input-group-btn">
-                    <button id="applyBtn" class="apply-btn btn btn-default" type="button" ng-click="changeDates(chartData.start, chartData.end); chartData.autoRefresh = false;" uib-popover="Apply selected dates" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class">Apply</button>
-                    <button id="pauseBtn" class="pause-btn btn btn-default" type="button" ng-show="showAutoRefreshBtn && chartData.autoRefresh" ng-click="toggleAutoRefresh();" uib-popover="Pause live update" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class"><i class="fa fa-pause"></i></button>
-                    <button id="playBtn" class="play-btn btn btn-default" type="button" ng-show="showAutoRefreshBtn && !chartData.autoRefresh" ng-click="toggleAutoRefresh();" uib-popover="Start live update" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class"><i class="fa fa-play"></i></button>
-                </span>
-                <input id="rangeInput" type="text" class="form-control chart-range-input" placeholder="Range" uib-popover="Override the date range in the format 1m, 2h, 3d, 4w or 5M and hitting enter." popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class" ng-model="tempChartData.range" enter="applyRange()" ng-blur="revertRange()" select-on-click>
-            </div>
-        </div>
-    </form>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/chart/dates/index.js b/traffic_portal/v1/app/src/common/modules/chart/dates/index.js
deleted file mode 100644
index 63eec0a27..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/dates/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.dates', [])
-    .controller('ChartDatesController', require('./ChartDatesController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.chart.dates', {
-                reloadOnSearch: false
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/ChartHttpStatusController.js b/traffic_portal/v1/app/src/common/modules/chart/httpStatus/ChartHttpStatusController.js
deleted file mode 100644
index 60c8a62d5..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/ChartHttpStatusController.js
+++ /dev/null
@@ -1,175 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartHttpStatusController = function(entity, $window, $rootScope, $scope, $uibModal, $q, $timeout, $filter, propertiesModel, dateUtils, statsService) {
-
-    $scope.chartName = propertiesModel.properties.charts.httpStatus.name;
-
-    var chartDatesChanged = false,
-        chartStart,
-        chartEnd;
-
-    var loadAggregateHttpStatusData = function(start, end) {
-        if (!entity || !chartDatesChanged) return;
-        chartDatesChanged = false;
-        getAggregateHttpStatusData(start, end);
-    };
-
-    var getAggregateHttpStatusData = function(start, end) {
-
-        var exclude = 'summary',
-            ignoreLoadingBar = false,
-            showError = false,
-            promises = [];
-
-        promises.push(statsService.getEdgeTransactionsByStatusGroup(entity, '2xx', start, end, $scope.httpStatusChartInterval, exclude, ignoreLoadingBar, showError));
-        promises.push(statsService.getEdgeTransactionsByStatusGroup(entity, '3xx', start, end, $scope.httpStatusChartInterval, exclude, ignoreLoadingBar, showError));
-        promises.push(statsService.getEdgeTransactionsByStatusGroup(entity, '4xx', start, end, $scope.httpStatusChartInterval, exclude, ignoreLoadingBar, showError));
-        promises.push(statsService.getEdgeTransactionsByStatusGroup(entity, '5xx', start, end, $scope.httpStatusChartInterval, exclude, ignoreLoadingBar, showError));
-
-        $q.all(promises)
-            .then(
-            function(responses) {
-                var status2xxChartData = buildHttpStatusChartData(responses[0], start, false),
-                    status3xxChartData = buildHttpStatusChartData(responses[1], start, false),
-                    status4xxChartData = buildHttpStatusChartData(responses[2], start, false),
-                    status5xxChartData = buildHttpStatusChartData(responses[3], start, false);
-                $timeout(function () {
-                    buildHttpChart(status2xxChartData, status3xxChartData, status4xxChartData, status5xxChartData);
-                }, 100);
-            },
-            function(fault) {
-                buildHttpChart([], [], [], []);
-            }).finally(function() {
-                $scope.httpStatusDataLoaded = true;
-            });
-    };
-
-    var updateChartDates = function(start, end) {
-        $scope.dateRangeText = dateUtils.dateFormat(start.toDate(), "ddd mmm d yyyy h:MM tt (Z)") + ' to ' + dateUtils.dateFormat(end.toDate(), "ddd mmm d yyyy h:MM tt (Z)");
-    };
-
-    var buildHttpStatusChartData = function(result, start, incremental) {
-        var normalizedChartData = [],
-            series = result.series;
-
-        if (angular.isDefined(series)) {
-            _.each(series.values, function(seriesItem) {
-                if (moment(seriesItem[0]).isSame(start) || moment(seriesItem[0]).isAfter(start)) {
-                    if (_.isNumber(seriesItem[1]) || !incremental) {
-                        normalizedChartData.push([ moment(seriesItem[0]).valueOf(), seriesItem[1] ]);
-                    }
-                }
-            });
-        }
-
-        return normalizedChartData;
-    };
-
-    var buildHttpChart = function(status2xxChartData, status3xxChartData, status4xxChartData, status5xxChartData) {
-
-        var options = {
-            xaxis: {
-                mode: "time",
-                timezone: "browser",
-                twelveHourClock: true
-            },
-            yaxes: [
-                {
-                    position: "left",
-                    axisLabel: "Success (2xx and 3xx)",
-                    axisLabelUseCanvas: true,
-                    axisLabelFontSizePixels: 12,
-                    axisLabelFontFamily: 'Verdana, Arial',
-                    axisLabelPadding: 3
-                },
-                {
-                    position: "right",
-                    axisLabel: "Client Error (4xx)",
-                    axisLabelUseCanvas: true,
-                    axisLabelFontSizePixels: 12,
-                    axisLabelFontFamily: 'Verdana, Arial',
-                    axisLabelPadding: 3
-                },
-                {
-                    position: "right",
-                    axisLabel: "Server Error (5xx)",
-                    axisLabelUseCanvas: true,
-                    axisLabelFontSizePixels: 12,
-                    axisLabelFontFamily: 'Verdana, Arial',
-                    axisLabelPadding: 3
-                }
-            ],
-            grid: {
-                hoverable: true,
-                axisMargin: 20
-            },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    var tooltipString = dateUtils.dateFormat(xval, "ddd mmm d yyyy h:MM:ss tt (Z)") + '<br>';
-                    tooltipString += '<span>' + label + ': ' + $filter('number')(yval, 2) + ' TPS</span><br>'
-                    return tooltipString;
-                }
-            }
-        };
-
-        var series = [
-            { label: "2xx", yaxis: 1, color: "#91ca32", data: status2xxChartData },
-            { label: "3xx", yaxis: 1, color: "#5897fb", data: status3xxChartData },
-            { label: "4xx", yaxis: 2, color: "#6859a3", data: status4xxChartData },
-            { label: "5xx", yaxis: 3, color: "#a94442", data: status5xxChartData }
-        ];
-
-        $.plot($("#http-chart"), series, options);
-
-    };
-
-    var onDateChange = function(args) {
-        chartDatesChanged = true;
-        chartStart = args.start;
-        chartEnd = args.end;
-        updateChartDates(chartStart, chartEnd);
-        loadAggregateHttpStatusData(chartStart, chartEnd);
-    };
-
-    $scope.httpStatusDataLoaded = false;
-
-    $scope.httpStatusChartInterval = '60s';
-
-    $scope.resetStatusCodes = function() {
-        $timeout(function(){
-            $scope.http2xxCodes = [];
-            $scope.http3xxCodes = [];
-            $scope.http4xxCodes = [];
-            $scope.http5xxCodes = [];
-        });
-    };
-    $scope.resetStatusCodes();
-
-    $scope.$on('chartModel::dateChange', function(event, args) {
-        onDateChange(args);
-    });
-
-    $scope.$on('chartModel::dateRoll', function(event, args) {
-        onDateChange(args);
-    });
-
-};
-
-ChartHttpStatusController.$inject = ['entity', '$window', '$rootScope', '$scope', '$uibModal', '$q', '$timeout', '$filter', 'propertiesModel', 'dateUtils', 'statsService'];
-module.exports = ChartHttpStatusController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/_chart.httpStatus.scss b/traffic_portal/v1/app/src/common/modules/chart/httpStatus/_chart.httpStatus.scss
deleted file mode 100644
index b4ed1c31b..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/_chart.httpStatus.scss
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#httpChartContainer {
-  position: relative;
-  text-align: center;
-  background-color: transparent;
-  padding: 30px 60px;
-
-  #http-loading, #http-chart {
-    height: 400px;
-    width: 100%;
-  }
-
-  #http-loading {
-    padding-top: 50px;
-  }
-
-}
-
-#httpSparklineContainer {
-
-  .http-sparkline-row {
-    margin-bottom: 20px;
-    &:first-child {
-      margin-top: 10px;
-    }
-  }
-
-  .http-sparkline-header-row {
-    margin-top: 10px;
-    margin-bottom: 10px;
-  }
-
-  .success-col, .client-error-col, .server-error-col {
-    margin-top: 10px;
-  }
-
-  .http-sparkline-row, .http-sparkline-header-row {
-    margin-left: 0;
-    margin-right: 0;
-    border: 1px solid #A8A8A8;
-
-    .header, .column-header {
-      padding: 10px;
-      margin-top: 0;
-    }
-
-    .column-header {
-      margin: 0;
-    }
-
-    .sparkline {
-      height: 50px;
-      width: 260px;
-      text-align: center;
-    }
-
-    .sparkline-loading-text {
-      padding-top: 15px;
-      color: #999;
-      font-size: 12px;
-      font-weight: bold;
-      display: inline-block;
-    }
-
-    .metrics {
-      padding: 10px;
-
-      .metric-label {
-        font-size: 12px;
-        font-weight: bold;
-      }
-
-      .total-percent {
-        color: #999;
-        font-size: 12px;
-        font-weight: bold;
-      }
-
-    }
-
-  }
-
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/chart.httpStatus.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/httpStatus/chart.httpStatus.tpl.html
deleted file mode 100644
index 40a79b2ef..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/chart.httpStatus.tpl.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="chart-container">
-    <div id="httpChartContainer">
-        <h6>{{chartName}}</h6>
-        <div id="http-loading" ng-show="!httpStatusDataLoaded">
-            <div class="loading-text">Loading http statuses...</div>
-        </div>
-        <div id="http-chart" ng-show="httpStatusDataLoaded"></div>
-    </div>
-</div>
-
diff --git a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/index.js b/traffic_portal/v1/app/src/common/modules/chart/httpStatus/index.js
deleted file mode 100644
index a05339ac7..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/httpStatus/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.httpStatus', [])
-    .controller('ChartHttpStatusController', require('./ChartHttpStatusController'));
diff --git a/traffic_portal/v1/app/src/common/modules/chart/routing/ChartRoutingController.js b/traffic_portal/v1/app/src/common/modules/chart/routing/ChartRoutingController.js
deleted file mode 100644
index 7f10dfc04..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/routing/ChartRoutingController.js
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartRoutingController = function(entityId, service, $rootScope, $scope, $interval, $filter) {
-
-    var routingInterval,
-        routingLoaded = false;
-
-    var getRoutingMethods = function(showTimoutError) {
-        if (!$rootScope.online) return;
-
-        var ignoreLoadingBar = true;
-        service.getRoutingMethods(entityId, ignoreLoadingBar, showTimoutError)
-            .then(
-            function(response) {
-                routingLoaded = true;
-                var staticRoute = Math.round(response.staticRoute * 100) / 100,
-                    dsr = Math.round(response.dsr * 100) / 100,
-                    err = Math.round(response.err * 100) / 100,
-                    miss = Math.round(response.miss * 100) / 100,
-                    geo = Math.round(response.geo * 100) / 100,
-                    fed = Math.round(response.fed * 100) / 100,
-                    cz = Math.round(response.cz * 100) / 100;
-
-                var data = [];
-
-                if (staticRoute > 0) {
-                    data.push({
-                        label: "Static",
-                        color: '#cccccc',
-                        data: [ [ staticRoute, 1 ] ]
-                    });
-                }
-                if (dsr > 0) {
-                    data.push({
-                        label: "DSR",
-                        color: '#3c763d',
-                        data: [ [ dsr, 1 ] ]
-                    });
-                }
-                if (err > 0) {
-                    data.push({
-                        label: "Error",
-                        color: '#FF0000',
-                        data: [ [ err, 1 ] ]
-                    });
-                }
-                if (miss > 0) {
-                    data.push({
-                        label: "Miss",
-                        color: '#a94442',
-                        data: [ [ miss, 1 ] ]
-                    });
-                }
-                if (geo > 0) {
-                    data.push({
-                        label: "3rd Party",
-                        color: '#263C53',
-                        data: [ [ geo, 1 ] ]
-                    });
-                }
-                if (cz > 0) {
-                    data.push({
-                        label: "Native",
-                        color: '#357EBD',
-                        data: [ [ cz, 1 ] ]
-                    });
-                }
-                if (fed > 0) {
-                    data.push({
-                        label: "Federated",
-                        color: '#8a00e6',
-                        data: [ [ fed, 1 ] ]
-                    });
-                }
-
-                buildRoutingChart(data);
-            });
-    };
-
-    var buildRoutingChart = function(data) {
-
-        var options = {
-            series: {
-                stack: true,
-                lines: {show: false, steps: false },
-                bars: {
-                    show: true,
-                    horizontal: true,
-                    barWidth: 0.9,
-                    align: 'center'
-                }
-            },
-            grid: {
-                borderWidth: 0,
-                hoverable: true
-            },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    return '<span>' + label + ': ' + $filter('number')(xval, 2) + '%</span><br>';
-                }
-            },
-            yaxis: {
-                ticks: [[ 1,'%' ]]
-            }
-        };
-
-        $.plot($("#routing-chart"), data, options);
-    };
-
-    angular.element(document).ready(function () {
-        getRoutingMethods(true);
-        routingInterval = $interval(function() { getRoutingMethods(false) }, 5 * 60 * 1000); // every 5 mins routing will refresh
-    });
-
-    $scope.$on("$destroy", function() {
-        if (angular.isDefined(routingInterval)) {
-            $interval.cancel(routingInterval);
-            routingInterval = undefined;
-        }
-    });
-
-};
-
-ChartRoutingController.$inject = ['entityId', 'service', '$rootScope', '$scope', '$interval', '$filter'];
-module.exports = ChartRoutingController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/routing/_chart.routing.scss b/traffic_portal/v1/app/src/common/modules/chart/routing/_chart.routing.scss
deleted file mode 100644
index 84eb5ddab..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/routing/_chart.routing.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#routingChartContainer {
-  text-align: center;
-}
-
-#routing-chart {
-  height: 200px;
-  width: 100%;
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/routing/chart.routing.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/routing/chart.routing.tpl.html
deleted file mode 100644
index 9be074e5b..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/routing/chart.routing.tpl.html
+++ /dev/null
@@ -1,22 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="routingChartContainer">
-    <h6>Routing Methods %</h6>
-    <div id="routing-chart"></div>
-</div>
-
diff --git a/traffic_portal/v1/app/src/common/modules/chart/routing/index.js b/traffic_portal/v1/app/src/common/modules/chart/routing/index.js
deleted file mode 100644
index d3782c5d7..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/routing/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.routing', [])
-    .controller('ChartRoutingController', require('./ChartRoutingController'));
diff --git a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/ChartTransactionsPerSecondController.js b/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/ChartTransactionsPerSecondController.js
deleted file mode 100644
index d1b3c470f..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/ChartTransactionsPerSecondController.js
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartTransactionsPerSecondController = function(entity, showSummary, $rootScope, $scope, $uibModal, $q, $timeout, $filter, propertiesModel, dateUtils, statsService) {
-
-    $scope.chartName = propertiesModel.properties.charts.transactionsPerSecond.name;
-
-    var chartDatesChanged = false,
-        chartStart,
-        chartEnd;
-
-    var summaryStart,
-        summaryEnd;
-
-    var chartRangeTimer;
-
-    var loadTransactions = function(start, end) {
-        if (!entity || !chartDatesChanged) return;
-        chartDatesChanged = false;
-        $scope.transactionChartDates = {
-            start: start,
-            end: end
-        };
-        getTransactions(start, end);
-        $scope.refreshTpsSummaryMetrics(0);
-    };
-
-    var getTransactions = function(start, end) {
-        var exclude = '',
-            ignoreLoadingBar = true,
-            showError = true,
-            promises = [];
-
-        // edge transactions
-        promises.push(statsService.getEdgeTransactions(entity, start, end, $scope.transactionsChartInterval, exclude, ignoreLoadingBar, showError));
-
-        $q.all(promises)
-            .then(
-            function(responses) {
-                // set chart data
-                var edgeTransactionsChartData = buildTransactionsChartData(responses[0], start, false);
-                $timeout(function () {
-                    buildTransactionsChart(edgeTransactionsChartData);
-                }, 100);
-            },
-            function(fault) {
-                buildTransactionsChart([]); // build an empty chart
-            }).finally(function() {
-                $scope.transactionsLoaded = true;
-            });
-    };
-
-    var buildTransactionsChartData = function(result, start, incremental) {
-        var normalizedChartData = [],
-            series = result.series;
-
-        if (angular.isDefined(series)) {
-            _.each(series.values, function(seriesItem) {
-                if (moment(seriesItem[0]).isSame(start) || moment(seriesItem[0]).isAfter(start)) {
-                    if (_.isNumber(seriesItem[1]) || !incremental) {
-                        normalizedChartData.push([ moment(seriesItem[0]).valueOf(), seriesItem[1] ]);
-                    }
-                }
-            });
-        }
-
-        return normalizedChartData;
-    };
-
-    var buildTransactionsChart = function(edgeTransactionsChartData) {
-
-        var options = {
-            xaxis: {
-                mode: "time",
-                timezone: "browser",
-                twelveHourClock: true
-            },
-            yaxes: [
-                {
-                    position: "left",
-                    axisLabel: "TPS",
-                    axisLabelUseCanvas: true,
-                    axisLabelFontSizePixels: 12,
-                    axisLabelFontFamily: 'Verdana, Arial',
-                    axisLabelPadding: 3
-                }
-            ],
-            grid: { hoverable: true },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    var tooltipString = dateUtils.dateFormat(xval, "ddd mmm d yyyy h:MM:ss tt (Z)") + '<br>';
-                    tooltipString += '<span>' + label + ': ' + $filter('number')(yval, 2) + ' TPS</span><br>'
-                    return tooltipString;
-                }
-            }
-        };
-
-        $.plot($("#tps-chart"), [ { label: "Edge", data: edgeTransactionsChartData } ], options);
-
-    };
-
-    var updateChartDates = function(start, end) {
-        $scope.dateRangeText = dateUtils.dateFormat(start.toDate(), "ddd mmm d yyyy h:MM tt (Z)") + ' to ' + dateUtils.dateFormat(end.toDate(), "ddd mmm d yyyy h:MM tt (Z)");
-    };
-
-    var getSummaryMetrics = function(start, end) {
-
-        var exclude = 'series',
-            ignoreLoadingBar = true,
-            showError = false,
-            promises = [];
-
-        // edge summary
-        promises.push(statsService.getEdgeTransactionsSummary(entity, start, end, $scope.transactionsChartInterval, exclude, ignoreLoadingBar, showError));
-
-        $q.all(promises)
-            .then(
-            function(responses) {
-                var edgeSummary = responses[0].summary;
-                if (angular.isDefined(edgeSummary)) {
-                    $scope.tpsEdgeSummary = edgeSummary;
-                } else {
-                    $scope.resetEdgeSummary();
-                }
-            },
-            function(fault) {
-                $scope.resetEdgeSummary();
-            }).finally(function() {
-                $scope.updatingTpsSummaryMetrics = false;
-            });
-    };
-
-    var onDateChange = function(args) {
-        chartDatesChanged = true;
-        chartStart = args.start;
-        chartEnd = args.end;
-        summaryStart = args.start;
-        summaryEnd = args.end;
-        updateChartDates(chartStart, chartEnd);
-        loadTransactions(chartStart, chartEnd);
-    };
-
-    $scope.showSummary = showSummary;
-
-    $scope.updatingTpsSummaryMetrics = false;
-
-    $scope.transactionsLoaded = false;
-
-    $scope.transactionsChartInterval = '60s';
-
-    $scope.resetEdgeSummary = function() {
-        $timeout(function() {
-            $scope.tpsEdgeSummary = {
-                max: 0,
-                min: 0,
-                totalTransactions: 0,
-                average: 0,
-                fifthPercentile: 0,
-                ninetyFifthPercentile: 0,
-                ninetyEighthPercentile: 0
-            };
-        });
-    };
-    $scope.resetEdgeSummary();
-
-    $scope.refreshTpsSummaryMetrics = function(delay) {
-        if (!$scope.showSummary) return; // don't bother. summary hidden...
-
-        $timeout(function() { $scope.updatingTpsSummaryMetrics = true; });
-        if (chartRangeTimer) {
-            $timeout.cancel(chartRangeTimer);
-        }
-        chartRangeTimer = $timeout(function () {
-            getSummaryMetrics(summaryStart, summaryEnd);
-        }, delay);
-    };
-
-    $scope.hideSummaryMetrics = function() {
-        $scope.showSummary = false;
-        $scope.resetEdgeSummary();
-    };
-
-    $scope.showSummaryMetrics = function() {
-        $scope.showSummary = true;
-        $scope.refreshTpsSummaryMetrics(0);
-    };
-
-    $scope.$on('chartModel::dateChange', function(event, args) {
-        onDateChange(args);
-    });
-
-    $scope.$on('chartModel::dateRoll', function(event, args) {
-        onDateChange(args);
-    });
-
-};
-
-ChartTransactionsPerSecondController.$inject = ['entity', 'showSummary', '$rootScope', '$scope', '$uibModal', '$q', '$timeout', '$filter', 'propertiesModel', 'dateUtils', 'statsService'];
-module.exports = ChartTransactionsPerSecondController;
diff --git a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/_chart.transactionsPerSecond.scss b/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/_chart.transactionsPerSecond.scss
deleted file mode 100644
index 31a1ba468..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/_chart.transactionsPerSecond.scss
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#tpsChartContainer {
-  position: relative;
-  text-align: center;
-  background-color: transparent;
-  padding: 30px 60px;
-
-  #tps-loading, #tps-chart {
-    height: 400px;
-    min-width: 310px;
-  }
-
-  #tps-loading {
-    padding-top: 40px;
-  }
-
-}
-
-#tps-metrics {
-  .header {
-    margin-bottom: 0;
-  }
-}
diff --git a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/chart.transactionsPerSecond.tpl.html b/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/chart.transactionsPerSecond.tpl.html
deleted file mode 100644
index f446009dd..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/chart.transactionsPerSecond.tpl.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="chart-container">
-    <div id="tpsChartContainer">
-        <h6>{{chartName}}</h6>
-        <div id="tps-loading" ng-show="!transactionsLoaded">
-            <div class="loading-text">Loading transactions...</div>
-        </div>
-        <div id="tps-chart" ng-show="transactionsLoaded"></div>
-    </div>
-    <h6 ng-show="!showSummary" class="show-summary-header"><small class="show-summary">[ <a ng-click="showSummaryMetrics()">show summary metrics</a> ]</small></h6>
-    <div id="tps-metrics" ng-show="showSummary" class="row metrics">
-        <div class="col-sm-12 col-md-12">
-            <h6 class="header">
-                <div>{{chartName}} Summary Metrics
-                    <small ng-show="updatingTpsSummaryMetrics">[ calculating <i class="fa fa-spin fa-spinner fa-fw"></i> ]</small>
-                    <small ng-show="!updatingTpsSummaryMetrics" class="summary-refresh">[ <a ng-click="refreshTpsSummaryMetrics(0)">refresh</a> ]</small>
-                    <small class="hide-summary">[ <a ng-click="hideSummaryMetrics()">hide summary metrics</a> ]</small>
-                </div>
-                <hr class="summary-hr">
-                <div><small>{{dateRangeText}}</small></div>
-            </h6>
-            <div class="summary-metrics">
-                <table class="table table-condensed">
-                    <thead>
-                    <tr>
-                        <th>Server Type</th>
-                        <th>Total Transactions</th>
-                        <th>95th percentile</th>
-                        <th>Max</th>
-                        <th>Min</th>
-                        <th>Avg</th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        <td>Edge</td>
-                        <td class="total">{{tpsEdgeSummary.totalTransactions | number:0}}</td>
-                        <td>{{tpsEdgeSummary.ninetyFifthPercentile | number:2}} TPS</td>
-                        <td>{{tpsEdgeSummary.max | number:2}} TPS</td>
-                        <td>{{tpsEdgeSummary.min | number:2}} TPS</td>
-                        <td>{{tpsEdgeSummary.average | number:2}} TPS</td>
-                    </tr>
-                    </tbody>
-                </table>
-            </div>
-        </div>
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/index.js b/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/index.js
deleted file mode 100644
index aedd14bc6..000000000
--- a/traffic_portal/v1/app/src/common/modules/chart/transactionsPerSecond/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.chart.transactionsPerSecond', [])
-    .controller('ChartTransactionsPerSecondController', require('./ChartTransactionsPerSecondController'));
diff --git a/traffic_portal/v1/app/src/common/modules/dates/DatesController.js b/traffic_portal/v1/app/src/common/modules/dates/DatesController.js
deleted file mode 100644
index 48d5243f2..000000000
--- a/traffic_portal/v1/app/src/common/modules/dates/DatesController.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DatesController = function(customLabel, dateRange, $rootScope, $scope) {
-
-    $scope.dateRange = dateRange;
-
-    $scope.customLabel = customLabel;
-
-    $scope.openStart = function($event) {
-        $event.preventDefault();
-        $event.stopPropagation();
-
-        $scope.startOpened = true;
-    };
-
-    $scope.openEnd = function($event) {
-        $event.preventDefault();
-        $event.stopPropagation();
-
-        $scope.endOpened = true;
-    };
-
-    $scope.dateOptions = {
-        formatYear: 'yy',
-        startingDay: 0,
-        showWeeks: false
-    };
-
-    $scope.changeDates = function(start, end) {
-        $rootScope.$broadcast('datesController::dateChange', { start: start, end: end });
-    };
-
-    angular.element(document).ready(function () {
-        $scope.changeDates(dateRange.start, dateRange.end);
-    });
-
-};
-
-DatesController.$inject = ['customLabel', 'dateRange', '$rootScope', '$scope'];
-module.exports = DatesController;
diff --git a/traffic_portal/v1/app/src/common/modules/dates/_dates.scss b/traffic_portal/v1/app/src/common/modules/dates/_dates.scss
deleted file mode 100644
index 83dd4924b..000000000
--- a/traffic_portal/v1/app/src/common/modules/dates/_dates.scss
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-.dates-form {
-  text-align: center;
-  padding: 20px;
-  margin: 0 0 20px 0;
-  background-color: #e4e4e4;
-
-  .form-inline {
-    margin-top: 5px;
-  }
-
-  .to-date {
-    margin-left: 20px;
-  }
-
-  .date-text {
-    width: 200px !important;
-  }
-
-  .input-group {
-    margin-bottom: 0;
-  }
-
-}
-
-@media print {
-  .dates-form {
-    display: none;
-  }
-}
-
diff --git a/traffic_portal/v1/app/src/common/modules/dates/dates.tpl.html b/traffic_portal/v1/app/src/common/modules/dates/dates.tpl.html
deleted file mode 100644
index 4c9a3d98e..000000000
--- a/traffic_portal/v1/app/src/common/modules/dates/dates.tpl.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="row dates-form hidden-print">
-    <div class="col-sm-12 col-md-12">
-        <form class="form-inline" role="form">
-            <div class="form-group from-date">
-                <label for="startDate">{{customLabel}} from:</label>
-                <p class="input-group">
-                    <input id="startDate" type="text" class="form-control date-text" datepicker-popup="dd-MMMM-yyyy" show-button-bar="false" ng-model="dateRange.start" is-open="startOpened" max-date="dateRange.end" datepicker-options="dateOptions" ng-required="true" />
-                    <span class="input-group-btn">
-                        <button type="button" class="btn btn-default" ng-click="openStart($event)"><i class="fa fa-calendar"></i></button>
-                    </span>
-                </p>
-            </div>
-            <div class="form-group to-date">
-                <label for="endDate">to:</label>
-                <p class="input-group">
-                    <input id="endDate" type="text" class="form-control date-text" datepicker-popup="dd-MMMM-yyyy" show-button-bar="false" ng-model="dateRange.end" is-open="endOpened" min-date="dateRange.start" max-date="dateRange.max" datepicker-options="dateOptions" ng-required="true" />
-                    <span class="input-group-btn">
-                        <button type="button" class="btn btn-default" ng-click="openEnd($event)"><i class="fa fa-calendar"></i></button>
-                    </span>
-                </p>
-            </div>
-            <button type="submit" class="btn btn-default" ng-click="changeDates(dateRange.start, dateRange.end)">Apply</button>
-        </form>
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/dates/index.js b/traffic_portal/v1/app/src/common/modules/dates/index.js
deleted file mode 100644
index 47ae7a0dc..000000000
--- a/traffic_portal/v1/app/src/common/modules/dates/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.dates', [])
-    .controller('DatesController', require('./DatesController'))
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/DSConfigEditController.js b/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/DSConfigEditController.js
deleted file mode 100644
index f3d9860bd..000000000
--- a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/DSConfigEditController.js
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DSConfigEditController = function(deliveryService, $scope, $uibModalInstance) {
-
-    $scope.deliveryService = deliveryService;
-
-    $scope.close = function () {
-        $uibModalInstance.dismiss('close');
-    };
-
-    $scope.isHTTP = function(ds) {
-        return ds.type.indexOf('HTTP') !== -1;
-    };
-
-    $scope.edgeFQDNs = function(ds) {
-        var urlString = '';
-        if (_.isArray(ds.exampleURLs) && ds.exampleURLs.length > 0) {
-            for (var i = 0; i < ds.exampleURLs.length; i++) {
-                urlString += ds.exampleURLs[i] + '\n';
-            }
-        }
-        return urlString;
-    };
-
-    $scope.rangeRequestHandling = function(ds) {
-        var rrh = '';
-        if (ds.rangeRequestHandling == '0') {
-            rrh = 'Do not cache range requests';
-        } else if (ds.rangeRequestHandling == '1') {
-            rrh = 'Background fetch';
-        } else if (ds.rangeRequestHandling == '2') {
-            rrh = 'Cache range requests';
-        }
-        return rrh;
-    };
-
-};
-
-DSConfigEditController.$inject = ['deliveryService', '$scope', '$uibModalInstance'];
-module.exports = DSConfigEditController;
diff --git a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/_deliveryService.config.edit.scss b/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/_deliveryService.config.edit.scss
deleted file mode 100644
index 26796c4bc..000000000
--- a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/_deliveryService.config.edit.scss
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dsConfigForm {
-  padding: 0 20px;
-
-  .settings-row {
-    padding: 10px 0 0 0;
-    margin: 0 0 10px 0;
-
-    .settings-col {
-      text-align: center;
-    }
-
-  }
-
-}
-
-.ds-config-modal {
-  // not used yet but you can throw a class on a modal if needed
-}
-
diff --git a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/deliveryService.config.edit.tpl.html b/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/deliveryService.config.edit.tpl.html
deleted file mode 100644
index 0b92e5e8b..000000000
--- a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/deliveryService.config.edit.tpl.html
+++ /dev/null
@@ -1,126 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="modal-header">
-    <button type="button" class="close" ng-click="close()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
-    <h3 class="modal-title">{{deliveryService.displayName}} ({{deliveryService.id}} | {{deliveryService.xmlId}})</h3>
-</div>
-<div class="modal-body">
-    <form id="dsConfigForm" name="dsConfigForm" role="form" novalidate>
-        <div class="row settings-row">
-            <div class="settings-col col-sm-4 col-md-4">
-                <div class="form-group">
-                    <input type="checkbox" ng-disabled="true" ng-model="deliveryService.active">  <strong>Active</strong>
-                </div>
-            </div>
-            <div class="settings-col col-sm-4 col-md-4">
-                <div class="form-group">
-                    <input type="checkbox" ng-disabled="true" ng-model="deliveryService.ipv6RoutingEnabled">  <strong>IPv6 Routing Enabled</strong>
-                </div>
-            </div>
-            <div class="settings-col col-sm-4 col-md-4">
-                <div class="form-group">
-                    <input type="checkbox" ng-disabled="true" ng-model="deliveryService.signed">  <strong>Signed URLs</strong>
-                </div>
-            </div>
-        </div>
-        <hr>
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group">
-                    <label class="control-label" for="orgServerFqdn">Origin FQDN:</label>
-                    <input id="orgServerFqdn" name="orgServerFqdn" type="text" class="form-control" ng-model="deliveryService.orgServerFqdn" readonly>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="checkPath">Origin health check:</label>
-                    <input id="checkPath" name="checkPath" type="text" class="form-control" ng-model="deliveryService.checkPath" readonly>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="edgeFQDNs">Edge FQDNs:</label>
-                    <textarea id="edgeFQDNs" name="edgeFQDNs" rows="4" cols="17" class="form-control" readonly>{{edgeFQDNs(deliveryService)}}</textarea>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="edgeHeaderRewrite">Edge header rewrite rules:</label>
-                    <input id="edgeHeaderRewrite" name="edgeHeaderRewrite" type="text" class="form-control" ng-model="deliveryService.edgeHeaderRewrite" readonly>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="midHeaderRewrite">Mid header rewrite rules:</label>
-                    <input id="midHeaderRewrite" name="midHeaderRewrite" type="text" class="form-control" ng-model="deliveryService.midHeaderRewrite" readonly>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="regexRemap">Regex remap expression:</label>
-                    <input id="regexRemap" name="regexRemap" type="text" class="form-control" ng-model="deliveryService.regexRemap" readonly>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group">
-                    <label class="control-label" for="type">Content Routing Type:</label>
-                    <input id="type" name="type" type="text" class="form-control" ng-model="deliveryService.type" readonly>
-                </div>
-                <div class="form-group" ng-show="isHTTP(deliveryService)">
-                    <label class="control-label" for="httpBypassFqdn">HTTP Bypass FQDN:</label>
-                    <input id="httpBypassFqdn" name="httpBypassFqdn" type="text" class="form-control" ng-model="deliveryService.httpBypassFqdn" readonly>
-                </div>
-                <div class="form-group" ng-show="!isHTTP(deliveryService)">
-                    <label class="control-label" for="dnsBypassIp">DNS Bypass IP:</label>
-                    <input id="dnsBypassIp" name="dnsBypassIp" type="text" class="form-control" ng-model="deliveryService.dnsBypassIp" readonly>
-                </div>
-                <div class="form-group" ng-show="!isHTTP(deliveryService)">
-                    <label class="control-label" for="dnsBypassIp6">DNS Bypass IPv6:</label>
-                    <input id="dnsBypassIp6" name="dnsBypassIp6" type="text" class="form-control" ng-model="deliveryService.dnsBypassIp6" readonly>
-                </div>
-                <div class="form-group" ng-show="!isHTTP(deliveryService)">
-                    <label class="control-label" for="dnsBypassTtl">DNS Bypass TTL:</label>
-                    <input id="dnsBypassTtl" name="dnsBypassTtl" type="text" class="form-control" ng-model="deliveryService.dnsBypassTtl" readonly>
-                </div>
-                <div class="form-group" style="margin-top: 20px;" ng-show="!isHTTP(deliveryService)">
-                    <label class="control-label" for="maxDnsAnswers">Max DNS Answers:</label>
-                    <input id="maxDnsAnswers" name="maxDnsAnswers" type="text" class="form-control" ng-model="deliveryService.maxDnsAnswers" readonly>
-                </div>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="globalMaxMbps">Global Max Mbps:</label>
-                            <input id="globalMaxMbps" name="globalMaxMbps" type="text" class="form-control" ng-model="deliveryService.globalMaxMbps" readonly>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="globalMaxMbps">Global Max Tps:</label>
-                            <input id="globalMaxTps" name="globalMaxTps" type="text" class="form-control" ng-model="deliveryService.globalMaxTps" readonly>
-                        </div>
-                    </div>
-                </div>
-                <div class="form-group">
-                    <label class="control-label" for="rangeRequestHandling">Range Request Handling:</label>
-                    <input id="rangeRequestHandling" name="rangeRequestHandling" type="text" class="form-control" value="{{rangeRequestHandling(deliveryService)}}" readonly>
-                </div>
-            </div>
-        </div>
-        <div class="row">
-            <div class="col-sm-12 col-md-12">
-                <div class="form-group">
-                    <label class="control-label" for="longDesc">Long Description:</label>
-                    <textarea id="longDesc" name="longDesc" rows="5" cols="17" class="form-control" ng-model="deliveryService.longDesc" readonly></textarea>
-                </div>
-            </div>
-        </div>
-    </form>
-</div>
-<div class="modal-footer">
-    <button class="btn action-btn" ng-click="close()">Close</button>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/index.js b/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/index.js
deleted file mode 100644
index b6f67f69b..000000000
--- a/traffic_portal/v1/app/src/common/modules/deliveryService/config/edit/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.config.edit', [])
-    .controller('DSConfigEditController', require('./DSConfigEditController'));
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/confirm/DialogConfirmController.js b/traffic_portal/v1/app/src/common/modules/dialog/confirm/DialogConfirmController.js
deleted file mode 100644
index 09aef6705..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/confirm/DialogConfirmController.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DialogConfirmController = function(params, $scope, $uibModalInstance) {
-
-    $scope.params = params;
-
-    $scope.yes = function() {
-        $uibModalInstance.close();
-    };
-
-    $scope.no = function () {
-        $uibModalInstance.dismiss('no');
-    };
-
-};
-
-DialogConfirmController.$inject = ['params', '$scope', '$uibModalInstance'];
-module.exports = DialogConfirmController;
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/confirm/_dialog.confirm.scss b/traffic_portal/v1/app/src/common/modules/dialog/confirm/_dialog.confirm.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/confirm/_dialog.confirm.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html b/traffic_portal/v1/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html
deleted file mode 100644
index 8fad17f89..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/confirm/dialog.confirm.tpl.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="modal-header">
-    <h4 class="modal-title">{{params.title}}</h4>
-</div>
-<div class="modal-body">
-    <p>{{params.message}}</p>
-</div>
-<div class="modal-footer">
-    <button class="btn action-btn" ng-click="no()">No</button>
-    <button class="btn btn-link" ng-click="yes()">Yes</button>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/confirm/index.js b/traffic_portal/v1/app/src/common/modules/dialog/confirm/index.js
deleted file mode 100644
index f824c8f5f..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/confirm/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.dialog.confirm', [])
-    .controller('DialogConfirmController', require('./DialogConfirmController'));
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/reset/DialogResetController.js b/traffic_portal/v1/app/src/common/modules/dialog/reset/DialogResetController.js
deleted file mode 100644
index 271345fd6..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/reset/DialogResetController.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DialogResetController = function($scope, $uibModalInstance, formUtils) {
-
-    $scope.userData = {
-        email: ""
-    };
-
-    $scope.reset = function (email) {
-        $uibModalInstance.close(email);
-    };
-
-    $scope.cancel = function () {
-        $uibModalInstance.dismiss('cancel');
-    };
-
-    $scope.hasError = formUtils.hasError;
-
-    $scope.hasPropertyError = formUtils.hasPropertyError;
-
-};
-
-DialogResetController.$inject = ['$scope', '$uibModalInstance', 'formUtils'];
-module.exports = DialogResetController;
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/reset/_dialog.reset.scss b/traffic_portal/v1/app/src/common/modules/dialog/reset/_dialog.reset.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/reset/_dialog.reset.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/reset/dialog.reset.tpl.html b/traffic_portal/v1/app/src/common/modules/dialog/reset/dialog.reset.tpl.html
deleted file mode 100644
index 852131de8..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/reset/dialog.reset.tpl.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="modal-header">
-    <button type="button" class="close" ng-click="cancel()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
-    <h5 class="modal-title">Reset User Password</h5>
-</div>
-<div class="modal-body">
-    <form name="resetPasswordForm" class="form-horizontal" role="form" novalidate>
-        <div class="form-group" ng-class="{'has-error': hasError(resetPasswordForm.email), 'has-feedback': hasError(resetPasswordForm.email)}">
-            <label for="email" class="col-sm-2 control-label">Email:</label>
-            <div class="col-sm-10">
-                <input id="email" name="email" type="email" class="form-control" placeholder="Enter your email" ng-model="userData.email" required>
-                <small class="input-error" ng-show="hasPropertyError(resetPasswordForm.email, 'required')">Required</small>
-                <small class="input-error" ng-show="hasPropertyError(resetPasswordForm.email, 'email')">Invalid email</small>
-                <span ng-show="hasError(resetPasswordForm.email)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-            </div>
-        </div>
-    </form>
-</div>
-<div class="modal-footer">
-    <button class="btn btn-link" ng-click="cancel()">Cancel</button>
-    <button class="btn action-btn" ng-disabled="resetPasswordForm.$pristine || resetPasswordForm.$invalid" ng-click="reset(userData.email)">Reset</button>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/dialog/reset/index.js b/traffic_portal/v1/app/src/common/modules/dialog/reset/index.js
deleted file mode 100644
index c14c8e769..000000000
--- a/traffic_portal/v1/app/src/common/modules/dialog/reset/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.dialog.reset', [])
-    .controller('DialogResetController', require('./DialogResetController'));
diff --git a/traffic_portal/v1/app/src/common/modules/footer/FooterController.js b/traffic_portal/v1/app/src/common/modules/footer/FooterController.js
deleted file mode 100644
index 0a55062df..000000000
--- a/traffic_portal/v1/app/src/common/modules/footer/FooterController.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var FooterController = function($scope, propertiesModel) {
-
-    var chunk = function(array, n) {
-        var retval = [];
-        for (var i = 0, len = array.length; i < len; i += n) {
-            retval.push(array.slice(i, i + n));
-        }
-        return retval;
-    };
-
-    $scope.footerChunks = chunk(propertiesModel.properties.footer.links, 4);
-
-};
-
-FooterController.$inject = ['$scope', 'propertiesModel'];
-module.exports = FooterController;
diff --git a/traffic_portal/v1/app/src/common/modules/footer/footer.tpl.html b/traffic_portal/v1/app/src/common/modules/footer/footer.tpl.html
deleted file mode 100755
index dcf445838..000000000
--- a/traffic_portal/v1/app/src/common/modules/footer/footer.tpl.html
+++ /dev/null
@@ -1,26 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="footer-bottom container">
-    <ul class="menu-list">
-        <li ng-repeat="footerChunk in footerChunks">
-            <ul>
-                <li ng-repeat="footerLink in footerChunk"><a href="{{footerLink.url}}" target="_blank">{{footerLink.text}}</a></li>
-            </ul>
-        </li>
-    </ul>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/footer/index.js b/traffic_portal/v1/app/src/common/modules/footer/index.js
deleted file mode 100644
index 98e59e65e..000000000
--- a/traffic_portal/v1/app/src/common/modules/footer/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.footer', [])
-    .controller('FooterController', require('./FooterController'));
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/header/HeaderController.js b/traffic_portal/v1/app/src/common/modules/header/HeaderController.js
deleted file mode 100755
index 1b82c26b0..000000000
--- a/traffic_portal/v1/app/src/common/modules/header/HeaderController.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var HeaderController = function($scope, $state, $window, $anchorScroll, $uibModal, authService, portalService, userModel, deliveryServicesModel, propertiesModel) {
-
-    $scope.isCollapsed = true;
-
-    $scope.user = angular.copy(userModel.user);
-
-    $scope.deliveryServices = deliveryServicesModel.deliveryServices;
-
-    $scope.properties = propertiesModel.properties;
-
-    $scope.isState = function(state) {
-        return $state.current.name.indexOf(state) !== -1;
-    };
-
-    $scope.showDS = function(dsId) {
-        $state.go('trafficPortal.private.deliveryService.view.overview.detail', { deliveryServiceId: dsId } );
-    };
-
-    $scope.releaseVersion = function() {
-        portalService.getReleaseVersionInfo()
-            .then(function(result) {
-                $uibModal.open({
-                    templateUrl: 'common/modules/release/version/release.version.tpl.html',
-                    controller: 'ReleaseVersionController',
-                    size: 'sm',
-                    resolve: {
-                        params: function () {
-                            return result;
-                        }
-                    }
-                });
-            });
-    };
-
-    $scope.about = function() {
-        if ($scope.properties.about.iframe) {
-            $scope.navigateToState('trafficPortal.public.about', false);
-        } else {
-            $window.open(
-                $scope.properties.about.url,
-                '_blank'
-            );
-        }
-    };
-
-    $scope.navigateToState = function(to, reload) {
-        $state.go(to, {}, { reload: reload });
-    };
-
-    $scope.logout = function() {
-        authService.logout();
-    };
-
-    var scrollToTop = function() {
-        $anchorScroll(); // hacky?
-    };
-
-    $scope.$on('userModel::userUpdated', function(event) {
-        $scope.user = angular.copy(userModel.user);
-    });
-
-    var init = function () {
-        scrollToTop();
-    };
-    init();
-};
-
-HeaderController.$inject = ['$scope', '$state', '$window', '$anchorScroll', '$uibModal', 'authService', 'portalService', 'userModel', 'deliveryServicesModel', 'propertiesModel'];
-module.exports = HeaderController;
diff --git a/traffic_portal/v1/app/src/common/modules/header/_header.scss b/traffic_portal/v1/app/src/common/modules/header/_header.scss
deleted file mode 100755
index 148e59f84..000000000
--- a/traffic_portal/v1/app/src/common/modules/header/_header.scss
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#header {
-
-  .navbar-nav .navbar-dropdown {
-    padding-top: 8px;
-  }
-
-  .no-transition {
-    -webkit-transition: height 0.01s;
-    -moz-transition: height 0.01s;
-    -ms-transition: height 0.01s;
-    -o-transition: height 0.01s;
-    transition: height 0.01s;
-  }
-
-  .nav-divider {
-    margin-top: 0;
-    margin-bottom: 0;
-  }
-
-  .top-navbar {
-    margin-bottom: 5px;
-  }
-
-  .sub-navbar {
-    margin-top: 10px;
-    margin-bottom: 10px;
-  }
-
-  .divider {
-    height: 2px;
-  }
-
-}
-
-#scrollable-ds-nav-menu {
-  height: auto;
-  max-height: 300px;
-  max-width: 500px;
-  overflow-y: auto;
-
-  .ds-name-link {
-    overflow: hidden;
-    text-overflow: ellipsis;
-  }
-
-}
-
-#headerUsername {
-  max-width: 200px;
-  white-space: nowrap;
-  overflow: hidden;
-  text-overflow: ellipsis;
-  display: inline-block;
-  margin-bottom: -5px;
-}
-
-@media (max-width: 991px) {
-  #header {
-    .nav-divider {
-      display: none;
-    }
-  }
-}
diff --git a/traffic_portal/v1/app/src/common/modules/header/header.tpl.html b/traffic_portal/v1/app/src/common/modules/header/header.tpl.html
deleted file mode 100755
index 0174b8ef8..000000000
--- a/traffic_portal/v1/app/src/common/modules/header/header.tpl.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="header" class="container">
-    <div class="navbar-header">
-        <button class="navbar-toggle" type="button" ng-click="isCollapsed = !isCollapsed">
-            <span class="sr-only">Toggle navigation</span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-            <span class="icon-bar"></span>
-        </button>
-        <span class="logo pull-left"></span>
-        <a class="navbar-brand" ui-sref="trafficPortal.public.home.landing">{{properties.name}}</a>
-    </div>
-    <div uib-collapse="isCollapsed" class="collapse navbar-collapse no-transition">
-        <ul class="nav navbar-nav navbar-right top-navbar">
-            <li class="navbar-dropdown navbar-dropdown-left dropdown">
-                <div class="btn-group" uib-dropdown is-open="helpMenu.isopen">
-                    <button id="helpMenu-button" type="button" class="btn btn-link" uib-dropdown-toggle>Help <i class="fa fa-angle-down fa-lg"></i></button>
-                    <ul class="uib-dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="helpMenu-button">
-                        <li ng-if="properties.about.show"><a ng-click="about()">About {{properties.name}}</a></li>
-                        <li><a ng-click="releaseVersion()">Release Information</a></li>
-                    </ul>
-                </div>
-            </li>
-            <li ng-show="!user.loaded && !isState('trafficPortal.public.home.landing')" class="navbar-btn">
-                <button type="button" class="btn btn-link" ng-click="navigateToState('trafficPortal.public.home.landing', false)">Login</button>
-            </li>
-            <li ng-show="user.loaded" class="navbar-dropdown navbar-dropdown-left dropdown">
-                <div class="btn-group" uib-dropdown is-open="userMenu.isopen">
-                    <button id="userMenu-button" type="button" class="btn btn-link" uib-dropdown-toggle>
-                        <span id="headerUsername" ng-show="!user.newUser">{{user.username}}</span><span ng-show="user.newUser">New User</span> <i class="fa fa-angle-down fa-lg"></i>
-                    </button>
-                    <ul class="uib-dropdown-menu" role="menu" aria-labelledby="userMenu-button">
-                        <li ng-show="user.localUser"><a ui-sref="trafficPortal.private.user.edit">Manage User Profile</a></li>
-                        <li><a ng-click="logout()">Sign Out</a></li>
-                    </ul>
-                </div>
-            </li>
-        </ul>
-    </div>
-    <hr ng-show="user.loaded" class="nav-divider">
-    <div uib-collapse="isCollapsed" class="collapse navbar-collapse no-transition">
-        <ul ng-show="user.loaded" class="nav navbar-nav sub-navbar navbar-left">
-            <li><button type="button" class="btn btn-link" ng-class="{'selected': isState('trafficPortal.private.dashboard.overview')}" ng-click="navigateToState('trafficPortal.private.dashboard.overview', false)">Dashboard</button></li>
-            <li class="sub-navbar-dropdown sub-navbar-dropdown-right dropdown">
-                <div class="btn-group" uib-dropdown is-open="dsMenu.isopen">
-                    <button id="dsMenu-button" type="button" class="btn btn-link" ng-class="{'selected': isState('trafficPortal.private.deliveryService')}" uib-dropdown-toggle>
-                        Delivery Services <i class="fa fa-angle-down fa-lg"></i>
-                    </button>
-                    <ul id="scrollable-ds-nav-menu" class="uib-dropdown-menu scrollable" role="menu" aria-labelledby="dsMenu-button">
-                        <li ng-if="properties.deliveryService.request.show"><a class="ds-name-link" title="New Delivery Service" ng-click="navigateToState('trafficPortal.private.deliveryService.new', true)"><i class="fa fa-plus fa-fw"></i> New Delivery Service</a> </li>
-                        <li ng-if="properties.deliveryService.request.show && deliveryServices.length > 0" class="divider"></li>
-                        <li ng-repeat="ds in deliveryServices | orderBy:'displayName'"><a class="ds-name-link" title="{{ds.displayName}} ({{ds.id}} | {{ds.xmlId}})" ng-click="showDS(ds.id)"><i class="fa fa-times fa-fw" title="Inactive" ng-show="!ds.active"></i><i class="fa fa-check fa-fw" title="Active" ng-show="ds.active"></i> {{ds.displayName}}</a></li>
-                    </ul>
-                </div>
-            </li>
-            <li><button type="button" class="btn btn-link" ng-class="{'selected': isState('trafficPortal.private.collateral')}" ng-click="navigateToState('trafficPortal.private.collateral', false)">Collateral</button></li>
-        </ul>
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/header/index.js b/traffic_portal/v1/app/src/common/modules/header/index.js
deleted file mode 100755
index 8a93e867a..000000000
--- a/traffic_portal/v1/app/src/common/modules/header/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.header', [])
-    .controller('HeaderController', require('./HeaderController'));
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/message/MessageController.js b/traffic_portal/v1/app/src/common/modules/message/MessageController.js
deleted file mode 100644
index c253d8eab..000000000
--- a/traffic_portal/v1/app/src/common/modules/message/MessageController.js
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var MessageController = function($rootScope, $scope, messageModel, chartModel) {
-
-    $scope.messageData = messageModel;
-
-    $scope.chartData = chartModel.chart;
-
-    $scope.dismissMessage = function(message) {
-        messageModel.removeMessage(message);
-    };
-
-    $scope.showConnectionLostMsg = function() {
-        $('#lostConnectionMsg').show();
-    };
-
-    $scope.hideConnectionLostMsg = function() {
-        $('#lostConnectionMsg').hide();
-    };
-
-    $rootScope.$watch('online', function(newStatus) {
-        if (newStatus === false && $scope.chartData.autoRefresh === true) {
-            $scope.showConnectionLostMsg();
-        }
-    });
-
-};
-
-MessageController.$inject = ['$rootScope', '$scope', 'messageModel', 'chartModel'];
-module.exports = MessageController;
diff --git a/traffic_portal/v1/app/src/common/modules/message/_message.scss b/traffic_portal/v1/app/src/common/modules/message/_message.scss
deleted file mode 100644
index 21978d43b..000000000
--- a/traffic_portal/v1/app/src/common/modules/message/_message.scss
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#messageContainer {
-  margin-top: 20px;
-  margin-bottom: 20px;
-  .alert {
-    margin-bottom: 0;
-  }
-}
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/message/index.js b/traffic_portal/v1/app/src/common/modules/message/index.js
deleted file mode 100644
index 6d10dd070..000000000
--- a/traffic_portal/v1/app/src/common/modules/message/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.message', [])
-    .controller('MessageController', require('./MessageController'));
diff --git a/traffic_portal/v1/app/src/common/modules/message/message.tpl.html b/traffic_portal/v1/app/src/common/modules/message/message.tpl.html
deleted file mode 100644
index 8f6d9c4da..000000000
--- a/traffic_portal/v1/app/src/common/modules/message/message.tpl.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="messageContainer">
-    <div id="lostConnectionMsg" class="alert alert-dismissable alert-danger" style="display: none;">
-        <button type="button" class="close" data-dismiss="alert" aria-hidden="true" ng-click="hideConnectionLostMsg()">&times;</button>
-        Your internet connection was interrupted. Live chart updates have been turned off. Please restart if necessary.
-    </div>
-</div>
-<div ng-show="messageData.messages.loaded">
-    <div class="alert alert-dismissable alert-{{(message.level === 'error') ? 'danger' : message.level}}" ng-repeat="message in messageData.messages.content">
-        <button type="button" class="close" data-dismiss="alert" aria-hidden="true" ng-click="dismissMessage(message)">&times;</button>
-        <div ng-bind-html="message.text | linky:'_blank'"></div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/modules/release/version/ReleaseVersionController.js b/traffic_portal/v1/app/src/common/modules/release/version/ReleaseVersionController.js
deleted file mode 100644
index a0201578d..000000000
--- a/traffic_portal/v1/app/src/common/modules/release/version/ReleaseVersionController.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ReleaseVersionController = function(params, $scope, $uibModalInstance) {
-
-    $scope.params = params;
-
-    $scope.dismiss = function () {
-        $uibModalInstance.dismiss('cancel');
-    };
-
-};
-
-ReleaseVersionController.$inject = ['params', '$scope', '$uibModalInstance'];
-module.exports = ReleaseVersionController;
diff --git a/traffic_portal/v1/app/src/common/modules/release/version/_release.version.scss b/traffic_portal/v1/app/src/common/modules/release/version/_release.version.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/common/modules/release/version/_release.version.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/common/modules/release/version/index.js b/traffic_portal/v1/app/src/common/modules/release/version/index.js
deleted file mode 100644
index 6e2598fb7..000000000
--- a/traffic_portal/v1/app/src/common/modules/release/version/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.release.version', [])
-    .controller('ReleaseVersionController', require('./ReleaseVersionController'));
diff --git a/traffic_portal/v1/app/src/common/modules/release/version/release.version.tpl.html b/traffic_portal/v1/app/src/common/modules/release/version/release.version.tpl.html
deleted file mode 100644
index ce8df6ebd..000000000
--- a/traffic_portal/v1/app/src/common/modules/release/version/release.version.tpl.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="modal-header">
-    <button type="button" class="close" ng-click="dismiss()"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button>
-    <h4 class="modal-title">Release Information</h4>
-</div>
-<div class="modal-body">
-    <p ng-repeat="(key, value) in params">{{key}}: {{value}}</p>
-</div>
diff --git a/traffic_portal/v1/app/src/common/modules/tools/purge/ToolsPurgeController.js b/traffic_portal/v1/app/src/common/modules/tools/purge/ToolsPurgeController.js
deleted file mode 100644
index 906754f67..000000000
--- a/traffic_portal/v1/app/src/common/modules/tools/purge/ToolsPurgeController.js
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ToolsPurgeController = function($scope, $uibModal, $stateParams, messageModel, deliveryServicesModel, dateUtils, formUtils, deliveryServiceService, userService) {
-
-    var getPurgeJobs = function() {
-        $scope.loadingPurgeJobs = true;
-        deliveryServiceService.getPurgeJobs($scope.deliveryService.id, false)
-            .then(function(response) {
-                $scope.loadingPurgeJobs = false;
-                $scope.purgeJobs = response;
-            });
-    };
-
-    var createPurgeJob = function(jobParams) {
-        userService.createUserPurgeJob(jobParams)
-            .then(function(response) {
-                getPurgeJobs();
-            });
-    };
-
-    $scope.deliveryService = deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-
-    $scope.dateFormat = dateUtils.dateFormat;
-
-    $scope.resetPurgeJobData = function() {
-        $scope.newPurgeJobData = {
-            dsId: $scope.deliveryService.id,
-            dsXmlId: $scope.deliveryService.xmlId,
-            regex: '',
-            ttl: 672,
-            startTime: moment().format('YYYY-MM-DD HH:mm:ss')
-        };
-    };
-    $scope.resetPurgeJobData();
-
-    $scope.confirmPurgeJobCreate = function(newPurgeJob) {
-        var params = {
-            title: 'Confirmation required',
-            message: 'Are you sure you want to invalidate content for ' + $scope.deliveryService.orgServerFqdn + newPurgeJob.regex
-        };
-        var modalInstance = $uibModal.open({
-            templateUrl: 'common/modules/dialog/confirm/dialog.confirm.tpl.html',
-            controller: 'DialogConfirmController',
-            size: 'md',
-            resolve: {
-                params: function () {
-                    return params;
-                }
-            }
-        });
-        modalInstance.result
-            .then(
-            function() {
-                createPurgeJob($scope.newPurgeJobData);
-                $scope.resetPurgeJobData();
-                $scope.purgeForm.$setPristine();
-            },
-            function () {
-            });
-    };
-
-    $scope.toDate = function(date) {
-        return moment(date).toDate(); // hack for https://issues.apache.org/jira/browse/TC-78
-    };
-
-    $scope.hasError = formUtils.hasError;
-
-    $scope.hasPropertyError = formUtils.hasPropertyError;
-
-    angular.element(document).ready(function () {
-        getPurgeJobs();
-    });
-
-};
-
-ToolsPurgeController.$inject = ['$scope', '$uibModal', '$stateParams', 'messageModel', 'deliveryServicesModel', 'dateUtils', 'formUtils', 'deliveryServiceService', 'userService'];
-module.exports = ToolsPurgeController;
diff --git a/traffic_portal/v1/app/src/common/modules/tools/purge/_tools.purge.scss b/traffic_portal/v1/app/src/common/modules/tools/purge/_tools.purge.scss
deleted file mode 100644
index c1b1c4ee7..000000000
--- a/traffic_portal/v1/app/src/common/modules/tools/purge/_tools.purge.scss
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#purgeFormContainer {
-  width: 450px;
-  margin: 10px;
-  cursor: default !important;
-
-  #purgeForm {
-    padding: 20px;
-  }
-
-  #purgeJobsLoading {
-    padding: 10px;
-  }
-}
-
-#purgeJobs {
-  margin-top: 10px;
-
-  .list-group {
-    margin-bottom:0px;
-
-    .list-group-item {
-
-      &:hover {
-        text-decoration: none;
-        background-color: rgb(255, 255, 255);
-      }
-
-      .purge-job-start {
-        font-size: 11px;
-        color: #999;
-      }
-
-    }
-
-  }
-
-}
diff --git a/traffic_portal/v1/app/src/common/modules/tools/purge/index.js b/traffic_portal/v1/app/src/common/modules/tools/purge/index.js
deleted file mode 100644
index d8792a1e5..000000000
--- a/traffic_portal/v1/app/src/common/modules/tools/purge/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.tools.purge', [])
-    .controller('ToolsPurgeController', require('./ToolsPurgeController'));
diff --git a/traffic_portal/v1/app/src/common/modules/tools/purge/tools.purge.tpl.html b/traffic_portal/v1/app/src/common/modules/tools/purge/tools.purge.tpl.html
deleted file mode 100644
index c6243f3ad..000000000
--- a/traffic_portal/v1/app/src/common/modules/tools/purge/tools.purge.tpl.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="purgeFormContainer" ng-click="$event.stopPropagation()">
-    <form id="purgeForm" name="purgeForm" role="form" ng-submit="confirmPurgeJobCreate(newPurgeJobData);" novalidate>
-        <div class="row">
-            <div class="col-sm-12 col-md-12">
-                <div class="form-group" ng-class="{'has-error': hasError(purgeForm.regex), 'has-feedback': hasError(purgeForm.regex)}">
-                    <label for="regex" class="control-label">Content pattern (regex) to match:</label>
-                    <input id="regex" name="regex" type="text" class="form-control" placeholder="eg. /path/to/content/.*\.jpg" ng-model="newPurgeJobData.regex" ng-pattern="/^\//" autofocus required>
-                    <small class="input-error" ng-show="hasPropertyError(purgeForm.regex, 'pattern')">Must Start with /</small>
-                    <small class="input-error" ng-show="hasPropertyError(purgeForm.regex, 'required')">Required</small>
-                    <span ng-show="hasError(purgeForm.regex)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-        <button class="btn btn-block action-btn" ng-disabled="purgeForm.$invalid">Invalidate Content</button>
-    </form>
-    <hr>
-    <h6 id="purgeJobsLoading">My purge jobs for {{deliveryService.displayName}} <i class="fa fa-spin fa-spinner fa-fw" ng-show="loadingPurgeJobs"></i></h6>
-    <div id="purgeJobs" ng-show="!loadingPurgeJobs">
-        <div class="list-group">
-            <li class="list-group-item" ng-repeat="purgeJob in purgeJobs">
-                <span>{{purgeJob.assetUrl}}</span>
-                <br>
-                <span class="purge-job-start">{{dateFormat(toDate(purgeJob.startTime), "mmm d yyyy h:MM TT (Z)")}}</span>
-            </li>
-        </div>
-        <div class="no-picks-alert alert alert-info" ng-show="purgeJobs.length == 0">
-            No purge jobs
-        </div>
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/common/service/application/ApplicationService.js b/traffic_portal/v1/app/src/common/service/application/ApplicationService.js
deleted file mode 100644
index b152b6361..000000000
--- a/traffic_portal/v1/app/src/common/service/application/ApplicationService.js
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ApplicationService = function($rootScope, $http, $window) {
-
-    /**
-     *  Application Startup Process
-     */
-    this.startup = function() {
-        registerOnlineListener();
-    };
-
-    var registerOnlineListener = function() {
-        $rootScope.online = $window.navigator.onLine;
-        $window.addEventListener("offline", function () {
-            $rootScope.$apply(function() {
-                $rootScope.online = false;
-            });
-        }, false);
-        $window.addEventListener("online", function () {
-            $rootScope.$apply(function() {
-                $rootScope.online = true;
-            });
-        }, false);
-    };
-
-    var init = function() {
-        $http.defaults.withCredentials = true;
-    };
-    init();
-
-};
-
-ApplicationService.$inject = ['$rootScope', '$http', '$window'];
-module.exports = ApplicationService;
diff --git a/traffic_portal/v1/app/src/common/service/application/index.js b/traffic_portal/v1/app/src/common/service/application/index.js
deleted file mode 100644
index 0943e96d8..000000000
--- a/traffic_portal/v1/app/src/common/service/application/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.application', [])
-    .service('applicationService', require('./ApplicationService'));
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/service/utils/ChartUtils.js b/traffic_portal/v1/app/src/common/service/utils/ChartUtils.js
deleted file mode 100644
index 51ad63645..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/ChartUtils.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var ChartUtils = function() {
-
-    this.formatData = function(dataPoints) {
-        if (!angular.isDefined(dataPoints)) { return [] };
-
-        var formattedData = [];
-
-        var dataPointsArray = dataPoints.split(',');
-        for (var i = 0; i < dataPointsArray.length; i++) {
-            dataPointsArray[i] = +dataPointsArray[i];
-        }
-        for (var j = 0; j < dataPointsArray.length; j+=2) {
-            formattedData.push(dataPointsArray.slice(j, j+2))
-        }
-        return formattedData;
-    };
-
-};
-
-ChartUtils.$inject = [];
-module.exports = ChartUtils;
diff --git a/traffic_portal/v1/app/src/common/service/utils/FormUtils.js b/traffic_portal/v1/app/src/common/service/utils/FormUtils.js
deleted file mode 100644
index 7c0e11131..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/FormUtils.js
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var FormUtils = function() {
-
-    this.hasError = function(input) {
-        return !input.$focused && input.$dirty && input.$invalid;
-    };
-
-    this.hasPropertyError = function(input, property) {
-        return !input.$focused && input.$dirty && input.$error[property];
-    };
-
-};
-
-FormUtils.$inject = [];
-module.exports = FormUtils;
diff --git a/traffic_portal/v1/app/src/common/service/utils/JSONUtils.js b/traffic_portal/v1/app/src/common/service/utils/JSONUtils.js
deleted file mode 100644
index 792c0d566..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/JSONUtils.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-
-var JSONUtils = function() {
-
-    this.convertToCSV = function(JSONData, reportTitle, includedKeys) {
-        // if JSONData is not an object then JSON.parse will parse the JSON string in an Object
-        var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
-
-        var CSV = '';
-        // set report title in first row or line
-        CSV += reportTitle + '\r\n\n';
-
-        // this loop will extract the labels from the first hash in the array
-        var keys = [];
-        for (var key in arrData[0]) {
-            if (!includedKeys || _.contains(includedKeys, key)) {
-                keys.push(key);
-            }
-        }
-        keys.sort(); // alphabetically
-
-        var row = "";
-        for (var i = 0; i < keys.length; i++) {
-            //Now convert each value to string and comma-separate
-            row += keys[i] + ',';
-        }
-        row = row.slice(0, -1);
-
-        //append Label row with line break
-        CSV += row + '\r\n';
-
-        // outer loop is to extract each row
-        for (var j = 0; j < arrData.length; j++) {
-            var row = "";
-
-            // inner loop to extract each column by name and convert it to a comma-separated string
-            for (var k = 0; k < keys.length; k++) {
-                row += '"' + arrData[j][keys[k]] + '",';
-            }
-
-            row.slice(0, row.length - 1);
-
-            // add a line break after each row
-            CSV += row + '\r\n';
-        }
-
-        if (CSV == '') {
-            alert("Invalid data");
-            return;
-        }
-
-        // generate a file name
-        var fileName = "";
-        // this will remove the blank-spaces from the title and replace it with an underscore
-        fileName += reportTitle.replace(/ /g,"_");
-
-        // initialize file format to csv
-        var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);
-
-        // Now the little tricky part.
-        // you can use either>> window.open(uri);
-        // but this will not work in some browsers
-        // or you will not get the correct file extension
-
-        // this trick will generate a temp <a /> tag
-        var link = document.createElement("a");
-        link.href = uri;
-
-        // set the visibility hidden so it will not effect on your web-layout
-        link.style = "visibility:hidden";
-        link.download = fileName + ".csv";
-
-        // this part will append the anchor tag and remove it after automatic click
-        document.body.appendChild(link);
-        link.click();
-        document.body.removeChild(link);
-    };
-
-};
-
-JSONUtils.$inject = [];
-module.exports = JSONUtils;
diff --git a/traffic_portal/v1/app/src/common/service/utils/NumberUtils.js b/traffic_portal/v1/app/src/common/service/utils/NumberUtils.js
deleted file mode 100644
index e3502eff4..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/NumberUtils.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var NumberUtils = function($filter) {
-
-    var k = 1000,
-        sizes = ['B', 'Kb', 'Mb', 'Gb', 'Tb', 'Pb'];
-
-    this.addCommas = function(nStr)
-    {
-        nStr += '';
-        x = nStr.split('.');
-        x1 = x[0];
-        x2 = x.length > 1 ? '.' + x[1] : '';
-        var rgx = /(\d+)(\d{3})/;
-        while (rgx.test(x1)) {
-            x1 = x1.replace(rgx, '$1' + ',' + '$2');
-        }
-        return x1 + x2;
-    };
-
-    /**
-     * This function takes big scary kilobit numbers and 'shrinks' them to a friendly version
-     * i.e. 10,000 kilobits is easier read as 10 megabits...
-     */
-    this.shrink = function(kilounits) {
-        if (!angular.isNumber(kilounits) || kilounits == 0) return [ 0, 'Kb' ];
-        var units = kilounits * 1000;
-        var i = Math.floor(Math.log(units) / Math.log(k));
-        if (i < 1) { i = 1 } // kilobits is the lowest we will go
-        if (i > 5) { i = 5 } // petabits is the highest we will go
-        return [ Math.round((units / Math.pow(k, i)) * 100) / 100, sizes[i] ];
-    };
-
-    this.convertTo = function(kilounits, size) {
-        if (!angular.isNumber(kilounits)) return null;
-        if (kilounits == 0) return 0;
-        var units = kilounits * 1000;
-        var i = sizes.indexOf(size);
-        if (i == -1) {
-            return 0;
-        }
-        return Math.round((units / Math.pow(k, i)) * 100) / 100;
-    };
-
-    this.average = function(arr)
-    {
-        if (!angular.isArray(arr) || arr.length == 0 ) return 0;
-        return _.reduce(arr, function(memo, num) {
-            return memo + num;
-        }, 0) / arr.length;
-    }
-
-    this.ratio = function(numerator, denominator)
-    {
-        if (numerator === 0 || denominator === 0) {
-            return 'N/A';
-        } else {
-            return $filter('number')(numerator/denominator, 2) + ':1';
-        }
-    }
-
-};
-
-NumberUtils.$inject = ['$filter'];
-module.exports = NumberUtils;
diff --git a/traffic_portal/v1/app/src/common/service/utils/date/DateUtils.js b/traffic_portal/v1/app/src/common/service/utils/date/DateUtils.js
deleted file mode 100644
index 14ad2d381..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/date/DateUtils.js
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you 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.
- */
-
-var DateUtils = function() {
-
-    this.dateFormat = function () {
-        // source: http://blog.stevenlevithan.com/archives/date-time-format
-        var	token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
-            timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
-            timezoneClip = /[^-+\dA-Z]/g,
-            pad = function (val, len) {
-                val = String(val);
-                len = len || 2;
-                while (val.length < len) val = "0" + val;
-                return val;
-            };
-
-        // Regexes and supporting functions are cached through closure
-        return function (date, mask, utc) {
-            var dF = this.dateFormat;
-
-            // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
-            if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
-                mask = date;
-                date = undefined;
-            }
-
-            // Passing date through Date applies Date.parse, if necessary
-            date = date ? new Date(date) : new Date;
-            if (isNaN(date)) throw SyntaxError("invalid date");
-
-            mask = String(dF.masks[mask] || mask || dF.masks["default"]);
-
-            // Allow setting the utc argument via the mask
-            if (mask.slice(0, 4) == "UTC:") {
-                mask = mask.slice(4);
-                utc = true;
-            }
-
-            var	_ = utc ? "getUTC" : "get",
-                d = date[_ + "Date"](),
-                D = date[_ + "Day"](),
-                m = date[_ + "Month"](),
-                y = date[_ + "FullYear"](),
-                H = date[_ + "Hours"](),
-                M = date[_ + "Minutes"](),
-                s = date[_ + "Seconds"](),
-                L = date[_ + "Milliseconds"](),
-                o = utc ? 0 : date.getTimezoneOffset(),
-                flags = {
-                    d:    d,
-                    dd:   pad(d),
-                    ddd:  dF.i18n.dayNames[D],
-                    dddd: dF.i18n.dayNames[D + 7],
-                    m:    m + 1,
-                    mm:   pad(m + 1),
-                    mmm:  dF.i18n.monthNames[m],
-                    mmmm: dF.i18n.monthNames[m + 12],
-                    yy:   String(y).slice(2),
-                    yyyy: y,
-                    h:    H % 12 || 12,
-                    hh:   pad(H % 12 || 12),
-                    H:    H,
-                    HH:   pad(H),
-                    M:    M,
-                    MM:   pad(M),
-                    s:    s,
-                    ss:   pad(s),
-                    l:    pad(L, 3),
-                    L:    pad(L > 99 ? Math.round(L / 10) : L),
-                    t:    H < 12 ? "a"  : "p",
-                    tt:   H < 12 ? "am" : "pm",
-                    T:    H < 12 ? "A"  : "P",
-                    TT:   H < 12 ? "AM" : "PM",
-                    Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
-                    o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
-                    S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
-                };
-
-            return mask.replace(token, function ($0) {
-                return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
-            });
-        };
-    }();
-
-    this.dateFormat.masks = {
-        "default":      "ddd mmm dd yyyy HH:MM:ss",
-        shortDate:      "m/d/yy",
-        mediumDate:     "mmm d, yyyy",
-        longDate:       "mmmm d, yyyy",
-        fullDate:       "dddd, mmmm d, yyyy",
-        shortTime:      "h:MM TT",
-        mediumTime:     "h:MM:ss TT",
-        longTime:       "h:MM:ss TT Z",
-        isoDate:        "yyyy-mm-dd",
-        isoTime:        "HH:MM:ss",
-        isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
-        isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
-    };
-
-    this.dateFormat.i18n = {
-        dayNames: [
-            "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
-            "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
-        ],
-        monthNames: [
-            "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
-            "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
-        ]
-    };
-
-};
-
-DateUtils.$inject = [];
-module.exports = DateUtils;
diff --git a/traffic_portal/v1/app/src/common/service/utils/date/index.js b/traffic_portal/v1/app/src/common/service/utils/date/index.js
deleted file mode 100644
index b104c3d75..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/date/index.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.utils.date', [])
-    .service('dateUtils', require('./DateUtils'));
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/service/utils/index.js b/traffic_portal/v1/app/src/common/service/utils/index.js
deleted file mode 100644
index 581a3b1be..000000000
--- a/traffic_portal/v1/app/src/common/service/utils/index.js
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.utils', [])
-    .service('chartUtils', require('./ChartUtils'))
-    .service('formUtils', require('./FormUtils'))
-    .service('jsonUtils', require('./JSONUtils'))
-    .service('numberUtils', require('./NumberUtils'));
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/common/templates/master.tpl.html b/traffic_portal/v1/app/src/common/templates/master.tpl.html
deleted file mode 100755
index 668b5e4b8..000000000
--- a/traffic_portal/v1/app/src/common/templates/master.tpl.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<!-- Header Nav -->
-<nav class="navbar navbar-inverse" ui-view="header"></nav>
-
-<div class="container">
-
-    <!-- Message -->
-    <div ui-view="message"></div>
-
-    <!-- Content -->
-    <div ui-view="content"></div>
-
-</div>
-
-<!-- Footer -->
-<footer id="footer" ui-view="footer"></footer>
diff --git a/traffic_portal/v1/app/src/index.html b/traffic_portal/v1/app/src/index.html
deleted file mode 100755
index c8c9987db..000000000
--- a/traffic_portal/v1/app/src/index.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<!doctype html>
-<head>
-
-    <title>Traffic Portal</title>
-
-    <meta charset="utf-8">
-    <meta http-equiv="X-UA-Compatible" content="IE=edge">
-    <meta name="description" content="">
-    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
-
-    <link rel="shortcut icon" href="resources/assets/images/favicon.png" type="image/x-icon" />
-
-    <link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
-    <link rel="stylesheet" media="all" href="//cdnjs.cloudflare.com/ajax/libs/angular-bootstrap-datetimepicker/0.4.0/css/datetimepicker.css">
-
-    <link rel="stylesheet" media="all" href="resources/styles/loading.css">
-    <link rel="stylesheet" media="all" href="resources/styles/main.css">
-    <link rel="stylesheet" media="all" href="resources/assets/css/custom.css">
-
-</head>
-
-<body ng-app="trafficPortal" ng-controller="AppCtrl" ng-class="{'home': isHome()}">
-
-    <div class="app" ui-view></div>
-
-    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.12.0/moment.js"></script>
-    <script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
-
-    <script src="resources/assets/js/shared-libs.js"></script>
-
-    <script src="//cdnjs.cloudflare.com/ajax/libs/angular-bootstrap-datetimepicker/0.4.0/js/datetimepicker.min.js"></script>
-
-    <script src="resources/assets/js/config.js"></script>
-    <script src="resources/assets/js/app.js"></script>
-
-    <script type="text/javascript">
-        function AppCtrl($scope, $state) {
-            $scope.isHome = function() {
-                return $state.current.name == 'trafficPortal.public.home.landing';
-            };
-        }
-    </script>
-
-</body>
-
-</html>
diff --git a/traffic_portal/v1/app/src/modules/private/collateral/CollateralController.js b/traffic_portal/v1/app/src/modules/private/collateral/CollateralController.js
deleted file mode 100644
index 1236e5290..000000000
--- a/traffic_portal/v1/app/src/modules/private/collateral/CollateralController.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var CollateralController = function($scope, propertiesModel) {
-
-    $scope.collateralItems = propertiesModel.properties.collateral.items;
-
-};
-
-CollateralController.$inject = ['$scope', 'propertiesModel'];
-module.exports = CollateralController;
diff --git a/traffic_portal/v1/app/src/modules/private/collateral/_collateral.scss b/traffic_portal/v1/app/src/modules/private/collateral/_collateral.scss
deleted file mode 100644
index b2f81fcc2..000000000
--- a/traffic_portal/v1/app/src/modules/private/collateral/_collateral.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#productCollateralContainer {
-
-  .list-group-item {
-    background-color: transparent;
-
-    .action-btn {
-      float: right;
-    }
-
-  }
-
-}
diff --git a/traffic_portal/v1/app/src/modules/private/collateral/collateral.tpl.html b/traffic_portal/v1/app/src/modules/private/collateral/collateral.tpl.html
deleted file mode 100644
index 6d6a0259f..000000000
--- a/traffic_portal/v1/app/src/modules/private/collateral/collateral.tpl.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="productCollateralContainer">
-    <h3 class="title">Collateral</h3>
-    <div class="list-group">
-        <a class="list-group-item" ng-repeat="collateralItem in collateralItems" href="{{collateralItem.path}}" target="_blank">
-            <div class="row">
-                <div class="col-sm-4 col-md-4">{{collateralItem.name}}</div>
-                <div class="col-sm-6 col-md-6">{{collateralItem.description}}</div>
-                <div class="col-sm-2 col-md-2">
-                    <button type="button" class="action-btn btn">Download &nbsp;&nbsp;<i class="fa fa-chevron-circle-right fa-lg"></i></button>
-                </div>
-            </div>
-        </a>
-    </div>
-    <div class="alert alert-info" ng-show="collateral.length == 0">
-        No collateral
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/modules/private/collateral/index.js b/traffic_portal/v1/app/src/modules/private/collateral/index.js
deleted file mode 100644
index 7fdf76ee4..000000000
--- a/traffic_portal/v1/app/src/modules/private/collateral/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.collateral', [])
-    .controller('CollateralController', require('./CollateralController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.collateral', {
-                url: 'collateral',
-                views: {
-                    privateContent: {
-                        templateUrl: 'modules/private/collateral/collateral.tpl.html',
-                        controller: 'CollateralController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/DashboardController.js b/traffic_portal/v1/app/src/modules/private/dashboard/DashboardController.js
deleted file mode 100644
index a09ba9d7e..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/DashboardController.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DashboardController = function($scope, $location, chartModel, deliveryServicesModel, propertiesModel, userModel) {
-
-    $scope.deliveryServices = deliveryServicesModel.deliveryServices;
-
-    $scope.properties = propertiesModel.properties;
-
-    $scope.user = angular.copy(userModel.user);
-
-    $scope.requestDS = function() {
-        $location.url('/delivery-service/new');
-    };
-
-    var init = function () {
-        chartModel.resetChart(); // set chart back to default parameters
-    };
-    init();
-};
-
-DashboardController.$inject = ['$scope', '$location', 'chartModel', 'deliveryServicesModel', 'propertiesModel', 'userModel'];
-module.exports = DashboardController;
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/_dashboard.scss b/traffic_portal/v1/app/src/modules/private/dashboard/_dashboard.scss
deleted file mode 100644
index 891e06820..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/_dashboard.scss
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dashboardContainer {
-
-  .request-ds-btn {
-    float: right;
-    margin-left: 5px;
-    margin-top: 20px;
-  }
-
-  .ds-container {
-    clear: both;
-    border: 1px solid #A8A8A8;
-    padding: 20px 20px 0 20px;
-    margin-bottom: 20px;
-  }
-
-}
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/dashboard.tpl.html b/traffic_portal/v1/app/src/modules/private/dashboard/dashboard.tpl.html
deleted file mode 100644
index 62764f031..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/dashboard.tpl.html
+++ /dev/null
@@ -1,38 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="dashboardContainer">
-    <h2>CDN Health</h2>
-    <div class="row">
-        <div class="locations-container col-lg-12 col-md-12 col-sm-12">
-            <div ui-view="cacheGroupsContent"></div>
-        </div>
-    </div>
-    <hr>
-    <div class="row">
-        <div class="col-lg-7 col-md-7 col-sm-7">
-            <h2>Assigned Delivery Services <small>[ {{deliveryServices.length}} ]</small></h2>
-        </div>
-        <div class="col-lg-5 col-md-5 col-sm-5">
-            <button ng-if="properties.deliveryService.request.show" type="button" class="request-ds-btn action-btn btn" ng-click="requestDS()"><i class="fa fa-plus fa-fw"></i> New Delivery Service</button>
-        </div>
-    </div>
-    <div class="ds-container col-lg-12 col-md-12 col-sm-12">
-        <div ui-view="deliveryServicesContent"></div>
-    </div>
-</div>
-
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/index.js b/traffic_portal/v1/app/src/modules/private/dashboard/index.js
deleted file mode 100644
index a997c2051..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.private.dashboard', [])
-    .controller('DashboardController', require('./DashboardController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.dashboard', {
-                url: 'dashboard',
-                abstract: true,
-                views: {
-                    privateContent: {
-                        templateUrl: 'modules/private/dashboard/dashboard.tpl.html',
-                        controller: 'DashboardController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/DashboardDeliveryServicesController.js b/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/DashboardDeliveryServicesController.js
deleted file mode 100644
index 73debf685..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/DashboardDeliveryServicesController.js
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DashboardDeliveryServicesController = function($window, $rootScope, $scope, $location, $uibModal, $q, $interval, $filter, $anchorScroll, dateUtils, numberUtils, chartUtils, messageModel, chartModel, statsService) {
-
-    var bandwidthInterval;
-
-    var createDeliveryServiceSparkline = function(dsId, unitSize) {
-        var $sparkLine = $(".delivery-service-sparkline-" + dsId),
-            data = chartUtils.formatData($sparkLine.data('sparkline'));
-
-        var options = {
-            xaxis: {
-                mode: "time",
-                timezone: "browser",
-                ticks: false
-            },
-            yaxis: { ticks: false },
-            grid: {
-                borderWidth: 0,
-                hoverable: true
-            },
-            tooltip: {
-                show: true,
-                content: function(label, xval, yval, flotItem){
-                    return '<span>' + $filter('number')(yval, 2) + ' ' + unitSize + 'ps @ ' + dateUtils.dateFormat(xval, "h:MM:ss tt (Z)") + '</span>';
-                }
-            }
-        };
-
-        var series = [
-            {
-                data: data,
-                color: '#337ab7',
-                lines: {
-                    lineWidth: 0.8
-                },
-                shadowSize: 0
-            }
-        ];
-
-        // draw the sparkline
-        $.plot($sparkLine, series, options);
-    };
-
-    $scope.loadBandwidth = function(dsId, showLoading) {
-        if (!$rootScope.online) return;
-
-        var deliveryService = _.find($scope.deliveryServices, function(ds){ return ds.id === dsId }),
-            $sparkLine = $(".delivery-service-sparkline-" + dsId),
-            yesterday = moment().subtract(24, 'hours'),
-            now = moment(),
-            exclude = '';
-
-        if (showLoading) {
-            try {
-                $sparkLine.empty(); // remove the sparkline if it's there
-            } catch (err) {
-                // there was no sparkline evidently so no need to clear it
-            }
-
-            $sparkLine.html("<div>Loading...</div>");
-            $('.delivery-service-last-' + dsId).html("<div>Calculating...</div>");
-        }
-
-        statsService.getEdgeBandwidthBatch(deliveryService, yesterday, now, '60s', exclude, true, false)
-            .then(
-                function(response) {
-
-                    var sparklineData = [],
-                        originalValue = 0,
-                        convertedValue = 0,
-                        summary = response.summary,
-                        series = response.series;
-
-                    try {
-                        $scope.unitSize = numberUtils.shrink(summary.average)[1];
-                        _.each(series.values, function(seriesItem) {
-                            if (_.isNumber(seriesItem[1])) {
-                                originalValue = seriesItem[1];
-                                convertedValue = numberUtils.convertTo(seriesItem[1], $scope.unitSize);
-                                sparklineData.push(moment(seriesItem[0]).valueOf()); // time in milliseconds
-                                sparklineData.push(convertedValue); // value
-                            }
-                        });
-                    }
-                    catch (e) {
-                        // no bandwidth for delivery service
-                    }
-
-                    deliveryService.last = originalValue;
-                    var convertedLast = numberUtils.shrink(originalValue);
-                    $('.delivery-service-last-' + dsId).html($filter('number')(convertedLast[0], 2) + ' ' + convertedLast[1] + 'ps');
-                    $sparkLine.data('sparkline', sparklineData.join(','));
-                    createDeliveryServiceSparkline(dsId, $scope.unitSize);
-                },
-                function(fault) {
-                    $('.delivery-service-sparkline-' + dsId).html('Error');
-                    $('.delivery-service-last-' + dsId).html('Error');
-                });
-    };
-
-    $scope.search = {
-        query: ""
-    };
-
-    $scope.predicate = 'displayName';
-    $scope.reverse = false;
-
-    $scope.dsOptions = {
-        inactive: true
-    };
-
-    $scope.unitSize = 'Kb';
-
-    $scope.autoLoadLimit = 10;
-
-    $scope.navigateToDeliveryService = function(dsId) {
-        $location.url('/delivery-service/' + dsId).search({ start: moment(chartModel.chart.start).format(), end: moment(chartModel.chart.end).format() });
-    };
-
-    $scope.viewConfig = function(ds) {
-
-        var modalInstance = $uibModal.open({
-            templateUrl: 'common/modules/deliveryService/config/edit/deliveryService.config.edit.tpl.html',
-            controller: 'DSConfigEditController',
-            size: 'lg',
-            windowClass: 'ds-config-modal',
-            resolve: {
-                deliveryService: function (deliveryServiceService) {
-                    return deliveryServiceService.getDeliveryService(ds.id);
-                }
-            }
-        });
-
-        modalInstance.result.then(function() {
-        }, function () {
-            // do nothing
-        });
-    };
-
-    $scope.showInactive = function(show) {
-        $scope.dsOptions.inactive = show;
-    };
-
-    $scope.hideDeliveryService = function(ds) {
-        var query = $scope.search.query.toLowerCase(),
-            id = ds.id.toString(),
-            xmlId = ds.xmlId.toLowerCase(),
-            displayName = ds.displayName.toLowerCase(),
-            isSubstring = (id.indexOf(query) !== -1) || (xmlId.indexOf(query) !== -1) || (displayName.indexOf(query) !== -1);
-
-        return !isSubstring || ($scope.dsOptions.inactive == false && !ds.active);
-    };
-
-    angular.element(document).ready(function () {
-        // if you do not exceed # of delivery services allowed for autoload, we'll autoload bandwidth for each delivery service and refresh on a timer
-        if ($scope.deliveryServices.length <= $scope.autoLoadLimit) {
-            $scope.loadAllBandwidth();
-            bandwidthInterval = $interval($scope.loadAllBandwidth, (5*60*1000)); // new bandwidth data every 5 minutes
-        }
-    });
-
-    $scope.$on("$destroy", function() {
-        if (angular.isDefined(bandwidthInterval)) {
-            $interval.cancel(bandwidthInterval);
-            bandwidthInterval = undefined;
-        }
-    });
-
-};
-
-DashboardDeliveryServicesController.$inject = ['$window', '$rootScope', '$scope', '$location', '$uibModal', '$q', '$interval', '$filter', '$anchorScroll', 'dateUtils', 'numberUtils', 'chartUtils', 'messageModel', 'chartModel', 'statsService'];
-module.exports = DashboardDeliveryServicesController;
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/_dashboard.deliveryServices.scss b/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/_dashboard.deliveryServices.scss
deleted file mode 100644
index ea39454e9..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/_dashboard.deliveryServices.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dashboardDSSearchForm {
-  margin-bottom: 10px;
-}
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/dashboard.deliveryServices.tpl.html b/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/dashboard.deliveryServices.tpl.html
deleted file mode 100644
index 9df648056..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/overview/deliveryServices/dashboard.deliveryServices.tpl.html
+++ /dev/null
@@ -1,52 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="dashboardDSSearchForm" class="input-group">
-    <input type="text" class="filter-input form-control" placeholder="Filter delivery services..." ng-model="search.query">
-    <span class="filter-input-group-btn input-group-btn">
-        <button ng-show="dsOptions.inactive == true" ng-click="showInactive(false)" class="btn btn-default btn-last" type="button" uib-popover="Hide inactive delivery services" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class">Hide Inactive</button>
-        <button ng-show="dsOptions.inactive == false" ng-click="showInactive(true)" class="btn btn-default btn-last" type="button" uib-popover="Show inactive delivery services" popover-trigger="mouseenter" popover-placement="bottom" popover-append-to-body="true" popover-class="popover-class">Show Inactive</button>
-    </span>
-</div>
-<table id="dashboardDSTable" class="table">
-    <thead>
-    <tr>
-        <th>ID</th>
-        <th><a ng-click="predicate = 'displayName'; reverse = !reverse">Delivery Service Name <i class="fa fa-caret-up fa-fw" ng-show="predicate == 'displayName' && !reverse"></i><i class="fa fa-caret-down fa-fw" ng-show="predicate == 'displayName' && reverse"></i></a></th>
-        <th>Bandwidth (24 hrs)</th>
-        <th><a ng-click="predicate = 'last'; reverse = !reverse">Last Bandwidth <i class="fa fa-caret-up fa-fw" ng-show="predicate == 'last' && !reverse"></i><i class="fa fa-caret-down fa-fw" ng-show="predicate == 'last' && reverse"></i></a></th>
-        <th>Actions</th>
-    </tr>
-    </thead>
-    <tbody>
-    <tr class="delivery-service-row" ng-class="{'active': !deliveryService.active}" ng-repeat="deliveryService in deliveryServices | orderBy:predicate:reverse" ng-hide="hideDeliveryService(deliveryService)">
-        <td><a class="link" ng-click="navigateToDeliveryService(deliveryService.id)"><span title="{{deliveryService.id}}">{{deliveryService.id}}</span></a></td>
-        <td><a class="link" ng-click="navigateToDeliveryService(deliveryService.id)"><span title="{{deliveryService.displayName}} ({{deliveryService.id}} | {{deliveryService.xmlId}})">{{deliveryService.displayName}}</span> <span ng-show="!deliveryService.active">[ inactive ]</span></a></td>
-        <td class="delivery-service-sparkline delivery-service-sparkline-{{deliveryService.id}} loading-text"><a class="link" title="Load Bandwidth" ng-click="loadBandwidth(deliveryService.id, true)">Load Bandwidth</a></td>
-        <td class="delivery-service-last-{{deliveryService.id}} loading-text" style="min-width:120px;"></td>
-        <td style="width:130px;">
-            <a class="link" title="Refresh Delivery Service Bandwidth" ng-click="loadBandwidth(deliveryService.id, true)"><i class="fa fa-refresh fa-fw"></i></a>
-            <a class="link" title="View Delivery Service Config" ng-click="viewConfig(deliveryService)"><i class="fa fa-cog fa-fw"></i></a>
-            <a class="link" title="View Delivery Service in New Window" target="_blank" ui-sref="trafficPortal.private.deliveryService.view.overview.detail({deliveryServiceId:deliveryService.id})"><i class="fa fa-external-link fa-fw"></i></a>
-        </td>
-    </tr>
-    </tbody>
-</table>
-<div class="alert alert-info" ng-show="deliveryServices.length == 0">
-    No delivery services configured for current user
-</div>
-
diff --git a/traffic_portal/v1/app/src/modules/private/dashboard/overview/index.js b/traffic_portal/v1/app/src/modules/private/dashboard/overview/index.js
deleted file mode 100644
index 27ade9286..000000000
--- a/traffic_portal/v1/app/src/modules/private/dashboard/overview/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.private.dashboard.overview', [])
-    .controller('DashboardDeliveryServicesController', require('./deliveryServices/DashboardDeliveryServicesController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.dashboard.overview', {
-                url: '',
-                views: {
-                    cacheGroupsContent: {
-                        templateUrl: 'common/modules/cacheGroups/cacheGroups.tpl.html',
-                        controller: 'CacheGroupsController',
-                        resolve: {
-                            entityId: function() {
-                                return null;
-                            },
-                            service: function(healthService) {
-                                return healthService;
-                            },
-                            showDownload: function() {
-                                return false;
-                            }
-                        }
-                    },
-                    deliveryServicesContent: {
-                        templateUrl: 'modules/private/dashboard/overview/deliveryServices/dashboard.deliveryServices.tpl.html',
-                        controller: 'DashboardDeliveryServicesController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/DeliveryServiceController.js b/traffic_portal/v1/app/src/modules/private/deliveryService/DeliveryServiceController.js
deleted file mode 100644
index 47bc4764e..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/DeliveryServiceController.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceController = function($scope, userModel) {
-
-    $scope.user = angular.copy(userModel.user);
-
-};
-
-DeliveryServiceController.$inject = ['$scope', 'userModel'];
-module.exports = DeliveryServiceController;
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/_deliveryService.scss b/traffic_portal/v1/app/src/modules/private/deliveryService/_deliveryService.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/_deliveryService.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/deliveryService.tpl.html b/traffic_portal/v1/app/src/modules/private/deliveryService/deliveryService.tpl.html
deleted file mode 100644
index b986f5c6a..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/deliveryService.tpl.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div ui-view="deliveryServiceContent"></div>
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/index.js
deleted file mode 100644
index 19c6ecfa2..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService', [])
-    .controller('DeliveryServiceController', require('./DeliveryServiceController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService', {
-                url: 'delivery-service',
-                abstract: true,
-                views: {
-                    privateContent: {
-                        templateUrl: 'modules/private/deliveryService/deliveryService.tpl.html',
-                        controller: 'DeliveryServiceController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/new/DeliveryServiceNewController.js b/traffic_portal/v1/app/src/modules/private/deliveryService/new/DeliveryServiceNewController.js
deleted file mode 100644
index 36e81ab46..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/new/DeliveryServiceNewController.js
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceNewController = function($scope, $location, $anchorScroll, formUtils, deliveryServiceService) {
-
-    $scope.templates = {
-        signedUrls: 'signedUrl.html',
-        queryStringHandling: 'queryStringHandling.html',
-        rangeRequestHandling: 'rangeRequestHandling.html',
-        headerRewriteEdge: 'headerRewriteEdge.html',
-        headerRewriteMid: 'headerRewriteMid.html',
-        headerRewriteRedirectRouter: 'headerRewriteRedirectRouter.html'
-    };
-
-    $scope.openTab = 'service-desc-tab';
-
-    $scope.booleans = [
-        { label: 'Yes', value: true },
-        { label: 'No', value: false }
-    ];
-
-    $scope.serviceDescStarted = true;
-    $scope.trafficStarted = false;
-    $scope.originStarted = false;
-    $scope.coreStarted = false;
-    $scope.serviceLimitStarted = false;
-    $scope.headerStarted = false;
-    $scope.notesStarted = false;
-    $scope.confirmStarted = false;
-
-    $scope.resetDSData = function() {
-        $scope.dsData = {
-            customer: '',
-            contentType: 'video-on-demand',
-            deliveryProtocol: 'http',
-            routingType: 'dns',
-            serviceDesc: '',
-            peakBPSEstimate: 'less-than-5-Gbps',
-            peakTPSEstimate: 'less-than-1000-TPS',
-            maxLibrarySizeEstimate: 'less-than-200-GB',
-            originURL: '',
-            hasOriginDynamicRemap: false,
-            originTestFile: '',
-            hasOriginACLWhitelist: false,
-            originHeaders: '',
-            otherOriginSecurity: '',
-            queryStringHandling: 'ignore-in-cache-key-and-pass-up',
-            rangeRequestHandling: 'range-requests-not-used',
-            hasSignedURLs: false,
-            hasNegativeCachingCustomization: false,
-            negativeCachingCustomizationNote: '',
-            serviceAliases: [ '' ],
-            rateLimitingGBPS: 0,
-            rateLimitingTPS: 0,
-            overflowService: '',
-            headerRewriteEdge: '',
-            headerRewriteMid: '',
-            headerRewriteRedirectRouter: '',
-            notes: ''
-        };
-    };
-    $scope.resetDSData();
-
-    $scope.onDeliveryProtocolChange = function() {
-        if ($scope.dsData.deliveryProtocol == 'http-to-https') {
-            $scope.dsData.routingType = 'http'; // routing type must be http for http-to-https protocol
-        }
-    };
-
-    $scope.onRoutingTypeChange = function() {
-        if ($scope.dsData.routingType == 'dns') {
-            $scope.dsData.headerRewriteRedirectRouter = ''; // not relevant for dns
-        }
-    };
-
-    $scope.onNegativeCachingCustomizationChange = function() {
-        if ($scope.dsData.hasNegativeCachingCustomization == false) {
-            $scope.dsData.negativeCachingCustomizationNote = ''; // note no relevant
-        }
-    };
-
-    $scope.onRateLimitingChange = function() {
-        if ($scope.dsData.rateLimitingGBPS <= 0 && $scope.dsData.rateLimitingTPS <= 0) {
-            $scope.dsData.overflowService = ''; // overflow service is irrelevant if no rate limits
-        }
-    };
-
-    $scope.navigateToDashboard = function() {
-        $location.url('/dashboard');
-    };
-
-    $scope.incomplete = function(forms) {
-        var incomplete = false;
-        if (!$scope.serviceDescStarted || !$scope.trafficStarted || !$scope.originStarted || !$scope.coreStarted || !$scope.serviceLimitStarted || !$scope.notesStarted || !$scope.confirmStarted) {
-            return true;
-        }
-        _.each(forms, function(form) {
-            if (form.$invalid) {
-                incomplete = true;
-            }
-        });
-        return incomplete;
-    };
-
-    $scope.jumpToTab = function(tab, startedFlag) {
-        $scope.openTab = tab;
-        $scope[startedFlag] = true;
-    };
-
-    $scope.submitRequest = function(dsData) {
-        deliveryServiceService.createDSRequest(dsData).finally(
-            function() { $anchorScroll(); } // scroll to top
-        );
-    };
-
-    $scope.addAlias = function() {
-        $scope.dsData.serviceAliases.push('');
-    };
-
-    $scope.removeAlias = function(index) {
-        if (index > 0) { // no removing the first one
-            $scope.dsData.serviceAliases.splice(index, 1);
-        }
-    };
-
-    $scope.hasError = formUtils.hasError;
-
-    $scope.hasPropertyError = formUtils.hasPropertyError;
-
-};
-
-DeliveryServiceNewController.$inject = ['$scope', '$location', '$anchorScroll', 'formUtils', 'deliveryServiceService'];
-module.exports = DeliveryServiceNewController;
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/new/_deliveryService.new.scss b/traffic_portal/v1/app/src/modules/private/deliveryService/new/_deliveryService.new.scss
deleted file mode 100644
index e1efd0017..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/new/_deliveryService.new.scss
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dsWizardContainer {
-  margin-bottom: 30px;
-
-  .row {
-    margin-right: 0;
-  }
-
-  .step-info {
-    float: right;
-    margin-top: 3px;
-  }
-
-  .not-allowed {
-    cursor: not-allowed !important;
-  }
-
-  .selected-step {
-    border-right:4px solid #428bca;
-  }
-
-  .alias-inputs {
-    width: 100%;
-
-    .input-group-btn {
-      padding-top: 25px;
-    }
-
-  }
-
-}
-
-#dsNewFormContainer {
-  position: relative;
-  text-align: left;
-  border: 1px solid #A8A8A8;
-  padding: 30px 60px;
-
-  .row {
-    margin-right: 0px;
-  }
-
-  .confirm-table {
-    .heading {
-      color: #16b6e0;
-    }
-  }
-
-}
-
-.ds-wizard-popover-small {
-  max-width: none;
-  width: 300px;
-}
-
-.ds-wizard-popover-big {
-  max-width: none;
-  width: 500px;
-}
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/new/deliveryService.new.tpl.html b/traffic_portal/v1/app/src/modules/private/deliveryService/new/deliveryService.new.tpl.html
deleted file mode 100644
index 9003ee3b2..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/new/deliveryService.new.tpl.html
+++ /dev/null
@@ -1,601 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="dsWizardContainer">
-    <div>
-        <ol class="breadcrumb">
-            <li><a ng-click="navigateToDashboard()">Dashboard</a></li>
-            <li class="active">New Delivery Service</li>
-        </ol>
-    </div>
-    <div class="row">
-        <div class="col-lg-3 col-md-12 col-sm-12">
-            <ul class="nav nav-pills nav-stacked">
-                <li class="header">New Delivery Service</li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'service-desc-tab'}" ng-click="jumpToTab('service-desc-tab', 'serviceDescStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="serviceDescStarted && !serviceDescForm.$invalid"></i> Service Description
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'traffic-tab'}" ng-click="jumpToTab('traffic-tab', 'trafficStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="trafficStarted && !trafficForm.$invalid"></i> Traffic &amp; Library Estimates
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'origin-tab'}" ng-click="jumpToTab('origin-tab', 'originStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="originStarted && !originForm.$invalid"></i> Origin Server &amp; Security
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'core-tab'}" ng-click="jumpToTab('core-tab', 'coreStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="coreStarted && !coreForm.$invalid"></i> Core Features
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'service-limits-tab'}" ng-click="jumpToTab('service-limits-tab', 'serviceLimitStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="serviceLimitStarted && !serviceLimitForm.$invalid"></i> Service Limits
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'header-tab'}" ng-click="jumpToTab('header-tab', 'headerStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="headerStarted && !headerForm.$invalid"></i> Header Customization
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'notes-tab'}" ng-click="jumpToTab('notes-tab', 'notesStarted')">
-                        <i class="fa fa-check fa-fw" ng-show="notesStarted && !notesForm.$invalid"></i> Additional Notes
-                    </a>
-                </li>
-                <li>
-                    <a ng-class="{'selected-step': openTab == 'confirm-tab'}" ng-click="jumpToTab('confirm-tab', 'confirmStarted')">
-                        Confirm &amp; Submit
-                    </a>
-                </li>
-            </ul>
-        </div>
-        <div id="dsNewFormContainer" class="col-lg-9 col-med-12 col-sm-12">
-            <form name="serviceDescForm" role="form" ng-show="openTab == 'service-desc-tab'" novalidate>
-                <legend>Service Description</legend>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="customer">Customer&nbsp;&nbsp;<i class="customer-tooltip field-info fa fa-info-circle" popover-title="Customer" uib-popover="Name of the customer to display on the service. We use this to help determine the service ids and relation to other services." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <input id="customer" name="customer" type="text" class="form-control" ng-model="dsData.customer" ng-maxlength="50" required>
-                            <small class="input-error" ng-show="hasPropertyError(serviceDescForm.customer, 'required')">[ Required ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(serviceDescForm.customer, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="deliveryProtocol">Delivery Protocol&nbsp;&nbsp;<i class="delivery-protocol-tooltip field-info fa fa-info-circle" popover-title="Delivery Protocol" uib-popover="Services that use &quot;HTTP and HTTPS&quot; will be able to deliver both types of traffic. If you deliver HTTPS you will not be able to use a service alias with your service." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <select id="deliveryProtocol" name="deliveryProtocol" class="form-control" ng-change="onDeliveryProtocolChange()" ng-model="dsData.deliveryProtocol">
-                                <option value="http">HTTP</option>
-                                <option value="https-only">HTTPS</option>
-                                <option value="http-and-https">HTTP and HTTPS</option>
-                                <option value="http-to-https">HTTP to HTTPS</option>
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="contentType">Content Type&nbsp;&nbsp;<i class="content-type-tooltip field-info fa fa-info-circle" popover-title="Content Type" uib-popover="This choice should reflect the primary content of the service. Services may deliver more than one type of content." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="contentType" name="contentType" class="form-control" ng-model="dsData.contentType">
-                                <option value="video-on-demand">Video - On Demand</option>
-                                <option value="video-live">Video - Live</option>
-                                <option value="web-content-file-download">Web Content / File Download</option>
-                            </select>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="routingType">Routing Type&nbsp;&nbsp;<i class="routing-type-tooltip field-info fa fa-info-circle" popover-title="Routing Type" uib-popover="DNS is the standard routing type for most CDN services. HTTP Redirect is a specialty routing service that is primarily used for video and large file downloads where localization and latency are significant concerns." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <select id="routingType" name="routingType" class="form-control" ng-disabled="dsData.deliveryProtocol == 'http-to-https'" ng-change="onRoutingTypeChange()" ng-model="dsData.routingType">
-                                <option value="dns">DNS</option>
-                                <option value="http">HTTP Redirect</option>
-                            </select>
-                            <small class="input-error" ng-show="dsData.deliveryProtocol == 'http-to-https'">HTTP required for HTTP to HTTPS delivery protocol</small>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-12 col-md-12">
-                        <div class="form-group">
-                            <label class="control-label" for="serviceDesc">Service Description&nbsp;&nbsp;<i class="service-desc-tooltip field-info fa fa-info-circle" popover-title="Service Description" uib-popover="This description will be used to help name your service and differentiate it from your other services." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <textarea id="serviceDesc" name="serviceDesc" rows="3" class="form-control" ng-model="dsData.serviceDesc" ng-maxlength="400" required></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(serviceDescForm.serviceDesc, 'required')">[ Required ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(serviceDescForm.serviceDesc, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn action-btn" ng-disabled="serviceDescForm.$invalid" ng-click="jumpToTab('traffic-tab', 'trafficStarted')">Next</button>
-                </div>
-            </form>
-            <form name="trafficForm" role="form" ng-show="openTab == 'traffic-tab'" novalidate>
-                <legend>Traffic &amp; Library Estimates</legend>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="peakBpsEstimate">Peak Bandwidth Estimate&nbsp;&nbsp;<i class="peakBpsEstimate-tooltip field-info fa fa-info-circle" popover-title="Peak Bandwidth Estimate" uib-popover="Service size estimates help us manage cache efficiency and plan for capacity for new build services. Sizing should be estimated for short term expectations. We actively monitor service growth over time and adjust configuration settings as needed." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="peakBpsEstimate" name="peakBpsEstimate" class="form-control" ng-model="dsData.peakBPSEstimate">
-                                <option value="less-than-5-Gbps">Less than 5 Gbps</option>
-                                <option value="5-to-50-Gbps">5 to 50 Gbps</option>
-                                <option value="gt-50-Gbps">Greater than 50 Gbps</option>
-                            </select>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="maxLibrarySizeEstimate">Max Library Size Estimate&nbsp;&nbsp;<i class="maxLibrarySizeEstimate-tooltip field-info fa fa-info-circle" popover-title="Max Library Size Estimate" uib-popover="Service size estimates help us manage cache efficiency and plan for capacity for new build services. Sizing should be estimated for short term expectations. We actively monitor service growth over time and adjust configuration settings as needed." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <select id="maxLibrarySizeEstimate" name="maxLibrarySizeEstimate" class="form-control" ng-model="dsData.maxLibrarySizeEstimate">
-                                <option value="less-than-200-GB">Less than 200 GB</option>
-                                <option value="200-GB-to-2-TB">200 GB to 2 TB</option>
-                                <option value="greater-than-2-TB">Greater than 2 TB</option>
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="peakTpsEstimate">Peak Transactions/Second Estimate&nbsp;&nbsp;<i class="peakTpsEstimate-tooltip field-info fa fa-info-circle" popover-title="Peak Transactions/Second Estimate" uib-popover="Service size estimates help us manage cache efficiency and plan for capacity for new build services. Sizing should be estimated for short term expectations. We actively monitor service growth over time and adjust configuration settings as needed." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="peakTpsEstimate" name="peakTpsEstimate" class="form-control" ng-model="dsData.peakTPSEstimate">
-                                <option value="less-than-1000-TPS">Less than 1,000 TPS</option>
-                                <option value="1000-to-5000-TPS">1,000 to 5,000 TPS</option>
-                                <option value="greater-than-5000-TPS">Greater than 5,000 TPS</option>
-                            </select>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('service-desc-tab', 'serviceDescStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="trafficForm.$invalid" ng-click="jumpToTab('origin-tab', 'originStarted')">Next</button>
-                </div>
-            </form>
-            <form name="originForm" role="form" ng-show="openTab == 'origin-tab'" novalidate>
-                <fieldset>
-                    <div class="col-sm-6 col-md-6">
-                        <legend>Origin Server</legend>
-                        <div class="form-group">
-                            <label class="control-label" for="originUrl">Origin Server URL&nbsp;&nbsp;<i class="originUrl-tooltip field-info fa fa-info-circle" popover-title="Origin Server URL" uib-popover="The URL path to the origin server including http://" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <input id="originUrl" name="originUrl" type="text" placeholder="http://" class="form-control" ng-model="dsData.originURL" ng-maxlength="2000" ng-pattern="/^(https?:\/\/)/" required>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originUrl, 'required')">[ Required ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originUrl, 'pattern')">[ Must start with http:// or https:// ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originUrl, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                        <div class="form-group">
-                            <label class="control-label" for="originDynamicRemap">Origin Dynamic Remap&nbsp;&nbsp;<i class="originDynamicRemap-tooltip field-info fa fa-info-circle" popover-title="Origin Dynamic Remap" uib-popover="This is a feature which allows services to use multiple origin URLs for the same service. This is done by passing an origin URL value as a part of each request (ex query string). Most customers will not require this feature. If you select &quot;Yes&quot; for this feature, we will contact you to discuss the details." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="originDynamicRemap" name="originDynamicRemap" class="form-control" ng-model="dsData.hasOriginDynamicRemap" ng-options="boolean.value as boolean.label for boolean in booleans"></select>
-                        </div>
-                        <div class="form-group">
-                            <label class="control-label" for="originTestFile">Origin Test File&nbsp;&nbsp;<i class="originTestFile-tooltip field-info fa fa-info-circle" popover-title="Origin Test File" uib-popover="A URL path to a test file available on the origin server. This is used to verify that service is setup correctly. crossdomain.xml and clientaccesspolicy.xml are two examples of common files available on the origin." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <input id="originTestFile" name="originTestFile" type="text" placeholder="http://" class="form-control" ng-model="dsData.originTestFile" ng-maxlength="2000" ng-pattern="/^(https?:\/\/)/" required>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originTestFile, 'required')">[ Required ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originTestFile, 'pattern')">[ Must start with http:// or https:// ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originTestFile, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <legend>Origin Security</legend>
-                        <div class="form-group">
-                            <label class="control-label" for="originAclWhitelist">ACL/Whitelist to Access Origin&nbsp;&nbsp;<i class="originAclWhitelist-tooltip field-info fa fa-info-circle" popover-title="ACL/Whitelist to Access Origin" uib-popover="Do you restrict access to your origin using an access control list (ACL or whitelist) of IPs?" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="left" popover-append-to-body="true"></i></label>
-                            <select id="originAclWhitelist" name="originAclWhitelist" class="form-control" ng-model="dsData.hasOriginACLWhitelist" ng-options="boolean.value as boolean.label for boolean in booleans"></select>
-                        </div>
-                        <div class="form-group">
-                            <label class="control-label" for="originHeaders">Header to Access Origin (optional)&nbsp;&nbsp;<i class="originHeaders-tooltip field-info fa fa-info-circle" popover-title="Header to Access Origin" uib-popover="Do you require a header to be passed in requests to your origin? If you do, please provide the value of this header." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <input id="originHeaders" name="originHeaders" type="text" class="form-control" ng-model="dsData.originHeaders" ng-maxlength="500">
-                            <small class="input-error" ng-show="hasPropertyError(originForm.originHeaders, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                        <div class="form-group">
-                            <label class="control-label" for="otherOriginSecurity">Other Origin Security Measures (optional)&nbsp;&nbsp;<i class="otherOriginSecurity-tooltip field-info fa fa-info-circle" popover-title="Other Origin Security Measures" uib-popover="Do you have other origin security measures that need to be considered for access? Please describe." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <input id="otherOriginSecurity" name="otherOriginSecurity" type="text" class="form-control" ng-model="dsData.otherOriginSecurity" ng-maxlength="500">
-                            <small class="input-error" ng-show="hasPropertyError(originForm.otherOriginSecurity, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </fieldset>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('traffic-tab', 'trafficStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="originForm.$invalid" ng-click="jumpToTab('core-tab', 'coreStarted')">Next</button>
-                </div>
-            </form>
-            <form name="coreForm" role="form" ng-show="openTab == 'core-tab'" novalidate>
-                <legend>Core Features</legend>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="queryStringHandling">Query String Handling&nbsp;&nbsp;<i class="queryStringHandling-tooltip field-info fa fa-info-circle" popover-title="Query String Handling" uib-popover-template="templates.queryStringHandling" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-big" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="queryStringHandling" name="queryStringHandling" class="form-control" ng-model="dsData.queryStringHandling">
-                                <option value="use-in-cache-key-and-pass-up">Use in Cache Key, and Pass Up</option>
-                                <option value="ignore-in-cache-key-and-pass-up">Ignore in Cache Key, and Pass Up</option>
-                                <option value="drop-at-edge">Drop at Edge</option>
-                            </select>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="signedURLs">Signed URLs / URL Tokenization&nbsp;&nbsp;<i class="signedURLs-tooltip field-info fa fa-info-circle" popover-title="Signed URLs / URL Tokenization" uib-popover-template="templates.signedUrls" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-popup-close-delay="1000" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <select id="signedURLs" name="signedURLs" class="form-control" ng-model="dsData.hasSignedURLs" ng-options="boolean.value as boolean.label for boolean in booleans"></select>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="rangeRequestHandling">Range Request Handling&nbsp;&nbsp;<i class="rangeRequestHandling-tooltip field-info fa fa-info-circle" popover-title="Range Request Handling" uib-popover-template="templates.rangeRequestHandling" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-big" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <select id="rangeRequestHandling" name="rangeRequestHandling" class="form-control" ng-model="dsData.rangeRequestHandling">
-                                <option value="range-requests-not-used">Range Requests Not Used</option>
-                                <option value="consistent-non-overlapping-range-requests-used">Consistent, Non-Overlapping Range Requests Used</option>
-                                <option value="variable-overlapping-range-requests-used">Variable, Overlapping Range Requests Used</option>
-                            </select>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="negativeCachingCustomization">Negative Caching Customization&nbsp;&nbsp;<i class="negativeCachingCustomization-tooltip field-info fa fa-info-circle" popover-title="Negative Caching Customization" uib-popover="For failed CDN responses like 404 or 502, the CDN will cache the response and reserve it for 1 second to prevent the customer origin from being overloaded with retries. This behavior can be customized but most customers keep the standard parameters." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <select id="negativeCachingCustomization" name="negativeCachingCustomization" class="form-control" ng-change="onNegativeCachingCustomizationChange()" ng-model="dsData.hasNegativeCachingCustomization" ng-options="boolean.value as boolean.label for boolean in booleans"></select>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="row" ng-repeat="alias in dsData.serviceAliases track by $index">
-                            <div class="col-sm-12 col-md-12">
-                                <ng-form name="aliasForm">
-                                    <div class="form-group">
-                                        <div class="input-group alias-inputs">
-                                            <label class="control-label" for="serviceAlias">Service Alias #{{$index + 1}} (optional)&nbsp;&nbsp;<i class="serviceAlias-tooltip field-info fa fa-info-circle" popover-title="Service Alias" uib-popover="Do you have other service aliases which will be used for this service? We need to know these aliases so that we know where to direct these requests. You can add multiple aliases." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                                            <input id="serviceAlias" name="serviceAlias" type="text" placeholder="http://" class="form-control" ng-model="dsData.serviceAliases[$index]" ng-pattern="/^(https?:\/\/)/" ng-maxlength="2000">
-                                            <span class="form-input-group-btn input-group-btn">
-                                                <button id="removeBtn" name="removeBtn" class="btn btn-default" ng-show="$index > 0" ng-click="removeAlias($index)"><i class="fa fa-minus"></i></button>
-                                                <button id="addBtn" name="addBtn" class="btn btn-default" ng-show="$index == (dsData.serviceAliases.length - 1)" ng-click="addAlias()"><i class="fa fa-plus"></i></button>
-                                            </span>
-                                        </div>
-                                        <small class="input-error" ng-show="hasPropertyError(aliasForm.serviceAlias, 'pattern')">[ Must start with http:// or https:// ]</small>
-                                        <small class="input-error" ng-show="hasPropertyError(aliasForm.serviceAlias, 'maxlength')">[ Too Long ]</small>
-                                    </div>
-                                </ng-form>
-                            </div>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group" ng-show="dsData.hasNegativeCachingCustomization == true">
-                            <label class="control-label" for="negativeCachingCustomizationNote">Negative Caching Instructions&nbsp;&nbsp;<i class="negativeCachingCustomizationNote-tooltip field-info fa fa-info-circle" popover-title="Negative Caching Instructions" uib-popover="Please enter any specific instructions you have regarding negative caching customization." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="top" popover-append-to-body="true"></i></label>
-                            <textarea id="negativeCachingCustomizationNote" name="negativeCachingCustomizationNote" rows="3" class="form-control" ng-model="dsData.negativeCachingCustomizationNote" ng-required="dsData.hasNegativeCachingCustomization == true" ng-maxlength="400"></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(coreForm.negativeCachingCustomizationNote, 'required')">[ Required ]</small>
-                            <small class="input-error" ng-show="hasPropertyError(coreForm.negativeCachingCustomizationNote, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('origin-tab', 'originStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="coreForm.$invalid" ng-click="jumpToTab('service-limits-tab', 'serviceLimitStarted')">Next</button>
-                </div>
-            </form>
-            <form name="serviceLimitsForm" role="form" ng-show="openTab == 'service-limits-tab'" novalidate>
-                <legend>Service Limits</legend>
-                <div class="row">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="rateLimitingGbps">Rate Limiting - Bandwidth (Gbps) (optional)&nbsp;&nbsp;<i class="rateLimitingGbps-tooltip field-info fa fa-info-circle" popover-title="Rate Limiting - Bandwidth (Gbps)" uib-popover="If a service limit is selected, then you must provide an overflow point where the CDN will send the excess traffic. This overflow point is typically a another CDN service or a customer origin. The overflow can be provided as an FQDN (http://customername.com) or as an IPv4 or IPv6 address (10.10.10.10). When the service exceeds the threshold set, the CDN will redirect all excess traffic to the overflow point." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <input id="rateLimitingGbps" name="rateLimitingGbps" type="number" class="form-control" min="0" ng-change="onRateLimitingChange()" ng-model="dsData.rateLimitingGBPS">
-                            <small class="input-error" ng-show="hasPropertyError(serviceLimitsForm.rateLimitingGbps, 'min')">[ Invalid ]</small>
-                        </div>
-                    </div>
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="rateLimitingTPS">Rate Limiting - Transactions/Second (optional)&nbsp;&nbsp;<i class="rateLimitingTPS-tooltip field-info fa fa-info-circle" popover-title="Rate Limiting - Transactions/Second" uib-popover="If a service limit is selected, then you must provide an overflow point where the CDN will send the excess traffic. This overflow point is typically a another CDN service or a customer origin. The overflow can be provided as an FQDN (http://customername.com) or as an IPv4 or IPv6 address (10.10.10.10). When the service exceeds the threshold set, the CDN will redirect all excess traffic to the overflow point." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="bottom" popover-append-to-body="true"></i></label>
-                            <input id="rateLimitingTPS" name="rateLimitingTPS" type="number" class="form-control" min="0" ng-change="onRateLimitingChange()" ng-model="dsData.rateLimitingTPS">
-                            <small class="input-error" ng-show="hasPropertyError(serviceLimitsForm.rateLimitingTPS, 'min')">[ Invalid ]</small>
-                        </div>
-                    </div>
-                </div>
-                <div class="row" ng-show="dsData.rateLimitingGBPS > 0 || dsData.rateLimitingTPS > 0">
-                    <div class="col-sm-6 col-md-6">
-                        <div class="form-group">
-                            <label class="control-label" for="overflowService">Overflow Service (IP or URL)&nbsp;&nbsp;<i class="overflowService-tooltip field-info fa fa-info-circle" popover-title="Overflow Service (IP or URL)" uib-popover="This overflow point is typically a another CDN service or a customer origin. The overflow can be provided as an FQDN (http://customername.com) or as an IPv4 or IPv6 address (10.10.10.10). When the service exceeds the threshold set, the CDN will redirect all excess traffic to the overflow point." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <input id="overflowService" name="overflowService" type="text" class="form-control" ng-required="dsData.rateLimitingGBPS > 0 || dsData.rateLimitingTPS > 0" ng-model="dsData.overflowService">
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('core-tab', 'coreStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="serviceLimitsForm.$invalid" ng-click="jumpToTab('header-tab', 'headerStarted')">Next</button>
-                </div>
-            </form>
-            <form name="headerForm" role="form" ng-show="openTab == 'header-tab'" novalidate>
-                <legend>Header Customization</legend>
-                <div class="row">
-                    <div class="col-sm-12 col-md-12">
-                        <div class="form-group">
-                            <label class="control-label" for="headerRewriteEdge">Header Rewrite - Edge Tier (optional)&nbsp;&nbsp;<i class="headerRewriteEdge-tooltip field-info fa fa-info-circle" popover-title="Header Rewrite - Edge Tier" uib-popover-template="templates.headerRewriteEdge" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-big" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <textarea id="headerRewriteEdge" name="headerRewriteEdge" rows="3" class="form-control" ng-model="dsData.headerRewriteEdge" ng-maxlength="400"></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(headerForm.headerRewriteEdge, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <div class="row">
-                    <div class="col-sm-12 col-md-12">
-                        <div class="form-group">
-                            <label class="control-label" for="headerRewriteMid">Header Rewrite - Mid Tier (optional)&nbsp;&nbsp;<i class="headerRewriteMid-tooltip field-info fa fa-info-circle" popover-title="Header Rewrite - Mid Tier" uib-popover-template="templates.headerRewriteMid" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-big" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <textarea id="headerRewriteMid" name="headerRewriteMid" rows="3" class="form-control" ng-model="dsData.headerRewriteMid" ng-maxlength="400"></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(headerForm.headerRewriteMid, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <div class="row" ng-show="dsData.routingType == 'http'">
-                    <div class="col-sm-12 col-md-12">
-                        <div class="form-group">
-                            <label class="control-label" for="headerRewriteRedirectRouter">Header Rewrite - Redirect Router (optional)&nbsp;&nbsp;<i class="headerRewriteRedirectRouter-tooltip field-info fa fa-info-circle" popover-title="Header Rewrite - Redirect Router" uib-popover-template="templates.headerRewriteRedirectRouter" popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-big" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <textarea id="headerRewriteRedirectRouter" name="headerRewriteRedirectRouter" rows="3" class="form-control" ng-model="dsData.headerRewriteRedirectRouter" ng-maxlength="400"></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(headerForm.headerRewriteRedirectRouter, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('service-limits-tab', 'serviceLimitStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="headerForm.$invalid" ng-click="jumpToTab('notes-tab', 'notesStarted')">Next</button>
-                </div>
-            </form>
-            <form name="notesForm" role="form" ng-show="openTab == 'notes-tab'" novalidate>
-                <legend>Additional Notes</legend>
-                <div class="row">
-                    <div class="col-sm-12 col-md-12">
-                        <div class="form-group">
-                            <label class="control-label" for="notes">Additional Notes&nbsp;&nbsp;<i class="notes-tooltip field-info fa fa-info-circle" popover-title="Additional Notes" uib-popover="Any additional instructions you would like to provide the delivery service provisioning team." popover-trigger="mouseenter" popover-class="popover-class ds-wizard-popover-small" popover-placement="right" popover-append-to-body="true"></i></label>
-                            <textarea id="notes" name="notes" rows="5" class="form-control" ng-model="dsData.notes" ng-maxlength="500"></textarea>
-                            <small class="input-error" ng-show="hasPropertyError(notesForm.notes, 'maxlength')">[ Too Long ]</small>
-                        </div>
-                    </div>
-                </div>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('header-tab', 'headerStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="notesForm.$invalid" ng-click="jumpToTab('confirm-tab', 'confirmStarted')">Next</button>
-                </div>
-            </form>
-            <div ng-show="openTab == 'confirm-tab'">
-                <h3>Confirm &amp; Submit</h3>
-                <table class="table confirm-table">
-                    <tbody>
-                        <tr><th colspan="2"><h4 class="heading">Service Description</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Customer:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.customer}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Content Type:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.contentType}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Delivery Protocol:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.deliveryProtocol}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Routing Type:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.routingType}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Service Description:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.serviceDesc}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Traffic &amp; Library Estimates</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Peak Bandwidth Estimate:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.peakBPSEstimate}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Peak Transactions Per Second Estimate:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.peakTPSEstimate}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Max Library Size Estimate:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.maxLibrarySizeEstimate}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Origin Server &amp; Security</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Origin Server URL:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.originURL}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Origin Dynamic Remap:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.hasOriginDynamicRemap}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Origin Test File:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.originTestFile}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">ACL/Whitelist to Access Origin:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.hasOriginACLWhitelist}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Header to Access Origin:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.otherOriginSecurity}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Other Origin Security Measures:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.originHeaders}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Core Features</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Query String Handling:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.queryStringHandling}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Range Request Handling:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.rangeRequestHandling}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Signed URLs / URL Tokenization:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.hasSignedURLs}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Negative Caching Customization:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.hasNegativeCachingCustomization}}</td>
-                        </tr>
-                        <tr ng-show="dsData.hasNegativeCachingCustomization == true">
-                            <td class="col-sm-4 col-md-4 col-lg-4">Negative Caching Instructions:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.negativeCachingCustomizationNote}}</td>
-                        </tr>
-                        <tr ng-repeat="alias in dsData.serviceAliases track by $index">
-                            <td class="col-sm-4 col-md-4 col-lg-4">Service Alias #{{$index + 1}}:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.serviceAliases[$index]}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Service Limits</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Rate Limiting - Bandwidth (Gbps):</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.rateLimitingGBPS}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Rate Limiting - Transactions/Second:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.rateLimitingTPS}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Overflow Service (IP or URL):</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.overflowService}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Header Customization</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Header Rewrite - Edge Tier:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.headerRewriteEdge}}</td>
-                        </tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Header Rewrite - Mid Tier:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.headerRewriteMid}}</td>
-                        </tr>
-                        <tr ng-show="dsData.routingType.indexOf('http') != -1">
-                            <td class="col-sm-4 col-md-4 col-lg-4">Header Rewrite - Redirect Router:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.headerRewriteRedirectRouter}}</td>
-                        </tr>
-                        <tr><th colspan="2"><h4 class="heading">Additional Notes</h4></th></tr>
-                        <tr>
-                            <td class="col-sm-4 col-md-4 col-lg-4">Additional Notes:</td>
-                            <td class="col-sm-8 col-md-8 col-lg-8">{{dsData.notes}}</td>
-                        </tr>
-                    </tbody>
-                </table>
-                <hr>
-                <div class="pull-right">
-                    <button type="button" class="btn btn-link" ng-click="jumpToTab('notes-tab', 'notesStarted')">Back</button>
-                    <button type="button" class="btn action-btn" ng-disabled="incomplete([serviceDescForm, trafficForm, originForm, coreForm, serviceLimitsForm, headerForm, notesForm])" ng-click="submitRequest(dsData)">Submit Request &nbsp;&nbsp;<i class="fa fa-chevron-circle-right fa-lg"></i></button>
-                </div>
-            </div>
-        </div>
-    </div>
-</div>
-
-<!-- html for tooltips -->
-
-<script type="text/ng-template" id="signedUrl.html">
-    <div>
-        <p>If you select "yes" we will provide you with a script to use to sign your URLs as well as a set of 16 keys.</p>
-        <p><a href="/resources/assets/other/sign.pl" target="_blank">Perl URL Signing Script</a></p>
-        <p><a href="/resources/assets/other/sign_parameters.txt" target="_blank">Signing Script Parameters</a></p>
-    </div>
-</script>
-
-<script type="text/ng-template" id="queryStringHandling.html">
-    <div id="queryStringHandling-tooltip-content">
-        <p>When caching your content, we need to know how to handle query strings that come with the request in terms of how we cache each URL. For example if you pass a query string with a user id as a part of each request for the same file, we would need to either ignore this query string or drop it in order to cache the file properly.</p>
-        <ul>
-            <li>Use in Cache Key, and Pass Up: query string is used in cache key and passed up to the origin when fill requests are made.</li>
-            <li>Ignore in Cache Key, and Pass Up: query string is not used in cache key but it is still passed along to the origin when fill requests are made.</li>
-            <li>Drop at Edge: query string is not used in cache key and is not passed to origin when fill requests are made.</li>
-        </ul>
-    </div>
-</script>
-
-<script type="text/ng-template" id="rangeRequestHandling.html">
-    <div id="rangeRequestHandling-tooltip-content"><p>Range requests are not supported by default. One of two options must
-        be selected in order for the CDN to support range requests.</p>
-        <ul>
-            <li>Consistent, Non-Overlapping Ranges: If this is selected, each range request will be cached as a separate file.</li>
-            <li>Variable, Overlapping Ranges: If this is selected, the full object will be pulled into cache as a single file and the varying ranges will be served from the full copy.</li>
-        </ul>
-        <p>If you know you need range requests but you don’t know which type of requests are made the safer choice is Variable, Overlapping Ranges. This can always be changed later.</p>
-        <p>Consistent, Non-Overlapping Example: each client calls the same ranges (in any order) and these ranges do not overlap each other:</p>
-        <ul>
-            <li>Client 1 calls ranges: 0 to 1,000; 1,001 to 2,000; 2,001 to 2,650</li>
-            <li>Client 2 calls ranges: 2,001 to 2,650; 1,001 to 2000; 0 to 1,000</li>
-            <li>Client 3 calls ranges: 0 to 1,000; 1,001 to 2000</li>
-        </ul>
-        <p>Variable, Overlapping Example: each client is free to call whatever range they want, in any order, and these ranges may overlap each other:</p>
-        <ul>
-            <li>Client 1 calls ranges: 0 to 500; 501 to 1,000</li>
-            <li>Client 2 calls ranges: 0 to 1,000; 1,001 to 2,000</li>
-            <li>Client 3 calls ranges: 0 to 750; 751 to 1,500</li>
-        </ul>
-    </div>
-</script>
-
-<script type="text/ng-template" id="headerRewriteEdge.html">
-    <div id="headerRewriteEdge-tooltip-content">
-        <p>Headers can be added or altered at each layer of the CDN. You must tell
-            us four things: the action, the header name, the header value, and the direction to apply. The action will tell us
-            whether we are adding, removing, or replacing headers. The header name and header value will determine the full
-            header text. The direction will determine whether we add it before we respond to a request or before we make a
-            request further up the chain in the server hierarchy. Examples include:</p>
-        <ul>
-            <li>Action: Add</li>
-            <li>Header Name: X-CDN</li>
-            <li>Header Value: Foo</li>
-            <li>Direction: Edge Response to Client</li>
-        </ul>
-    </div>
-</script>
-
-<script type="text/ng-template" id="headerRewriteMid.html">
-    <div id="headerRewriteMid-tooltip-content"><p>Headers can be added or altered at each layer of the CDN. You must tell
-        us four things: the action, the header name, the header value, and the direction to apply. The action will tell us
-        whether we are adding, removing, or replacing headers. The header name and header value will determine the full
-        header text. The direction will determine whether we add it before we respond to a request or before we make a
-        request further up the chain in the server hierarchy. Examples include:</p>
-        <ul>
-            <li>Action: Modify (Replace)</li>
-            <li>Header Name: Host</li>
-            <li>Header Value: code_abc123</li>
-            <li>Direction: Mid Request to Origin</li>
-        </ul>
-    </div>
-</script>
-
-<script type="text/ng-template" id="headerRewriteRedirectRouter.html">
-    <div id="headerRewriteRedirectRouter-tooltip-content"><p>Headers can be added or altered at each layer of the CDN. You
-        must tell us four things: the action, the header name, the header value, and the direction to apply. The action will
-        tell us whether we are adding, removing, or replacing headers. The header name and header value will determine the
-        full header text. The direction will determine whether we add it before we respond to a request or before we make a
-        request further up the chain in the server hierarchy. Examples include:</p>
-
-        <p>The CCR Router is the first server to which the client will connect. The CCR Router will redirect the client to
-            the proper edge server based on the geo location of the client and the content requested.</p>
-        <ul>
-            <li>Action: Add</li>
-            <li>Header Name: Access-Control-Allow-Origin</li>
-            <li>Header Value: *</li>
-            <li>Direction: CCR Response to Client</li>
-        </ul>
-    </div>
-</script>
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/new/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/new/index.js
deleted file mode 100644
index fc7ab24ca..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/new/index.js
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.new', [])
-    .controller('DeliveryServiceNewController', require('./DeliveryServiceNewController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.new', {
-                url: '/new',
-                views: {
-                    deliveryServiceContent: {
-                        templateUrl: 'modules/private/deliveryService/new/deliveryService.new.tpl.html',
-                        controller: 'DeliveryServiceNewController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/DeliveryServiceViewController.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/DeliveryServiceViewController.js
deleted file mode 100644
index 125761388..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/DeliveryServiceViewController.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceViewController = function($scope, deliveryService) {
-
-    $scope.deliveryService = deliveryService;
-
-};
-
-DeliveryServiceViewController.$inject = ['$scope', 'deliveryService'];
-module.exports = DeliveryServiceViewController;
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/_deliveryService.view.scss b/traffic_portal/v1/app/src/modules/private/deliveryService/view/_deliveryService.view.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/_deliveryService.view.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/DeliveryServiceViewChartsController.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/DeliveryServiceViewChartsController.js
deleted file mode 100644
index a7212bf0b..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/DeliveryServiceViewChartsController.js
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceViewChartsController = function($scope, $location, $uibModal, $state, deliveryServicesModel, propertiesModel, chartModel) {
-
-    $scope.deliveryServices = deliveryServicesModel.deliveryServices;
-
-    $scope.properties = propertiesModel.properties;
-
-    $scope.bpsPopover = {
-        title: propertiesModel.properties.charts.bandwidthPerSecond.title,
-        content: propertiesModel.properties.charts.bandwidthPerSecond.description
-    };
-
-    $scope.tpsPopover = {
-        title: propertiesModel.properties.charts.transactionsPerSecond.title,
-        content: propertiesModel.properties.charts.transactionsPerSecond.description
-    };
-
-    $scope.httpPopover = {
-        title: propertiesModel.properties.charts.httpStatus.title,
-        content: propertiesModel.properties.charts.httpStatus.description
-    };
-
-    $scope.isState = function(state) {
-        return $state.current.name == state;
-    };
-
-    $scope.changeDS = function(dsId) {
-        $state.go($state.current.name, { deliveryServiceId: dsId }, { reload: true });
-    };
-
-    $scope.navigateToChart = function(dsId, type) {
-        $location.url('/delivery-service/' + dsId + '/chart/' + type).search({ start: moment(chartModel.chart.start).format(), end: moment(chartModel.chart.end).format() });
-    };
-
-    $scope.navigateToDeliveryService = function(dsId) {
-        $location.url('/delivery-service/' + dsId).search({ start: moment(chartModel.chart.start).format(), end: moment(chartModel.chart.end).format() });
-    };
-
-};
-
-DeliveryServiceViewChartsController.$inject = ['$scope', '$location', '$uibModal', '$state', 'deliveryServicesModel', 'propertiesModel', 'chartModel'];
-module.exports = DeliveryServiceViewChartsController;
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/_deliveryService.view.charts.scss b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/_deliveryService.view.charts.scss
deleted file mode 100644
index ce980e215..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/_deliveryService.view.charts.scss
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dsChartsContainer {
-
-  .ds-header {
-    position: relative;
-
-    .ds-name {
-      max-width: 500px;
-    }
-
-    .ds-name {
-      white-space: nowrap;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      display: inline-block;
-      margin-bottom: -5px;
-    }
-
-  }
-
-  .more-ds-btn {
-    position: absolute;
-    top: 8px;
-    right: 0;
-  }
-
-  .more-ds-menu {
-    height: auto;
-    max-height: 300px;
-    max-width: 500px;
-    overflow-y: auto;
-
-    .ds-name-link {
-      overflow: hidden;
-      text-overflow: ellipsis;
-    }
-
-  }
-
-  .schedule-button {
-    margin-top: 20px;
-    float: right;
-  }
-
-  .chart-column {
-    margin-bottom: 20px;
-  }
-
-  .chart-content .chart-container {
-    padding: 10px 20px 0 20px;
-  }
-
-  .chart-content > .chart-container {
-    border: 1px solid #A8A8A8;
-    margin-bottom: 30px;
-  }
-
-  .chart-info {
-    float: right;
-    margin-top: 3px;
-  }
-
-}
-
-@media (max-width: 1199px) {
-
-  #dsChartsContainer {
-
-    .ds-header {
-
-      .ds-name {
-        max-width: 400px;
-      }
-
-    }
-
-  }
-
-}
-
-@media (max-width: 991px) {
-
-  #dsChartsContainer {
-
-    .ds-header {
-
-      .ds-name {
-        max-width: 300px;
-      }
-
-    }
-
-  }
-
-}
-
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/bandwidthPerSecond/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/bandwidthPerSecond/index.js
deleted file mode 100644
index 07ab6738b..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/bandwidthPerSecond/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.chart.bandwidthPerSecond', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.chart.bandwidthPerSecond', {
-                url: '/bandwidth-per-second',
-                views: {
-                    chartDatesContent: {
-                        templateUrl: 'common/modules/chart/dates/chart.dates.tpl.html',
-                        controller: 'ChartDatesController',
-                        resolve: {
-                            customLabel: function() {
-                                return 'Data';
-                            },
-                            showAutoRefreshBtn: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    chartContent: {
-                        templateUrl: 'common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond.tpl.html',
-                        controller: 'ChartBandwidthPerSecondController',
-                        resolve: {
-                            entity: function(user, $stateParams, deliveryServicesModel) {
-                                return deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-                            },
-                            showSummary: function() {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/deliveryService.view.charts.tpl.html b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/deliveryService.view.charts.tpl.html
deleted file mode 100644
index 2a8c0b4f1..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/deliveryService.view.charts.tpl.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="dsChartsContainer" ng-show="deliveryService">
-    <div class="ds-header">
-        <ol class="breadcrumb">
-            <li><a class="ds-name" ng-click="navigateToDeliveryService(deliveryService.id)" title="{{deliveryService.displayName}} ({{deliveryService.id}} | {{deliveryService.xmlId}})">{{deliveryService.displayName}}</a></li>
-            <li class="active">Charts</li>
-        </ol>
-        <div class="more-ds-btn btn-group" uib-dropdown is-open="dsDropdown.isopen">
-            <button id="moreDS-button" type="button" class="action-btn-dropdown btn" uib-dropdown-toggle>
-                Change Delivery Service <i class="fa fa-angle-down fa-lg"></i>
-            </button>
-            <ul class="action-btn-menu uib-dropdown-menu dropdown-menu-right more-ds-menu scrollable" role="menu" aria-labelledby="moreDS-button">
-                <li ng-repeat="ds in deliveryServices | orderBy:'displayName'" ng-show="ds.id != deliveryService.id"><a class="ds-name-link" title="{{ds.displayName}} ({{ds.id}} | {{ds.xmlId}})" ng-click="changeDS(ds.id)"><span ng-show="!ds.active" title="Inactive"><i class="fa fa-times fa-fw"></i></span><span ng-show="ds.active" title="Active"><i class="fa fa-check fa-fw"></i></span> {{ds.displayName}}</a></li>
-            </ul>
-        </div>
-    </div>
-    <div class="row">
-        <div class="col-lg-3 col-md-12 col-sm-12 column chart-column">
-            <ul class="nav nav-pills nav-stacked">
-                <li class="header">Delivery Service Charts</li>
-                <li ng-if="properties.charts.bandwidthPerSecond.show">
-                    <a ng-class="{'selected-chart': isState('trafficPortal.private.deliveryService.view.chart.bandwidthPerSecond')}" ng-click="navigateToChart(deliveryService.id, 'bandwidth-per-second')">
-                        <i ng-show="isState('trafficPortal.private.deliveryService.view.chart.bandwidthPerSecond')" class="fa fa-chevron-right fa-fw"></i> {{properties.charts.bandwidthPerSecond.name}}
-                        <i class="chart-info fa fa-info-circle fa-lg" uib-popover="{{bpsPopover.content}}" popover-title="{{bpsPopover.title}}" popover-trigger="mouseenter" popover-placement="right" popover-append-to-body="true" popover-class="popover-class"></i>
-                    </a>
-                </li>
-                <li ng-if="properties.charts.transactionsPerSecond.show">
-                    <a ng-class="{'selected-chart': isState('trafficPortal.private.deliveryService.view.chart.transactionsPerSecond')}" ng-click="navigateToChart(deliveryService.id, 'transactions-per-second')">
-                        <i ng-show="isState('trafficPortal.private.deliveryService.view.chart.transactionsPerSecond')" class="fa fa-chevron-right fa-fw"></i> {{properties.charts.transactionsPerSecond.name}}
-                        <i class="chart-info fa fa-info-circle fa-lg" uib-popover="{{tpsPopover.content}}" popover-title="{{tpsPopover.title}}" popover-trigger="mouseenter" popover-placement="right" popover-append-to-body="true" popover-class="popover-class"></i>
-                    </a>
-                </li>
-                <li ng-if="properties.charts.httpStatus.show">
-                    <a ng-class="{'selected-chart': isState('trafficPortal.private.deliveryService.view.chart.httpStatus')}" ng-click="navigateToChart(deliveryService.id, 'http-status-by-class')">
-                        <i ng-show="isState('trafficPortal.private.deliveryService.view.chart.httpStatus')" class="fa fa-chevron-right fa-fw"></i> {{properties.charts.httpStatus.name}}
-                        <i class="chart-info fa fa-info-circle fa-lg" uib-popover="{{httpPopover.content}}" popover-title="{{httpPopover.title}}" popover-trigger="mouseenter" popover-placement="right" popover-append-to-body="true" popover-class="popover-class"></i>
-                    </a>
-                </li>
-            </ul>
-        </div>
-        <div class="col-lg-9 col-med-12 col-sm-12">
-            <div ui-view="chartDatesContent"></div>
-            <div ui-view="chartContent" class="chart-content"></div>
-        </div>
-    </div>
-</div>
-
-
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/httpStatus/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/httpStatus/index.js
deleted file mode 100644
index 1618b0b87..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/httpStatus/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.chart.httpStatus', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.chart.httpStatus', {
-                url: '/http-status-by-class',
-                views: {
-                    chartDatesContent: {
-                        templateUrl: 'common/modules/chart/dates/chart.dates.tpl.html',
-                        controller: 'ChartDatesController',
-                        resolve: {
-                            customLabel: function() {
-                                return 'Data';
-                            },
-                            showAutoRefreshBtn: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    chartContent: {
-                        templateUrl: 'common/modules/chart/httpStatus/chart.httpStatus.tpl.html',
-                        controller: 'ChartHttpStatusController',
-                        resolve: {
-                            entity: function(user, $stateParams, deliveryServicesModel) {
-                                return deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-                            }
-                        }
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/index.js
deleted file mode 100644
index f0856ea0f..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.chart', [])
-    .controller('DeliveryServiceViewChartsController', require('./DeliveryServiceViewChartsController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.chart', {
-                url: '/chart',
-                abstract: true,
-                views: {
-                    deliveryServiceViewContent: {
-                        templateUrl: 'modules/private/deliveryService/view/charts/deliveryService.view.charts.tpl.html',
-                        controller: 'DeliveryServiceViewChartsController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/transactionsPerSecond/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/transactionsPerSecond/index.js
deleted file mode 100644
index 36be5f99f..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/charts/transactionsPerSecond/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.chart.transactionsPerSecond', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.chart.transactionsPerSecond', {
-                url: '/transactions-per-second',
-                views: {
-                    chartDatesContent: {
-                        templateUrl: 'common/modules/chart/dates/chart.dates.tpl.html',
-                        controller: 'ChartDatesController',
-                        resolve: {
-                            customLabel: function() {
-                                return 'Data';
-                            },
-                            showAutoRefreshBtn: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    chartContent: {
-                        templateUrl: 'common/modules/chart/transactionsPerSecond/chart.transactionsPerSecond.tpl.html',
-                        controller: 'ChartTransactionsPerSecondController',
-                        resolve: {
-                            entity: function(user, $stateParams, deliveryServicesModel) {
-                                return deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-                            },
-                            showSummary: function() {
-                                return true;
-                            }
-                        }
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/deliveryService.view.tpl.html b/traffic_portal/v1/app/src/modules/private/deliveryService/view/deliveryService.view.tpl.html
deleted file mode 100644
index 9a51f6369..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/deliveryService.view.tpl.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div ui-view="deliveryServiceViewContent"></div>
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/index.js
deleted file mode 100644
index bb71dd434..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view', [])
-    .controller('DeliveryServiceViewController', require('./DeliveryServiceViewController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view', {
-                url: '/{deliveryServiceId}',
-                abstract: true,
-                views: {
-                    deliveryServiceContent: {
-                        templateUrl: 'modules/private/deliveryService/view/deliveryService.view.tpl.html',
-                        controller: 'DeliveryServiceViewController',
-                        resolve: {
-                            deliveryService: function(user, deliveryServicesModel, $stateParams) {
-                                return deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-                            }
-                        }
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/DeliveryServiceViewOverviewController.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/DeliveryServiceViewOverviewController.js
deleted file mode 100644
index 99023408d..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/DeliveryServiceViewOverviewController.js
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var DeliveryServiceViewOverviewController = function($scope, $location, $state, $uibModal, propertiesModel, deliveryServiceService, chartModel) {
-
-    var getFailoverStatus = function() {
-        var ignoreLoadingBar = true;
-        deliveryServiceService.getState($scope.deliveryService.id, ignoreLoadingBar)
-            .then(function(response) {
-                $scope.failover = response.failover;
-            });
-    };
-
-    $scope.properties = propertiesModel.properties;
-
-    $scope.failover = {
-        configured: false,
-        enabled: false,
-        destination: {
-            location: null,
-            type: ''
-        },
-        locations: []
-    };
-
-    $scope.viewConfig = function(ds) {
-
-        var modalInstance = $uibModal.open({
-            templateUrl: 'common/modules/deliveryService/config/edit/deliveryService.config.edit.tpl.html',
-            controller: 'DSConfigEditController',
-            size: 'lg',
-            windowClass: 'ds-config-modal',
-            resolve: {
-                deliveryService: function () {
-                    return deliveryServiceService.getDeliveryService(ds.id);
-                }
-            }
-        });
-
-        modalInstance.result.then(function() {
-        }, function () {
-            // do nothing
-        });
-    };
-
-    $scope.navigateToChart = function(dsId, type) {
-        $location.url('/delivery-service/' + dsId + '/chart/' + type).search({ start: moment(chartModel.chart.start).format(), end: moment(chartModel.chart.end).format() });
-    };
-
-    angular.element(document).ready(function () {
-        if ($scope.deliveryService && $scope.deliveryService.active) {
-            getFailoverStatus();
-        }
-    });
-
-};
-
-DeliveryServiceViewOverviewController.$inject = ['$scope', '$location', '$state', '$uibModal', 'propertiesModel', 'deliveryServiceService', 'chartModel'];
-module.exports = DeliveryServiceViewOverviewController;
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/_deliveryService.view.overview.scss b/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/_deliveryService.view.overview.scss
deleted file mode 100644
index cef58e669..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/_deliveryService.view.overview.scss
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#dsOverviewContainer {
-
-  .ds-header {
-    position: relative;
-
-    .ds-name {
-      max-width: 500px;
-    }
-
-    .ds-name {
-      white-space: nowrap;
-      overflow: hidden;
-      text-overflow: ellipsis;
-      display: inline-block;
-      margin-bottom: -5px;
-    }
-
-  }
-
-  .bandwidth-content {
-    border: 1px solid #A8A8A8;
-    padding: 10px;
-  }
-
-  .more-charts-btn, .invalidate-content-btn {
-    position: absolute;
-    top: 8px;
-  }
-
-  .invalidate-content-btn {
-    right: 215px;
-  }
-
-  .more-charts-btn {
-    right: 0;
-  }
-
-  .ds-cachegroups {
-    padding-bottom: 60px;
-  }
-
-  .scrollable-purge-container {
-    height: auto;
-    max-height: 500px;
-    overflow-y: auto;
-  }
-
-}
-
-@media (max-width: 1199px) {
-
-  #dsOverviewContainer {
-
-    .ds-header {
-
-      .ds-name {
-        max-width: 400px;
-      }
-
-    }
-
-  }
-
-}
-
-@media (max-width: 991px) {
-
-  #dsOverviewContainer {
-
-    .ds-header {
-
-      .ds-name {
-        max-width: 300px;
-      }
-
-    }
-
-  }
-
-}
-
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/deliveryService.view.overview.tpl.html b/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/deliveryService.view.overview.tpl.html
deleted file mode 100644
index fbc3ea37a..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/deliveryService.view.overview.tpl.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="dsOverviewContainer" ng-show="deliveryService">
-    <div class="ds-header">
-        <ol class="breadcrumb">
-            <li class="active"><span class="ds-name" title="{{deliveryService.displayName}} ({{deliveryService.id}} | {{deliveryService.xmlId}})">{{deliveryService.displayName}}</span> <a class="link" title="View Delivery Service Config" ng-click="viewConfig(deliveryService)"><i class="fa fa-cog fa-fw"></i></a></li>
-        </ol>
-        <div ng-if="properties.deliveryService.invalidateContent.show && user.localUser" class="invalidate-content-btn btn-group" uib-dropdown is-open="invalidate.isopen">
-            <button id="invalidate-button" type="button" class="action-btn-dropdown btn" uib-dropdown-toggle>
-                Invalidate Content <i class="fa fa-angle-down fa-lg"></i>
-            </button>
-            <ul class="action-btn-dialog uib-dropdown-menu scrollable-purge-container scrollable dropdown-menu-right" role="menu" aria-labelledby="invalidate-button">
-                <li>
-                    <div class="panel-body">
-                        <div ui-view="purgeContent"></div>
-                    </div>
-                </li>
-            </ul>
-        </div>
-        <div class="more-charts-btn btn-group" uib-dropdown is-open="moreCharts.isopen">
-            <button id="moreCharts-button" type="button" class="action-btn-dropdown btn" uib-dropdown-toggle>
-                Delivery Service Charts <i class="fa fa-angle-down fa-lg"></i>
-            </button>
-            <ul class="action-btn-menu uib-dropdown-menu dropdown-menu-right" role="menu" aria-labelledby="moreCharts-button">
-                <li ng-if="properties.charts.bandwidthPerSecond.show"><a ng-click="navigateToChart(deliveryService.id, 'bandwidth-per-second')">{{properties.charts.bandwidthPerSecond.name}}</a></li>
-                <li ng-if="properties.charts.transactionsPerSecond.show"><a ng-click="navigateToChart(deliveryService.id, 'transactions-per-second')">{{properties.charts.transactionsPerSecond.name}}</a></li>
-                <li ng-if="properties.charts.httpStatus.show"><a ng-click="navigateToChart(deliveryService.id, 'http-status-by-class')">{{properties.charts.httpStatus.name}}</a></li>
-            </ul>
-        </div>
-    </div>
-    <div class="alert alert-danger" role="alert" ng-show="failover.configured && failover.enabled">Failover Status: ON <span ng-show="failover.destination.location"> - destination: {{failover.destination.location}} ({{failover.destination.type}})</span></div>
-    <div ng-if="properties.charts.bandwidthPerSecond.show">
-        <div ui-view="chartDatesContent"></div>
-        <div ui-view="bandwidthContent" class="bandwidth-content"></div>
-    </div>
-    <hr>
-    <div class="capacity-and-routing row" ng-show="deliveryService.active">
-        <div class="col-sm-6 col-md-6" ui-view="capacityContent"></div>
-        <div class="col-sm-6 col-md-6" ui-view="routingContent"></div>
-    </div>
-    <hr>
-    <div ng-show="deliveryService.active" ui-view="cacheGroupsContent" class="ds-cachegroups"></div>
-</div>
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/detail/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/detail/index.js
deleted file mode 100644
index 508dd00aa..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/detail/index.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.overview.detail', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.overview.detail', {
-                url: '',
-                views: {
-                    chartDatesContent: {
-                        templateUrl: 'common/modules/chart/dates/chart.dates.tpl.html',
-                        controller: 'ChartDatesController',
-                        resolve: {
-                            customLabel: function() {
-                                return 'Delivery Service Bandwidth';
-                            },
-                            showAutoRefreshBtn: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    bandwidthContent: {
-                        templateUrl: 'common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond.tpl.html',
-                        controller: 'ChartBandwidthPerSecondController',
-                        resolve: {
-                            entity: function(user, $stateParams, deliveryServicesModel) {
-                                return deliveryServicesModel.getDeliveryService($stateParams.deliveryServiceId);
-                            },
-                            showSummary: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    purgeContent: {
-                        templateUrl: 'common/modules/tools/purge/tools.purge.tpl.html',
-                        controller: 'ToolsPurgeController'
-                    },
-                    capacityContent: {
-                        templateUrl: 'common/modules/chart/capacity/chart.capacity.tpl.html',
-                        controller: 'ChartCapacityController',
-                        resolve: {
-                            entityId: function($stateParams) {
-                                return $stateParams.deliveryServiceId;
-                            },
-                            service: function(deliveryServiceService) {
-                                return deliveryServiceService;
-                            }
-                        }
-                    },
-                    cacheGroupsContent: {
-                        templateUrl: 'common/modules/cacheGroups/cacheGroups.tpl.html',
-                        controller: 'CacheGroupsController',
-                        resolve: {
-                            entityId: function($stateParams) {
-                                return $stateParams.deliveryServiceId;
-                            },
-                            service: function(deliveryServiceService) {
-                                return deliveryServiceService;
-                            },
-                            showDownload: function() {
-                                return true;
-                            }
-                        }
-                    },
-                    routingContent: {
-                        templateUrl: 'common/modules/chart/routing/chart.routing.tpl.html',
-                        controller: 'ChartRoutingController',
-                        resolve: {
-                            entityId: function($stateParams) {
-                                return $stateParams.deliveryServiceId;
-                            },
-                            service: function(deliveryServiceService) {
-                                return deliveryServiceService;
-                            }
-                        }
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/index.js b/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/index.js
deleted file mode 100644
index 452f37b01..000000000
--- a/traffic_portal/v1/app/src/modules/private/deliveryService/view/overview/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.deliveryService.view.overview', [])
-    .controller('DeliveryServiceViewOverviewController', require('./DeliveryServiceViewOverviewController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.deliveryService.view.overview', {
-                url: '',
-                abstract: true,
-                views: {
-                    deliveryServiceViewContent: {
-                        templateUrl: 'modules/private/deliveryService/view/overview/deliveryService.view.overview.tpl.html',
-                        controller: 'DeliveryServiceViewOverviewController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/index.js b/traffic_portal/v1/app/src/modules/private/index.js
deleted file mode 100644
index 9a7107566..000000000
--- a/traffic_portal/v1/app/src/modules/private/index.js
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.private', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private', {
-                url: '',
-                abstract: true,
-                views: {
-                    header: {
-                        templateUrl: 'common/modules/header/header.tpl.html',
-                        controller: 'HeaderController'
-                    },
-                    message: {
-                        templateUrl: 'common/modules/message/message.tpl.html',
-                        controller: 'MessageController'
-                    },
-                    content: {
-                        templateUrl: 'modules/private/private.tpl.html'
-                    },
-                    footer: {
-                        templateUrl: 'common/modules/footer/footer.tpl.html',
-                        controller: 'FooterController'
-                    }
-                },
-                resolve: {
-                    user: function($state, userService, deliveryServiceService, userModel, deliveryServicesModel) {
-                        if (userModel.user.loaded) {
-                            return userModel.user;
-                        } else {
-                            return userService.getCurrentUser()
-                                .then(function() {
-                                    if (!deliveryServicesModel.loaded) {
-                                        return deliveryServiceService.getDeliveryServices();
-                                    }
-                                });
-                        }
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/private.tpl.html b/traffic_portal/v1/app/src/modules/private/private.tpl.html
deleted file mode 100644
index 95afc8ffa..000000000
--- a/traffic_portal/v1/app/src/modules/private/private.tpl.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="privateContainer">
-    <div ui-view="privateContent"></div>
-</div>
diff --git a/traffic_portal/v1/app/src/modules/private/user/UserController.js b/traffic_portal/v1/app/src/modules/private/user/UserController.js
deleted file mode 100644
index 34ca4e5fb..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/UserController.js
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserController = function($scope, $state, $uibModal, $timeout, formUtils, deliveryServicesModel, userService, authService, userModel) {
-
-    var updateUser = function(user, options) {
-        user.token = null; // this will null out any token the user may have had
-        userService.updateCurrentUser(user)
-            .then(function() {
-                if (options.signout) {
-                    authService.logout();
-                }
-            });
-    };
-
-    $scope.deliveryServices = deliveryServicesModel.deliveryServices;
-
-    $scope.showDS = function(dsId) {
-        $state.go('trafficPortal.private.deliveryService.view.overview.detail', { deliveryServiceId: dsId } );
-    };
-
-    $scope.confirmUpdate = function(user, usernameField) {
-        if (usernameField.$dirty) {
-            var params = {
-                title: 'Reauthentication Required',
-                message: 'Changing your username to ' + user.username + ' will require you to reauthenticate. Is that OK?'
-            };
-            var modalInstance = $uibModal.open({
-                templateUrl: 'common/modules/dialog/confirm/dialog.confirm.tpl.html',
-                controller: 'DialogConfirmController',
-                size: 'sm',
-                resolve: {
-                    params: function () {
-                        return params;
-                    }
-                }
-            });
-            modalInstance.result.then(function() {
-                updateUser(user, { signout : true });
-            }, function () {
-            });
-        } else {
-            updateUser(user, { signout : false });
-        }
-    };
-
-    $scope.hasError = formUtils.hasError;
-
-    $scope.hasPropertyError = formUtils.hasPropertyError;
-
-    $scope.resetUser = function() {
-        $timeout(function() {
-            $scope.userData = angular.copy(userModel.user);
-        });
-    };
-    $scope.resetUser();
-
-    $scope.$on('userModel::userUpdated', function() {
-        $scope.resetUser();
-    });
-
-};
-
-UserController.$inject = ['$scope', '$state', '$uibModal', '$timeout', 'formUtils', 'deliveryServicesModel', 'userService', 'authService', 'userModel'];
-module.exports = UserController;
diff --git a/traffic_portal/v1/app/src/modules/private/user/_user.scss b/traffic_portal/v1/app/src/modules/private/user/_user.scss
deleted file mode 100644
index ccc785b28..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/_user.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-.ds-status {
-  font-size: 11px;
-  color: #999;
-}
-
-.user-ds-list-group {
-  height: auto;
-  max-height: 830px;
-  overflow-y: auto;
-}
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/private/user/edit/UserEditController.js b/traffic_portal/v1/app/src/modules/private/user/edit/UserEditController.js
deleted file mode 100644
index 4eb5cb862..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/edit/UserEditController.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserEditController = function($scope) {
-
-    $scope.title = 'Edit User Profile';
-
-};
-
-UserEditController.$inject = ['$scope'];
-module.exports = UserEditController;
diff --git a/traffic_portal/v1/app/src/modules/private/user/edit/_user.edit.scss b/traffic_portal/v1/app/src/modules/private/user/edit/_user.edit.scss
deleted file mode 100644
index 0d2d0033c..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/edit/_user.edit.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-.edit-user-btn {
-  float: right;
-  margin-left: 5px;
-  margin-top: 20px;
-}
diff --git a/traffic_portal/v1/app/src/modules/private/user/edit/index.js b/traffic_portal/v1/app/src/modules/private/user/edit/index.js
deleted file mode 100644
index 9015f4864..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/edit/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.user.edit', [])
-    .controller('UserEditController', require('./UserEditController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.user.edit', {
-                url: '',
-                views: {
-                    userContent: {
-                        templateUrl: 'modules/private/user/edit/user.edit.tpl.html',
-                        controller: 'UserEditController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/user/edit/user.edit.tpl.html b/traffic_portal/v1/app/src/modules/private/user/edit/user.edit.tpl.html
deleted file mode 100644
index 168796327..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/edit/user.edit.tpl.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div class="row">
-    <div class="col-sm-8 col-md-8">
-        <h3>{{title}}</h3>
-    </div>
-    <div class="col-sm-4 col-md-4">
-        <button type="button" class="edit-user-btn btn action-btn" ng-disabled="userForm.$pristine || userForm.$invalid" ng-click="confirmUpdate(userData, userForm.username)">Update</button>
-        <button type="button" class="edit-user-btn btn btn-link"  ng-click="resetUser()">Reset</button>
-    </div>
-</div>
-
-<hr>
-
-<form class="register-form col-sm-8 col-md-8" name="userForm" role="form" novalidate>
-
-    <fieldset>
-
-        <legend>User Details</legend>
-
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.fullName), 'has-feedback': hasError(userForm.fullName)}">
-                    <label class="control-label" for="fullName">Full Name
-                        <small ng-show="hasPropertyError(userForm.fullName, 'required')">[ Required ]</small>
-                        <small ng-show="hasPropertyError(userForm.fullName, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="fullName" name="fullName" type="text" class="form-control" ng-model="userData.fullName" ng-maxlength="256" autofocus required>
-                    <span ng-show="hasError(userForm.fullName)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.company), 'has-feedback': hasError(userForm.company)}">
-                    <label class="control-label" for="company">Company (optional)
-                        <small ng-show="hasPropertyError(userForm.company, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="company" name="company" type="text" class="form-control" ng-model="userData.company" ng-maxlength="256">
-                    <span ng-show="hasError(userForm.company)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.email), 'has-feedback': hasError(userForm.email)}">
-                    <label class="control-label" for="email">Email
-                        <small ng-show="hasPropertyError(userForm.email, 'required')">[ Required ]</small>
-                        <small ng-show="hasPropertyError(userForm.email, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="email" name="email" type="email" class="form-control" ng-model="userData.email" ng-maxlength="128" required>
-                    <span ng-show="hasError(userForm.email)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.username), 'has-feedback': hasError(userForm.username)}">
-                    <label class="control-label" for="userName">Username
-                        <small ng-show="hasPropertyError(userForm.username, 'required')">[ Required ]</small>
-                        <small ng-show="hasPropertyError(userForm.username, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="username" name="username" type="text" class="form-control" ng-model="userData.username" ng-maxlength="128" required>
-                    <span ng-show="hasError(userForm.username)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.password), 'has-feedback': hasError(userForm.password)}">
-                    <label class="control-label" for="password">New Password <span ng-show="!registration && !reset">(optional)</span>
-                        <small ng-show="hasPropertyError(userForm.password, 'minlength')">[ Too Short ]</small>
-                    </label>
-                    <input id="password" name="password" type="password" class="form-control" ng-model="userData.localPasswd" ng-required="registration || reset" ng-minlength="6">
-                    <span ng-show="hasError(userForm.password)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.confirmPassword), 'has-feedback': hasError(userForm.confirmPassword)}">
-                    <label class="control-label" for="confirmPassword">Confirm New Password <span ng-show="!registration && !reset && !userData.localPasswd">(optional)</span>
-                        <small ng-show="hasPropertyError(userForm.confirmPassword, 'match')">[ Doesn't Match ]</small>
-                    </label>
-                    <input id="confirmPassword" name="confirmPassword" type="password" class="form-control" ng-model="userData.confirmLocalPasswd" match="userData.localPasswd">
-                    <span ng-show="hasError(userForm.confirmPassword)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-12 col-md-12">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.addressLine1), 'has-feedback': hasError(userForm.addressLine1)}">
-                    <label class="control-label" for="addressLine1">Address Line 1 (optional)
-                        <small ng-show="hasPropertyError(userForm.addressLine1, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="addressLine1" name="addressLine1" type="text" class="form-control" ng-model="userData.addressLine1" ng-maxlength="256">
-                    <span ng-show="hasError(userForm.addressLine1)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-12 col-md-12">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.addressLine2), 'has-feedback': hasError(userForm.addressLine2)}">
-                    <label class="control-label" for="addressLine2">Address Line 2 (optional)
-                        <small ng-show="hasPropertyError(userForm.addressLine2, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="addressLine2" name="addressLine2" type="text" class="form-control" ng-model="userData.addressLine2" ng-maxlength="256">
-                    <span ng-show="hasError(userForm.addressLine2)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-12 col-md-12">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.city), 'has-feedback': hasError(userForm.city)}">
-                    <label class="control-label" for="city">City (optional)
-                        <small ng-show="hasPropertyError(userForm.city, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="city" name="city" type="text" class="form-control" ng-model="userData.city" ng-maxlength="128">
-                    <span ng-show="hasError(userForm.city)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.stateOrProvince), 'has-feedback': hasError(userForm.stateOrProvince)}">
-                    <label class="control-label" for="stateOrProvince">State or Province (optional)
-                        <small ng-show="hasPropertyError(userForm.stateOrProvince, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="stateOrProvince" name="stateOrProvince" type="text" class="form-control" ng-model="userData.stateOrProvince" ng-maxlength="128">
-                    <span ng-show="hasError(userForm.stateOrProvince)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.postalCode), 'has-feedback': hasError(userForm.postalCode)}">
-                    <label class="control-label" for="postalCode">Postal Code (optional)
-                        <small ng-show="hasPropertyError(userForm.postalCode, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="postalCode" name="postalCode" type="text" class="form-control" ng-model="userData.postalCode" ng-maxlength="11">
-                    <span ng-show="hasError(userForm.postalCode)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-        <div class="row">
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.country), 'has-feedback': hasError(userForm.country)}">
-                    <label class="control-label" for="country">Country (optional)
-                        <small ng-show="hasPropertyError(userForm.country, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="country" name="country" type="text" class="form-control" ng-model="userData.country" ng-maxlength="256">
-                    <span ng-show="hasError(userForm.country)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-            <div class="col-sm-6 col-md-6">
-                <div class="form-group" ng-class="{'has-error': hasError(userForm.phoneNumber), 'has-feedback': hasError(userForm.phoneNumber)}">
-                    <label class="control-label" for="phoneNumber">Primary Phone (optional)
-                        <small ng-show="hasPropertyError(userForm.phoneNumber, 'maxlength')">[ Too Long ]</small>
-                    </label>
-                    <input id="phoneNumber" name="phoneNumber" type="text" class="form-control" ng-model="userData.phoneNumber" ng-maxlength="25">
-                    <span ng-show="hasError(userForm.phoneNumber)" class="form-control-feedback"><i class="fa fa-times"></i></span>
-                </div>
-            </div>
-        </div>
-
-    </fieldset>
-
-</form>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/private/user/index.js b/traffic_portal/v1/app/src/modules/private/user/index.js
deleted file mode 100644
index 934212ef0..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.user', [])
-    .controller('UserController', require('./UserController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.user', {
-                url: 'user',
-                abstract: true,
-                views: {
-                    privateContent: {
-                        templateUrl: 'modules/private/user/user.tpl.html',
-                        controller: 'UserController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/user/register/UserRegisterController.js b/traffic_portal/v1/app/src/modules/private/user/register/UserRegisterController.js
deleted file mode 100644
index b9e4aa50a..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/register/UserRegisterController.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserRegisterController = function($scope) {
-
-    $scope.title = 'Complete User Registration';
-
-    $scope.registration = true;
-
-};
-
-UserRegisterController.$inject = ['$scope'];
-module.exports = UserRegisterController;
diff --git a/traffic_portal/v1/app/src/modules/private/user/register/_user.register.scss b/traffic_portal/v1/app/src/modules/private/user/register/_user.register.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/register/_user.register.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/modules/private/user/register/index.js b/traffic_portal/v1/app/src/modules/private/user/register/index.js
deleted file mode 100644
index 933a7adc5..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/register/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.user.register', [])
-    .controller('UserRegisterController', require('./UserRegisterController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.user.register', {
-                url: '/register',
-                views: {
-                    userContent: {
-                        templateUrl: 'modules/private/user/edit/user.edit.tpl.html',
-                        controller: 'UserRegisterController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/user/reset/UserResetController.js b/traffic_portal/v1/app/src/modules/private/user/reset/UserResetController.js
deleted file mode 100644
index 24f5e12f4..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/reset/UserResetController.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var UserResetController = function($scope, $timeout, userModel) {
-
-    $scope.title = 'Reset User Password';
-
-    $scope.reset = true;
-
-    $scope.resetUser = function() {
-        $timeout(function() {
-            $scope.userData = angular.copy(userModel.user);
-        });
-    };
-    $scope.resetUser();
-
-    $scope.$on('userModel::userUpdated', function() {
-        $scope.resetUser();
-    });
-
-};
-
-UserResetController.$inject = ['$scope', '$timeout', 'userModel'];
-module.exports = UserResetController;
diff --git a/traffic_portal/v1/app/src/modules/private/user/reset/_user.reset.scss b/traffic_portal/v1/app/src/modules/private/user/reset/_user.reset.scss
deleted file mode 100644
index fff23b40e..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/reset/_user.reset.scss
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
diff --git a/traffic_portal/v1/app/src/modules/private/user/reset/index.js b/traffic_portal/v1/app/src/modules/private/user/reset/index.js
deleted file mode 100644
index 3d4af61b9..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/reset/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.user.reset', [])
-    .controller('UserResetController', require('./UserResetController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.private.user.reset', {
-                url: '/reset',
-                views: {
-                    userContent: {
-                        templateUrl: 'modules/private/user/edit/user.edit.tpl.html',
-                        controller: 'UserResetController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/private/user/user.tpl.html b/traffic_portal/v1/app/src/modules/private/user/user.tpl.html
deleted file mode 100644
index 5fe0c2777..000000000
--- a/traffic_portal/v1/app/src/modules/private/user/user.tpl.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="userContainer">
-    <div class="alert alert-warning" ng-show="userData.loaded && !userData.localUser">LDAP user profiles cannot be modified.</div>
-    <div ui-view="userContent"></div>
-    <div class="ds-panel col-sm-4 col-md-4">
-        <fieldset>
-            <legend>Assigned Delivery Services ({{deliveryServices.length}})</legend>
-            <div class="list-group user-ds-list-group scrollable">
-                <a title="{{ds.displayName}} ({{ds.id}} | {{ds.xmlId}})" ng-repeat="ds in deliveryServices | orderBy:'displayName'" class="list-group-item" ng-click="showDS(ds.id)">{{ds.displayName}}</a>
-            </div>
-            <div class="alert alert-info" ng-show="deliveryServices.length == 0">
-                No delivery services assigned
-            </div>
-        </fieldset>
-    </div>
-</div>
diff --git a/traffic_portal/v1/app/src/modules/public/about/AboutController.js b/traffic_portal/v1/app/src/modules/public/about/AboutController.js
deleted file mode 100644
index 9fcddb1b9..000000000
--- a/traffic_portal/v1/app/src/modules/public/about/AboutController.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var AboutController = function($scope, $sce, $timeout, propertiesModel) {
-
-    var pinIframe = function() {
-        var headerHeight = $('#header').css("height"),
-            footerHeight = $('#footer').css("height");
-
-        $('#aboutFrameWrapper').css("top", headerHeight);
-        $('#aboutFrameWrapper').css("bottom", footerHeight);
-    };
-
-    $scope.properties = propertiesModel.properties;
-
-    $scope.trustSrc = function(src) {
-        return $sce.trustAsResourceUrl(src);
-    };
-
-    var init = function () {
-        $timeout(function () {
-            pinIframe();
-        }, 200);
-    };
-    init();
-
-};
-
-AboutController.$inject = ['$scope', '$sce', '$timeout', 'propertiesModel'];
-module.exports = AboutController;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/about/_about.scss b/traffic_portal/v1/app/src/modules/public/about/_about.scss
deleted file mode 100644
index c372d2f54..000000000
--- a/traffic_portal/v1/app/src/modules/public/about/_about.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#aboutFrameWrapper {
-  position:absolute;
-  // header and footer height are dynamic. see AboutController.js
-  left:0;
-  right:0;
-}
-
-#aboutFrame {
-  height:100%;
-  width:100%;
-}
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/about/about.tpl.html b/traffic_portal/v1/app/src/modules/public/about/about.tpl.html
deleted file mode 100644
index 16d02b714..000000000
--- a/traffic_portal/v1/app/src/modules/public/about/about.tpl.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="aboutFrameWrapper">
-    <iframe id="aboutFrame" ng-src="{{trustSrc(properties.about.url)}}" frameborder="0"/>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/about/index.js b/traffic_portal/v1/app/src/modules/public/about/index.js
deleted file mode 100644
index 3ce1f0dbd..000000000
--- a/traffic_portal/v1/app/src/modules/public/about/index.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.public.about', [])
-    .controller('AboutController', require('./AboutController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.public.about', {
-                url: 'about',
-                views: {
-                    publicContent: {
-                        templateUrl: 'modules/public/about/about.tpl.html',
-                        controller: 'AboutController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/home/HomeController.js b/traffic_portal/v1/app/src/modules/public/home/HomeController.js
deleted file mode 100644
index c4458a6f7..000000000
--- a/traffic_portal/v1/app/src/modules/public/home/HomeController.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var HomeController = function($scope, $uibModal, propertiesModel, authService, userService) {
-
-    $scope.sections = propertiesModel.properties.home.sections;
-
-    $scope.credentials = {
-        username: '',
-        password: ''
-    };
-
-    $scope.login = function(credentials) {
-        authService.login(credentials.username, credentials.password);
-    };
-
-    $scope.resetPassword = function() {
-
-        var modalInstance = $uibModal.open({
-            templateUrl: 'common/modules/dialog/reset/dialog.reset.tpl.html',
-            controller: 'DialogResetController'
-        });
-
-        modalInstance.result.then(function(email) {
-            userService.resetPassword(email);
-        }, function () {
-        });
-    };
-
-};
-
-HomeController.$inject = ['$scope', '$uibModal', 'propertiesModel', 'authService', 'userService'];
-module.exports = HomeController;
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/home/_home.scss b/traffic_portal/v1/app/src/modules/public/home/_home.scss
deleted file mode 100644
index 8e1e043b9..000000000
--- a/traffic_portal/v1/app/src/modules/public/home/_home.scss
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-#homeContainer {
-  -webkit-border-radius: 6px;
-  -moz-border-radius: 6px;
-  border-radius: 6px;
-  margin: 40px 0;
-  background-color: #D3D3D3;
-  opacity: 0.95;
-  color: #333333;
-  padding: 50px;
-
-  .login-panel {
-    margin: 0 50px 0 10px;
-
-    .panel-body {
-      background-color: transparent;
-    }
-
-    input {
-      font-size: 14.88px;
-      line-height: 2;
-      outline: 0;
-      border: 1px solid #b8b8b8;
-      -webkit-appearance: none;
-      border-radius: 0;
-      padding: 0 10px;
-      width: 100%;
-      background-color: #e5e5e5;
-      color: black;
-    }
-
-  }
-
-  h4 {
-    color: #333333;
-    margin-top: 0;
-  }
-
-}
-
-@media all and (max-width: 991px) {
-  #homeContainer {
-    .login-panel {
-      margin: 0 0 50px 0;
-    }
-  }
-}
diff --git a/traffic_portal/v1/app/src/modules/public/home/home.tpl.html b/traffic_portal/v1/app/src/modules/public/home/home.tpl.html
deleted file mode 100644
index 13c6cb021..000000000
--- a/traffic_portal/v1/app/src/modules/public/home/home.tpl.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="homeContainer">
-    <div class="row">
-        <div class="col-lg-6 col-md-6 col-sm-12">
-            <div class="login-panel panel panel-default">
-                <div class="panel-body">
-                    <form name="loginForm" role="form" ng-submit="login(credentials)" novalidate>
-                        <div class="form-group">
-                            <div class="input-group">
-                                <span class="input-group-addon"><i class="fa fa-user fa-fw"></i></span>
-                                <input id="username" name="username" type="text" class="form-control" autocomplete="off" placeholder="Username" ng-model="credentials.username" rc-verify-set autofocus required>
-                            </div>
-                        </div>
-                        <div class="form-group">
-                            <div class="input-group">
-                                <span class="input-group-addon"><i class="fa fa-key fa-fw"></i></span>
-                                <input id="password" name="password" type="password" class="form-control" autocomplete="off" placeholder="Password" ng-model="credentials.password" rc-verify-set required>
-                            </div>
-                        </div>
-                        <button type="submit" class="action-btn btn" ng-disabled="loginForm.$invalid">Log in &nbsp;&nbsp;<i class="fa fa-chevron-circle-right fa-lg"></i></button>
-                        <button type="button" class="btn btn-link" ng-click="resetPassword()">Reset Password</button>
-                    </form>
-                </div>
-            </div>
-        </div>
-        <div class="col-lg-6 col-md-6 col-sm-12">
-            <div ng-repeat="section in sections">
-                <h4>{{section.header}}</h4>
-                <p>{{section.description}}</p>
-            </div>
-        </div>
-    </div>
-</div>
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/home/index.js b/traffic_portal/v1/app/src/modules/public/home/index.js
deleted file mode 100644
index 75a33e063..000000000
--- a/traffic_portal/v1/app/src/modules/public/home/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.public.home', [])
-    .controller('HomeController', require('./HomeController'))
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.public.home', {
-                url: '',
-                abstract: true,
-                views: {
-                    publicContent: {
-                        templateUrl: 'modules/public/home/home.tpl.html',
-                        controller: 'HomeController'
-                    }
-                }
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
\ No newline at end of file
diff --git a/traffic_portal/v1/app/src/modules/public/home/landing/index.js b/traffic_portal/v1/app/src/modules/public/home/landing/index.js
deleted file mode 100644
index 0a90e0a53..000000000
--- a/traffic_portal/v1/app/src/modules/public/home/landing/index.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.public.home.landing', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.public.home.landing', {
-                url: ''
-            })
-        ;
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/public/index.js b/traffic_portal/v1/app/src/modules/public/index.js
deleted file mode 100644
index 5bd8b702a..000000000
--- a/traffic_portal/v1/app/src/modules/public/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = angular.module('trafficPortal.public', [])
-    .config(function($stateProvider, $urlRouterProvider) {
-        $stateProvider
-            .state('trafficPortal.public', {
-                url: '',
-                abstract: true,
-                views: {
-                    header: {
-                        templateUrl: 'common/modules/header/header.tpl.html',
-                        controller: 'HeaderController'
-                    },
-                    message: {
-                        templateUrl: 'common/modules/message/message.tpl.html',
-                        controller: 'MessageController'
-                    },
-                    content: {
-                        templateUrl: 'modules/public/public.tpl.html'
-                    },
-                    footer: {
-                        templateUrl: 'common/modules/footer/footer.tpl.html',
-                        controller: 'FooterController'
-                    }
-                }
-            });
-        $urlRouterProvider.otherwise('/');
-    });
diff --git a/traffic_portal/v1/app/src/modules/public/public.tpl.html b/traffic_portal/v1/app/src/modules/public/public.tpl.html
deleted file mode 100644
index cc9b0efdd..000000000
--- a/traffic_portal/v1/app/src/modules/public/public.tpl.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!--
-
-
-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.
-
--->
-
-<div id="publicContainer">
-    <div ui-view="publicContent"></div>
-</div>
diff --git a/traffic_portal/v1/app/src/package.json b/traffic_portal/v1/app/src/package.json
deleted file mode 100644
index 389fd0333..000000000
--- a/traffic_portal/v1/app/src/package.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-    "name": "trafficPortal",
-    "description": "Traffic Portal",
-    "dependencies": {
-        "forever": "0.15.1",
-        "morgan": "1.7.0",
-        "errorhandler": "1.4.3",
-        "connect-modrewrite": "0.8.5",
-        "connect-timeout": "1.7.0",
-        "ssl-root-cas": "1.1.10",
-        "express": "4.13.4"
-    },
-    "engines": {
-        "node": ">=0.12.0"
-    }
-}
diff --git a/traffic_portal/v1/app/src/robots.txt b/traffic_portal/v1/app/src/robots.txt
deleted file mode 100755
index 9f135a24b..000000000
--- a/traffic_portal/v1/app/src/robots.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-# robotstxt.org
-#
-#
-# 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.
-#
-
-User-agent: *
diff --git a/traffic_portal/v1/app/src/scripts/shared-libs.js b/traffic_portal/v1/app/src/scripts/shared-libs.js
deleted file mode 100755
index da550751b..000000000
--- a/traffic_portal/v1/app/src/scripts/shared-libs.js
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-/**
- * Define the required js libraries needed for this application. The compiler will merge them all into a single download. Order is important!
- */
-
-// angular and angular helpers
-require('angular');
-require('angular-animate');
-require('angular-resource');
-require('angular-route');
-require('angular-sanitize');
-require('angular-ui-router');
-
-// angular loading bar
-require('loading-bar');
-
-// angular bootstrap
-require('ui-bootstrap');
-require('ui-bootstrap-tpls');
-
-// jquery
-require('jquery');
-//require('jquery-ui');
-
-// flot charts
-require('jquery-flot');
-require('jquery-flot-stack');
-require('jquery-flot-time');
-require('jquery-flot-tooltip');
-require('jquery-flot-axislabels');
-
-// misc
-require('es5-shim');
-require('json3');
diff --git a/traffic_portal/v1/app/src/styles/loading.scss b/traffic_portal/v1/app/src/styles/loading.scss
deleted file mode 100644
index eef92fe44..000000000
--- a/traffic_portal/v1/app/src/styles/loading.scss
+++ /dev/null
@@ -1,110 +0,0 @@
-/*!
- * angular-loading-bar v0.4.2
- * https://chieffancypants.github.io/angular-loading-bar
- * Copyright (c) 2014 Wes Cruver
- * License: MIT
- */
-
-/* Make clicks pass-through */
-#loading-bar,
-#loading-bar-spinner {
-  pointer-events: none;
-  -webkit-pointer-events: none;
-  -webkit-transition: 350ms linear all;
-  -moz-transition: 350ms linear all;
-  -o-transition: 350ms linear all;
-  transition: 350ms linear all;
-}
-
-#loading-bar.ng-enter,
-#loading-bar.ng-leave.ng-leave-active,
-#loading-bar-spinner.ng-enter,
-#loading-bar-spinner.ng-leave.ng-leave-active {
-  opacity: 0;
-}
-
-#loading-bar.ng-enter.ng-enter-active,
-#loading-bar.ng-leave,
-#loading-bar-spinner.ng-enter.ng-enter-active,
-#loading-bar-spinner.ng-leave {
-  opacity: 1;
-}
-
-#loading-bar .bar {
-  -webkit-transition: width 350ms;
-  -moz-transition: width 350ms;
-  -o-transition: width 350ms;
-  transition: width 350ms;
-
-  background: #29d;
-  position: fixed;
-  z-index: 2000;
-  top: 0;
-  left: 0;
-  width: 100%;
-  height: 2px;
-  border-bottom-right-radius: 1px;
-  border-top-right-radius: 1px;
-}
-
-/* Fancy blur effect */
-#loading-bar .peg {
-  position: absolute;
-  width: 70px;
-  right: 0;
-  top: 0;
-  height: 2px;
-  opacity: .45;
-  -moz-box-shadow: #29d 1px 0 6px 1px;
-  -ms-box-shadow: #29d 1px 0 6px 1px;
-  -webkit-box-shadow: #29d 1px 0 6px 1px;
-  box-shadow: #29d 1px 0 6px 1px;
-  -moz-border-radius: 100%;
-  -webkit-border-radius: 100%;
-  border-radius: 100%;
-}
-
-#loading-bar-spinner {
-  display: none;
-  position: fixed;
-  z-index: 2000;
-  top: 10px;
-  left: 10px;
-}
-
-#loading-bar-spinner .spinner-icon {
-  width: 14px;
-  height: 14px;
-
-  border:  solid 2px transparent;
-  border-top-color:  #29d;
-  border-left-color: #29d;
-  border-radius: 10px;
-
-  -webkit-animation: loading-bar-spinner 400ms linear infinite;
-  -moz-animation:    loading-bar-spinner 400ms linear infinite;
-  -ms-animation:     loading-bar-spinner 400ms linear infinite;
-  -o-animation:      loading-bar-spinner 400ms linear infinite;
-  animation:         loading-bar-spinner 400ms linear infinite;
-}
-
-@-webkit-keyframes loading-bar-spinner {
-  0%   { -webkit-transform: rotate(0deg);   transform: rotate(0deg); }
-  100% { -webkit-transform: rotate(360deg); transform: rotate(360deg); }
-}
-@-moz-keyframes loading-bar-spinner {
-  0%   { -moz-transform: rotate(0deg);   transform: rotate(0deg); }
-  100% { -moz-transform: rotate(360deg); transform: rotate(360deg); }
-}
-@-o-keyframes loading-bar-spinner {
-  0%   { -o-transform: rotate(0deg);   transform: rotate(0deg); }
-  100% { -o-transform: rotate(360deg); transform: rotate(360deg); }
-}
-@-ms-keyframes loading-bar-spinner {
-  0%   { -ms-transform: rotate(0deg);   transform: rotate(0deg); }
-  100% { -ms-transform: rotate(360deg); transform: rotate(360deg); }
-}
-@keyframes loading-bar-spinner {
-  0%   { transform: rotate(0deg);   transform: rotate(0deg); }
-  100% { transform: rotate(360deg); transform: rotate(360deg); }
-}
diff --git a/traffic_portal/v1/app/src/styles/main.scss b/traffic_portal/v1/app/src/styles/main.scss
deleted file mode 100755
index 2d1f62e20..000000000
--- a/traffic_portal/v1/app/src/styles/main.scss
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-@import url(//fonts.googleapis.com/css?family=Lato:300,400,700,900,400italic);
-
-@import "variables";
-@import "bootstrap-sass-official/assets/stylesheets/bootstrap";
-
-// common
-@import "../common/modules/cacheGroups/cacheGroups";
-@import "../common/modules/chart/chart";
-@import "../common/modules/chart/bandwidthPerSecond/chart.bandwidthPerSecond";
-@import "../common/modules/chart/capacity/chart.capacity";
-@import "../common/modules/chart/dates/chart.dates";
-@import "../common/modules/chart/httpStatus/chart.httpStatus";
-@import "../common/modules/chart/routing/chart.routing";
-@import "../common/modules/chart/transactionsPerSecond/chart.transactionsPerSecond";
-@import "../common/modules/deliveryService/config/edit/deliveryService.config.edit";
-@import "../common/modules/dates/dates";
-@import "../common/modules/dialog/confirm/dialog.confirm";
-@import "../common/modules/dialog/reset/dialog.reset";
-@import "../common/modules/header/header";
-@import "../common/modules/message/message";
-@import "../common/modules/release/version/release.version";
-@import "../common/modules/tools/purge/tools.purge";
-
-// public
-@import "../modules/public/home/home";
-@import "../modules/public/about/about";
-
-// private
-
-// collateral
-@import "../modules/private/collateral/collateral";
-
-// dashboard
-@import "../modules/private/dashboard/dashboard";
-@import "../modules/private/dashboard/overview/deliveryServices/dashboard.deliveryServices";
-
-// delivery service
-@import "../modules/private/deliveryService/deliveryService";
-@import "../modules/private/deliveryService/new/deliveryService.new";
-@import "../modules/private/deliveryService/view/deliveryService.view";
-@import "../modules/private/deliveryService/view/overview/deliveryService.view.overview";
-@import "../modules/private/deliveryService/view/charts/deliveryService.view.charts";
-
-// user
-@import "../modules/private/user/user";
-@import "../modules/private/user/edit/user.edit";
-@import "../modules/private/user/register/user.register";
-@import "../modules/private/user/reset/user.reset";
-
-html {
-//  for sticky footer
-  position: relative;
-  min-height: 100%;
-}
-
-body {
-  font-family: 'Lato', sans-serif;
-  font-size: 16px;
-  margin-bottom: 170px; //  for sticky footer
-}
-
-h1, h2, h3, h4, h5, h6 {
-  line-height: 1.2;
-  font-weight: 700;
-}
-
-h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
-  color: inherit;
-}
-
-h1 {
-  font-size: 40px;
-}
-
-h2 {
-  font-size: 32px;
-}
-
-h3 {
-  font-size: 30px;
-}
-
-h4 {
-  font-size: 24px;
-}
-
-h5 {
-  font-size: 20px;
-}
-
-h6 {
-  font-size: 16px;
-}
-
-p {
-  font-size: 16px;
-  line-height: 22px;
-  margin: 5px 0 25px 0;
-}
-
-ul li, ol li {
-  font-size: 16px;
-  line-height: 1.5;
-  position: relative;
-}
-
-a:focus, button:focus {
-  outline: none !important;
-}
-
-.navbar {
-  border-radius: 0;
-  margin-bottom: 0;
-}
-
-.navbar-nav > li {
-  margin-right: 5px;
-}
-
-.navbar-collapse {
-  padding-left: 0px;
-  margin-left: -10px !important;
-}
-
-.nav-pills > li.header {
-  padding: 22px;
-}
-
-.jumbotron {
-  text-align: center;
-  border: 1px solid #A8A8A8;
-  background-color: #fff;
-  border-radius: 0 !important;
-
-  .btn {
-    font-size: 21px;
-    padding: 14px 24px;
-  }
-}
-
-.panel, .form-control, .list-group-item, .btn-default {
-  background-color: transparent;
-}
-
-.panel-heading {
-  border-radius: 0;
-  padding: 15px;
-}
-
-.input-error {
-  color: #a94442;
-  font-weight: bold;
-}
-
-.breadcrumb {
-  background-color: transparent;
-  text-transform: uppercase;
-  margin-bottom: 10px;
-
-  li {
-    margin-top: 10px;
-  }
-
-  .btn {
-    padding-left: 0px;
-  }
-}
-
-.date-text[disabled] {
-  background-color: transparent;
-}
-
-.modal-title {
-  color: #ffffff;
-}
-
-.pagination > .disabled > span, .pagination > .disabled > span:hover, .pagination > .disabled > span:focus, .pagination > .disabled > a, .pagination > .disabled > a:hover, .pagination > .disabled > a:focus, .pagination > li > a, .pagination > li > span {
-  background-color: transparent;
-}
-
-.dropdown {
-  .btn-link {
-    text-decoration: none;
-  }
-}
-
-[ng-click] {
-  cursor: pointer;
-}
-
-.modal-header {
-  background-color: #222;
-  border-color: #090909;
-  color: #999;
-}
-
-.loading-text {
-  color: #999;
-  font-size: 12px;
-  font-weight: bold;
-}
-
-.btn-last {
-  border-bottom-left-radius: 0;
-  border-top-left-radius: 0;
-  border-bottom-right-radius: 4px !important;
-  border-top-right-radius: 4px !important;
-}
-
-.list-group-item, table {
-  .description, small {
-    font-size: 11px;
-    color: #999;
-  }
-  .badge {
-    float: right;
-  }
-}
-
-#footer {
-//  for sticky footer
-background: black;
-height: 170px;
-position: absolute;
-bottom: 0;
-width: 100%;
-border-top: 2px solid #706f6f;
-margin-top: 40px;
-
-.footer-bottom {
-padding-top: 40px;
-padding-bottom: 40px;
-color: #706f6f;
-font-weight: bold;
-
-.menu-list {
-  float: left;
-
-  li {
-    list-style: none;
-  }
-
-  > li {
-    float: left;
-    padding-right: 50px;
-    margin-right: 50px;
-  }
-
-  > li:last-child {
-    margin-right: 0;
-  }
-
-}
-
-a {
-  color: #706f6f;
-  text-decoration: none;
-  line-height: 1.5;
-  font-weight: bold;
-}
-
-}
-
-}
-
-.scrollable::-webkit-scrollbar {
--webkit-appearance: none;
-}
-
-.scrollable::-webkit-scrollbar:vertical {
-width: 11px;
-}
-
-.scrollable::-webkit-scrollbar:horizontal {
-height: 11px;
-}
-
-.scrollable::-webkit-scrollbar-thumb {
-border-radius: 8px;
-border: 2px solid white; /* should match background, can't be transparent */
-  background-color: rgba(0, 0, 0, .5);
-}
-
-@media (max-width: 991px) {
-
-  .navbar-header {
-    float: none;
-  }
-
-  .navbar-toggle {
-    display: block;
-  }
-
-  .navbar-collapse {
-    border-top: 1px solid transparent;
-    box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
-  }
-
-  .navbar-collapse.collapse {
-    display: none !important;
-  }
-
-  .navbar-nav {
-    float: none !important;
-    margin: 7.5px -15px;
-  }
-
-  .navbar-nav > li {
-    float: none;
-  }
-
-  .navbar-nav > li > a {
-    padding-top: 10px;
-    padding-bottom: 10px;
-  }
-
-  .navbar-text {
-    float: none;
-    margin: 15px 0;
-  }
-
-  /* since 3.1.0 */
-  .navbar-collapse.collapse.in {
-    display: block !important;
-  }
-
-  .collapsing {
-    overflow: hidden !important;
-  }
-
-}
-
diff --git a/traffic_portal/v1/app/src/styles/variables.scss b/traffic_portal/v1/app/src/styles/variables.scss
deleted file mode 100755
index 3758dadf0..000000000
--- a/traffic_portal/v1/app/src/styles/variables.scss
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
-
-
- 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.
-
-*/
-
-
-/** override bootstrap-sass variables here
-
-/*$screen-xs:                  1024px;
-$screen-sm:                  1280px;
-$screen-md:                  200px;
-$screen-lg:                  2000px;
-
-$container-sm:               1300px;
-$container-md:               1260px;
-$container-lg:               1520px;*/
diff --git a/traffic_portal/v1/app/src/traffic_portal_properties.json b/traffic_portal/v1/app/src/traffic_portal_properties.json
deleted file mode 100644
index b45a93124..000000000
--- a/traffic_portal/v1/app/src/traffic_portal_properties.json
+++ /dev/null
@@ -1,99 +0,0 @@
-{
-    "_comment": "These are the default properties for Traffic Portal. To customize these values, create your own traffic_portal_properties.json and copy to your web root replacing the existing one.",
-    "properties": {
-        "name": "Traffic Portal",
-        "about": {
-            "_comments": "Link to or embed (via iframe) a docs site for the traffic portal. If Iframe, must be the same protocol (http/https) as the traffic portal.",
-            "show": true,
-            "iframe": false,
-            "url": "http://traffic-control-cdn.net/"
-        },
-        "home": {
-            "_comments": "The sections displayed on the home page.",
-            "sections": [
-                {
-                    "header": "1. Configure the Traffic Portal",
-                    "description": "You are seeing the default view of the Traffic Portal. Customize /opt/traffic_portal/public/traffic_portal_properties.json to create a custom experience."
-                },
-                {
-                    "header": "2. Skin the Traffic Portal.",
-                    "description": "If you are not happy with the default bootstrap theme, add your own custom css declarations to /opt/traffic_portal/public/resources/assets/css/custom.css."
-                }
-            ]
-        },
-        "collateral": {
-            "_comments": "The items used on the collateral page (collateral.tpl.html).",
-            "items": [
-                {
-                    "name": "Collateral Item #1",
-                    "description": "Description goes here. Edit collateral items in traffic_portal_properties.json.",
-                    "path": "/resources/assets/other/collateral.txt"
-                }
-            ]
-        },
-        "footer": {
-            "_comments": "The links used in the footer (footer.tpl.html).",
-            "links": [
-                {
-                    "text": "Footer Link #1",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #2",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #3",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #4",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #5",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #6",
-                    "url": "http://about.example.com"
-                },
-                {
-                    "text": "Footer Link #7",
-                    "url": "http://about.example.com"
-                }
-            ]
-        },
-        "charts": {
-            "bandwidthPerSecond": {
-                "_comments": "BPS chart properties",
-                "show": true,
-                "name": "Bandwidth Per Second",
-                "description": "Bandwidth Per Second is the bits per second being sent out by servers for this delivery service at the Edge layer."
-            },
-            "transactionsPerSecond": {
-                "_comments": "TPS chart properties.",
-                "show": true,
-                "name": "Transactions Per Second",
-                "description": "Transactions Per Second are the number of requests being filled by servers for this delivery service at the Edge layer."
-            },
-            "httpStatus": {
-                "_comments": "HTTP chart properties.",
-                "show": true,
-                "name": "HTTP Status By Class",
-                "description": "HTTP Status by Class is a summary of HTTP response codes commonly referred to as \"pssc\" or proxy response status code in server log files. Data is gathered and presented for the Edge layer of the CDN only."
-            }
-        },
-        "deliveryService": {
-            "request": {
-                "_comments": "New delivery service requests are captured in a form and sent via email.",
-                "show": true,
-                "email": "foo@example.com"
-            },
-            "invalidateContent": {
-                "_comments": "Purge / invalidate content requests are available for delivery services.",
-                "show": true
-            }
-        }
-    }
-}
diff --git a/traffic_portal/v1/app/src/traffic_portal_release.json b/traffic_portal/v1/app/src/traffic_portal_release.json
deleted file mode 100644
index c8a9ff435..000000000
--- a/traffic_portal/v1/app/src/traffic_portal_release.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-    "Version":"0.9",
-    "Build Number":"25",
-    "Build Date":"2014-12-15 16:25:27"
-}
diff --git a/traffic_portal/v1/bower.json b/traffic_portal/v1/bower.json
deleted file mode 100755
index 6daa0f718..000000000
--- a/traffic_portal/v1/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "name": "trafficPortal",
-  "description": "Traffic Portal",
-  "dependencies": {
-    "angular": "1.5.0",
-    "angular-animate": "1.5.0",
-    "angular-resource": "1.5.0",
-    "angular-route": "1.5.0",
-    "angular-sanitize": "1.5.0",
-    "angular-bootstrap": "0.14.3",
-    "angular-loading-bar": "0.8.0",
-    "angular-ui-router": "0.2.18",
-    "bootstrap-sass-official": "3.3.6",
-    "es5-shim": "4.5.6",
-    "flot": "0.8.3",
-    "flot.tooltip": "0.8.7",
-    "flot-axislabels": "release-2.0.1",
-    "jquery": "2.0.0",
-    "jquery-ui": "1.10.0",
-    "json3": "3.3.2"
-  }
-}
diff --git a/traffic_portal/v1/build/build_rpm.sh b/traffic_portal/v1/build/build_rpm.sh
deleted file mode 100755
index 2ce3c97b8..000000000
--- a/traffic_portal/v1/build/build_rpm.sh
+++ /dev/null
@@ -1,54 +0,0 @@
-#!/bin/bash
-#
-#
-#
-# 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.
-
-function importFunctions() {
-	local script=$(readlink -f "$0")
-	local scriptdir=$(dirname "$script")
-	export TS_DIR=$(dirname "$scriptdir")
-	export TC_DIR=$(dirname "$TS_DIR")
-	functions_sh="$TC_DIR/build/functions.sh"
-	if [[ ! -r $functions_sh ]]; then
-		echo "error: can't find $functions_sh"
-		exit 1
-	fi
-	. "$functions_sh"
-}
-
-#----------------------------------------
-function initBuildArea() {
-	echo "Initializing the build area."
-	mkdir -p "$RPMBUILD"/{SPECS,SOURCES,RPMS,SRPMS,BUILD,BUILDROOT} || { echo "Could not create $RPMBUILD: $?"; exit 1; }
-
-	# tar/gzip the source
-	local ts_dest=$(createSourceDir traffic_portal)
-	cd "$TS_DIR" || \
-		 { echo "Could not cd to $TS_DIR: $?"; exit 1; }
-	rsync -av ./ "$ts_dest"/ || \
-		 { echo "Could not copy to $to_dest: $?"; exit 1; }
-	cp -r "$TS_DIR"/ "$ts_dest" || { echo "Could not copy $TS_DIR to $ts_dest: $?"; exit 1; }
-
-	tar -czvf "$ts_dest".tgz -C "$RPMBUILD"/SOURCES $(basename $ts_dest) || { echo "Could not create tar archive $ts_dest.tgz: $?"; exit 1; }
-	cp "$TS_DIR"/build/*.spec "$RPMBUILD"/SPECS/. || { echo "Could not copy spec files: $?"; exit 1; }
-
-	echo "The build area has been initialized."
-}
-
-# ---------------------------------------
-
-importFunctions
-checkEnvironment npm node
-initBuildArea
-buildRpm traffic_portal
diff --git a/traffic_portal/v1/build/etc/init.d/traffic_portal b/traffic_portal/v1/build/etc/init.d/traffic_portal
deleted file mode 100755
index be4697dc9..000000000
--- a/traffic_portal/v1/build/etc/init.d/traffic_portal
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/bin/bash
-#
-# An init.d script for running a Node.js process as a service using Forever as
-# the process monitor. For more configuration options associated with Forever,
-# see: https://github.com/nodejitsu/forever
-#
-# This was written for Debian distributions such as Ubuntu, but should still
-# work on RedHat, Fedora, or other RPM-based distributions, since none of the
-# built-in service functions are used. So information is provided for both.
-#
-### BEGIN INIT INFO
-# Provides:             my-application
-# Required-Start:       $syslog $remote_fs
-# Required-Stop:        $syslog $remote_fs
-# Should-Start:         $local_fs
-# Should-Stop:          $local_fs
-# Default-Start:        2 3 4 5
-# Default-Stop:         0 1 6
-# Short-Description:    My Application
-# Description:          My Application
-### END INIT INFO
-#
-### BEGIN CHKCONFIG INFO
-# chkconfig: 2345 55 25
-# description: My Application
-### END CHKCONFIG INFO
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-
-# An application name to display in echo text.
-# NAME="Traffic Portal Application"
-# The full path to the directory containing the node and forever binaries.
-# Set the NODE_PATH to the Node.js main node_modules directory.
-# The application startup Javascript file path.
-
-# Process ID file path.
-# Log file path.
-# Forever settings to prevent the application spinning if it fails on launch.
-# MIN_UPTIME="5000"
-# SPIN_SLEEP_TIME="2000"
- 
-NAME="Traffic Portal Application"
-NODE_BIN_DIR="/usr/bin"
-NODE_PATH="/opt/traffic_portal/node_modules"
-FOREVER_BIN_DIR="/opt/traffic_portal/node_modules/forever/bin"
-APPLICATION_PATH="/opt/traffic_portal/server/server.js"
-PIDFILE="/var/run/traffic_portal.pid"
-LOGFILE="/var/log/traffic_portal/traffic_portal.log"
-MIN_UPTIME="5000"
-SPIN_SLEEP_TIME="2000"
- 
-# Add node to the path for situations in which the environment is passed.
-PATH=$FOREVER_BIN_DIR:$NODE_BIN_DIR:$PATH
-# Export all environment variables that must be visible for the Node.js
-# application process forked by Forever. It will not see any of the other
-# variables defined in this script.
-export NODE_PATH=$NODE_PATH
- 
-start() {
-    echo "Starting $NAME"
-    # We're calling forever directly without using start-stop-daemon for the
-    # sake of simplicity when it comes to environment, and because this way
-    # the script will work whether it is executed directly or via the service
-    # utility.
-    #
-    # The minUptime and spinSleepTime settings stop Forever from thrashing if
-    # the application fails immediately on launch. This is generally necessary to
-    # avoid loading development servers to the point of failure every time
-    # someone makes an error in application initialization code, or bringing down
-    # production servers the same way if a database or other critical service
-    # suddenly becomes inaccessible.
-    #
-    # The pidfile contains the child process pid, not the forever process pid.
-    # We're only using it as a marker for whether or not the process is
-    # running.
-    #
-    # Note that redirecting the output to /dev/null (or anywhere) is necessary
-    # to make this script work if provisioning the service via Chef.
-    forever \
-      --pidFile $PIDFILE \
-      -a \
-      -l $LOGFILE \
-      --minUptime $MIN_UPTIME \
-      --spinSleepTime $SPIN_SLEEP_TIME \
-      start $APPLICATION_PATH 2>&1 > /dev/null &
-    RETVAL=$?
-}
- 
-stop() {
-    if [ -f $PIDFILE ]; then
-        echo "Shutting down $NAME"
-        # Tell Forever to stop the process.
-        forever stop $APPLICATION_PATH 2>&1 > /dev/null
-        # Get rid of the pidfile, since Forever won't do that.
-        rm -f $PIDFILE
-        RETVAL=$?
-    else
-        echo "$NAME is not running."
-        RETVAL=0
-    fi
-}
- 
-restart() {
-    stop
-    start
-}
- 
-status() {
-    echo `forever list` | grep -q "$APPLICATION_PATH"
-    if [ "$?" -eq "0" ]; then
-        echo "$NAME is running."
-        RETVAL=0
-    else
-        echo "$NAME is not running."
-        RETVAL=3
-    fi
-}
- 
-case "$1" in
-    start)
-        start
-        ;;
-    stop)
-        stop
-        ;;
-    status)
-        status
-        ;;
-    restart)
-        restart
-        ;;
-    *)
-        echo "Usage: {start|stop|status|restart}"
-        exit 1
-        ;;
-esac
-exit $RETVAL
diff --git a/traffic_portal/v1/build/etc/logrotate.d/traffic_portal b/traffic_portal/v1/build/etc/logrotate.d/traffic_portal
deleted file mode 100644
index e30f02aea..000000000
--- a/traffic_portal/v1/build/etc/logrotate.d/traffic_portal
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-
-/var/log/traffic_portal/traffic_portal.log {
-    daily
-    copytruncate
-    missingok
-    compress
-    maxage 30
-    dateext
-}
diff --git a/traffic_portal/v1/build/etc/logrotate.d/traffic_portal-access b/traffic_portal/v1/build/etc/logrotate.d/traffic_portal-access
deleted file mode 100644
index 0cce95b1d..000000000
--- a/traffic_portal/v1/build/etc/logrotate.d/traffic_portal-access
+++ /dev/null
@@ -1,26 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you 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.
-
-/var/log/traffic_portal/access.log {
-    daily
-    copytruncate
-    missingok
-    compress
-    maxage 30
-    dateext
-}
diff --git a/traffic_portal/v1/build/traffic_portal.spec b/traffic_portal/v1/build/traffic_portal.spec
deleted file mode 100644
index b81e1a070..000000000
--- a/traffic_portal/v1/build/traffic_portal.spec
+++ /dev/null
@@ -1,89 +0,0 @@
-#
-#
-# 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.
-#
-#
-# RPM spec file for the Traffic Portal
-#
-%define		debug_package %{nil}
-Name:		traffic_portal
-Version:	%{traffic_control_version}
-Release:	%{build_number}
-Summary:	Traffic Portal
-Group:		Applications/Communications
-License:	Apache License, Version 2.0
-URL:		https://github.com/apache/trafficcontrol/
-Source:		%{_sourcedir}/traffic_portal-%{traffic_control_version}.tgz
-AutoReqProv: no
-Requires: nodejs
-
-%define traffic_portal_home /opt/traffic_portal
-%description
-Installs Traffic Portal
-
-Built: @BUILT@
-
-%prep
-rm -rf $RPM_BUILD_DIR/traffic_portal-%{version}
-tar -xzvf $RPM_SOURCE_DIR/traffic_portal-%{version}.tgz
-
-%setup
-
-%build
-    /usr/bin/npm install
-    /usr/bin/bower install
-    /usr/bin/grunt dist
-
-%install
-    %__mkdir -p ${RPM_BUILD_ROOT}/etc/init.d
-    %__mkdir -p ${RPM_BUILD_ROOT}/etc/logrotate.d
-    %__mkdir -p ${RPM_BUILD_ROOT}/etc/traffic_portal
-    %__mkdir -p ${RPM_BUILD_ROOT}%{traffic_portal_home}/public
-    %__mkdir -p ${RPM_BUILD_ROOT}%{traffic_portal_home}/server
-    %__mkdir -p ${RPM_BUILD_ROOT}/var/log/traffic_portal
-
-    # creates dynamic json file needed at runtime for traffic portal to display release info
-    BUILD_DATE=$(date +'%Y-%m-%d %H:%M:%S')
-    VERSION="\"Version\":\"$VERSION\""
-    BUILD_NUMBER="\"Build Number\":\"$BUILD_NUMBER\""
-    BUILD_DATE="\"Build Date\":\"$BUILD_DATE\""
-    JSON_VERSION="{\n$VERSION,\n$BUILD_NUMBER,\n$BUILD_DATE\n}"
-    echo -e $JSON_VERSION > ${RPM_BUILD_ROOT}%{traffic_portal_home}/public/traffic_portal_release.json
-
-    %__cp ${RPM_BUILD_DIR}/traffic_portal-%{version}/server/server.js ${RPM_BUILD_ROOT}%{traffic_portal_home}/server/.
-    %__cp -r ${RPM_BUILD_DIR}/traffic_portal-%{version}/conf ${RPM_BUILD_ROOT}/etc/traffic_portal/.
-    %__cp ${RPM_BUILD_DIR}/traffic_portal-%{version}/build/etc/init.d/traffic_portal ${RPM_BUILD_ROOT}/etc/init.d/.
-    %__cp ${RPM_BUILD_DIR}/traffic_portal-%{version}/build/etc/logrotate.d/traffic_portal ${RPM_BUILD_ROOT}/etc/logrotate.d/.
-    %__cp ${RPM_BUILD_DIR}/traffic_portal-%{version}/build/etc/logrotate.d/traffic_portal-access ${RPM_BUILD_ROOT}/etc/logrotate.d/.
-    %__cp -r ${RPM_BUILD_DIR}/traffic_portal-%{version}/app/dist/* ${RPM_BUILD_ROOT}%{traffic_portal_home}/.
-
-%post
-    echo "Successfully installed the traffic_portal assets to " %{traffic_portal_home}
-    %__chmod +x %{traffic_portal_home}/node_modules/forever/bin/forever
-    %__chmod +x /etc/init.d/traffic_portal
-    echo "Successfully installed the 'traffic_portal' service"
-    /sbin/chkconfig traffic_portal on
-    echo ""
-    echo "Start with 'service traffic_portal start'"
-
-%files
-%defattr(644,root,root,755)
-%attr(755,root,root) /etc/init.d/traffic_portal
-%attr(755,root,root) %{traffic_portal_home}/node_modules/forever/bin/*
-%config(noreplace)/etc/traffic_portal/conf/config.js
-%dir /var/log/traffic_portal
-/etc/traffic_portal/conf/config-template.js
-%{traffic_portal_home}/*
-/etc/logrotate.d/traffic_portal
-/etc/logrotate.d/traffic_portal-access
-/etc/init.d/traffic_portal
diff --git a/traffic_portal/v1/conf/config-template.js b/traffic_portal/v1/conf/config-template.js
deleted file mode 100644
index 6618ff59e..000000000
--- a/traffic_portal/v1/conf/config-template.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-// this is the config for /opt/traffic_portal/server/server.js and is consumed when 'sudo service traffic_portal start'
-module.exports = {
-    timeout: '120s',
-    useSSL: false, // set to true if you plan to use https (self-signed or trusted certs).
-    port: 8080,
-    sslPort: 8443,
-    proxyPort: 8009,
-    // if useSSL is true, generate ssl certs and provide the proper locations.
-    ssl: {
-        key:    '/path/to/ssl.key',
-        cert:   '/path/to/ssl.crt',
-        ca:     [
-            '/path/to/ssl-bundle.crt'
-        ]
-    },
-    // set api 'base_url' to the traffic ops api (all api calls made from the traffic portal will be proxied to the api base_url)
-    api: {
-        base_url: 'http(s)://where-traffic-ops-api-is.com/api/'
-    },
-    // default files location (this is where the traffic portal html, css and javascript was installed)
-    files: {
-        static: '/opt/traffic_portal/public'
-    },
-    // default log location (this is where traffic_portal logs are written)
-    log: {
-        stream: '/var/log/traffic_portal/access.log'
-    },
-    reject_unauthorized: 0 // 0 if using self-signed certs, 1 if trusted certs
-};
-
diff --git a/traffic_portal/v1/conf/config.js b/traffic_portal/v1/conf/config.js
deleted file mode 100644
index f32449afd..000000000
--- a/traffic_portal/v1/conf/config.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-// see config-template.js for comments
-module.exports = {
-    timeout: '120s',
-    useSSL: false,
-    port: 8080,
-    sslPort: 8443,
-    proxyPort: 8009,
-    ssl: {
-        key:    '/path/to/ssl.key',
-        cert:   '/path/to/ssl.crt',
-        ca:     [
-            '/path/to/ssl-bundle.crt'
-        ]
-    },
-    api: {
-        base_url: 'http://localhost:3000/api/'
-    },
-    files: {
-        static: './app/dist/public/'
-    },
-    log: {
-        stream: './server/log/access.log'
-    },
-    reject_unauthorized: 0 // 0 if using self-signed certs, 1 if trusted certs
-};
diff --git a/traffic_portal/v1/grunt/browserify2.js b/traffic_portal/v1/grunt/browserify2.js
deleted file mode 100755
index 122651d3b..000000000
--- a/traffic_portal/v1/grunt/browserify2.js
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    'shared-libs-prod': {
-        entry: './<%= globalConfig.srcdir %>/scripts/shared-libs.js',
-        compile: './<%= globalConfig.resourcesdir %>/assets/js/shared-libs.js',
-        options: {
-            expose: {
-                files: [
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src:
-                            [
-                                'angular/angular.min.js',
-                                'angular-animate/angular-animate.min.js',
-                                'angular-bootstrap/ui-bootstrap.min.js',
-                                'angular-bootstrap/ui-bootstrap-tpls.min.js',
-                                'angular-loading-bar/build/loading-bar.min.js',
-                                'angular-resource/angular-resource.min.js',
-                                'angular-route/angular-route.min.js',
-                                'angular-sanitize/angular-sanitize.min.js',
-                                'angular-ui-router/release/angular-ui-router.min.js',
-                                'bootstrap-sass-official/assets/javascripts/bootstrap.min.js',
-                                'es5-shim/es5-shim.min.js',
-                                'jquery/jquery.min.js',
-                                'json3/lib/json3.min.js'
-                            ]
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.js' ],
-                        rename: function () { return 'jquery-flot.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.stack.js' ],
-                        rename: function () { return 'jquery-flot-stack.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.time.js' ],
-                        rename: function () { return 'jquery-flot-time.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot.tooltip/js/jquery.flot.tooltip.min.js' ],
-                        rename: function () { return 'jquery-flot-tooltip.min.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot-axislabels/jquery.flot.axislabels.js' ],
-                        rename: function () { return 'jquery-flot-axislabels.js'; }
-                    }
-                ]
-            }
-        }
-    },
-    'shared-libs-dev': {
-        entry: './<%= globalConfig.srcdir %>/scripts/shared-libs.js',
-        compile: './<%= globalConfig.resourcesdir %>/assets/js/shared-libs.js',
-        options: {
-            expose: {
-                files: [
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src:
-                            [
-                                'angular/angular.js',
-                                'angular-animate/angular-animate.js',
-                                'angular-bootstrap/ui-bootstrap.js',
-                                'angular-bootstrap/ui-bootstrap-tpls.js',
-                                'angular-loading-bar/build/loading-bar.js',
-                                'angular-resource/angular-resource.js',
-                                'angular-route/angular-route.js',
-                                'angular-sanitize/angular-sanitize.js',
-                                'angular-ui-router/release/angular-ui-router.js',
-                                'bootstrap-sass-official/assets/javascripts/bootstrap.js',
-                                'es5-shim/es5-shim.js',
-                                'jquery/jquery.js',
-                                'json3/lib/json3.js'
-                            ]
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.js' ],
-                        rename: function () { return 'jquery-flot.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.stack.js' ],
-                        rename: function () { return 'jquery-flot-stack.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot/jquery.flot.time.js' ],
-                        rename: function () { return 'jquery-flot-time.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot.tooltip/js/jquery.flot.tooltip.js' ],
-                        rename: function () { return 'jquery-flot-tooltip.js'; }
-                    },
-                    {
-                        cwd: '<%= globalConfig.app %>/bower_components/',
-                        src: [ 'flot-axislabels/jquery.flot.axislabels.js' ],
-                        rename: function () { return 'jquery-flot-axislabels.js'; }
-                    }
-                ]
-            }
-        }
-    },
-    'app-prod': {
-        entry: './<%= globalConfig.srcdir %>/app.js',
-        compile: './<%= globalConfig.resourcesdir %>/assets/js/app.js',
-        debug: false,
-        options: {
-            expose: {
-                'app-templates':'./<%= globalConfig.tmpdir %>/app-templates.js'
-            }
-        }
-    },
-    'app-dev': {
-        entry: './<%= globalConfig.srcdir %>/app.js',
-        compile: './<%= globalConfig.resourcesdir %>/assets/js/app.js',
-        debug: true,
-        options: {
-            expose: {
-                'app-templates':'./<%= globalConfig.tmpdir %>/app-templates.js'
-            }
-        }
-    },
-    'app-config': {
-        entry: './<%= globalConfig.srcdir %>/scripts/config.js',
-        compile: './<%= globalConfig.resourcesdir %>/assets/js/config.js'
-    }
-};
diff --git a/traffic_portal/v1/grunt/clean.js b/traffic_portal/v1/grunt/clean.js
deleted file mode 100755
index fead1ce86..000000000
--- a/traffic_portal/v1/grunt/clean.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    all: [
-        '<%= globalConfig.distdir %>/*',
-        '<%= globalConfig.tmpdir %>/*'
-    ]
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/grunt/compass.js b/traffic_portal/v1/grunt/compass.js
deleted file mode 100755
index 5ec79fd6a..000000000
--- a/traffic_portal/v1/grunt/compass.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    options: {
-        sassDir: '<%= globalConfig.srcdir %>',
-        imagesDir: '<%= globalConfig.srcdir %>/assets/images',
-        javascriptsDir: '<%= globalConfig.srcdir %>',
-        fontsDir: '<%= globalConfig.srcdir %>/assets/fonts',
-        importPath: '<%= globalConfig.app %>/bower_components',
-        relativeAssets: false,
-        assetCacheBuster: false,
-        raw: 'Sass::Script::Number.precision = 10\n'
-    },
-    prod: {
-        options: {
-            cssDir: '<%= globalConfig.resourcesdir %>',
-            outputStyle: 'compressed',
-            environment: 'production'
-        }
-    },
-    dev: {
-        options: {
-            debugInfo: true,
-            cssDir: '<%= globalConfig.resourcesdir %>',
-            outputStyle: 'expanded',
-            environment: 'development'
-        }
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/grunt/copy.js b/traffic_portal/v1/grunt/copy.js
deleted file mode 100755
index 4bee6439f..000000000
--- a/traffic_portal/v1/grunt/copy.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    dev: {
-        files: [
-            {
-                expand: true,
-                dot: true,
-                cwd: '<%= globalConfig.srcdir %>',
-                dest: '<%= globalConfig.resourcesdir %>',
-                src: [
-                    'assets/css/**/*',
-                    'assets/images/**/*',
-                    'assets/js/**/*',
-                    'assets/other/**/*'
-                ]
-            },
-            {
-                expand: true,
-                dot: true,
-                cwd: '<%= globalConfig.srcdir %>',
-                dest: '<%= globalConfig.distdir %>/public',
-                src: [
-                    '*.html',
-                    'traffic_portal_release.json',
-                    'traffic_portal_properties.json'
-                ]
-            }
-        ]
-    },
-    dist: {
-        files: [
-            {
-                expand: true,
-                dot: true,
-                cwd: '<%= globalConfig.srcdir %>',
-                dest: '<%= globalConfig.resourcesdir %>',
-                src: [
-                    'assets/css/**/*',
-                    'assets/images/**/*',
-                    'assets/js/**/*',
-                    'assets/other/**/*'
-                ]
-            },
-            {
-                expand: true,
-                dot: true,
-                cwd: '<%= globalConfig.srcdir %>',
-                dest: '<%= globalConfig.distdir %>',
-                src: [
-                    'package.json'
-                ]
-            },
-            {
-                expand: true,
-                dot: true,
-                cwd: '<%= globalConfig.srcdir %>',
-                dest: '<%= globalConfig.distdir %>/public',
-                src: [
-                    '*.html',
-                    'traffic_portal_properties.json'
-                ]
-            }
-        ]
-    }
-};
diff --git a/traffic_portal/v1/grunt/express.js b/traffic_portal/v1/grunt/express.js
deleted file mode 100644
index aa76337ee..000000000
--- a/traffic_portal/v1/grunt/express.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    dev: {
-        options: {
-            script: './server/server.js',
-            node_env: 'dev'
-        }
-    }
-};
diff --git a/traffic_portal/v1/grunt/globalConfig.js b/traffic_portal/v1/grunt/globalConfig.js
deleted file mode 100755
index 9d76412d1..000000000
--- a/traffic_portal/v1/grunt/globalConfig.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = function() {
-    var globalConfig = {
-        app: 'app',
-        resourcesdir: 'app/dist/public/resources',
-        distdir: 'app/dist',
-        srcconfdir: './conf',
-        srcserverdir: './server',
-        srcdir: 'app/src',
-        tmpdir: '.tmp',
-        srcfiles: {
-            js: ['./app/src/**/*.js'],
-            tpl: ['./app/src/**/*.tpl.html']
-        }
-    };
-
-    return globalConfig;
-}
diff --git a/traffic_portal/v1/grunt/html2js.js b/traffic_portal/v1/grunt/html2js.js
deleted file mode 100755
index 65760e523..000000000
--- a/traffic_portal/v1/grunt/html2js.js
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    options: {
-        base: './app/src'
-    },
-    'dist': {
-        src: ['<%= globalConfig.srcfiles.tpl %>'],
-        dest: '<%= globalConfig.tmpdir %>/app-templates.js',
-        module: 'app.templates'
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/grunt/install-dependencies.js b/traffic_portal/v1/grunt/install-dependencies.js
deleted file mode 100644
index 8af5b3cfe..000000000
--- a/traffic_portal/v1/grunt/install-dependencies.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    options: {
-        cwd: '<%= globalConfig.distdir %>',
-        isDevelopment: false
-    }
-};
diff --git a/traffic_portal/v1/grunt/jshint.js b/traffic_portal/v1/grunt/jshint.js
deleted file mode 100755
index aa7be4a08..000000000
--- a/traffic_portal/v1/grunt/jshint.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    files: ['Gruntfile.js', '<%= globalConfig.srcfiles.js %>'],
-    options: {
-        jshintrc:true
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/grunt/ngconstant.js b/traffic_portal/v1/grunt/ngconstant.js
deleted file mode 100644
index 356d43e82..000000000
--- a/traffic_portal/v1/grunt/ngconstant.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    options: {
-        space: '  ',
-        wrap: '"use strict";\n\n {%= __ngModule %}',
-        name: 'config',
-        dest: '<%= globalConfig.srcdir %>/scripts/config.js'
-    },
-    dev: {
-        constants: {
-            ENV: {
-                apiEndpoint: {
-                    '1.1': '/api/1.1/',
-                    '1.2': '/api/1.2/'
-                }
-            }
-        }
-    },
-    prod: {
-        constants: {
-            ENV: {
-                apiEndpoint: {
-                    '1.1': '/api/1.1/',
-                    '1.2': '/api/1.2/'
-                }
-            }
-        }
-    }
-};
-
diff --git a/traffic_portal/v1/grunt/uglify.js b/traffic_portal/v1/grunt/uglify.js
deleted file mode 100755
index 115038110..000000000
--- a/traffic_portal/v1/grunt/uglify.js
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    dist: {
-        files: {
-            '<%= globalConfig.resourcesdir %>/assets/js/app.js': [
-                '<%= globalConfig.tmpdir %>/app.js'
-            ]
-        }
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/grunt/watch.js b/traffic_portal/v1/grunt/watch.js
deleted file mode 100755
index 971b47292..000000000
--- a/traffic_portal/v1/grunt/watch.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-module.exports = {
-    options: {
-        livereload: true
-    },
-    js: {
-        files: ['<%= globalConfig.srcdir %>/**/*.js'],
-        tasks: [ 'build-dev']
-    },
-    compass: {
-        files: ['<%= globalConfig.srcdir %>/**/*.{scss,sass}'],
-        tasks: ['compass:dev']
-    },
-    html: {
-        files: ['app/**/*.tpl.html', 'app/**/index.html'],
-        tasks: ['copy:dist', 'build-dev']
-    }
-};
\ No newline at end of file
diff --git a/traffic_portal/v1/package.json b/traffic_portal/v1/package.json
deleted file mode 100755
index a0df0d76f..000000000
--- a/traffic_portal/v1/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-    "name": "trafficPortal",
-    "description": "Traffic Portal",
-    "devDependencies": {
-        "morgan": "1.7.0",
-        "errorhandler": "1.4.3",
-        "connect-modrewrite": "0.8.5",
-        "connect-timeout": "1.7.0",
-        "ssl-root-cas": "1.1.10",
-        "express": "4.13.4",
-        "grunt": "0.4.5",
-        "grunt-adam-compass": "0.7.1",
-        "grunt-wiredep": "2.0.0",
-        "grunt-browserify2": "0.1.8",
-        "grunt-concurrent": "2.2.1",
-        "grunt-contrib-clean": "1.0.0",
-        "grunt-contrib-concat": "1.0.0",
-        "grunt-contrib-copy": "0.8.2",
-        "grunt-contrib-cssmin": "0.14.0",
-        "grunt-contrib-htmlmin": "0.6.0",
-        "grunt-contrib-jshint": "1.0.0",
-        "grunt-contrib-uglify": "0.11.1",
-        "grunt-contrib-watch": "0.6.1",
-        "grunt-express-server": "0.5.2",
-        "grunt-html2js": "0.3.5",
-        "grunt-install-dependencies": "0.2.0",
-        "grunt-newer": "1.1.2",
-        "grunt-ng-constant": "2.0.1",
-        "load-grunt-config": "0.19.1",
-        "load-grunt-tasks": "3.4.1",
-        "time-grunt": "1.3.0"
-    },
-    "engines": {
-        "node": ">=0.12.0"
-    }
-}
diff --git a/traffic_portal/v1/server/log/.keep b/traffic_portal/v1/server/log/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/traffic_portal/v1/server/server.js b/traffic_portal/v1/server/server.js
deleted file mode 100644
index 77b87e47a..000000000
--- a/traffic_portal/v1/server/server.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
-
-
- 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.
-
- */
-
-var constants = require('constants'),
-    express = require('express'),
-    http = require('http'),
-    https = require('https'),
-    fs = require('fs'),
-    morgan = require('morgan'),
-    errorhandler = require('errorhandler'),
-    modRewrite = require('connect-modrewrite'),
-    timeout = require('connect-timeout');
-
-var config;
-
-try {
-    // this should exist in prod environment. no need to create this file in dev as it will use the fallback (see catch)
-    config = require('/etc/traffic_portal/conf/config');
-}
-catch(e) {
-    // this is used for dev environment
-    config = require('../conf/config');
-}
-
-var logStream = fs.createWriteStream(config.log.stream, { flags: 'a' });
-var useSSL = config.useSSL;
-
-// Disable for self-signed certs in dev/test
-process.env.NODE_TLS_REJECT_UNAUTHORIZED = config.reject_unauthorized;
-
-var app = express();
-// Add a handler to inspect the req.secure flag (see
-// http://expressjs.com/api#req.secure). This allows us
-// to know whether the request was via http or https.
-app.all ("/*", function (req, res, next) {
-    if (useSSL && !req.secure) {
-        var headersHost = req.headers.host.split(':');
-        var httpsUrl = 'https://' + headersHost[0] + ':' +  config.sslPort + req.url;
-        // request was via http, so redirect to https
-        res.redirect(httpsUrl);
-    } else {
-        next();
-    }
-});
-
-app.use(modRewrite([
-        '^/api/(.*?)\\?(.*)$ ' + config.api.base_url + '$1?$2 [P]',
-        '^/api/(.*)$ ' + config.api.base_url + '$1 [P]'
-]));
-app.use(express.static(config.files.static));
-app.use(morgan('combined', {
-    stream: logStream,
-    skip: function (req, res) { return res.statusCode < 400 }
-}));
-app.use(timeout(config.timeout));
-
-if (app.get('env') === 'dev') {
-    app.use(errorhandler());
-} else {
-    app.set('env', "production");
-}
-
-// Enable reverse proxy support in Express. This causes the
-// the "X-Forwarded-Proto" header field to be trusted so its
-// value can be used to determine the protocol. See
-// http://expressjs.com/api#app-settings for more details.
-app.enable('trust proxy');
-
-// Startup HTTP Server
-var httpServer = http.createServer(app);
-httpServer.listen(config.port);
-
-if (useSSL) {
-    //
-    // Supply `SSL_OP_NO_SSLv3` constant as secureOption to disable SSLv3
-    // from the list of supported protocols that SSLv23_method supports.
-    //
-    var sslOptions = {};
-    sslOptions['secureOptions'] = constants.SSL_OP_NO_SSLv3;
-
-    sslOptions['key'] = fs.readFileSync(config.ssl.key);
-    sslOptions['cert'] = fs.readFileSync(config.ssl.cert);
-    sslOptions['ca'] = config.ssl.ca.map(function(cert){
-        return fs.readFileSync(cert);
-    });
-
-    // Startup HTTPS Server
-    var httpsServer = https.createServer(sslOptions, app);
-    httpsServer.listen(config.sslPort);
-
-    sslOptions.agent = new https.Agent(sslOptions);
-}
-
-console.log("Traffic Portal Port         : %s", config.port);
-console.log("Traffic Portal Proxy Port   : %s", config.proxyPort);
-console.log("Traffic Portal SSL Port     : %s", config.sslPort);


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
users@infra.apache.org


With regards,
Apache Git Services