diff --git a/.env b/.env
index 71820106e3157ce611c39048841ace44caf2fad8..81d5399b00615f309ced728eabae59d1b89415c7 100644
--- a/.env
+++ b/.env
@@ -1,4 +1,4 @@
 NODE_ENV=development
-SERVICE_BASE_URL=https://344e-206-84-239-127.ngrok-free.app
+SERVICE_BASE_URL=https://ecf8-206-84-239-127.ngrok-free.app
 SERVICE_PORT=5000
 LOG_LEVEL=debug
diff --git a/api/template/business.js b/api/template/business.js
index fce072c6b7948d15089b75e8bfcf814c71001fe0..fcebdae9d4ce5cd5830942b36524d0419f1976e5 100644
--- a/api/template/business.js
+++ b/api/template/business.js
@@ -2,41 +2,48 @@
 /* eslint-disable no-throw-literal */
 // const logger = require('utils/logger');
 const templateService = require('../template/service');
+const logger = require('../utils/logger'); 
 
-
-const updateAndMapWidget = async (page,widgetId,position, startTime, endTime) => {
+const updateAndMapWidget = async (page, widgetId, position, startTime, endTime,templateId) => {
   try {
-    const response = await templateService.updateAndMapWidget(page,widgetId,position, startTime, endTime);
-    return { status: '200', response }
+    logger.info(`Business Logic | updateAndMapWidget | Page: ${page}, Widget ID: ${widgetId}`);
+    const response = await templateService.updateAndMapWidget(page, widgetId, position, startTime, endTime,templateId);
+    
+    logger.info(`Widget mapping updated | Widget ID: ${widgetId} | Page: ${page}`);
+    return { status: 200, data: response };
   } catch (error) {
-    throw error
+    logger.error(`Error in Business Logic updateAndMapWidget: ${error.message}`);
+    throw error;
   }
-
 };
 
-const createTemplate = async (name, desc,platform, widgets, hashId) => {
+
+const createTemplate = async (name, desc, platform, widgets, hashId) => {
   try {
-    const response = await templateService.createTemplate(name, desc,platform, widgets, hashId);
-    return { status: '200', response }
+    logger.info(`Business logic: creating template for platform=${platform}`);
+    
+    const response = await templateService.createTemplate(name, desc, platform, widgets, hashId);
+    
+    return { status: 201, response };
   } catch (error) {
-    throw error
+    logger.error(`Error in business logic: ${error.message}`, { error });
+    throw error;
   }
-
 };
 
-const getParticularTemplate = async (page,platform) => {
+
+const getParticularTemplate = async (page, platform) => {
   try {
-    const response = await templateService.getParticularTemplate(page,platform);
-    if (response.length == 0) {
-      return { status: 404, message: "Template not found" };
-    }
-    return { status: '200', response }
+    logger.info(`Business logic: Fetching template for page: ${page}, platform: ${platform}`);
+    const response = await templateService.getParticularTemplate(page, platform);
+    return { status: 200, response };
   } catch (error) {
-    throw error
+    logger.error("Error in getParticularTemplate Business Logic:", error.message);
+    throw error;
   }
-
 };
 
+
 module.exports = {
   updateAndMapWidget,
   createTemplate,
diff --git a/api/template/controller.js b/api/template/controller.js
index 120af1b52abb9c4793f3fbe086694fd417991020..e610b80ca7d49d853b0fd5e81084bf81c9f6e79d 100644
--- a/api/template/controller.js
+++ b/api/template/controller.js
@@ -1,42 +1,76 @@
 
 const templateBusiness = require('./business');
+const logger = require('../utils/logger');
 
 
 const updateAndMapWidget = async (req, res, next) => {
   try {
-    // logger.info(`Entering | updateAndMapWidget Controller | ${req.body}`);
-    const { page, widgetId } = req.params;
+    const { page, widgetId, templateId } = req.params;
     const { position, startTime, endTime } = req.body;
-    const response = await templateBusiness.updateAndMapWidget(page, widgetId, position, startTime, endTime);
-    // logger.info(`Entering | updateAndMapWidget Controller | ${widgetId}`);
+    console.log(templateId)
+    // Check for missing required fields and return 400 (Bad Request) if any are missing
+    if (!page || !widgetId || !position || !startTime || !endTime || !templateId) {
+      // Log the bad request
+     
+      logger.error(`Bad Request | Missing fields: ${JSON.stringify({ page, widgetId, position, startTime, endTime, templateId })}`);
+      return res.status(400).json({ error: 'Missing required fields' });
+    }
+
+    logger.info(`Entering | updateAndMapWidget Controller | ${widgetId} for page ${page}`);
+    const response = await templateBusiness.updateAndMapWidget(page, widgetId, position, startTime, endTime, templateId);
+
     return res.status(response.status).json({ data: response });
   } catch (error) {
-    throw error
+    logger.error(`Error in updateAndMapWidget Controller: ${error.message}`);
+    next(error); // Pass the error to the error handling middleware
   }
 };
 
+
 const createTemplate = async (req, res, next) => {
   try {
-    const { name, desc,platform, widgets, hashId } = req.body;
-    const response = await templateBusiness.createTemplate(name, desc,platform, widgets, hashId);
+    const { name, desc, platform, widgets, hashId } = req.body;
+
+    // Simple validation for required fields
+    if (!name || !platform || !widgets || widgets.length === 0) {
+      logger.error('Bad request: Missing required fields');
+      return res.status(400).json({ message: 'Bad request: Missing required fields' });
+    }
+
+    // Log the incoming request
+    logger.info(`Creating template: name=${name}, platform=${platform}`);
+
+    const response = await templateBusiness.createTemplate(name, desc, platform, widgets, hashId);
     return res.status(response.status).json({ data: response });
   } catch (error) {
-    throw error
+    logger.error(`Error creating template: ${error.message}`, { error });
+    next(error); // Pass the error to an error handler middleware
   }
 };
 
+
 const getParticularTemplate = async (req, res) => {
   try {
-    console.log("GET template details of a particular page");
     const { page } = req.params;
-    const {platform}=req.query
-    const response = await templateBusiness.getParticularTemplate(page,platform);
+    const { platform } = req.query;
+
+    // Basic validation
+    if (!page || !platform) {
+      logger.error("Bad Request: Missing required parameters.");
+      return res.status(400).json({ error: "Bad Request: Missing required parameters 'page' or 'platform'." });
+    }
+
+    logger.info(`GET request for template details of page: ${page}, platform: ${platform}`);
+    const response = await templateBusiness.getParticularTemplate(page, platform);
+
     return res.status(response.status).json({ data: response });
   } catch (error) {
-    throw error;
+    logger.error("Error in getParticularTemplate Controller:", error.message);
+    next(error);
   }
 };
 
+
 module.exports = {
   updateAndMapWidget,
   createTemplate,
diff --git a/api/template/routes.js b/api/template/routes.js
index 53e1013815357f755330fbeaec40ef9aeeb13f4b..d2ffffaaf525e13eba8954b116aaa5f3763d7c22 100644
--- a/api/template/routes.js
+++ b/api/template/routes.js
@@ -3,7 +3,7 @@ const templateRouter = require('express').Router();
 const {  updateAndMapWidget,createTemplate,getParticularTemplate } = require('./controller');
 
 
-templateRouter.put('/:page/widgets/:widgetId', updateAndMapWidget);
+templateRouter.put('/:page/widgets/:widgetId/:templateId', updateAndMapWidget);
 
 templateRouter.post('/createTemplate', createTemplate);
 
diff --git a/api/template/service.js b/api/template/service.js
index 19e4e406f6a0217eb2545f624eb27fe665611ebe..195e074f767a4f9eb442022058889ce6ab7e5a2b 100644
--- a/api/template/service.js
+++ b/api/template/service.js
@@ -2,49 +2,69 @@
 
 const Widget = require("../models/widget");
 const Template = require("../models/template");
+const logger = require('../utils/logger'); 
 
-const updateAndMapWidget = async (
-  page,
-  widgetId,
-  position,
-  startTime,
-  endTime
-) => {
+
+const updateAndMapWidget = async (page, widgetId, position, startTime, endTime, templateId) => {
   try {
-    const template = await Template.findOne({ name: page });
+    let template;
+
+    // Fetching template by templateId if it exists, else fallback to page name
+    if (templateId) {
+      logger.info(`Service | Fetching template by templateId: ${templateId}`);
+      template = await Template.findOne({ _id: templateId });
+    } else {
+      logger.info(`Service | Fetching template for page: ${page}`);
+      template = await Template.findOne({ name: page });
+    }
+
+    // If template is not found
     if (!template) {
-      return { status: 404, error: "template not found" };
+      logger.error(`Template not found | Page: ${page}, Template ID: ${templateId || 'N/A'}`);
+      return { status: 404, error: 'Template not found' };
     }
-    console.log(page, widgetId, position, startTime, endTime);
-    const widgetIndex = template.widgets.findIndex(
-      (w) => w.widgetId.toString() === widgetId
-    );
 
+    logger.info(`Mapping widget | Page: ${page}, Widget ID: ${widgetId}, Position: ${position}`);
+
+    // Find if the widget already exists in the template
+    const widgetIndex = template.widgets.findIndex(w => w.widgetId.toString() === widgetId);
+
+    // Update existing widget or add new one
     if (widgetIndex !== -1) {
+      logger.info(`Widget found | Updating existing widget | Widget ID: ${widgetId}`);
       template.widgets[widgetIndex] = {
         ...template.widgets[widgetIndex],
         position,
         startTime,
-        endTime,
+        endTime
       };
     } else {
+      logger.info(`Widget not found | Adding new widget | Widget ID: ${widgetId}`);
       template.widgets.push({
-        widgetId: widgetId,
+        widgetId,
         position,
         startTime,
-        endTime,
+        endTime
       });
     }
 
+    // Save the updated template
     await template.save();
-    return { status: 200, widgetId: widgetId, page: page };
+    logger.info(`Widget successfully saved | Widget ID: ${widgetId}, Page: ${page}, Template ID: ${templateId}`);
+
+    return { status: 200, widgetId, page, templateId: template._id };
+
   } catch (error) {
+    logger.error(`Error in Service updateAndMapWidget: ${error.message}`);
     throw error;
   }
 };
 
+
 const createTemplate = async (name, desc, platform, widgets, hashId) => {
   try {
+    logger.info('Service: Creating new template in the database');
+
     const newTemplate = new Template({
       name,
       desc,
@@ -55,69 +75,38 @@ const createTemplate = async (name, desc, platform, widgets, hashId) => {
 
     // Save the template to the database
     await newTemplate.save();
-    return {
-      status: 201,
-      message: "Template created successfully",
-      id: newTemplate._id,
-    };
+
+    logger.info(`Template created successfully with id=${newTemplate._id}`);
+    return { status: 201, message: 'Template created successfully', id: newTemplate._id };
   } catch (error) {
+    logger.error(`Error saving template to database: ${error.message}`, { error });
     throw error;
   }
 };
 
+
 const getParticularTemplate = async (page, platform) => {
   try {
-    let pipeline = [];
-    pipeline.push({ $match: { name: page, platform: platform } });
-
-    pipeline.push({ $unwind: { path: "$widgets" } });
-    pipeline.push({
-      $lookup: {
-        localField: "widgets.widgetId",
-        foreignField: "_id",
-        from: "widgets",
-        as: "widget",
-      },
-    });
-    pipeline.push({ $unwind: { path: "$widget" } });
-
-    const group = {
-      $group: {
-        _id: "$_id",
-        name: { $first: "$name" },
-        desc: { $first: "$desc" },
-        hashId: { $first: "$hashId" },
-        platform: { $first: "$platform" },
-
-        widgets: {
-          $addToSet: {
-            widgetId: "$widget._id",
-            title: "$widget.title",
-            widget: "$widget.widget",
-            enable: "$widget.enable",
-            sectionHeadingText: "$widget.sectionHeadingText",
-            apiUrl: "$widget.apiUrl",
-            buttonData: "$widget.buttonData",
-            list: "$widget.list",
-            position: "$widgets.position",
-            startTime: "$widgets.startTime",
-            endTime: "$widgets.endTime",
-          },
-        },
-      },
-    };
-    pipeline.push(group);
-    const template = await Template.aggregate(pipeline);
-
-    
+    logger.info(`Service: Querying database for page: ${page}, platform: ${platform}`);
+    const template = await Template.find({ name: page, platform }).populate('widgets.widgetId');
+
+    if (!template) {
+      logger.warn(`Template not found for page: ${page}, platform: ${platform}`);
+      return { status: 404, message: 'Template not found' };
+    }
+
+    logger.info(`Template found for page: ${page}, platform: ${platform}`);
     return template;
   } catch (error) {
+    logger.error("Error in getParticularTemplate Service:", error.message);
     throw error;
   }
 };
 
+
+
 module.exports = {
   updateAndMapWidget,
   createTemplate,
   getParticularTemplate,
-};
+};
\ No newline at end of file
diff --git a/api/utils/logger.js b/api/utils/logger.js
new file mode 100644
index 0000000000000000000000000000000000000000..7f4f6cde8083e976c53b27c95906a98d8956705f
--- /dev/null
+++ b/api/utils/logger.js
@@ -0,0 +1,15 @@
+const winston = require('winston');
+
+const logger = winston.createLogger({
+  level: 'info',
+  format: winston.format.combine(
+    winston.format.timestamp(),
+    winston.format.json()
+  ),
+  transports: [
+    new winston.transports.Console(), // Log to console
+    new winston.transports.File({ filename: 'app.log' }) // Log to file
+  ]
+});
+
+module.exports = logger;
diff --git a/api/widget/business.js b/api/widget/business.js
index 5e03a21b60e0cb3e7539cfba1f3310cf3ad7be7e..c9c5e9af6445bfe7449366f7f1365b1f864abf4e 100644
--- a/api/widget/business.js
+++ b/api/widget/business.js
@@ -2,30 +2,39 @@
 /* eslint-disable no-throw-literal */
 // const logger = require('utils/logger');
 const widgetService = require('./service');
+const logger = require('../utils/logger'); 
+
 
 
 
 const getAllWidget = async (page) => {
   try {
+    logger.info(`Business logic: Getting widgets for page ${page}`);
+    
     const response = await widgetService.getAllWidget(page);
-    return { status: '200', response }
+    return { status: 200, data: response };
   } catch (error) {
-    throw error
+    logger.error(`Error in business logic: ${error.message}`);
+    throw new Error('Failed to fetch widgets');
   }
-
 };
 
+
+
 const createWidget = async (data) => {
   try {
+    logger.info('Business Logic: Creating widget'); // Log business logic activity
     const response = await widgetService.createWidget(data);
-    return { status: '200', response }
+
+    return { status: 200, response };
   } catch (error) {
-    throw error
+    logger.error(`Error in business logic: ${error.message}`); // Log error
+    throw error; // Pass the error to the controller
   }
-
 };
 
 
+
 module.exports = {
   getAllWidget,
   createWidget,
diff --git a/api/widget/controller.js b/api/widget/controller.js
index ebeecb7f6c811974ca9bfe74322398f9d21c2632..d9b63b707899aa7b9b045df191fdb03c4678df90 100644
--- a/api/widget/controller.js
+++ b/api/widget/controller.js
@@ -1,30 +1,51 @@
-// const logger = require('utils/logger');
+const logger = require('../utils/logger'); 
 const widgetBusiness = require('./business');
-// const Joi = require('joi');
+
 
 const getAllWidget = async (req, res, next) => {
   try {
-    console.log("comign here")
     const { page } = req.params;
+    
+    // Log the page requested
+    logger.info(`Fetching widgets for page: ${page}`);
+    
+    if (!page) {
+      return res.status(400).json({ error: 'Page parameter is missing' });
+    }
+
     const response = await widgetBusiness.getAllWidget(page);
-    return res.status(response.status).json({ data: response });
+
+    return res.status(response.status).json({ data: response.data });
   } catch (error) {
-    throw error
+    logger.error(`Error in controller: ${error.message}`);
+    return res.status(500).json({ error: 'Internal server error' });
   }
 };
+
+
+
 const createWidget = async (req, res, next) => {
   try {
-    console.log("comign createWidget")
+    logger.info('createWidget API called'); // Log the API call
+
+    // Validate request body (basic validation)
+    if (!req.body || Object.keys(req.body).length === 0) {
+      logger.error('Bad Request: No data provided'); // Log bad request
+      return res.status(400).json({ message: 'Bad Request: No data provided' });
+    }
 
     const response = await widgetBusiness.createWidget(req.body);
+
     return res.status(response.status).json({ data: response });
   } catch (error) {
-    throw error
+    logger.error(`Error in createWidget controller: ${error.message}`); // Log error
+    return res.status(500).json({ message: 'Internal Server Error', error: error.message });
   }
 };
 
 
 
+
 module.exports = {
   getAllWidget,
   createWidget,
diff --git a/api/widget/service.js b/api/widget/service.js
index 705512b899812413ba854892fa4f60fe91ac8f50..579355ac389a535db3fc4e03bb2210d4b9bf9c2b 100644
--- a/api/widget/service.js
+++ b/api/widget/service.js
@@ -1,34 +1,52 @@
 // const logger = require('utils/logger');
 
 const Widget = require("../models/widget");
-const Template = require("../models/template")
+const Template = require("../models/template");
+const logger = require('../utils/logger'); 
 
 const getAllWidget = async (page) => {
   try {
-    const template = await Template.findOne({ name: page}).populate('widgets.widgetId');
+    logger.info(`Service: Fetching template for page ${page}`);
+    
+    const template = await Template.find({ name: page }).populate('widgets.widgetId');
+    
     if (!template) {
-      return res.status(404).json({ error: 'Template not found' });
+      logger.info(`Template not found for page: ${page}`);
+      throw new Error('Template not found');
     }
-    res.status(200).json(template);
+    
+    logger.info(`Template found for page: ${page}`);
+    return template;
   } catch (error) {
-    throw error
+    logger.error(`Error in service: ${error.message}`);
+    throw new Error('Failed to retrieve template');
   }
-
 };
 
+
 const createWidget = async (data) => {
   try {
-    console.log("in service")
+    logger.info('Service: Creating new widget'); // Log service activity
+    
+    // Validate required fields in 'data'
+    if (!data.name || !data.type) { // Example validation
+      logger.error('Bad Request: Missing required fields'); // Log missing fields
+      return { status: 400, message: 'Bad Request: Missing required fields' };
+    }
+
     const widget = new Widget(data);
     await widget.save();
+
+    logger.info('Widget created successfully'); // Log successful creation
     return { status: 201, id: widget._id, message: 'Widget created successfully' };
   } catch (error) {
-    throw error
+    logger.error(`Error in widget service: ${error.message}`); // Log error
+    throw error; // Pass error to business logic
   }
-
 };
 
 
+
 module.exports = {
   getAllWidget,
   createWidget,
diff --git a/app.log b/app.log
new file mode 100644
index 0000000000000000000000000000000000000000..ee5dfb5ec364aa4cd8a7280b7fa0a3725a0d158e
--- /dev/null
+++ b/app.log
@@ -0,0 +1,89 @@
+{"level":"error","message":"Bad Request: Missing required parameters.","timestamp":"2024-09-11T05:37:41.312Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d5ea0f10ce7f6c00e00a92\",\"position\":0,\"startTime\":\"2024-09-11T05:37:56.769Z\",\"endTime\":\"2024-09-11T05:37:56.769Z\"}","timestamp":"2024-09-11T05:38:40.990Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage Template\",\"widgetId\":\"66d5ea0f10ce7f6c00e00a92\",\"position\":0,\"startTime\":\"2024-09-11T05:37:56.769Z\",\"endTime\":\"2024-09-11T05:37:56.769Z\"}","timestamp":"2024-09-11T05:41:14.359Z"}
+{"level":"info","message":"Creating template: name=contact Template, platform=web","timestamp":"2024-09-11T05:42:18.870Z"}
+{"level":"info","message":"Business logic: creating template for platform=web","timestamp":"2024-09-11T05:42:18.871Z"}
+{"level":"info","message":"Service: Creating new template in the database","timestamp":"2024-09-11T05:42:18.871Z"}
+{"level":"info","message":"Template created successfully with id=66e12dba9ee1f8773f1c0b56","timestamp":"2024-09-11T05:42:18.892Z"}
+{"level":"error","message":"Bad Request: Missing required parameters.","timestamp":"2024-09-11T05:44:13.537Z"}
+{"level":"error","message":"Bad Request: Missing required parameters.","timestamp":"2024-09-11T05:46:32.907Z"}
+{"level":"error","message":"Error in getParticularTemplate Controller:","timestamp":"2024-09-11T05:47:18.904Z"}
+{"level":"error","message":"Error in getParticularTemplate Controller:","timestamp":"2024-09-11T05:47:59.459Z"}
+{"level":"error","message":"Error in getParticularTemplate Controller:","timestamp":"2024-09-11T06:13:53.056Z"}
+{"level":"error","message":"Error in getParticularTemplate Business Logic:","timestamp":"2024-09-11T06:14:48.457Z"}
+{"level":"error","message":"Error in getParticularTemplate Business Logic:","timestamp":"2024-09-11T06:15:33.677Z"}
+{"level":"error","message":"Error in getParticularTemplate Business Logic:","timestamp":"2024-09-11T06:18:06.709Z"}
+{"level":"error","message":"Error in getParticularTemplate Controller:","timestamp":"2024-09-11T06:18:06.710Z"}
+{"level":"error","message":"Error in getParticularTemplate Service:","timestamp":"2024-09-11T06:18:38.593Z"}
+{"level":"error","message":"Error in getParticularTemplate Business Logic:","timestamp":"2024-09-11T06:18:38.595Z"}
+{"level":"error","message":"Error in getParticularTemplate Controller:","timestamp":"2024-09-11T06:18:38.596Z"}
+{"level":"warn","message":"Template not found for page: contact Template, platform: mobile","timestamp":"2024-09-11T06:20:02.500Z"}
+{"level":"info","message":"GET request for template details of page: contact Template, platform: web","timestamp":"2024-09-11T06:30:07.939Z"}
+{"level":"info","message":"Business logic: Fetching template for page: contact Template, platform: web","timestamp":"2024-09-11T06:30:07.943Z"}
+{"level":"info","message":"Service: Querying database for page: contact Template, platform: web","timestamp":"2024-09-11T06:30:07.943Z"}
+{"level":"info","message":"Template found for page: contact Template, platform: web","timestamp":"2024-09-11T06:30:07.959Z"}
+{"level":"info","message":"Creating template: name=Homepage, platform=web","timestamp":"2024-09-11T06:39:33.768Z"}
+{"level":"info","message":"Business logic: creating template for platform=web","timestamp":"2024-09-11T06:39:33.768Z"}
+{"level":"info","message":"Service: Creating new template in the database","timestamp":"2024-09-11T06:39:33.768Z"}
+{"level":"info","message":"Template created successfully with id=66e13b259d3a6362f23888de","timestamp":"2024-09-11T06:39:33.787Z"}
+{"level":"info","message":"Creating template: name=Homepage, platform=web","timestamp":"2024-09-11T06:45:35.593Z"}
+{"level":"info","message":"Business logic: creating template for platform=web","timestamp":"2024-09-11T06:45:35.593Z"}
+{"level":"info","message":"Service: Creating new template in the database","timestamp":"2024-09-11T06:45:35.593Z"}
+{"error":{"code":11000,"errorResponse":{"code":11000,"errmsg":"E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"level":"error","message":"Error saving template to database: E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","timestamp":"2024-09-11T06:45:35.606Z"}
+{"error":{"code":11000,"errorResponse":{"code":11000,"errmsg":"E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"level":"error","message":"Error in business logic: E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","timestamp":"2024-09-11T06:45:35.607Z"}
+{"error":{"code":11000,"errorResponse":{"code":11000,"errmsg":"E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"index":0,"keyPattern":{"hashId":1},"keyValue":{"hashId":"homepage-template-001"}},"level":"error","message":"Error creating template: E11000 duplicate key error collection: widgetTemplate.templates index: hashId_1 dup key: { hashId: \"homepage-template-001\" }","timestamp":"2024-09-11T06:45:35.607Z"}
+{"level":"info","message":"Creating template: name=Homepage, platform=web","timestamp":"2024-09-11T06:45:49.070Z"}
+{"level":"info","message":"Business logic: creating template for platform=web","timestamp":"2024-09-11T06:45:49.070Z"}
+{"level":"info","message":"Service: Creating new template in the database","timestamp":"2024-09-11T06:45:49.071Z"}
+{"level":"info","message":"Template created successfully with id=66e13c9d9d3a6362f23888e4","timestamp":"2024-09-11T06:45:49.079Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: web","timestamp":"2024-09-11T06:46:41.301Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: web","timestamp":"2024-09-11T06:46:41.301Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: web","timestamp":"2024-09-11T06:46:41.301Z"}
+{"level":"info","message":"Template found for page: Homepage, platform: web","timestamp":"2024-09-11T06:46:41.312Z"}
+{"level":"error","message":"Error in controller: Cannot create property 'Symbol(level)' on string 'Fetching widgets for page: Homepage'","timestamp":"2024-09-11T06:49:07.162Z"}
+{"level":"info","message":"Fetching widgets for page: Homepage","timestamp":"2024-09-11T06:50:19.280Z"}
+{"level":"info","message":"Business logic: Getting widgets for page Homepage","timestamp":"2024-09-11T06:50:19.284Z"}
+{"level":"info","message":"Service: Fetching template for page Homepage","timestamp":"2024-09-11T06:50:19.285Z"}
+{"level":"info","message":"Template found for page: Homepage","timestamp":"2024-09-11T06:50:19.309Z"}
+{"level":"info","message":"Fetching widgets for page: Homepage","timestamp":"2024-09-11T06:50:55.322Z"}
+{"level":"info","message":"Business logic: Getting widgets for page Homepage","timestamp":"2024-09-11T06:50:55.326Z"}
+{"level":"info","message":"Service: Fetching template for page Homepage","timestamp":"2024-09-11T06:50:55.327Z"}
+{"level":"info","message":"Template found for page: Homepage","timestamp":"2024-09-11T06:50:55.351Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: mobile","timestamp":"2024-09-11T06:52:07.214Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: mobile","timestamp":"2024-09-11T06:52:07.215Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: mobile","timestamp":"2024-09-11T06:52:07.215Z"}
+{"level":"warn","message":"Template not found for page: Homepage, platform: mobile","timestamp":"2024-09-11T06:52:07.217Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: web","timestamp":"2024-09-11T06:52:29.725Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: web","timestamp":"2024-09-11T06:52:29.726Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: web","timestamp":"2024-09-11T06:52:29.727Z"}
+{"level":"info","message":"Template found for page: Homepage, platform: web","timestamp":"2024-09-11T06:52:29.742Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: web","timestamp":"2024-09-11T06:53:06.593Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: web","timestamp":"2024-09-11T06:53:06.594Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: web","timestamp":"2024-09-11T06:53:06.595Z"}
+{"level":"info","message":"Template found for page: Homepage, platform: web","timestamp":"2024-09-11T06:53:06.612Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: web","timestamp":"2024-09-11T06:55:19.137Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: web","timestamp":"2024-09-11T06:55:19.141Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: web","timestamp":"2024-09-11T06:55:19.142Z"}
+{"level":"info","message":"Template found for page: Homepage, platform: web","timestamp":"2024-09-11T06:55:19.161Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:10:35.165Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:12:33.688Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:12:58.159Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:13:50.490Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:14:23.986Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":0,\"startTime\":\"2024-09-11T07:09:55.792Z\",\"endTime\":\"2024-09-11T07:09:55.792Z\"}","timestamp":"2024-09-11T07:14:26.936Z"}
+{"level":"error","message":"Bad Request | Missing fields: {\"page\":\"Homepage\",\"widgetId\":\"66d6b41c32e719cb9f992523\",\"position\":1,\"startTime\":\"2024-09-11T07:15:47.595Z\",\"endTime\":\"2024-09-11T07:15:47.595Z\"}","timestamp":"2024-09-11T07:16:23.582Z"}
+{"level":"info","message":"Entering | updateAndMapWidget Controller | 66d6b41c32e719cb9f992523 for page Homepage","timestamp":"2024-09-11T07:23:18.639Z"}
+{"level":"info","message":"Business Logic | updateAndMapWidget | Page: Homepage, Widget ID: 66d6b41c32e719cb9f992523","timestamp":"2024-09-11T07:23:18.640Z"}
+{"level":"info","message":"Service | Fetching template by templateId: 66e13b259d3a6362f23888de","timestamp":"2024-09-11T07:23:18.640Z"}
+{"level":"info","message":"Mapping widget | Page: Homepage, Widget ID: 66d6b41c32e719cb9f992523, Position: 1","timestamp":"2024-09-11T07:23:18.651Z"}
+{"level":"info","message":"Widget not found | Adding new widget | Widget ID: 66d6b41c32e719cb9f992523","timestamp":"2024-09-11T07:23:18.652Z"}
+{"level":"info","message":"Widget successfully saved | Widget ID: 66d6b41c32e719cb9f992523, Page: Homepage, Template ID: 66e13b259d3a6362f23888de","timestamp":"2024-09-11T07:23:18.671Z"}
+{"level":"info","message":"Widget mapping updated | Widget ID: 66d6b41c32e719cb9f992523 | Page: Homepage","timestamp":"2024-09-11T07:23:18.671Z"}
+{"level":"info","message":"GET request for template details of page: Homepage, platform: web","timestamp":"2024-09-11T07:23:57.079Z"}
+{"level":"info","message":"Business logic: Fetching template for page: Homepage, platform: web","timestamp":"2024-09-11T07:23:57.079Z"}
+{"level":"info","message":"Service: Querying database for page: Homepage, platform: web","timestamp":"2024-09-11T07:23:57.079Z"}
+{"level":"info","message":"Template found for page: Homepage, platform: web","timestamp":"2024-09-11T07:23:57.093Z"}
+{"level":"info","message":"Fetching widgets for page: Homepage","timestamp":"2024-09-11T07:24:21.078Z"}
+{"level":"info","message":"Business logic: Getting widgets for page Homepage","timestamp":"2024-09-11T07:24:21.078Z"}
+{"level":"info","message":"Service: Fetching template for page Homepage","timestamp":"2024-09-11T07:24:21.079Z"}
+{"level":"info","message":"Template found for page: Homepage","timestamp":"2024-09-11T07:24:21.091Z"}
diff --git a/package.json b/package.json
index f7fe4bb21397f5617c54817df97f23ad8d0b0a51..e428491ca6f7276e3f10173df75a16fe319a7771 100644
--- a/package.json
+++ b/package.json
@@ -17,6 +17,7 @@
     "mongoose": "^8.6.0",
     "nodemon": "^3.1.4",
     "swagger-ui-express": "^5.0.1",
+    "winston": "^3.14.2",
     "yamljs": "^0.3.0"
   }
 }
diff --git a/swagger.yaml b/swagger.yaml
index e6ec0dd650f754052a03bb2c655ce3e22c4367ee..2c907dee7af70da8220fd410084b0cf278948c96 100644
--- a/swagger.yaml
+++ b/swagger.yaml
@@ -236,7 +236,7 @@ paths:
                   error:
                     type: string
 
-  /template/{page}/widgets/{widgetId}:
+  /template/{page}/widgets/{widgetId}/{templateId}:
     put:
       tags:
         - "Template"
@@ -254,6 +254,12 @@ paths:
           schema:
             type: string
           description: The widget ID that needs to be mapped.
+        - in: path
+          name: templateId
+          required: true
+          schema:
+            type: string
+          description: The template ID that needs to be mapped.
       requestBody:
         required: true
         content: