diff --git a/const.hpp b/const.hpp
index 13d61af..3d631ee 100644
--- a/const.hpp
+++ b/const.hpp
@@ -44,10 +44,6 @@
 constexpr uint8_t KW_VAL_PAIR_START_TAG = 0x84;
 constexpr uint8_t RECORD_END_TAG = 0x78;
 
-static constexpr auto service = "xyz.openbmc_project.Inventory.Manager";
-static constexpr auto VPD_OBJ_PATH_PREFIX = "/xyz/openbmc_project/inventory";
-static constexpr auto COM_INTERFACE_PREFIX = "com.ibm.ipzvpd";
-
 namespace lengths
 {
 enum Lengths
diff --git a/meson.build b/meson.build
index 8dfed27..ce2830a 100644
--- a/meson.build
+++ b/meson.build
@@ -23,8 +23,11 @@
                        configuration :{
                        'INVENTORY_JSON': '"'+get_option('INVENTORY_JSON')+'"',
                        'INVENTORY_PATH': '"'+get_option('INVENTORY_PATH')+'"',
+		       'IPZ_INTERFACE': '"'+get_option('IPZ_INTERFACE')+'"',
 		       'INVENTORY_MANAGER_SERVICE': '"'+get_option('INVENTORY_MANAGER_SERVICE')+'"',
-		       'IPZ_INTERFACE': '"'+get_option('IPZ_INTERFACE')+'"'
+                       'BUSNAME' : '"' + get_option('BUSNAME') + '"',
+                       'OBJPATH' : '"' + get_option('OBJPATH') + '"',
+                       'IFACE' : '"' + get_option('IFACE') + '"',
                        }
   )
         ibm_read_vpd_SOURCES = ['ibm_vpd_app.cpp',
@@ -60,6 +63,10 @@
                                    ],
                                  install: true,
                                  )
+if get_option('vpd-manager').enabled()
+    subdir('vpd-manager')
+endif
+
 else
         FRUGEN = '$srcdir/extra-properties.py -e' + get_option('FRU_YAML')
         PROPGEN = '$srcdir/extra-properties.py -e' + get_option('PROP_YAML')
diff --git a/meson_options.txt b/meson_options.txt
index b3e2a34..c08c94a 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -6,4 +6,8 @@
 option('INVENTORY_JSON',type: 'string', value: '/usr/share/vpd/vpd_inventory.json',  description: 'JSON file that defines inventory blueprint')
 option('INVENTORY_PATH',type: 'string', value: '/xyz/openbmc_project/inventory', description: 'Prefix for inventory D-Bus objects')
 option('INVENTORY_MANAGER_SERVICE',type: 'string', value: 'xyz.openbmc_project.Inventory.Manager', description: 'Inventory manager service')
-option('IPZ_INTERFACE', type: 'string', value: 'com.ibm.ipzvpd', description: 'IPZ vpd interface')
+option('IPZ_INTERFACE', type: 'string', value: 'com.ibm.ipzvpd', description: 'IPZ VPD interface')
+option('BUSNAME', type : 'string', value : 'com.ibm.VPD.Manager',description : 'BUS NAME FOR THE SERVICE')
+option('OBJPATH', type : 'string', value : '/com/ibm/VPD/Manager', description : 'OBJECT PATH FOT THE SERVICE')
+option('IFACE', type : 'string', value : 'com.ibm.VPD.Manager', description : 'INTERFACE NAME')
+option('vpd-manager', type: 'feature', description: 'ENABLE VPD-MANAGERR APPLICATION')
diff --git a/vpd-manager/editor_impl.cpp b/vpd-manager/editor_impl.cpp
index c9e9847..70eb453 100644
--- a/vpd-manager/editor_impl.cpp
+++ b/vpd-manager/editor_impl.cpp
@@ -1,3 +1,5 @@
+#include "config.h"
+
 #include "editor_impl.hpp"
 
 #include "parser.hpp"
@@ -253,8 +255,9 @@
                               const std::variant<T>& data)
 {
     auto bus = sdbusplus::bus::new_default();
-    auto properties = bus.new_method_call(
-        service, object.c_str(), "org.freedesktop.DBus.Properties", "Set");
+    auto properties =
+        bus.new_method_call(INVENTORY_MANAGER_SERVICE, object.c_str(),
+                            "org.freedesktop.DBus.Properties", "Set");
     properties.append(interface);
     properties.append(property);
     properties.append(data);
@@ -284,9 +287,9 @@
                     std::string kwdData(thisRecord.kwdUpdatedData.begin(),
                                         thisRecord.kwdUpdatedData.end());
 
-                    makeDbusCall<std::string>(
-                        (VPD_OBJ_PATH_PREFIX + objectPath),
-                        commonInterface.key(), ciPropertyList.key(), kwdData);
+                    makeDbusCall<std::string>((INVENTORY_PATH + objectPath),
+                                              commonInterface.key(),
+                                              ciPropertyList.key(), kwdData);
                 }
             }
         }
@@ -313,8 +316,8 @@
                         std::string kwdData(thisRecord.kwdUpdatedData.begin(),
                                             thisRecord.kwdUpdatedData.end());
                         makeDbusCall<std::string>(
-                            (VPD_OBJ_PATH_PREFIX + objPath),
-                            extraInterface.key(), eiPropertyList.key(),
+                            (INVENTORY_PATH + objPath), extraInterface.key(),
+                            eiPropertyList.key(),
                             encodeKeyword(kwdData, eiPropertyList.value().value(
                                                        "encoding", "")));
                     }
@@ -344,9 +347,9 @@
         {
             // update com interface
             makeDbusCall<Binary>(
-                (VPD_OBJ_PATH_PREFIX +
+                (INVENTORY_PATH +
                  singleInventory["inventoryPath"].get<std::string>()),
-                (COM_INTERFACE_PREFIX + (std::string) "." + thisRecord.recName),
+                (IPZ_INTERFACE + (std::string) "." + thisRecord.recName),
                 thisRecord.recKWd, thisRecord.kwdUpdatedData);
 
             // process Common interface
diff --git a/vpd-manager/meson.build b/vpd-manager/meson.build
index da736d7..44b34aa 100644
--- a/vpd-manager/meson.build
+++ b/vpd-manager/meson.build
@@ -1,25 +1,6 @@
-project('vpd-manager',
-        'cpp',
-        'c',
-        default_options : ['cpp_std=c++17'],
-        version : '1.0')
-sdbusplus = dependency('sdbusplus')
-phosphor_logging = dependency('phosphor-logging')
 systemd = dependency('libsystemd', version : '>= 221')
 phosphor_dbus_interfaces = dependency('phosphor-dbus-interfaces')
 
-compiler = meson.get_compiler('cpp')
-compiler.has_header('nlohmann/json.hpp')
-
-configure_file( output: 'config.h',
-                        configuration: {
-                        'BUSNAME' : '"' + get_option('BUSNAME') + '"',
-                        'OBJPATH' : '"' + get_option('OBJPATH') + '"',
-                        'IFACE' : '"' + get_option('IFACE') + '"',
-                        'INVENTORY_JSON' : '"' + get_option('INVENTORY_JSON') + '"'
-                        }
-                )
-
 configuration_inc = include_directories('.', '../')
 
 vpd_manager_SOURCES =[
@@ -31,16 +12,20 @@
                         '../impl.cpp',
                         '../parser.cpp',
                         '../utils.cpp',
-                        '../vpdecc/vpdecc.c'
+                        '../vpdecc/vpdecc.c',
+                        '../vpdecc/vpdecc_support.c'
                         ]
 
+vpd_manager_dependencies =[sdbusplus,
+                           phosphor_logging,
+                           systemd,
+                           phosphor_dbus_interfaces,
+                          ]
+
 vpd_manager_exe = executable('vpd-manager',
-                                 vpd_manager_SOURCES,
-                                 include_directories : configuration_inc,
-                                 dependencies :[
-                                                 sdbusplus,
-                                                 phosphor_logging,
-                                                 systemd,
-                                                 phosphor_dbus_interfaces,
-                                             ],
-                              )
+                              vpd_manager_SOURCES,
+                              include_directories : configuration_inc,
+                              dependencies :[vpd_manager_dependencies,
+                                            ],
+                              install: true
+                            )
