diff --git a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
index 54d1a59..1a27fd3 100644
--- a/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
+++ b/apps/roadm/app/src/main/java/org/onosproject/roadm/RoadmPortViewMessageHandler.java
@@ -25,10 +25,12 @@
 import org.onosproject.net.AnnotationKeys;
 import org.onosproject.net.ConnectPoint;
 import org.onosproject.net.DeviceId;
+import org.onosproject.net.Direction;
 import org.onosproject.net.ModulationScheme;
 import org.onosproject.net.OchSignal;
 import org.onosproject.net.Port;
 import org.onosproject.net.PortNumber;
+import org.onosproject.net.behaviour.PowerConfig;
 import org.onosproject.net.behaviour.protection.ProtectedTransportEndpointState;
 import org.onosproject.net.behaviour.protection.TransportEndpointState;
 import org.onosproject.net.device.DeviceService;
@@ -47,6 +49,7 @@
 import java.util.Comparator;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import java.util.Set;
 
 import static org.onosproject.net.Device.Type;
@@ -84,6 +87,7 @@
     private static final String GRID = "grid";
     private static final String POWER_RANGE = "powerRange";
     private static final String CURRENT_POWER = "currentPower";
+    private static final String CURRENT_INPUT_POWER = "currentInputPower";
     private static final String TARGET_POWER = "targetPower";
     private static final String MODULATION = "modulation";
     private static final String HAS_TARGET_POWER = "hasTargetPower";
@@ -91,7 +95,7 @@
 
     private static final String[] COLUMN_IDS = {
             ID, REVERSE_PORT, TYPE, NAME, ENABLED, MIN_FREQ, MAX_FREQ, GRID, POWER_RANGE,
-            CURRENT_POWER, SERVICE_STATE, TARGET_POWER, MODULATION, HAS_TARGET_POWER
+            CURRENT_POWER, CURRENT_INPUT_POWER, SERVICE_STATE, TARGET_POWER, MODULATION, HAS_TARGET_POWER
     };
 
     private RoadmService roadmService;
@@ -159,6 +163,7 @@
                     .cell(GRID, RoadmUtil.asGHz(channelSpacing))
                     .cell(POWER_RANGE, getPowerRange(deviceId, portNum))
                     .cell(CURRENT_POWER, getCurrentPower(deviceId, portNum))
+                    .cell(CURRENT_INPUT_POWER, getCurrentInputPower(deviceId, portNum))
                     .cell(SERVICE_STATE, getPortServiceState(deviceId, portNum))
                     .cell(MODULATION, getModulation(deviceId, portNum))
                     .cell(TARGET_POWER, getTargetPower(deviceId, portNum))
@@ -217,6 +222,17 @@
             return RoadmUtil.objectToString(currentPower, RoadmUtil.UNKNOWN);
         }
 
+        // Returns the current input power as a string, Unknown if no value can be found.
+        private String getCurrentInputPower(DeviceId deviceId, PortNumber portNumber) {
+            PowerConfig powerConfig = deviceService.getDevice(deviceId).as(PowerConfig.class);
+            Optional<Double> currentInputPower = powerConfig.currentInputPower(portNumber, Direction.ALL);
+            Double inputPowerVal = null;
+            if (currentInputPower.isPresent()) {
+                inputPowerVal = currentInputPower.orElse(Double.MIN_VALUE);
+            }
+            return RoadmUtil.objectToString(inputPowerVal, RoadmUtil.UNKNOWN);
+        }
+
         // Returns target power as a string, Unknown if target power is expected but
         // cannot be found, N/A if port does not have configurable target power
         private String getTargetPower(DeviceId deviceId, PortNumber portNumber) {
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
index 00e195a..6fb15ef 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.css
@@ -40,6 +40,11 @@
     text-transform: none;
 }
 
+#ov-roadm-port .table-header td {
+    text-transform: unset;
+    font-variant: none;
+}
+
 /* Editable Target Power field */
 #ov-roadm-port .editable span {
     width: 100%;
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
index db86b57..1e16d57 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.html
@@ -62,20 +62,21 @@
         <div class="table-header">
             <table>
                 <tr>
-                    <td colId="id">Port ID</td>
-                    <td colId="reversePort">Reverse Port</td>
-                    <td colId="name">Name</td>
-                    <td colId="type">Type</td>
-                    <td colId="enabled">Enabled</td>
-                    <td colId="minFreq">Min Freq (THz)</td>
-                    <td colId="maxFreq">Max Freq (THz)</td>
-                    <td colId="grid">Grid (GHz)</td>
-                    <td colId="modulation">Modulation</td>
-                    <td colId="powerRange">Power Range (dBm)</td>
-                    <td colId="currentPower">Current Power (dBm)</td>
-                    <td colId="targetPower">Target Power (dBm)</td>
-                    <td colId="hasTargetPower">Has Target Power</td>
-                    <td colId="serviceState">Service State</td>
+                    <td colId="id">PORT ID</td>
+                    <td colId="reversePort">REVERSE PORT</td>
+                    <td colId="name">NAME</td>
+                    <td colId="type">TYPE</td>
+                    <td colId="enabled">ENABLED</td>
+                    <td colId="minFreq">MIN FREQ (THz)</td>
+                    <td colId="maxFreq">MAX FREQ (THz)</td>
+                    <td colId="grid">GRID (GHz)</td>
+                    <td colId="modulation">MODULATION</td>
+                    <td colId="powerRange">POWER RANGE (dBm)</td>
+                    <td colId="currentPower">CURRENT POWER (dBm)</td>
+                    <td colId="currentInputPower">CURRENT INPUT POWER (dBm)</td>
+                    <td colId="targetPower">TARGET POWER (dBm)</td>
+                    <td colId="hasTargetPower">HAS TARGET POWER</td>
+                    <td colId="serviceState">SERVICE STATE</td>
                 </tr>
             </table>
         </div>
@@ -105,10 +106,11 @@
                         </form>
                     </td>
                     <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.powerRange}}</td>
-                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{port.currentPower | number: '1.2-2'}}</td>
+                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{convertNumber(port.currentPower) | number: '1.2-2'}}</td>
+                    <td [ngClass]="(isDelta() ? 'delta' : '')">{{convertNumber(port.currentInputPower) | number: '1.2-2'}}</td>
                     <td [ngClass]="(isDelta() ? 'delta' : '')">
                         <form [formGroup]="powerForm" (ngSubmit)="submitPower(devId, port.id)" *ngIf="port.type=='OCH'">
-                            <input type="number" step="any" style="width:50px" value="{{port.targetPower | number: '1.2-2'}}" formControlName="newPower" required>
+                            <input type="number" step="any" style="width:50px" value="{{convertNumber(port.targetPower) | number: '1.2-2'}}" formControlName="newPower" required>
                             <button type="submit">Submit</button>
                         </form>
                     </td>
diff --git a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
index 869c256..4a0d36e 100644
--- a/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
+++ b/apps/roadm/web/roadm-gui/projects/roadm-gui-lib/src/lib/port/port.component.ts
@@ -230,4 +230,8 @@
             this.log.debug('The power config operation is successful!');
         }
     }
+
+    convertNumber(str: string): number {
+        return Number(str);
+    }
 }
diff --git a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
index 5ef048c..927f756 100644
--- a/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
+++ b/web/gui2-fw-lib/projects/gui2-fw-lib/src/lib/widget/tablefilter.pipe.ts
@@ -45,10 +45,10 @@
             if (tableDataFilter.queryBy === '$') {
                 const t1 = Object.values(it);
                 const t2 = Object.values(it).filter(value => {
-                               return (<string>value).toLowerCase().includes(queryStr);
+                               return JSON.stringify(value).toLowerCase().includes(queryStr);
                            });
                 return Object.values(it).filter(value => {
-                    return (<string>value).toLowerCase().includes(queryStr);
+                    return JSON.stringify(value).toLowerCase().includes(queryStr);
                 }).length > 0;
             } else {
                 return it[tableDataFilter.queryBy].toLowerCase().includes(queryStr);
