diff --git a/redfish-core/lib/ethernet.hpp b/redfish-core/lib/ethernet.hpp
index 734cab2..d451904 100644
--- a/redfish-core/lib/ethernet.hpp
+++ b/redfish-core/lib/ethernet.hpp
@@ -91,7 +91,7 @@
     std::string defaultGateway;
     std::string ipv6DefaultGateway;
     std::string macAddress;
-    std::vector<std::uint32_t> vlanId;
+    std::optional<uint32_t> vlanId;
     std::vector<std::string> nameServers;
     std::vector<std::string> staticNameServers;
     std::vector<std::string> domainnames;
@@ -221,7 +221,7 @@
                                 std::get_if<uint32_t>(&propertyPair.second);
                             if (id != nullptr)
                             {
-                                ethData.vlanId.push_back(*id);
+                                ethData.vlanId = *id;
                             }
                         }
                     }
@@ -1809,9 +1809,9 @@
                                 parentIfaceId + "/VLANs/" + ifaceId;
 
     jsonResponse["VLANEnable"] = true;
-    if (!ethData.vlanId.empty())
+    if (ethData.vlanId)
     {
-        jsonResponse["VLANId"] = ethData.vlanId.back();
+        jsonResponse["VLANId"] = *ethData.vlanId;
     }
 }
 
@@ -2108,7 +2108,7 @@
                         const EthernetInterfaceData& ethData,
                         const boost::container::flat_set<IPv4AddressData>&,
                         const boost::container::flat_set<IPv6AddressData>&) {
-                        if (success && !ethData.vlanId.empty())
+                        if (success && ethData.vlanId)
                         {
                             parseInterfaceData(asyncResp->res.jsonValue,
                                                parentIfaceId, ifaceId, ethData);
@@ -2162,7 +2162,7 @@
                         const EthernetInterfaceData& ethData,
                         const boost::container::flat_set<IPv4AddressData>&,
                         const boost::container::flat_set<IPv6AddressData>&) {
-                        if (success && !ethData.vlanId.empty())
+                        if (success && ethData.vlanId)
                         {
                             auto callback =
                                 [asyncResp](
@@ -2238,7 +2238,7 @@
                         const EthernetInterfaceData& ethData,
                         const boost::container::flat_set<IPv4AddressData>&,
                         const boost::container::flat_set<IPv6AddressData>&) {
-                        if (success && !ethData.vlanId.empty())
+                        if (success && ethData.vlanId)
                         {
                             auto callback =
                                 [asyncResp](
