diff --git a/src/event_manager.cpp b/src/event_manager.cpp
index ef2098a..9102137 100644
--- a/src/event_manager.cpp
+++ b/src/event_manager.cpp
@@ -13,9 +13,12 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
+#include "config.h"
 #include "event.hpp"
 #include "event_manager.hpp"
-#include "config.h"
+
+#include <experimental/filesystem>
 
 namespace phosphor
 {
@@ -24,11 +27,46 @@
 
 void Manager::create(
     const std::string& eventName,
+    const std::string& eventMessage,
     const std::string& objectPath,
     const std::string& propertyName,
-    const std::string& propertyvalue)
+    const std::string& propertyValue)
 {
-    // TODO Implement it in later commit.
+    using namespace std::string_literals;
+    namespace fs = std::experimental::filesystem;
+
+    auto msg = eventMessage;
+    std::vector<std::string> additionalData;
+
+    auto propVal = propertyName + "=" + propertyValue;
+    auto path = "path="s + objectPath;
+
+    additionalData.push_back(std::move(path));
+    additionalData.push_back(std::move(propVal));
+
+    auto& eventQueue = eventMap[eventName];
+
+    // get the last event entry for this event
+    // to generate the id.
+    auto id = 0;
+    if (eventQueue.size() > 0)
+    {
+        fs::path path(eventQueue.back()->objectPath);
+        id = std::stoi(std::string(path.filename().c_str()));
+        id ++;
+    }
+
+    auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(
+                  std::chrono::system_clock::now().time_since_epoch()).count();
+
+    auto objPath =  std::string(OBJ_EVENT) + '/' + eventName + '/' +
+                        std::to_string(id);
+
+    eventQueue.emplace(std::make_unique<Entry>(
+                       objPath,
+                       ms, // Milliseconds since 1970
+                       std::move(msg),
+                       std::move(additionalData)));
 }
 
 Manager& getManager()
