Initial commit for OpenECOMP SDN-C OA&M

Change-Id: I7ab579fd0d206bf356f36d52dcdf4f71f1fa2680
Signed-off-by: Timoney, Daniel (dt5972) <dtimoney@att.com>

Former-commit-id: 2a9f0edd09581f907e62ec4689b5ac94dd5382ba
diff --git a/admportal/views/ucpe/altsCredentials.ejs b/admportal/views/ucpe/altsCredentials.ejs
new file mode 100644
index 0000000..54ca020
--- /dev/null
+++ b/admportal/views/ucpe/altsCredentials.ejs
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#alts_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>ALTS Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_alts_credentials">
+            Add ALTS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="alts_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>ALTS Username</th>
+          <th>ALTS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.alts_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateAltsCredentials('<%=row.alts_username %>','<%= row.alts_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteAltsCredentials('<%= row.alts_username %>', '<%= row.alts_password %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/alts_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitAltsCredentials(form)
+{
+    var errorMsg='';
+	var alts_username = '';
+	var alts_password = '';
+	var confirm_alts_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		alts_username = form.nf_alts_username;
+		alts_password = form.nf_alts_password;
+		confirm_alts_password = form.nf_confirm_alts_password;
+
+		if ( alts_password.value != confirm_alts_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		alts_username = form.uf_alts_username;
+		alts_password = form.uf_alts_password;
+		confirm_alts_password = form.uf_confirm_alts_password;
+
+		if ( alts_password.value != confirm_alts_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updateAltsCredentials(alts_username,alts_password) {
+
+    document.getElementById('uf_alts_username').value=alts_username;
+    document.getElementById('uf_alts_password').value=alts_password;
+
+    $('#update_alts_credentials').modal('show');
+}
+
+function deleteAltsCredentials(alts_username, alts_password) {
+
+	var url_string = encodeURI("/ucpe/deleteAltsCredentials?alts_username=" + alts_username 
+					+ "&alts_password=" + alts_password);
+
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete ALTS Credentials? " + alts_username,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/apiLogins.ejs b/admportal/views/ucpe/apiLogins.ejs
new file mode 100644
index 0000000..ddb50c8
--- /dev/null
+++ b/admportal/views/ucpe/apiLogins.ejs
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#api_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+
+<body>
+
+<div class="well well-sm">
+<h3>uCPE API Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="api_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>PHS_NCS_USERNAME</th>
+		  <th>NCS_PUBLIC_SSH_KEY</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.phs_ncs_username %></td>
+            <td><%= row.ncs_public_ssh_key %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/chainingTopologies.ejs b/admportal/views/ucpe/chainingTopologies.ejs
new file mode 100644
index 0000000..2717062
--- /dev/null
+++ b/admportal/views/ucpe/chainingTopologies.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#chaining_topologies').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Chaining Topologies</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="chaining_topologies" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*TOPOLOGY_NAME</th>
+		  <th>*START_VNF_TYPE</th>
+		  <th>*SEQUENCE_NUMBER</th>
+		  <th>START_SERVIVE_PORT_NAME</th>
+		  <th>VNF_TYPE</th>
+		  <th>SERVICE_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.topology_name %></td>
+            <td><%= row.start_vnf_type %></td>
+            <td><%= row.sequence_number %></td>
+            <td><%= row.start_service_port_name %></td>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.service_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/customerNcsServers.ejs b/admportal/views/ucpe/customerNcsServers.ejs
new file mode 100644
index 0000000..082384a
--- /dev/null
+++ b/admportal/views/ucpe/customerNcsServers.ejs
@@ -0,0 +1,102 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#ncs_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Customer NCS Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="ncs_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>URL</th>
+		  <th>NCS_SM_IP_ADDRESS</th>
+		  <th>NCS_DM_V6_IP_ADDRESS</th>
+		  <th>NCS_DM_V6_IP_NETWORK</th>
+		  <th>DR_NCS_DM_V6_IP_NETWORK</th>
+		  <th>NCS_DM_V4_IP_NETWORK</th>
+		  <th>DR_NCS_DM_V4_IP_NETWORK</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.url %></td>
+            <td><%= row.ncs_sm_ip_address %></td>
+            <td><%= row.ncs_dm_v6_ip_address %></td>
+            <td><%= row.ncs_dm_v6_ip_network %></td>
+            <td><%= row.dr_ncs_dm_v6_ip_network %></td>
+            <td><%= row.ncs_dm_v4_ip_network %></td>
+            <td><%= row.dr_ncs_dm_v4_ip_network %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/mappedServicePort.ejs b/admportal/views/ucpe/mappedServicePort.ejs
new file mode 100644
index 0000000..1c55eb5
--- /dev/null
+++ b/admportal/views/ucpe/mappedServicePort.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#mapped_service_port').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Mapped Service Port</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="mapped_service_port" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/mcapServers.ejs b/admportal/views/ucpe/mcapServers.ejs
new file mode 100644
index 0000000..a51abd0
--- /dev/null
+++ b/admportal/views/ucpe/mcapServers.ejs
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#mcap_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE MCAP Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="mcap_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*MCAP_IP_ADDRESS</th>
+		  <th>*MCAP_POLLER_IP_ADDRESS</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.mcap_ip_address %></td>
+            <td><%= row.mcap_poller_ip_address %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/ncsCredentials.ejs b/admportal/views/ucpe/ncsCredentials.ejs
new file mode 100644
index 0000000..f860b07
--- /dev/null
+++ b/admportal/views/ucpe/ncsCredentials.ejs
@@ -0,0 +1,180 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#ncs_server_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>NCS Server Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_ncs_credentials">
+            Add NCS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="ncs_server_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>*Customer Name</th>
+          <th>NCS Username</th>
+          <th>NCS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ncs_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateNcsCredentials('<%= row.customer_name %>','<%= row.ncs_username %>','<%= row.ncs_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteNcsCredentials('<%= row.customer_name %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/ncs_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitNcsCredentials(form)
+{
+    var errorMsg='';
+	var customer_name = '';
+	var ncs_username = '';
+	var ncs_password = '';
+	var confirm_ncs_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		customer_name = form.nf_customer_name;
+		ncs_username = form.nf_ncs_username;
+		ncs_password = form.nf_ncs_password;
+		confirm_ncs_password = form.nf_confirm_ncs_password;
+
+    	if ( (customer_name.value == null) || (customer_name.value == "") || isblank(customer_name.value) )
+    	{
+        	errorMsg += 'Customer Name is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+		if ( ncs_password.value != confirm_ncs_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    else
+    {
+		customer_name = form.uf_customer_name;
+		ncs_username = form.uf_ncs_username;
+		ncs_password = form.uf_ncs_password;
+		confirm_ncs_password = form.uf_confirm_ncs_password;
+		if ( ncs_password.value != confirm_ncs_password.value )
+        {
+            bootbox.alert('Passwords do not match.');
+            return;
+        }
+    }
+    form.submit();
+}
+
+function updateNcsCredentials(customer_name,ncs_username,ncs_password) {
+
+    document.getElementById('uf_customer_name').value=customer_name;
+    document.getElementById('uf_ncs_username').value=ncs_username;
+    document.getElementById('uf_ncs_password').value=ncs_password;
+
+    $('#update_ncs_credentials').modal('show');
+}
+
+function deleteNcsCredentials(customer_name) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete NCS Credentials [ " + customer_name + " ]",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deleteNcsCredentials?customer_name=" + customer_name); 
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/nmInterfaces.ejs b/admportal/views/ucpe/nmInterfaces.ejs
new file mode 100644
index 0000000..50b15c4
--- /dev/null
+++ b/admportal/views/ucpe/nmInterfaces.ejs
@@ -0,0 +1,96 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#nm_interfaces').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE NM Interfaces</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="nm_interfaces" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>NM_VLAN_NUMBER</th>
+		  <th>DEVICE_MANAGER_NM_LAN_INTERFACE</th>
+		  <th>SWITCH_MANAGER_NM_LAN_INTERFACE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.nm_lan_vlan_number %></td>
+            <td><%= row.device_manager_nm_lan_interface %></td>
+            <td><%= row.switch_manager_nm_lan_interface %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/phsCredentials.ejs b/admportal/views/ucpe/phsCredentials.ejs
new file mode 100644
index 0000000..508b5a2
--- /dev/null
+++ b/admportal/views/ucpe/phsCredentials.ejs
@@ -0,0 +1,202 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#phs_server_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>PHS Server Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_phs_credentials">
+            Add PHS Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="phs_server_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>*Device Vendor Name</th>
+          <th>*Customer Name</th>
+		  <th>*IP Addresses</th>
+          <th>PHS Username</th>
+          <th>PHS Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ip_addresses %></td>
+            <td><%= row.phs_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updatePhsCredentials('<%=row.device_vendor_name %>','<%= row.customer_name %>','<%= row.ip_addresses %>','<%= row.phs_username %>','<%= row.phs_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deletePhsCredentials('<%= row.device_vendor_name %>', '<%= row.customer_name %>', '<%= row.ip_addresses %>' );">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/phs_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitPhsCredentials(form)
+{
+    var errorMsg='';
+    var device_vendor_name = '';
+	var customer_name = '';
+	var ip_addresses = '';
+	var phs_username = '';
+	var phs_password = '';
+	var confirm_phs_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		device_vendor_name = form.nf_device_vendor_name;
+		customer_name = form.nf_customer_name;
+		ip_addresses = form.nf_ip_addresses;
+		phs_username = form.nf_phs_username;
+		phs_password = form.nf_phs_password;
+		confirm_phs_password = form.nf_confirm_phs_password;
+
+    	if ( (device_vendor_name.value == null) || (device_vendor_name.value == "") || isblank(device_vendor_name.value) )
+    	{
+        	errorMsg += 'Device Vendor Name is required.<br>';
+    	}
+    	if ( (customer_name.value == null) || (customer_name.value == "") || isblank(customer_name.value) )
+    	{
+        	errorMsg += 'Customer Name is required.<br>';
+    	}
+    	if ( (ip_addresses.value == null) || (ip_addresses.value == "") || isblank(ip_addresses.value) ){
+        	errorMsg += 'IP Addresses is required.<br>';
+    	}
+    	if( errorMsg.length > 0 ) {
+        	bootbox.alert(errorMsg);
+        	return;
+    	}
+
+		if ( phs_password.value != confirm_phs_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		device_vendor_name = form.uf_device_vendor_name;
+		customer_name = form.uf_customer_name;
+		ip_addresses = form.uf_ip_addresses;
+		phs_username = form.uf_phs_username;
+		phs_password = form.uf_phs_password;
+		confirm_phs_password = form.uf_confirm_phs_password;
+
+		if ( phs_password.value != confirm_phs_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updatePhsCredentials(device_vendor_name,customer_name,ip_addresses,phs_username,phs_password) {
+
+    document.getElementById('uf_device_vendor_name').value=device_vendor_name;
+    document.getElementById('uf_customer_name').value=customer_name;
+    document.getElementById('uf_ip_addresses').value=ip_addresses;
+    document.getElementById('uf_phs_username').value=phs_username;
+    document.getElementById('uf_phs_password').value=phs_password;
+
+    $('#update_phs_credentials').modal('show');
+}
+
+function deletePhsCredentials(device_vendor_name, customer_name, ip_addresses) {
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete PHS Credentials " + device_vendor_name + "|" + customer_name + "|" + ip_addresses,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deletePhsCredentials?device_vendor_name=" + device_vendor_name 
+					+ "&customer_name=" + customer_name + "&ip_addresses=" + ip_addresses);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/phsServers.ejs b/admportal/views/ucpe/phsServers.ejs
new file mode 100644
index 0000000..1f28dbb
--- /dev/null
+++ b/admportal/views/ucpe/phsServers.ejs
@@ -0,0 +1,92 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#phs_servers').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE PHS Servers</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="phs_servers" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>IP_ADDRESSES</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.customer_name %></td>
+            <td><%= row.ip_addresses %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/physicalDeviceLogins.ejs b/admportal/views/ucpe/physicalDeviceLogins.ejs
new file mode 100644
index 0000000..0dd78d4
--- /dev/null
+++ b/admportal/views/ucpe/physicalDeviceLogins.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#device_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Physical Device Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="device_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*DEVICE_MANAGER_HASHED_PASSWORD</th>
+		  <th>*SWITCH_MANAGER_HASHED_PASSWORD</th>
+		  <th>*OS_HASHED_PASSWORD</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.device_manager_hashed_password %></td>
+            <td><%= row.switch_manager_hashed_password %></td>
+            <td><%= row.os_hashed_password %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/referenceData.ejs b/admportal/views/ucpe/referenceData.ejs
new file mode 100644
index 0000000..6196c46
--- /dev/null
+++ b/admportal/views/ucpe/referenceData.ejs
@@ -0,0 +1,224 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#reference_data').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Reference Data</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="reference_data" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+		  <th>REFERENCE_ID</th>
+		  <th>STATUS</th>
+          <th>FILENAME</th>
+          <th>ATTUID</th>
+          <th>DATE</th>
+		  <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+		<% var i=0; retData.forEach( function(rowObj) { %>
+        <tr>
+            <td><%= rowObj.row.reference_id %></td>
+            <td><%= rowObj.row.status %></td>
+			<td>
+                <a data-toggle="collapse"
+                    href="#collapseExample<%= i %>" aria-expanded="false"
+                    aria-controls="collapseExample"><%= rowObj.row.filename %>
+                </a>
+                <div class="collapse" id="collapseExample<%= i %>">
+                    <div class="well">
+                        <pre><%= rowObj.filecontent %></pre>
+                    </div>
+                </div>
+           </td>
+            <td><%= rowObj.row.attuid %></td>
+            <td><%= rowObj.row.ts %></td>
+			<% if(priv == 'A' ) { %>
+            <td>
+			<% if ( rowObj.row.status == 'pending' ) { %>
+				<button type="button" class="btn btn-default btn-xs"
+            	onclick="importReferenceData('<%= rowObj.row.reference_id %>','<%= rowObj.row.status %>','<%= rowObj.row.filename %>','<%= rowObj.row.ts %>');">Import</button>
+			<% } %>
+				<button type="button" class="btn btn-default btn-xs"
+            	onclick="deleteReferenceData('<%= rowObj.row.reference_id %>','<%= rowObj.row.filename %>');">Delete</button>
+			</td>
+            <% } %>
+        </tr>
+		<% i++; }); %>
+      </tbody>
+    </table>
+
+	<% if(priv == 'A'){ %>
+	<div class="actions" style="padding:0px 25px;">
+	<form method="POST" action="/ucpe/uploadReferenceData" enctype="multipart/form-data">
+		<div class="form-group">
+    		<label for="dest">File input</label>
+    		<input name="filename" type="file" id="dest">
+    		<p class="help-block">Choose a file to upload.</p>
+  		</div>
+            <button type="button" class="btn btn-default"
+                onclick="uploadFile(this.form);">Upload File</button>
+	</form>
+	</div>
+	<% } %>
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+
+function getVnfData(vnf_name,vnf_type,svc_request_id)
+{
+	location.assign("/mobility/viewVnfData?vnf_name=" + vnf_name + "&vnf_type=" + vnf_type );
+	return;
+}
+function importReferenceData(reference_id,status,filename,ts)
+{
+	var alertMessage = '';
+	if ( status != 'pending' )
+	{
+		bootbox.alert("Upload Status must be in 'pending' state.");
+		return;
+	}
+	if ( filename.substring(0,11) == 'ucpedevice_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_MAPPED_SERVICE_PORT and UCPE_SERVICE_PORT tables?";
+	}else if ( filename.substring(0,14) == 'ucpeapilogins_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_LOGINS, UCPE_PHYSICAL_DEVICE_LOGINS and UCPE_API_LOGINS tables?";
+	}else if ( filename.substring(0,17) == 'ucpenminterfaces_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_NM_INTERFACES and UCPE_NM_INTERFACES tables?";
+	}else if ( filename.substring(0,15) == 'ucpephsservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_PHS_SERVERS table?";
+	}else if ( filename.substring(0,15) == 'ucpencsservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_CUSTOMER_NCS_SERVERS table?";
+	}else if ( filename.substring(0,15) == 'ucpevnfcatalog_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_MODELS, UCPE_VNF_MODEL_SOFTWARE and UCPE_VNF_MODEL_FEATURES tables?";
+	}else if ( filename.substring(0,16) == 'ucpemcapservers_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_MCAP_SERVERS table?";
+	}else if ( filename.substring(0,23) == 'ucpechainingtopologies_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_CHAINING_TOPOLOGIES table?";
+	}else if ( filename.substring(0,16) == 'ucpevnfportinfo_' ){
+        alertMessage = "Are you sure you want to import file:" + filename + " and replace the UCPE_VNF_PORT and UCPE_MAP_TO_DEVICE tables?";
+	} else {
+		bootbox.alert('Invalid Filename in database: ' + filename);
+		return;
+	}
+	bootbox.confirm({
+        message: alertMessage,
+        callback: function(result) {
+            if ( result )
+            {
+				if ( filename.substring(0,11) == 'ucpedevice_' ){
+					location.assign("/ucpe/importUcpeDevices?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,14) == 'ucpeapilogins_' ){
+					location.assign("/ucpe/importApiLogins?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,17) == 'ucpenminterfaces_' ){
+					location.assign("/ucpe/importNmInterfaces?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpephsservers_' ){
+					location.assign("/ucpe/importPhsServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpencsservers_' ){
+					location.assign("/ucpe/importNcsServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,15) == 'ucpevnfcatalog_' ){
+					location.assign("/ucpe/importVnfCatalog?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,16) == 'ucpemcapservers_' ){
+					location.assign("/ucpe/importMcapServers?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,23) == 'ucpechainingtopologies_' ){
+					location.assign("/ucpe/importChainTopo?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				}else if ( filename.substring(0,16) == 'ucpevnfportinfo_' ){
+					location.assign("/ucpe/importVnfPortInfo?id=" + reference_id + "&filename=" + filename + "&status=" + status);
+				} else {
+					bootbox.alert('Invalid Filename: ' + filename);
+					return;
+				}
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+function deleteReferenceData(reference_id,filename)
+{
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete uploaded file [" + filename + "]? (This action will not effect the database.)",
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign("/ucpe/deleteReferenceData?id=" + reference_id + "&filename=" + filename); 
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/serviceManagerCredentials.ejs b/admportal/views/ucpe/serviceManagerCredentials.ejs
new file mode 100644
index 0000000..9e156f2
--- /dev/null
+++ b/admportal/views/ucpe/serviceManagerCredentials.ejs
@@ -0,0 +1,171 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#service_manager_credentials').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>Service Manager Credentials</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+		if (result.code.length > 0) { 
+			if ( result.code == 'success' ) { %>
+				<div class='alert alert-success' role='alert'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } else { %> 
+				<div class='alert alert-danger' role='danger'>
+				<%
+				for ( x in result.msg ){ %>
+					<div><%= result.msg[x] %></div>
+				<% } %>
+				</div>
+			<% } %>
+		<% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	 <% if(priv == 'A'){ %>
+        <div class="actions" style="padding:15px 0px;">
+            <button class="btn btn-primary" data-toggle="modal" data-target="#add_service_manager_credentials">
+            Add Service Manager Credentials
+            </button>
+            </div>
+    <% } %>
+
+	<table id="service_manager_credentials" class="table table-hover table-condensed">
+      <thead>
+        <tr>
+          <th>Service Manager Username</th>
+          <th>Service Manager Password</th>
+		   <% if(priv == 'A'){ %>
+          <th>Action</th>
+          <% } %>
+        </tr>
+      </thead>
+      <tbody>
+      <% rows.forEach( function(row) { %> 
+        <tr>
+            <td><%= row.service_manager_username %></td>
+            <td>*****</td>
+			<% if(priv == 'A') { %>
+            <td>
+				<button type="button" class="btn btn-default btn-xs"
+                onclick="updateServiceManagerCredentials('<%=row.service_manager_username %>','<%= row.service_manager_password %>');">Update</button>
+				<button type="button" class="btn btn-default btn-xs"
+				onclick="deleteServiceManagerCredentials('<%= row.service_manager_username %>', '<%= row.service_manager_password %>');">Delete</button>
+            </td>
+            <% } %>
+
+        </tr>
+    <% }); %>
+      </tbody>
+    </table>
+
+</div>
+
+<% include ../partials/service_manager_credentials %>
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+<script type="text/javascript">
+function submitServiceManagerCredentials(form)
+{
+    var errorMsg='';
+	var service_manager_username = '';
+	var service_manager_password = '';
+	var confirm_service_manager_password = '';
+
+    if ( form.name == 'addForm' )
+    {
+		service_manager_username = form.nf_service_manager_username;
+		service_manager_password = form.nf_service_manager_password;
+		confirm_service_manager_password = form.nf_confirm_service_manager_password;
+
+		if ( service_manager_password.value != confirm_service_manager_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    else
+    {
+		service_manager_username = form.uf_service_manager_username;
+		service_manager_password = form.uf_service_manager_password;
+		confirm_service_manager_password = form.uf_confirm_service_manager_password;
+
+		if ( service_manager_password.value != confirm_service_manager_password.value )
+		{
+			bootbox.alert('Passwords do not match.');
+			return;
+		}
+    }
+    form.submit();
+}
+
+function updateServiceManagerCredentials(service_manager_username,service_manager_password) {
+
+    document.getElementById('uf_service_manager_username').value=service_manager_username;
+    document.getElementById('uf_service_manager_password').value=service_manager_password;
+
+    $('#update_service_manager_credentials').modal('show');
+}
+
+function deleteServiceManagerCredentials(service_manager_username, service_manager_password) {
+
+	var url_string = encodeURI("/ucpe/deleteServiceManagerCredentials?service_manager_username=" + service_manager_username 
+					+ "&service_manager_password=" + service_manager_password);
+
+
+    bootbox.confirm({
+        message: "Are you sure you want to delete Service Manager Credentials? " + service_manager_username,
+        callback: function(result) {
+            if ( result )
+            {
+				location.assign(url_string);
+            }
+            return;
+        },
+        buttons: {
+            cancel: {
+                label: "Cancel"
+            },
+            confirm: {
+                label: "Yes"
+            }
+        }
+    });
+}
+
+</script>
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/servicePort.ejs b/admportal/views/ucpe/servicePort.ejs
new file mode 100644
index 0000000..8053713
--- /dev/null
+++ b/admportal/views/ucpe/servicePort.ejs
@@ -0,0 +1,88 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#service_port').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE Service Port</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+	<table id="service_port" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>PHYSICAL_PORT_NAME</th>
+		  <th>PHYSICAL_SPEED</th>
+		  <th>PHYSICAL_SPEED_UNITS</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.physical_port_name %></td>
+            <td><%= row.physical_speed %></td>
+            <td><%= row.physical_speed_units %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfLogins.ejs b/admportal/views/ucpe/vnfLogins.ejs
new file mode 100644
index 0000000..f5e8873
--- /dev/null
+++ b/admportal/views/ucpe/vnfLogins.ejs
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_logins').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Logins</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_logins" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*CUSTOMER_NAME</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>HASHED_PASSWORD</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.customer_name %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.hashed_password %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfMapDevice.ejs b/admportal/views/ucpe/vnfMapDevice.ejs
new file mode 100644
index 0000000..fbfa2ba
--- /dev/null
+++ b/admportal/views/ucpe/vnfMapDevice.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_map_to_device').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Map to Device</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_map_to_device" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*MAPPED_SERVICE_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.mapped_service_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfModelFeatures.ejs b/admportal/views/ucpe/vnfModelFeatures.ejs
new file mode 100644
index 0000000..4015179
--- /dev/null
+++ b/admportal/views/ucpe/vnfModelFeatures.ejs
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_model_features').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Model Features</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_model_features" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>*VNF_FEATURE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.vnf_feature %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfModelSoftware.ejs b/admportal/views/ucpe/vnfModelSoftware.ejs
new file mode 100644
index 0000000..f82b5b8
--- /dev/null
+++ b/admportal/views/ucpe/vnfModelSoftware.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_model_software').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Model Software</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_model_software" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>*SOFTWARE_VERSION</th>
+		  <th>SOFTWARE_VERSION_STATE</th>
+		  <th>SOFTWARE_FILENAME</th>
+		  <th>SOFTWARE_FILETYPE</th>
+		  <th>FILE_MD5_VALUE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.software_version %></td>
+            <td><%= row.software_version_state %></td>
+            <td><%= row.software_filename %></td>
+            <td><%= row.software_filetype %></td>
+            <td><%= row.file_md5_value %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfModels.ejs b/admportal/views/ucpe/vnfModels.ejs
new file mode 100644
index 0000000..df71306
--- /dev/null
+++ b/admportal/views/ucpe/vnfModels.ejs
@@ -0,0 +1,122 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_models').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Models</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_models" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*ATT PART NUMBER</th>
+		  <th>VNF_TYPE</th>
+		  <th>VENDOR_NAME</th>
+		  <th>VENDOR_PART_NUMBER</th>
+		  <th>VENDOR_MODEL</th>
+		  <th>VCPU_DEFAULT</th>
+		  <th>VCPU_MIN</th>
+		  <th>VCPU_MAX</th>
+		  <th>VMEMORY_DEFAULT</th>
+		  <th>VMEMORY_UNITS</th>
+		  <th>VMEMORY_MIN</th>
+		  <th>VMEMORY_MAX</th>
+		  <th>VDISK_DEFAULT</th>
+		  <th>VDISK_UNITS</th>
+		  <th>VDISK_MIN</th>
+		  <th>VDISK_MAX</th>
+		  <th>SPEED_UNITS</th>
+		  <th>SPEED</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.att_part_number %></td>
+            <td><%= row.vnf_type %></td>
+            <td><%= row.vendor_name %></td>
+            <td><%= row.vendor_part_number %></td>
+            <td><%= row.vendor_model %></td>
+            <td><%= row.vcpu_default %></td>
+            <td><%= row.vcpu_min %></td>
+            <td><%= row.vcpu_max %></td>
+            <td><%= row.vmemory_default %></td>
+            <td><%= row.vmemory_units %></td>
+            <td><%= row.vmemory_min %></td>
+            <td><%= row.vmemory_max %></td>
+            <td><%= row.vdisk_default %></td>
+            <td><%= row.vdisk_units %></td>
+            <td><%= row.vdisk_min %></td>
+            <td><%= row.vdisk_max %></td>
+            <td><%= row.speed_units %></td>
+            <td><%= row.speed %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfNmInterfaces.ejs b/admportal/views/ucpe/vnfNmInterfaces.ejs
new file mode 100644
index 0000000..3430f6b
--- /dev/null
+++ b/admportal/views/ucpe/vnfNmInterfaces.ejs
@@ -0,0 +1,98 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_nm_interfaces').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF NM Interfaces</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_nm_interfaces" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*DEVICE_VENDOR_NAME</th>
+		  <th>*DEVICE_MODEL</th>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>NM_LAN_INTERFACE</th>
+		  <th>NM_LOOPBACK_INTERFACE</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.device_vendor_name %></td>
+            <td><%= row.device_model %></td>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.nm_lan_interface %></td>
+            <td><%= row.nm_loopback_interface %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+
diff --git a/admportal/views/ucpe/vnfPorts.ejs b/admportal/views/ucpe/vnfPorts.ejs
new file mode 100644
index 0000000..834eada
--- /dev/null
+++ b/admportal/views/ucpe/vnfPorts.ejs
@@ -0,0 +1,94 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+  <meta charset="UTF-8" />
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <% include ../partials/head %>
+  <% include ../partials/header %>
+  <script type="text/javascript" src="/javascripts/admportal.js" async></script>
+  <title>SDN-C AdminPortal</title>
+<script class="init">
+    $(document).ready(function() {
+    $('#vnf_ports').DataTable( {
+        "order": [[ 0, "asc" ]]
+    } );
+} );
+</script>
+
+</head>
+<body>
+
+<div class="well well-sm">
+<h3>uCPE VNF Ports</h3>
+</div>
+
+<% if ( typeof result != 'undefined' ) {
+        if (result.code.length > 0) {
+            if ( result.code == 'success' ) { %>
+                <div class='alert alert-success' role='alert'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } else { %>
+                <div class='alert alert-danger' role='danger'>
+                <%
+                for ( x in result.msg ){ %>
+                    <div><%= result.msg[x] %></div>
+                <% } %>
+                </div>
+            <% } %>
+        <% } %>
+<% } %>
+
+<% if( typeof privilege != 'undefined'){
+    var priv = privilege.privilege;
+} else {
+    var priv = 'A';
+} %>
+
+
+<div class="container-fluid">
+
+<!--
+	 <% if (priv == 'A'){ %>
+    <div class="actions" style="padding:15px 0px;">
+    <button class="btn btn-primary" data-toggle="modal" data-target="#add_vnf_profile">
+      Add VNF Profile
+    </button>
+    </div>
+    <% } %>
+-->
+
+	<table id="vnf_ports" class="table table-hover table-condensed">
+    <thead>
+        <tr>
+		  <th>*VNF_VENDOR_NAME</th>
+		  <th>*VNF_MODEL</th>
+		  <th>*SERVICE_PORT_NAME</th>
+		  <th>PHYSICAL_PORT_NAME</th>
+        </tr>
+    </thead>
+	<tbody>
+    <% rows.forEach( function(row) { %>
+        <tr>
+            <td><%= row.vnf_vendor_name %></td>
+            <td><%= row.vnf_model %></td>
+            <td><%= row.service_port_name %></td>
+            <td><%= row.physical_port_name %></td>
+        </tr>
+    <% }); %>
+    </tbody>
+    </table>
+
+</div>
+
+<footer>
+    <% include ../partials/footer %>
+</footer>
+
+
+</body>
+</html>
+