diff --git a/assessment-api/assessment-service/conf/application.conf b/assessment-api/assessment-service/conf/application.conf
index 5e82dfa279fa89ccd4f98fed9fe787a7c816b7b8..cede5b3be57f1ffbdb71971e75087b69643ac866 100644
--- a/assessment-api/assessment-service/conf/application.conf
+++ b/assessment-api/assessment-service/conf/application.conf
@@ -340,7 +340,7 @@ schema.base_path="../../schemas/"
 
 # Cassandra Configuration
 cassandra.lp.connection="127.0.0.1:9042"
-content.keyspace = "content_store"
+content.keyspace = "dev_content_store"
 
 # Redis Configuration
 redis.host="localhost"
@@ -390,12 +390,12 @@ kafka {
   topic.send.enable : true
   topics.instruction : "sunbirddev.assessment.publish.request"
 }
-objectcategorydefinition.keyspace="category_store"
+objectcategorydefinition.keyspace="dev_category_store"
 question {
-  keyspace = "question_store"
+  keyspace = "dev_question_store"
   list.limit=20
 }
-questionset.keyspace="hierarchy_store"
+questionset.keyspace="dev_hierarchy_store"
 
 cassandra {
   lp {
diff --git a/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/actors/ObjectCategoryActor.scala b/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/actors/ObjectCategoryActor.scala
index 4b91c9df90d537bb5d3ee0839c55d8295c348fc0..25d24e51756dfe55884c39d73b7c1803034e7797 100644
--- a/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/actors/ObjectCategoryActor.scala
+++ b/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/actors/ObjectCategoryActor.scala
@@ -1,10 +1,11 @@
 package org.sunbird.actors
 
 import java.util
-
 import javax.inject.Inject
 import org.apache.commons.lang3.StringUtils
+import org.slf4j.{Logger, LoggerFactory}
 import org.sunbird.actor.core.BaseActor
+import org.sunbird.cache.impl.RedisCache
 import org.sunbird.common.Slug
 import org.sunbird.common.dto.{Request, Response, ResponseHandler}
 import org.sunbird.common.exception.ClientException
@@ -20,11 +21,13 @@ class ObjectCategoryActor @Inject()(implicit oec: OntologyEngineContext) extends
 
     implicit val ec: ExecutionContext = getContext().dispatcher
 
+    private val logger: Logger = LoggerFactory.getLogger(RedisCache.getClass.getCanonicalName)
     override def onReceive(request: Request): Future[Response] = {
         request.getOperation match {
             case Constants.CREATE_OBJECT_CATEGORY => create(request)
             case Constants.READ_OBJECT_CATEGORY => read(request)
             case Constants.UPDATE_OBJECT_CATEGORY => update(request)
+            case Constants.UPLOAD_DATA_OBJECT_CATEGORY => upload(request)
             case _ => ERROR(request.getOperation)
         }
     }
@@ -44,7 +47,7 @@ class ObjectCategoryActor @Inject()(implicit oec: OntologyEngineContext) extends
     private def read(request: Request): Future[Response] = {
         val fields: util.List[String] = JavaConverters.seqAsJavaListConverter(request.get(Constants.FIELDS).asInstanceOf[String].split(",").filter(field => StringUtils.isNotBlank(field) && !StringUtils.equalsIgnoreCase(field, "null"))).asJava
         request.getRequest.put(Constants.FIELDS, fields)
-        DataNode.read(request).map(node => {
+        DataNode.read(request).map(node => {Future
             val metadata: util.Map[String, AnyRef] = NodeUtil.serialize(node, fields, request.getContext.get(Constants.SCHEMA_NAME).asInstanceOf[String], request.getContext.get(Constants.VERSION).asInstanceOf[String])
             ResponseHandler.OK.put(Constants.OBJECT_CATEGORY, metadata)
         })
@@ -58,4 +61,26 @@ class ObjectCategoryActor @Inject()(implicit oec: OntologyEngineContext) extends
         })
     }
 
+    @throws[Exception]
+    private def upload(request: Request): Future[Response] = {
+//        logger.info("Start the upload method")
+//        competencyObj.setCompetencyCode("C1")
+//        competencyObj.setSubject("Midwifery & Gynecological Nursing")
+//        competencyObj.setCompetencyLabel("label")
+//        competencyObj.setCompetencyDescription("Description")
+//        competencyObj.setCompetencyLevel1Label("L1Label")
+//        competencyObj.setCompetencyLevel1Description("L1Desc")
+//        competencyObj.setCompetencyLevel2Label("L2Label")
+//        competencyObj.setCompetencyLevel2Description("L2Desc")
+//        competencyObj.setCompetencyLevel3Label("L3Label")
+//        competencyObj.setCompetencyLevel3Description("L3Desc")
+//        competencyObj.setCompetencyLevel4Label("L4Label")
+//        competencyObj.setCompetencyLevel4Description("L4Desc")
+//        competencyObj.setCompetencyLevel5Label("L5Label")
+//        competencyObj.setCompetencyLevel5Description("L5Desc")
+//        logger.info("After setting all competencies")
+//        competencyRepository.save(competencyObj)
+        Future.apply(ResponseHandler.OK.put(Constants.IDENTIFIER,"12345"))
+    }
+
 }
diff --git a/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/utils/Constants.scala b/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/utils/Constants.scala
index 29f8756553de5a9168bf8f5e3aa23ae28b1d238a..97effd4620760836b883fdbbb729b62790324251 100644
--- a/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/utils/Constants.scala
+++ b/taxonomy-api/taxonomy-actors/src/main/scala/org/sunbird/utils/Constants.scala
@@ -4,6 +4,7 @@ object Constants {
     val CREATE_OBJECT_CATEGORY: String = "createObjectCategory"
     val READ_OBJECT_CATEGORY: String = "readObjectCategory"
     val UPDATE_OBJECT_CATEGORY: String = "updateObjectCategory"
+    val UPLOAD_DATA_OBJECT_CATEGORY: String = "uploadObjectCategory"
     val IDENTIFIER: String = "identifier"
     val NAME: String = "name"
     val NODE_ID: String = "node_id"
diff --git a/taxonomy-api/taxonomy-service/app/controllers/v4/ObjectCategoryController.scala b/taxonomy-api/taxonomy-service/app/controllers/v4/ObjectCategoryController.scala
index 415f0c423766c7f223e1522bb77d079f917f39fb..5567ab812fdaf95e2e767be928e6cfbae75a9205 100644
--- a/taxonomy-api/taxonomy-service/app/controllers/v4/ObjectCategoryController.scala
+++ b/taxonomy-api/taxonomy-service/app/controllers/v4/ObjectCategoryController.scala
@@ -3,19 +3,53 @@ package controllers.v4
 import akka.actor.{ActorRef, ActorSystem}
 import com.google.inject.Singleton
 import controllers.BaseController
+import models.Competency
+import org.slf4j.{Logger, LoggerFactory}
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.data.jpa.repository.config.EnableJpaRepositories
+import org.springframework.jdbc.core.namedparam.{MapSqlParameterSource, NamedParameterJdbcTemplate, SqlParameterSource}
+import org.springframework.jdbc.support.{GeneratedKeyHolder, KeyHolder}
+import org.springframework.transaction.annotation.EnableTransactionManagement
+import org.sunbird.cache.impl.RedisCache
+
 import javax.inject.{Inject, Named}
 import org.sunbird.utils.Constants
 import play.api.mvc.ControllerComponents
+import repository.CompetencyRepositoryTrait
+import service.CompetencyService
 import utils.{ActorNames, ApiId}
 
+import java.lang
+import java.util.Optional
 import scala.collection.JavaConverters._
 import scala.concurrent.ExecutionContext
 
 @Singleton
-class ObjectCategoryController @Inject()(@Named(ActorNames.OBJECT_CATEGORY_ACTOR) objectCategoryActor: ActorRef, cc: ControllerComponents, actorSystem: ActorSystem)(implicit exec: ExecutionContext) extends BaseController(cc) {
+@EnableJpaRepositories
+@EnableTransactionManagement
+class ObjectCategoryController @Inject()(@Named(ActorNames.OBJECT_CATEGORY_ACTOR) objectCategoryActor: ActorRef, cc: ControllerComponents, actorSystem: ActorSystem, competencyObj: Competency)(implicit exec: ExecutionContext) extends BaseController(cc) {
+
+//    @Autowired
+//    private val competencyRepositoryLocal:CompetencyRepository = new ObjectCategoryController(objectCategoryActor, cc, actorSystem, competencyObj)
+
+    private val logger: Logger = LoggerFactory.getLogger(RedisCache.getClass.getCanonicalName)
+
+    //final val sql: String = "insert into employee(employeeId, employeeName , employeeAddress,employeeEmail) values(:employeeId,:employeeName,:employeeEmail,:employeeAddress)";
+    final val sql: String = "INSERT INTO taxonomy.competency (competency_code, subject, competency_label, competency_description, competency_level_1_label, competency_level_1_description, competency_level_2_label, competency_level_2_description, competency_level_3_label, competency_level_3_description, competency_level_4_label, competency_level_4_description, competency_level_5_label, competency_level_5_description) VALUES('', '', '', '', '', '', '', '', '', '', '', '', '', '');"
 
     val objectType = "ObjectCategory"
 
+    @Inject
+    var namedParameterJdbcTemplate: NamedParameterJdbcTemplate = null
+    def this(objectCategoryActor: ActorRef, cc: ControllerComponents, actorSystem: ActorSystem, competencyObj: Competency, namedParameterJdbcTemplate: NamedParameterJdbcTemplate)(implicit exec: ExecutionContext) {
+        this(objectCategoryActor,cc,actorSystem,competencyObj)
+        println("this namedParameterJdbcTemplate is "+this.namedParameterJdbcTemplate)
+        println("namedParameterJdbcTemplate is "+namedParameterJdbcTemplate)
+        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate
+        println("again this namedParameterJdbcTemplate is "+this.namedParameterJdbcTemplate)
+    }
+
+
     def create() = Action.async { implicit request =>
         val headers = commonHeaders()
         val body = requestBody()
@@ -46,4 +80,53 @@ class ObjectCategoryController @Inject()(@Named(ActorNames.OBJECT_CATEGORY_ACTOR
         categoryRequest.getContext.put(Constants.IDENTIFIER, identifier)
         getResult(ApiId.UPDATE_OBJECT_CATEGORY, objectCategoryActor, categoryRequest)
     }
+
+    def uploadCompetency() = Action.async { implicit request =>
+        val headers = commonHeaders()
+        val body = requestBody()
+        val category = body.getOrDefault(Constants.OBJECT_CATEGORY, new java.util.HashMap()).asInstanceOf[java.util.Map[String, Object]]
+        category.putAll(headers)
+        val categoryRequest = getRequest(category, headers, Constants.UPLOAD_DATA_OBJECT_CATEGORY)
+        setRequestContext(categoryRequest, Constants.OBJECT_CATEGORY_SCHEMA_VERSION, objectType, Constants.OBJECT_CATEGORY_SCHEMA_NAME)
+        logger.info("Start the upload method")
+        competencyObj.setCompetencyCode("C1")
+        competencyObj.setSubject("Midwifery & Gynecological Nursing")
+        competencyObj.setCompetencyLabel("label")
+        competencyObj.setCompetencyDescription("Description")
+        competencyObj.setCompetencyLevel1Label("L1Label")
+        competencyObj.setCompetencyLevel1Description("L1Desc")
+        competencyObj.setCompetencyLevel2Label("L2Label")
+        competencyObj.setCompetencyLevel2Description("L2Desc")
+        competencyObj.setCompetencyLevel3Label("L3Label")
+        competencyObj.setCompetencyLevel3Description("L3Desc")
+        competencyObj.setCompetencyLevel4Label("L4Label")
+        competencyObj.setCompetencyLevel4Description("L4Desc")
+        competencyObj.setCompetencyLevel5Label("L5Label")
+        competencyObj.setCompetencyLevel5Description("L5Desc")
+        logger.info("After setting all competencies")
+        //competencyRepositoryLocal.save(competencyObj)
+        //competencyService.save(competencyObj);
+        new ObjectCategoryController(objectCategoryActor, cc, actorSystem, competencyObj, namedParameterJdbcTemplate)
+        val holder : KeyHolder = new GeneratedKeyHolder();
+        val param : SqlParameterSource = new MapSqlParameterSource()
+          .addValue("competency_code", competencyObj.getCompetencyCode())
+          .addValue("subject", competencyObj.getSubject())
+          .addValue("competency_label", competencyObj.getCompetencyLabel())
+          .addValue("competency_description", competencyObj.getCompetencyDescription())
+          .addValue("competency_level_1_label", competencyObj.getCompetencyLevel1Label())
+          .addValue("competency_level_1_description", competencyObj.getCompetencyLevel1Description())
+          .addValue("competency_level_2_label", competencyObj.getCompetencyLevel2Label())
+          .addValue("competency_level_2_description", competencyObj.getCompetencyLevel2Description())
+          .addValue("competency_level_3_label", competencyObj.getCompetencyLevel3Label())
+          .addValue("competency_level_3_description", competencyObj.getCompetencyLevel3Description())
+          .addValue("competency_level_4_label", competencyObj.getCompetencyLevel4Label())
+          .addValue("competency_level_4_description", competencyObj.getCompetencyLevel4Description())
+          .addValue("competency_level_5_label", competencyObj.getCompetencyLevel5Label())
+          .addValue("competency_level_5_description", competencyObj.getCompetencyLevel5Description())
+        namedParameterJdbcTemplate.update(sql, param, holder);
+
+        //logger.info("Competency service "+competencyService.findAll())
+        getResult(ApiId.UPLOAD_DATA_OBJECT_CATEGORY, objectCategoryActor, categoryRequest)
+    }
+
 }
diff --git a/taxonomy-api/taxonomy-service/app/handlers/CompetencyExcelParser.scala b/taxonomy-api/taxonomy-service/app/handlers/CompetencyExcelParser.scala
new file mode 100644
index 0000000000000000000000000000000000000000..90836ea991ab2d595073a7ac767c57c152315dc9
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/handlers/CompetencyExcelParser.scala
@@ -0,0 +1,75 @@
+//package handlers
+//
+//import models.Competency
+//import org.apache.poi.xssf.usermodel.XSSFWorkbook
+//import org.slf4j.{Logger, LoggerFactory}
+//import org.springframework.beans.factory.annotation.Autowired
+//import org.springframework.data.jpa.repository.config.EnableJpaRepositories
+//import org.springframework.transaction.annotation.EnableTransactionManagement
+//import org.sunbird.cache.impl.RedisCache
+//import repository.CompetencyRepository
+//
+//import java.io.{File, FileInputStream}
+//import java.lang
+//import java.util.Optional
+//import javax.inject.{Inject, Named}
+//
+//@EnableTransactionManagement
+//@EnableJpaRepositories
+//class CompetencyExcelParser @Inject()(competencyObj : Competency) extends CompetencyRepository {
+//
+//  @Autowired
+//  private val competencyRepositoryLocal = new CompetencyExcelParser(competencyObj);
+//
+//  private val logger: Logger = LoggerFactory.getLogger(RedisCache.getClass.getCanonicalName)
+//  def getCompetency(file: File) = {
+//
+//    try {
+//      val workbook = new XSSFWorkbook(new FileInputStream(file))
+//      val sheet = workbook.getSheetAt(0)
+//      logger.info("Inside the get competency")
+//      (1 until sheet.getPhysicalNumberOfRows)
+//        .filter(rowNum => {
+//          val oRow = Option(sheet.getRow(rowNum))
+//          oRow match {
+//            case Some(_) => {
+//              val competencyCode = sheet.getRow(rowNum).getCell(0)
+//              val subject = sheet.getRow(rowNum).getCell(1)
+//              val competencyLabel = sheet.getRow(rowNum).getCell(2)
+//              val competencyDescription = sheet.getRow(rowNum).getCell(3)
+//              val competencyLevel1Label = sheet.getRow(rowNum).getCell(4)
+//              val competencyLevel1Description = sheet.getRow(rowNum).getCell(5)
+//              val competencyLevel2Label = sheet.getRow(rowNum).getCell(6)
+//              val competencyLevel2Description = sheet.getRow(rowNum).getCell(7)
+//              val competencyLevel3Label = sheet.getRow(rowNum).getCell(8)
+//              val competencyLevel3Description = sheet.getRow(rowNum).getCell(9)
+//              val competencyLevel4Label = sheet.getRow(rowNum).getCell(10)
+//              val competencyLevel4Description = sheet.getRow(rowNum).getCell(11)
+//              val competencyLevel5Label = sheet.getRow(rowNum).getCell(12)
+//              val competencyLevel5Description = sheet.getRow(rowNum).getCell(13)
+//              competencyObj.setCompetencyCode(competencyCode.toString)
+//              competencyObj.setSubject(subject.toString)
+//              competencyObj.setCompetencyLabel(competencyLabel.toString)
+//              competencyObj.setCompetencyDescription(competencyDescription.toString)
+//              competencyObj.setCompetencyLevel1Label(competencyLevel1Label.toString)
+//              competencyObj.setCompetencyLevel1Description(competencyLevel1Description.toString)
+//              competencyObj.setCompetencyLevel2Label(competencyLevel2Label.toString)
+//              competencyObj.setCompetencyLevel2Description(competencyLevel2Description.toString)
+//              competencyObj.setCompetencyLevel3Label(competencyLevel3Label.toString)
+//              competencyObj.setCompetencyLevel3Description(competencyLevel3Description.toString)
+//              competencyObj.setCompetencyLevel4Label(competencyLevel4Label.toString)
+//              competencyObj.setCompetencyLevel4Description(competencyLevel4Description.toString)
+//              competencyObj.setCompetencyLevel5Label(competencyLevel5Label.toString)
+//              competencyObj.setCompetencyLevel5Description(competencyLevel5Description.toString)
+//              competencyRepositoryLocal.save(competencyObj)
+//              boolean2Boolean(true)
+//            }
+//            case None => false
+//          }
+//        }).toList
+//    } catch {
+//      case e : Exception => throw new Exception("Invalid File")
+//    }
+//  }
+//
+//}
diff --git a/taxonomy-api/taxonomy-service/app/models/Competency.java b/taxonomy-api/taxonomy-service/app/models/Competency.java
new file mode 100644
index 0000000000000000000000000000000000000000..80d2970796ed62185d5a5b1368ad8c235a446eed
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/models/Competency.java
@@ -0,0 +1,138 @@
+package models;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+
+@Entity
+public class Competency {
+    @Id
+    @GeneratedValue(strategy= GenerationType.AUTO)
+    private String competencyCode;
+    private String subject;
+    private String competencyLabel;
+    private String competencyDescription;
+    private String competencyLevel1Label;
+    private String competencyLevel1Description;
+    private String competencyLevel2Label;
+    private String competencyLevel2Description;
+    private String competencyLevel3Label;
+    private String competencyLevel3Description;
+    private String competencyLevel4Label;
+    private String competencyLevel4Description;
+    private String competencyLevel5Label;
+    private String competencyLevel5Description;
+
+    public String getCompetencyCode() {
+        return competencyCode;
+    }
+
+    public void setCompetencyCode(String competencyCode) {
+        this.competencyCode = competencyCode;
+    }
+
+    public String getSubject() {
+        return subject;
+    }
+
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    public String getCompetencyLabel() {
+        return competencyLabel;
+    }
+
+    public void setCompetencyLabel(String competencyLabel) {
+        this.competencyLabel = competencyLabel;
+    }
+
+    public String getCompetencyDescription() {
+        return competencyDescription;
+    }
+
+    public void setCompetencyDescription(String competencyDescription) {
+        this.competencyDescription = competencyDescription;
+    }
+
+    public String getCompetencyLevel1Label() {
+        return competencyLevel1Label;
+    }
+
+    public void setCompetencyLevel1Label(String competencyLevel1Label) {
+        this.competencyLevel1Label = competencyLevel1Label;
+    }
+
+    public String getCompetencyLevel1Description() {
+        return competencyLevel1Description;
+    }
+
+    public void setCompetencyLevel1Description(String competencyLevel1Description) {
+        this.competencyLevel1Description = competencyLevel1Description;
+    }
+
+    public String getCompetencyLevel2Label() {
+        return competencyLevel2Label;
+    }
+
+    public void setCompetencyLevel2Label(String competencyLevel2Label) {
+        this.competencyLevel2Label = competencyLevel2Label;
+    }
+
+    public String getCompetencyLevel2Description() {
+        return competencyLevel2Description;
+    }
+
+    public void setCompetencyLevel2Description(String competencyLevel2Description) {
+        this.competencyLevel2Description = competencyLevel2Description;
+    }
+
+    public String getCompetencyLevel3Label() {
+        return competencyLevel3Label;
+    }
+
+    public void setCompetencyLevel3Label(String competencyLevel3Label) {
+        this.competencyLevel3Label = competencyLevel3Label;
+    }
+
+    public String getCompetencyLevel3Description() {
+        return competencyLevel3Description;
+    }
+
+    public void setCompetencyLevel3Description(String competencyLevel3Description) {
+        this.competencyLevel3Description = competencyLevel3Description;
+    }
+
+    public String getCompetencyLevel4Label() {
+        return competencyLevel4Label;
+    }
+
+    public void setCompetencyLevel4Label(String competencyLevel4Label) {
+        this.competencyLevel4Label = competencyLevel4Label;
+    }
+
+    public String getCompetencyLevel4Description() {
+        return competencyLevel4Description;
+    }
+
+    public void setCompetencyLevel4Description(String competencyLevel4Description) {
+        this.competencyLevel4Description = competencyLevel4Description;
+    }
+
+    public String getCompetencyLevel5Label() {
+        return competencyLevel5Label;
+    }
+
+    public void setCompetencyLevel5Label(String competencyLevel5Label) {
+        this.competencyLevel5Label = competencyLevel5Label;
+    }
+
+    public String getCompetencyLevel5Description() {
+        return competencyLevel5Description;
+    }
+
+    public void setCompetencyLevel5Description(String competencyLevel5Description) {
+        this.competencyLevel5Description = competencyLevel5Description;
+    }
+}
diff --git a/taxonomy-api/taxonomy-service/app/models/DatabaseExecutionContext.java b/taxonomy-api/taxonomy-service/app/models/DatabaseExecutionContext.java
new file mode 100644
index 0000000000000000000000000000000000000000..012a7fae01519241ebeea05f97fed4d374bee441
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/models/DatabaseExecutionContext.java
@@ -0,0 +1,16 @@
+package models;
+
+import akka.actor.ActorSystem;
+import play.libs.concurrent.CustomExecutionContext;
+
+import javax.inject.Inject;
+
+/**
+ * Custom execution context wired to "database.dispatcher" thread pool
+ */
+public class DatabaseExecutionContext extends CustomExecutionContext {
+    @Inject
+    public DatabaseExecutionContext(ActorSystem actorSystem) {
+        super(actorSystem, "database.dispatcher");
+    }
+}
diff --git a/taxonomy-api/taxonomy-service/app/repository/CompetencyRepository.java b/taxonomy-api/taxonomy-service/app/repository/CompetencyRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..68f2a73cef8bc4c2d0b0c4709a834bef57a1fba2
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/repository/CompetencyRepository.java
@@ -0,0 +1,17 @@
+package repository;
+
+import com.google.inject.ImplementedBy;
+import models.Competency;
+
+import java.util.concurrent.CompletionStage;
+import java.util.stream.Stream;
+
+/**
+ * This interface provides a non-blocking API for possibly blocking operations.
+ */
+@ImplementedBy(JPACompetencyRepository.class)
+public interface CompetencyRepository {
+    CompletionStage<Competency> add(Competency competency);
+
+    CompletionStage<Stream<Competency>> list();
+}
diff --git a/taxonomy-api/taxonomy-service/app/repository/CompetencyRepositoryTrait.scala b/taxonomy-api/taxonomy-service/app/repository/CompetencyRepositoryTrait.scala
new file mode 100644
index 0000000000000000000000000000000000000000..45078b41a47fde6fd3137dd89757f960b782afd1
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/repository/CompetencyRepositoryTrait.scala
@@ -0,0 +1,12 @@
+package repository
+
+import models.Competency
+import org.springframework.data.domain.{Example, Page, Pageable, Sort}
+import org.springframework.data.jpa.repository.JpaRepository
+import org.springframework.stereotype.Repository
+
+import java.util.Optional
+import java.{lang, util}
+@Repository
+trait CompetencyRepositoryTrait extends JpaRepository[Competency, String] {
+}
\ No newline at end of file
diff --git a/taxonomy-api/taxonomy-service/app/repository/JPACompetencyRepository.java b/taxonomy-api/taxonomy-service/app/repository/JPACompetencyRepository.java
new file mode 100644
index 0000000000000000000000000000000000000000..36f2180528ae64c82cd79d66da9be96bc5e2290b
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/repository/JPACompetencyRepository.java
@@ -0,0 +1,48 @@
+package repository;
+
+import models.Competency;
+import models.DatabaseExecutionContext;
+import play.db.jpa.JPAApi;
+
+import javax.inject.Inject;
+import javax.persistence.EntityManager;
+import java.util.List;
+import java.util.concurrent.CompletionStage;
+import java.util.function.Function;
+import java.util.stream.Stream;
+
+import static java.util.concurrent.CompletableFuture.supplyAsync;
+public class JPACompetencyRepository implements  CompetencyRepository{
+    private final JPAApi jpaApi;
+    private final DatabaseExecutionContext executionContext;
+
+    @Inject
+    public JPACompetencyRepository(JPAApi jpaApi, DatabaseExecutionContext executionContext) {
+        this.jpaApi = jpaApi;
+        this.executionContext = executionContext;
+    }
+
+    @Override
+    public CompletionStage<Competency> add(Competency competency) {
+        return supplyAsync(() -> wrap(em -> insert(em, competency)), executionContext);
+    }
+
+    @Override
+    public CompletionStage<Stream<Competency>> list() {
+        return supplyAsync(() -> wrap(em -> list(em)), executionContext);
+    }
+
+    private <T> T wrap(Function<EntityManager, T> function) {
+        return jpaApi.withTransaction(function);
+    }
+
+    private Competency insert(EntityManager em, Competency competency) {
+        em.persist(competency);
+        return competency;
+    }
+
+    private Stream<Competency> list(EntityManager em) {
+        List<Competency> competencies = em.createQuery("select * from Competency competency", Competency.class).getResultList();
+        return competencies.stream();
+    }
+}
diff --git a/taxonomy-api/taxonomy-service/app/service/CompetencyService.java b/taxonomy-api/taxonomy-service/app/service/CompetencyService.java
new file mode 100644
index 0000000000000000000000000000000000000000..53f1935dd2597fc8f437437a83b863b62aca9cbf
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/app/service/CompetencyService.java
@@ -0,0 +1,156 @@
+package service;
+
+import models.Competency;
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.Pageable;
+import org.springframework.data.domain.Sort;
+import repository.CompetencyRepositoryTrait;
+
+import javax.inject.Singleton;
+import java.util.List;
+import java.util.Optional;
+
+@Singleton
+public class CompetencyService implements CompetencyRepositoryTrait {
+
+    @Override
+    public List<Competency> findAll() {
+        return null;
+    }
+
+    @Override
+    public List<Competency> findAll(Sort sort) {
+        return null;
+    }
+
+    @Override
+    public Page<Competency> findAll(Pageable pageable) {
+        return null;
+    }
+
+    @Override
+    public List<Competency> findAllById(Iterable<String> strings) {
+        return null;
+    }
+
+    @Override
+    public long count() {
+        return 0;
+    }
+
+    @Override
+    public void deleteById(String s) {
+
+    }
+
+    @Override
+    public void delete(Competency entity) {
+
+    }
+
+    @Override
+    public void deleteAllById(Iterable<? extends String> strings) {
+
+    }
+
+    @Override
+    public void deleteAll(Iterable<? extends Competency> entities) {
+
+    }
+
+    @Override
+    public void deleteAll() {
+
+    }
+
+    @Override
+    public <S extends Competency> S save(S entity) {
+        return entity;
+    }
+
+    @Override
+    public <S extends Competency> List<S> saveAll(Iterable<S> entities) {
+        return null;
+    }
+
+    @Override
+    public Optional<Competency> findById(String s) {
+        return Optional.empty();
+    }
+
+    @Override
+    public boolean existsById(String s) {
+        return false;
+    }
+
+    @Override
+    public void flush() {
+
+    }
+
+    @Override
+    public <S extends Competency> S saveAndFlush(S entity) {
+        return null;
+    }
+
+    @Override
+    public <S extends Competency> List<S> saveAllAndFlush(Iterable<S> entities) {
+        return null;
+    }
+
+    @Override
+    public void deleteAllInBatch(Iterable<Competency> entities) {
+
+    }
+
+    @Override
+    public void deleteAllByIdInBatch(Iterable<String> strings) {
+
+    }
+
+    @Override
+    public void deleteAllInBatch() {
+
+    }
+
+    @Override
+    public Competency getOne(String s) {
+        return null;
+    }
+
+    @Override
+    public Competency getById(String s) {
+        return null;
+    }
+
+    @Override
+    public <S extends Competency> Optional<S> findOne(Example<S> example) {
+        return Optional.empty();
+    }
+
+    @Override
+    public <S extends Competency> List<S> findAll(Example<S> example) {
+        return null;
+    }
+
+    @Override
+    public <S extends Competency> List<S> findAll(Example<S> example, Sort sort) {
+        return null;
+    }
+
+    @Override
+    public <S extends Competency> Page<S> findAll(Example<S> example, Pageable pageable) {
+        return null;
+    }
+
+    @Override
+    public <S extends Competency> long count(Example<S> example) {
+        return 0;
+    }
+
+    @Override
+    public <S extends Competency> boolean exists(Example<S> example) {
+        return false;
+    }
+}
diff --git a/taxonomy-api/taxonomy-service/app/utils/ApiId.scala b/taxonomy-api/taxonomy-service/app/utils/ApiId.scala
index 2947f8da6eaa57578d84a2d24ff797c09a9e36ce..54efde429f3677a00dcc87f816e1ce51763c59db 100644
--- a/taxonomy-api/taxonomy-service/app/utils/ApiId.scala
+++ b/taxonomy-api/taxonomy-service/app/utils/ApiId.scala
@@ -6,6 +6,7 @@ object ApiId {
 	final val CREATE_OBJECT_CATEGORY = "api.object.category.create"
 	final val READ_OBJECT_CATEGORY = "api.object.category.read"
 	final val UPDATE_OBJECT_CATEGORY = "api.object.category.update"
+	final val UPLOAD_DATA_OBJECT_CATEGORY = "api.object.category.upload"
 	final val CREATE_OBJECT_CATEGORY_DEFINITION = "api.object.category.definition.create"
 	final val READ_OBJECT_CATEGORY_DEFINITION = "api.object.category.definition.read"
 	final val UPDATE_OBJECT_CATEGORY_DEFINITION = "api.object.category.definition.update"
diff --git a/taxonomy-api/taxonomy-service/conf/META-INF/persistence.xml b/taxonomy-api/taxonomy-service/conf/META-INF/persistence.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2e6f14d1a9b796bccc22f0ec5ba2d6d0e8d5e2ee
--- /dev/null
+++ b/taxonomy-api/taxonomy-service/conf/META-INF/persistence.xml
@@ -0,0 +1,23 @@
+<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
+             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
+             version="2.2">
+
+    <persistence-unit name="defaultPersistenceUnit" transaction-type="RESOURCE_LOCAL">
+        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+        <non-jta-data-source>DefaultDS</non-jta-data-source>
+        <properties>
+            <property name="javax.persistence.jdbc.driver" value="org.postgresql.Driver" /> <!-- DB Driver -->
+            <property name="javax.persistence.jdbc.url" value="jdbc:postgresql://localhost:5432/postgres" /> <!-- BD Mane -->
+            <property name="javax.persistence.jdbc.user" value="postgres" /> <!-- DB User -->
+            <property name="javax.persistence.jdbc.password" value="postgres" /> <!-- DB Password -->
+
+            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/> <!-- DB Dialect -->
+            <property name="hibernate.hbm2ddl.auto" value="update" /> <!-- create / create-drop / update -->
+
+            <property name="hibernate.show_sql" value="true" /> <!-- Show SQL in console -->
+            <property name="hibernate.format_sql" value="true" /> <!-- Show SQL formatted -->
+        </properties>
+    </persistence-unit>
+
+</persistence>
\ No newline at end of file
diff --git a/taxonomy-api/taxonomy-service/conf/application.conf b/taxonomy-api/taxonomy-service/conf/application.conf
index 11b9db9b1e81a2842acd9352db6eaa5866be3746..cf1b4064c199d3b4a5760e4e0453950bc2361d72 100644
--- a/taxonomy-api/taxonomy-service/conf/application.conf
+++ b/taxonomy-api/taxonomy-service/conf/application.conf
@@ -297,6 +297,20 @@ route.bolt.write.all="bolt://localhost:7687"
 route.bolt.read.all="bolt://localhost:7687"
 route.bolt.comment.all="bolt://localhost:7687"
 
+# Postgre configuration
+# spring.jpa.hibernate.ddl-auto="update"
+# spring.datasource.url="jdbc:postgresql://localhost:5432/postgres"
+# spring.datasource.username="postgres"
+# spring.datasource.password="postgres"
+
+#Exposing the datasource through JNDI
+db.default.jndiName=DefaultDS
+jpa.default=defaultPersistenceUnit
+db.default.driver=org.postgresql.Driver
+db.default.url="jdbc:postgresql://localhost:5432/postgres"
+db.default.username="postgres"
+db.default.password="postgres"
+
 # Cassandra Configuration
 cassandra.lp.connection="127.0.0.1:9042"
 cassandra.lpa.connection="127.0.0.1:9042"
@@ -316,5 +330,5 @@ languageCode {
 }
 
 platform.language.codes=["as","bn","en","gu","hi","hoc","jun","ka","mai","mr","unx","or","san","sat","ta","te","urd"]
-objectcategorydefinition.keyspace=category_store
+objectcategorydefinition.keyspace=dev_category_store
 
diff --git a/taxonomy-api/taxonomy-service/conf/routes b/taxonomy-api/taxonomy-service/conf/routes
index 4a1c2123259a865641a0adb996d95e8bc01a8663..b3c2448842690d5ab21aca2b664dcf03d5955ad1 100644
--- a/taxonomy-api/taxonomy-service/conf/routes
+++ b/taxonomy-api/taxonomy-service/conf/routes
@@ -22,6 +22,7 @@ POST      /framework/v3/publish/:identifier               controllers.v3.Framewo
 POST      /object/category/v4/create                           controllers.v4.ObjectCategoryController.create
 PATCH     /object/category/v4/update/:identifier               controllers.v4.ObjectCategoryController.update(identifier:String)
 GET       /object/category/v4/read/:identifier                 controllers.v4.ObjectCategoryController.read(identifier:String, fields:Option[String])
+POST      /object/category/v4/uploadCompetencyData             controllers.v4.ObjectCategoryController.uploadCompetency
 
 # ObjectCategoryDefinition API's
 POST      /object/category/definition/v4/create                controllers.v4.ObjectCategoryDefinitionController.create
diff --git a/taxonomy-api/taxonomy-service/pom.xml b/taxonomy-api/taxonomy-service/pom.xml
index 57c2f7c74bb3da62b2a14d7ff46970d7d3b167ba..df159a210e560110f3bf8063789fc3263ef15206 100644
--- a/taxonomy-api/taxonomy-service/pom.xml
+++ b/taxonomy-api/taxonomy-service/pom.xml
@@ -69,6 +69,27 @@
             <artifactId>scala-library</artifactId>
             <version>${scala.version}</version>
         </dependency>
+        <dependency>
+            <groupId>com.typesafe.play</groupId>
+            <artifactId>play-java-jpa_${scala.major.version}</artifactId>
+            <version>2.7.9</version>
+        </dependency>
+        <dependency>
+            <groupId>postgresql</groupId>
+            <artifactId>postgresql</artifactId>
+            <version>9.1-901-1.jdbc4</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-jpa</artifactId>
+            <version>2.6.10</version>
+        </dependency>
+        <dependency>
+            <groupId>org.hibernate</groupId>
+            <artifactId>hibernate-core</artifactId>
+            <version>6.1.7.Final</version>
+            <type>pom</type>
+        </dependency>
         <dependency>
             <groupId>org.sunbird</groupId>
             <artifactId>taxonomy-actors</artifactId>
@@ -97,6 +118,11 @@
             <artifactId>logback-kafka-appender</artifactId>
             <version>0.2.0-RC2</version>
         </dependency>
+        <dependency>
+            <groupId>org.springframework.data</groupId>
+            <artifactId>spring-data-commons</artifactId>
+            <version>2.5.5</version>
+        </dependency>
     </dependencies>
     <build>
         <sourceDirectory>${basedir}/app</sourceDirectory>
@@ -143,6 +169,14 @@
                     <excludedFiles>.*RoutesPrefix.*;.*Routes.*;.*javascript.*</excludedFiles>
                 </configuration>
             </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>8</source>
+                    <target>8</target>
+                </configuration>
+            </plugin>
         </plugins>
     </build>