diff --git a/host_state_manager.hpp b/host_state_manager.hpp
index a27cbf5..c3394f0 100644
--- a/host_state_manager.hpp
+++ b/host_state_manager.hpp
@@ -51,8 +51,9 @@
      *
      * @param[in] bus       - The Dbus bus object
      * @param[in] objPath   - The Dbus object path
+     * @param[in] id        - The Host id
      */
-    Host(sdbusplus::bus::bus& bus, const char* objPath) :
+    Host(sdbusplus::bus::bus& bus, const char* objPath, size_t id) :
         HostInherit(bus, objPath, true), bus(bus),
         systemdSignalJobRemoved(
             bus,
@@ -68,11 +69,14 @@
                 sdbusRule::interface("org.freedesktop.systemd1.Manager"),
             std::bind(std::mem_fn(&Host::sysStateChangeJobNew), this,
                       std::placeholders::_1)),
-        settings(bus)
+        settings(bus), id(id)
     {
         // Enable systemd signals
         subscribeToSystemdSignals();
 
+        // create map of target name base on host id
+        createSystemdTargetMaps();
+
         // Will throw exception on fail
         determineInitialState();
 
@@ -135,6 +139,11 @@
      **/
     void determineInitialState();
 
+    /**
+     * create systemd target instance names and mapping table
+     **/
+    void createSystemdTargetMaps();
+
     /** @brief Execute the transition request
      *
      * This function assumes the state has been validated and the host
@@ -267,6 +276,24 @@
      */
     bool deserialize(const fs::path& path);
 
+    /**
+     * @brief Get target name of a HostState
+     *
+     * @param[in] state      -  The state of the host
+     *
+     * @return string - systemd target name of the state
+     */
+    const std::string& getTarget(HostState state);
+
+    /**
+     * @brief Get target name of a TransitionRequest
+     *
+     * @param[in] tranReq      -  Transition requested
+     *
+     * @return string - systemd target name of Requested transition
+     */
+    const std::string& getTarget(Transition tranReq);
+
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus::bus& bus;
 
@@ -278,6 +305,15 @@
 
     // Settings objects of interest
     settings::Objects settings;
+
+    /** @brief Host id. **/
+    const size_t id = 0;
+
+    /** @brief HostState to systemd target mapping table. **/
+    std::map<HostState, std::string> stateTargetTable;
+
+    /** @brief Requested Transition to systemd target mapping table. **/
+    std::map<Transition, std::string> transitionTargetTable;
 };
 
 } // namespace manager
