diff --git a/elog-errors.hpp b/elog-errors.hpp
deleted file mode 100644
index a2ad7c7..0000000
--- a/elog-errors.hpp
+++ /dev/null
@@ -1,315 +0,0 @@
-// This file was autogenerated.  Do not edit!
-// See elog-gen.py for more details
-#pragma once
-
-#include <phosphor-logging/elog.hpp>
-#include <phosphor-logging/log.hpp>
-#include <sdbusplus/exception.hpp>
-
-#include <string>
-#include <tuple>
-#include <type_traits>
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Fru
-{
-namespace Monitor
-{
-namespace Error
-{
-struct InventoryPathError;
-} // namespace Error
-} // namespace Monitor
-} // namespace Fru
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace Error
-{
-struct ObjectNotFoundError;
-} // namespace Error
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace sdbusplus
-{
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace Error
-{
-struct MethodError;
-} // namespace Error
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-} // namespace sdbusplus
-
-namespace phosphor
-{
-
-namespace logging
-{
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Fru
-{
-namespace Monitor
-{
-namespace _InventoryPathError
-{
-
-struct PATH
-{
-    static constexpr auto str = "PATH=%s";
-    static constexpr auto str_short = "PATH";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-
-} // namespace _InventoryPathError
-
-struct InventoryPathError : public sdbusplus::exception_t
-{
-    static constexpr auto errName =
-        "xyz.openbmc_project.Led.Fru.Monitor.InventoryPathError";
-    static constexpr auto errDesc = "Invalid Inventory Path.";
-    static constexpr auto L = level::INFO;
-    using PATH = _InventoryPathError::PATH;
-    using metadata_types = std::tuple<PATH>;
-
-    const char* name() const noexcept
-    {
-        return errName;
-    }
-
-    const char* description() const noexcept
-    {
-        return errDesc;
-    }
-
-    const char* what() const noexcept
-    {
-        return errName;
-    }
-};
-
-} // namespace Monitor
-} // namespace Fru
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<sdbusplus::xyz::openbmc_project::Led::Fru::Monitor::
-                              Error::InventoryPathError>
-{
-    using type = xyz::openbmc_project::Led::Fru::Monitor::InventoryPathError;
-};
-
-} // namespace details
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace _MethodError
-{
-
-struct METHOD_NAME
-{
-    static constexpr auto str = "METHOD_NAME=%s";
-    static constexpr auto str_short = "METHOD_NAME";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr METHOD_NAME(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-struct PATH
-{
-    static constexpr auto str = "PATH=%s";
-    static constexpr auto str_short = "PATH";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-struct INTERFACE
-{
-    static constexpr auto str = "INTERFACE=%s";
-    static constexpr auto str_short = "INTERFACE";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr INTERFACE(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-
-} // namespace _MethodError
-
-struct MethodError : public sdbusplus::exception_t
-{
-    static constexpr auto errName =
-        "xyz.openbmc_project.Led.Mapper.MethodError";
-    static constexpr auto errDesc = "Failed to invoke ObjectMapper method";
-    static constexpr auto L = level::INFO;
-    using METHOD_NAME = _MethodError::METHOD_NAME;
-    using PATH = _MethodError::PATH;
-    using INTERFACE = _MethodError::INTERFACE;
-    using metadata_types = std::tuple<METHOD_NAME, PATH, INTERFACE>;
-
-    const char* name() const noexcept
-    {
-        return errName;
-    }
-
-    const char* description() const noexcept
-    {
-        return errDesc;
-    }
-
-    const char* what() const noexcept
-    {
-        return errName;
-    }
-};
-
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<
-    sdbusplus::xyz::openbmc_project::Led::Mapper::Error::MethodError>
-{
-    using type = xyz::openbmc_project::Led::Mapper::MethodError;
-};
-
-} // namespace details
-
-namespace xyz
-{
-namespace openbmc_project
-{
-namespace Led
-{
-namespace Mapper
-{
-namespace _ObjectNotFoundError
-{
-
-struct METHOD_NAME
-{
-    static constexpr auto str = "METHOD_NAME=%s";
-    static constexpr auto str_short = "METHOD_NAME";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr METHOD_NAME(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-struct PATH
-{
-    static constexpr auto str = "PATH=%s";
-    static constexpr auto str_short = "PATH";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr PATH(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-struct INTERFACE
-{
-    static constexpr auto str = "INTERFACE=%s";
-    static constexpr auto str_short = "INTERFACE";
-    using type = std::tuple<std::decay_t<decltype(str)>, const char*>;
-    explicit constexpr INTERFACE(const char* a) : _entry(entry(str, a)){};
-    type _entry;
-};
-
-} // namespace _ObjectNotFoundError
-
-struct ObjectNotFoundError : public sdbusplus::exception_t
-{
-    static constexpr auto errName =
-        "xyz.openbmc_project.Led.Mapper.ObjectNotFoundError";
-    static constexpr auto errDesc = "Failed to get response from the method.";
-    static constexpr auto L = level::INFO;
-    using METHOD_NAME = _ObjectNotFoundError::METHOD_NAME;
-    using PATH = _ObjectNotFoundError::PATH;
-    using INTERFACE = _ObjectNotFoundError::INTERFACE;
-    using metadata_types = std::tuple<METHOD_NAME, PATH, INTERFACE>;
-
-    const char* name() const noexcept
-    {
-        return errName;
-    }
-
-    const char* description() const noexcept
-    {
-        return errDesc;
-    }
-
-    const char* what() const noexcept
-    {
-        return errName;
-    }
-};
-
-} // namespace Mapper
-} // namespace Led
-} // namespace openbmc_project
-} // namespace xyz
-
-namespace details
-{
-
-template <>
-struct map_exception_type<
-    sdbusplus::xyz::openbmc_project::Led::Mapper::Error::ObjectNotFoundError>
-{
-    using type = xyz::openbmc_project::Led::Mapper::ObjectNotFoundError;
-};
-
-} // namespace details
-
-} // namespace logging
-
-} // namespace phosphor
diff --git a/fault-monitor/fru-fault-monitor.cpp b/fault-monitor/fru-fault-monitor.cpp
index fb4f891..a390cbe 100644
--- a/fault-monitor/fru-fault-monitor.cpp
+++ b/fault-monitor/fru-fault-monitor.cpp
@@ -1,12 +1,10 @@
 #include "fru-fault-monitor.hpp"
 
-#include "elog-errors.hpp"
-
+#include <phosphor-logging/elog-errors.hpp>
 #include <phosphor-logging/elog.hpp>
 #include <phosphor-logging/lg2.hpp>
 #include <sdbusplus/exception.hpp>
-#include <xyz/openbmc_project/Led/Fru/Monitor/error.hpp>
-#include <xyz/openbmc_project/Led/Mapper/error.hpp>
+#include <xyz/openbmc_project/Common/error.hpp>
 
 namespace phosphor
 {
@@ -43,12 +41,10 @@
 using Interfaces = std::vector<Interface>;
 using MapperResponseType = std::map<Path, std::map<Service, Interfaces>>;
 
-using MethodErr =
-    sdbusplus::xyz::openbmc_project::Led::Mapper::Error::MethodError;
-using ObjectNotFoundErr =
-    sdbusplus::xyz::openbmc_project::Led::Mapper::Error::ObjectNotFoundError;
-using InventoryPathErr = sdbusplus::xyz::openbmc_project::Led::Fru::Monitor::
-    Error::InventoryPathError;
+using ResourceNotFoundErr =
+    sdbusplus::xyz::openbmc_project::Common::Error::ResourceNotFound;
+using InvalidArgumentErr =
+    sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
 
 std::string getService(sdbusplus::bus::bus& bus, const std::string& path)
 {
@@ -67,17 +63,13 @@
         lg2::error(
             "Failed to parse getService mapper response, ERROR = {ERROR}",
             "ERROR", e);
-        using namespace xyz::openbmc_project::Led::Mapper;
-        elog<ObjectNotFoundErr>(ObjectNotFoundError::METHOD_NAME("GetObject"),
-                                ObjectNotFoundError::PATH(path.c_str()),
-                                ObjectNotFoundError::INTERFACE(OBJMGR_IFACE));
+        using namespace xyz::openbmc_project::Common;
+        elog<ResourceNotFoundErr>(ResourceNotFound::RESOURCE(path.c_str()));
     }
     if (mapperResponse.empty())
     {
-        using namespace xyz::openbmc_project::Led::Mapper;
-        elog<ObjectNotFoundErr>(ObjectNotFoundError::METHOD_NAME("GetObject"),
-                                ObjectNotFoundError::PATH(path.c_str()),
-                                ObjectNotFoundError::INTERFACE(OBJMGR_IFACE));
+        using namespace xyz::openbmc_project::Common;
+        elog<ResourceNotFoundErr>(ResourceNotFound::RESOURCE(path.c_str()));
         return {};
     }
 
@@ -93,22 +85,19 @@
         groups.pop_back();
         service = getService(bus, groups);
     }
-    catch (const MethodErr& e)
+    catch (const ResourceNotFoundErr& e)
     {
-        commit<MethodErr>();
-        return;
-    }
-    catch (const ObjectNotFoundErr& e)
-    {
-        commit<ObjectNotFoundErr>();
+        commit<ResourceNotFoundErr>();
         return;
     }
 
     auto pos = path.rfind("/");
     if (pos == std::string::npos)
     {
-        using namespace xyz::openbmc_project::Led::Fru::Monitor;
-        report<InventoryPathErr>(InventoryPathError::PATH(path.c_str()));
+        using namespace xyz::openbmc_project::Common;
+        report<InvalidArgumentErr>(
+            InvalidArgument::ARGUMENT_NAME("path"),
+            InvalidArgument::ARGUMENT_VALUE(path.c_str()));
         return;
     }
     auto unit = path.substr(pos + 1);
diff --git a/fault-monitor/meson.build b/fault-monitor/meson.build
index 254a218..39ec458 100644
--- a/fault-monitor/meson.build
+++ b/fault-monitor/meson.build
@@ -1,5 +1,4 @@
 fault_monitor_sources = [
-    generated_sources,
     'monitor-main.cpp',
 ]
 
@@ -17,7 +16,7 @@
 executable(
     'phosphor-fru-fault-monitor',
     fault_monitor_sources,
-    include_directories: ['.', '../', '../gen'],
+    include_directories: ['.', '../'],
     dependencies: deps,
     install: true,
     install_dir: get_option('bindir')
diff --git a/gen/README b/gen/README
deleted file mode 100644
index 71182b5..0000000
--- a/gen/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This directory contains generated meson.build files from sdbus++-gen-meson.
-Do not edit them by hand.
diff --git a/gen/meson.build b/gen/meson.build
deleted file mode 100644
index 56193c7..0000000
--- a/gen/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-sdbuspp_gen_meson_ver = run_command(
-    sdbuspp_gen_meson_prog,
-    '--version',
-).stdout().strip().split('\n')[0]
-
-if sdbuspp_gen_meson_ver != 'sdbus++-gen-meson version 3'
-    warning('Generated meson files from wrong version of sdbus++-gen-meson.')
-    warning(
-        'Expected "sdbus++-gen-meson version 3", got:',
-        sdbuspp_gen_meson_ver
-    )
-endif
-
diff --git a/gen/regenerate-meson b/gen/regenerate-meson
deleted file mode 100755
index a39ad64..0000000
--- a/gen/regenerate-meson
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-
-REPO_ROOT=$(git rev-parse --show-toplevel)
-
-# Find sdbus++-gen-meson
-#   1. Check $SDBUSPP_GEN_MESON
-#   2. Check in $PATH
-#   3. Check in subprojects/sdbusplus
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
-    SDBUSPP_GEN_MESON="$(which sdbus++-gen-meson 2> /dev/null)"
-fi
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
-    SDBUSPP_GEN_MESON="$REPO_ROOT/subprojects/sdbusplus/tools/sdbus++-gen-meson"
-fi
-if [ ! -x "$SDBUSPP_GEN_MESON" ]; then
-    echo "Cannot find sdbus++-gen-meson ($SDBUSPP_GEN_MESON)."
-    exit 1
-fi
-
-$SDBUSPP_GEN_MESON \
-    --command meson \
-    --directory "$REPO_ROOT/yaml" \
-    --output "$REPO_ROOT/gen"
diff --git a/gen/run-ci b/gen/run-ci
deleted file mode 100755
index d38927a..0000000
--- a/gen/run-ci
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/bin/bash
-cd "$(dirname "$0")" || exit
-./regenerate-meson || exit
-rc=0
-git --no-pager diff --exit-code -- . || rc=$?
-untracked="$(git ls-files --others --exclude-standard -- .)" || rc=$?
-if [ -n "$untracked" ]; then
-  echo "Untracked files:" >&2
-  echo "$untracked" >&2
-  rc=1
-fi
-if (( rc != 0 )); then
-  echo "Generated meson files differ from expected values" >&2
-  exit 1
-fi
diff --git a/gen/xyz/meson.build b/gen/xyz/meson.build
deleted file mode 100644
index e4991ad..0000000
--- a/gen/xyz/meson.build
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated file; do not modify.
-subdir('openbmc_project')
diff --git a/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build b/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build
deleted file mode 100644
index eb1ac73..0000000
--- a/gen/xyz/openbmc_project/Led/Fru/Monitor/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-generated_sources += custom_target(
-    'xyz/openbmc_project/Led/Fru/Monitor__cpp'.underscorify(),
-    input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Fru/Monitor.errors.yaml',  ],
-    output: [ 'error.cpp', 'error.hpp',  ],
-    command: [
-        sdbuspp_gen_meson_prog, '--command', 'cpp',
-        '--output', meson.current_build_dir(),
-        '--tool', sdbusplusplus_prog,
-        '--directory', meson.project_source_root(),
-        'xyz/openbmc_project/Led/Fru/Monitor',
-    ],
-)
-
diff --git a/gen/xyz/openbmc_project/Led/Fru/meson.build b/gen/xyz/openbmc_project/Led/Fru/meson.build
deleted file mode 100644
index 047a8fd..0000000
--- a/gen/xyz/openbmc_project/Led/Fru/meson.build
+++ /dev/null
@@ -1,16 +0,0 @@
-# Generated file; do not modify.
-subdir('Monitor')
-generated_others += custom_target(
-    'xyz/openbmc_project/Led/Fru/Monitor__markdown'.underscorify(),
-    input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Fru/Monitor.errors.yaml',  ],
-    output: [ 'Monitor.md' ],
-    command: [
-        sdbuspp_gen_meson_prog, '--command', 'markdown',
-        '--output', meson.current_build_dir(),
-        '--tool', sdbusplusplus_prog,
-        '--directory', meson.project_source_root(),
-        'xyz/openbmc_project/Led/Fru/Monitor',
-    ],
-    build_by_default: true,
-)
-
diff --git a/gen/xyz/openbmc_project/Led/Mapper/meson.build b/gen/xyz/openbmc_project/Led/Mapper/meson.build
deleted file mode 100644
index 483ee26..0000000
--- a/gen/xyz/openbmc_project/Led/Mapper/meson.build
+++ /dev/null
@@ -1,14 +0,0 @@
-# Generated file; do not modify.
-generated_sources += custom_target(
-    'xyz/openbmc_project/Led/Mapper__cpp'.underscorify(),
-    input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Mapper.errors.yaml',  ],
-    output: [ 'error.cpp', 'error.hpp',  ],
-    command: [
-        sdbuspp_gen_meson_prog, '--command', 'cpp',
-        '--output', meson.current_build_dir(),
-        '--tool', sdbusplusplus_prog,
-        '--directory', meson.project_source_root(),
-        'xyz/openbmc_project/Led/Mapper',
-    ],
-)
-
diff --git a/gen/xyz/openbmc_project/Led/meson.build b/gen/xyz/openbmc_project/Led/meson.build
deleted file mode 100644
index 305c3f5..0000000
--- a/gen/xyz/openbmc_project/Led/meson.build
+++ /dev/null
@@ -1,17 +0,0 @@
-# Generated file; do not modify.
-subdir('Fru')
-subdir('Mapper')
-generated_others += custom_target(
-    'xyz/openbmc_project/Led/Mapper__markdown'.underscorify(),
-    input: [ meson.project_source_root() / 'xyz/openbmc_project/Led/Mapper.errors.yaml',  ],
-    output: [ 'Mapper.md' ],
-    command: [
-        sdbuspp_gen_meson_prog, '--command', 'markdown',
-        '--output', meson.current_build_dir(),
-        '--tool', sdbusplusplus_prog,
-        '--directory', meson.project_source_root(),
-        'xyz/openbmc_project/Led/Mapper',
-    ],
-    build_by_default: true,
-)
-
diff --git a/gen/xyz/openbmc_project/meson.build b/gen/xyz/openbmc_project/meson.build
deleted file mode 100644
index 597580b..0000000
--- a/gen/xyz/openbmc_project/meson.build
+++ /dev/null
@@ -1,2 +0,0 @@
-# Generated file; do not modify.
-subdir('Led')
diff --git a/meson.build b/meson.build
index 492ab26..59c8a0a 100644
--- a/meson.build
+++ b/meson.build
@@ -25,18 +25,7 @@
 conf_data.set('USE_LAMP_TEST', get_option('use-lamp-test').enabled())
 conf_data.set('MONITOR_OPERATIONAL_STATUS', get_option('monitor-operational-status').enabled())
 
-sdbusplus_dep = dependency('sdbusplus', required: false)
-if sdbusplus_dep.found()
-    sdbusplusplus_prog = find_program('sdbus++')
-    sdbuspp_gen_meson_prog = find_program('sdbus++-gen-meson')
-else
-    sdbusplus_proj = subproject('sdbusplus', required: true)
-    sdbusplus_dep = sdbusplus_proj.get_variable('sdbusplus_dep')
-    sdbusplusplus_prog = sdbusplus_proj.get_variable('sdbusplusplus_prog')
-    sdbuspp_gen_meson_prog = sdbusplus_proj.get_variable(
-        'sdbuspp_gen_meson_prog'
-    )
-endif
+sdbusplus_dep = dependency('sdbusplus')
 
 sdeventplus_dep = dependency(
     'sdeventplus',
@@ -93,42 +82,6 @@
     cereal_dep = cereal_proj.dependency('cereal')
 endif
 
-selected_subdirs = []
-selected_subdirs += 'xyz/openbmc_project'
-
-generated_root = meson.current_build_dir() / 'gen'
-generated_others = []
-generated_sources = []
-
-# Source the generated meson files.
-subdir('gen')
-foreach d : selected_subdirs
-  subdir('gen' / d)
-endforeach
-
-# Parse through the list from sdbus++-gendir and put into sets.
-generated_headers = []
-generated_cpp = []
-generated_others_files = []
-
-foreach g : generated_sources generated_others
-    foreach f : g.to_list()
-        rel_path = run_command(
-            realpath_prog,
-            '--relative-to', generated_root,
-            f.full_path(),
-        ).stdout().strip().split('\n')[-1]
-
-        if rel_path.endswith('.hpp')
-            generated_headers += rel_path
-        elif rel_path.endswith('.cpp')
-            generated_cpp += rel_path
-        else
-            generated_others_files += rel_path
-        endif
-    endforeach
-endforeach
-
 deps = [
     sdbusplus_dep,
     sdeventplus_dep,
@@ -180,8 +133,6 @@
 executable(
     'phosphor-ledmanager',
     sources,
-    generated_sources,
-    include_directories: include_directories('gen'),
     implicit_include_directories: true,
     dependencies: deps,
     install: true,
diff --git a/subprojects/sdbusplus.wrap b/subprojects/sdbusplus.wrap
index d470130..7b076d0 100644
--- a/subprojects/sdbusplus.wrap
+++ b/subprojects/sdbusplus.wrap
@@ -1,3 +1,6 @@
 [wrap-git]
 url = https://github.com/openbmc/sdbusplus.git
 revision = HEAD
+
+[provide]
+sdbusplus = sdbusplus_dep
diff --git a/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml b/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml
deleted file mode 100644
index e949513..0000000
--- a/xyz/openbmc_project/Led/Fru/Monitor.errors.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-#xyz.openbmc_project.Led.Fru.Monitor.InventoryPathError
-- name: InventoryPathError
-  description: Invalid Inventory Path.
diff --git a/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml b/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml
deleted file mode 100644
index 57e0fd5..0000000
--- a/xyz/openbmc_project/Led/Fru/Monitor.metadata.yaml
+++ /dev/null
@@ -1,4 +0,0 @@
-- name: InventoryPathError
-  meta:
-    - str: "PATH=%s"
-      type: string
diff --git a/xyz/openbmc_project/Led/Mapper.errors.yaml b/xyz/openbmc_project/Led/Mapper.errors.yaml
deleted file mode 100644
index c1cbd0f..0000000
--- a/xyz/openbmc_project/Led/Mapper.errors.yaml
+++ /dev/null
@@ -1,9 +0,0 @@
-#xyz.openbmc_project.Led.Mapper.MethodError
-- name: MethodError
-  description: Failed to invoke ObjectMapper method
-
-#xyz.openbmc_project.Led.Mapper.ObjectNotFoundError
-- name: ObjectNotFoundError
-  description: Failed to get response from the method.
-
-
diff --git a/xyz/openbmc_project/Led/Mapper.metadata.yaml b/xyz/openbmc_project/Led/Mapper.metadata.yaml
deleted file mode 100644
index 0eb5c7f..0000000
--- a/xyz/openbmc_project/Led/Mapper.metadata.yaml
+++ /dev/null
@@ -1,17 +0,0 @@
-- name: MethodError
-  meta:
-    - str: "METHOD_NAME=%s"
-      type: string
-    - str: "PATH=%s"
-      type: string
-    - str: "INTERFACE=%s"
-      type: string
-
-- name: ObjectNotFoundError
-  meta:
-    - str: "METHOD_NAME=%s"
-      type: string
-    - str: "PATH=%s"
-      type: string
-    - str: "INTERFACE=%s"
-      type: string
