diff --git a/src/models/form_config.js b/src/models/form_config.js
index 3b3c0396bc594b9f9c8fb04288872038f937c89e..11ca943531e0d94d90a8d99da5447a14e880f90c 100644
--- a/src/models/form_config.js
+++ b/src/models/form_config.js
@@ -3,31 +3,36 @@ module.exports = function(sequelize, DataTypes) {
       id: {
         type: DataTypes.UUID,
         allowNull: false,
-        primaryKey: true
       },
       channel: {
         type: DataTypes.STRING,
-        allowNull: false
+        allowNull: false,
+        primaryKey: true
       },
       objectype: {
         type: DataTypes.STRING,
-        allowNull: false
+        allowNull: false,
+        primaryKey: true
       },
       primarycategory: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        primaryKey: true
       },
       status: {
         type: DataTypes.ENUM("Active", "Inactive"),
         allowNull: false
       },
       context: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        primaryKey: true
       },
       context_type: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        primaryKey: true
       },
       operation: {
-        type: DataTypes.STRING
+        type: DataTypes.STRING,
+        primaryKey: true
       },
       data: {
         type: DataTypes.JSONB
diff --git a/src/service/formConfig.js b/src/service/formConfig.js
index e3d526ecded00ffbc526e997ea4f8783551b8ed2..cae6ae5a8ad6ad5955498c2dde132d0037a2be15 100644
--- a/src/service/formConfig.js
+++ b/src/service/formConfig.js
@@ -5,7 +5,7 @@ const messageUtils = require('./messageUtil');
 const Sequelize = require('sequelize');
 const moment = require('moment');
 const responseCode = messageUtils.RESPONSE_CODE;
-const programMessages = messageUtils.PROGRAM;
+const formMessages = messageUtils.FORM;
 const errorCodes = messageUtils.ERRORCODES;
 const model = require('../models');
 const loggerService = require('./loggerService');
@@ -23,12 +23,12 @@ function convertToLowerCase(obj, keys){
 async function getForm(req, response) {
   const logObject = {
     traceId : req.headers['x-request-id'] || '',
-    message : programMessages.FORM.READ.INFO
+    message : formMessages.READ.INFO
   }
   loggerService.entryLog(data, logObject);
   if (!req.body.request || !req.body.request.context || !req.body.request.context_type) {
-    rspObj.errCode = programMessages.FORM.READ.MISSING_CODE
-    rspObj.errMsg = programMessages.FORM.READ.MISSING_MESSAGE
+    rspObj.errCode = formMessages.READ.MISSING_CODE
+    rspObj.errMsg = formMessages.READ.MISSING_MESSAGE
     rspObj.responseCode = responseCode.CLIENT_ERROR;
     loggerError('', rspObj, errCode+errorCodes.CODE1);
     loggerService.exitLog({responseCode: rspObj.responseCode, errCode: errCode+errorCodes.CODE1}, logObject);
@@ -95,6 +95,98 @@ async function getForm(req, response) {
     })
 }
 
+async function createForm(req, response) {
+  const logObject = {
+    traceId : req.headers['x-request-id'] || '',
+    message : formMessages.CREATE.INFO
+  }
+  loggerService.entryLog(data, logObject);
+  if (!req.body.request || !req.body.request.context || !req.body.request.context_type || !req.body.request.data) {
+    rspObj.errCode = formMessages.CREATE.MISSING_CODE
+    rspObj.errMsg = formMessages.CREATE.MISSING_MESSAGE
+    rspObj.responseCode = responseCode.CLIENT_ERROR
+    loggerError('',rspObj,errCode+errorCodes.CODE1);
+    loggerService.exitLog({responseCode: rspObj.responseCode}, logObject);
+    return response.status(400).send(errorResponse(rspObj,errCode+errorCodes.CODE1))
+  }
+  const data = _.pick(req.body.request, ['context', 'context_type', 'objectype', 'channel', 'operation', 'component', 'primarycategory']);
+  convertToLowerCase(data, ['context', 'context_type', 'operation']);
+  const insertObj = req.body.request;
+  insertObj.id = uuid();
+  insertObj.channel = data.channel || '*';
+  insertObj.objectype = data.objectype || '*';
+  insertObj.primarycategory = data.primarycategory || '*';
+  insertObj.operation = data.operation || '*';
+  insertObj.component = data.component || 'portal';
+  insertObj.created_on = new Date();
+
+  model.formConfig.create().then(data => {
+    rspObj.result = {
+      'id': res.dataValues.id
+    }
+    rspObj.responseCode = 'OK';
+    res.status(200).send(successResponse(rspObj));
+  })
+  .catch(error => {
+    const errCode = formMessages.EXCEPTION_CODE+'_'+formMessages.CREATE.EXCEPTION_CODE
+    rspObj.errMsg = formMessages.CREATE.FAILED_MESSAGE
+    rspObj.responseCode = formMessages.CREATE.FAILED_CODE;
+    rspObj.result = {};
+    loggerService.exitLog({responseCode: rspObj.responseCode}, logObject);
+    loggerError('',rspObj,errCode+errorCodes.CODE3);
+    return response.status(500).send(errorResponse(rspObj,errCode+errorCodes.CODE3));
+  })
+}
+
+async function updateForm(req, response) {
+  const logObject = {
+    traceId : req.headers['x-request-id'] || '',
+    message : formMessages.READ.INFO
+  }
+  loggerService.entryLog(data, logObject);
+  if (!req.body.request || !req.body.request.data || !req.body.request.context || !req.body.request.context_type) {
+    rspObj.errCode = formMessages.UPDATE.MISSING_CODE
+    rspObj.errMsg = formMessages.UPDATE.MISSING_MESSAGE
+    rspObj.responseCode = responseCode.CLIENT_ERROR;
+    loggerError('', rspObj, errCode+errorCodes.CODE1);
+    loggerService.exitLog({responseCode: rspObj.responseCode, errCode: errCode+errorCodes.CODE1}, logObject);
+    return response.status(400).send(errorResponse(rspObj,errCode+errorCodes.CODE1))
+  }
+  const data = _.pick(req.body.request, ['context', 'context_type', 'objectype', 'channel', 'operation', 'component', 'primarycategory']);
+  convertToLowerCase(data, ['context', 'context_type', 'operation']);
+  const query = {
+    channel: data.channel || '*',
+    objectype: data.objectype || '*',
+    operation: data.operation || '*',
+    primarycategory: data.primarycategory || '*',
+    context: data.context,
+    context_type: data.context_type,
+    component: data.component,
+  }
+
+  const updateValue = {
+    data: JSON.stringify(data.data),
+    updatedOn: new Date(),
+  };
+
+  model.formConfig.update(query, updateValue).then(data => {
+    rspObj.result = {
+      'id': res.dataValues.id
+    }
+    rspObj.responseCode = 'OK';
+    res.status(200).send(successResponse(rspObj));
+  })
+  .catch(error => {
+    const errCode = formMessages.EXCEPTION_CODE+'_'+formMessages.CREATE.EXCEPTION_CODE
+    rspObj.errMsg = formMessages.CREATE.FAILED_MESSAGE
+    rspObj.responseCode = formMessages.CREATE.FAILED_CODE;
+    rspObj.result = {};
+    loggerService.exitLog({responseCode: rspObj.responseCode}, logObject);
+    loggerError('',rspObj,errCode+errorCodes.CODE3);
+    return response.status(500).send(errorResponse(rspObj,errCode+errorCodes.CODE3));
+  })
+}
+
 function loggerError(errmsg,data,errCode) {
   var errObj = {}
   errObj.eid = 'Error'
diff --git a/src/service/messageUtil.js b/src/service/messageUtil.js
index 11033e06d68322f61ad8d15bf459bd3b091b3336..fcc7126f253bb58d2f4846373da8ba42b5433e9f 100644
--- a/src/service/messageUtil.js
+++ b/src/service/messageUtil.js
@@ -647,6 +647,7 @@ exports.DATASET = {
 }
 
 exports.FORM = {
+  EXCEPTION_CODE: 'FORM',
   READ: {
     MISSING_CODE: 'ERR_GET_FORM_DATA',
     MISSING_MESSAGE: 'Required fields to get form are missing',
@@ -655,6 +656,7 @@ exports.FORM = {
     INFO: 'Get form config'
   },
   CREATE: {
+    EXCEPTION_CODE: 'FRMCRT',
     MISSING_CODE: 'ERR_CREATE_FORM_DATA',
     MISSING_MESSAGE: 'Required fields for creating form data are missing',
     FAILED_CODE: 'ERR_CREATE_FORM_DATA_FAILED',