diff --git a/assessment-api/assessment-actors/src/main/scala/org/sunbird/actors/QuestionActor.scala b/assessment-api/assessment-actors/src/main/scala/org/sunbird/actors/QuestionActor.scala
index 2dd9080f7f7c38d40d599dc2a64af9e88a840768..87134b065a69eb4ccdd757d14efe0559d947916a 100644
--- a/assessment-api/assessment-actors/src/main/scala/org/sunbird/actors/QuestionActor.scala
+++ b/assessment-api/assessment-actors/src/main/scala/org/sunbird/actors/QuestionActor.scala
@@ -38,6 +38,7 @@ class QuestionActor @Inject()(implicit oec: OntologyEngineContext) extends BaseA
 		case "rejectQuestion" => reject(request)
 		case "copyQuestion" => copy(request)
 		case "bulkUploadQuestion" => bulkUpload(request)
+		case "bulkUploadFrameworkMapping" => bulkUploadFrameworkMapping(request)
 		case _ => ERROR(request.getOperation)
 	}
 
@@ -142,4 +143,8 @@ class QuestionActor @Inject()(implicit oec: OntologyEngineContext) extends BaseA
 	def bulkUpload(request: Request): Future[Response] = {
 		AssessmentManager.create(request, "ERR_QUESTION_CREATE")
 	}
+
+	def bulkUploadFrameworkMapping(request: Request): Future[Response] = {
+		AssessmentManager.createMapping(request, "ERR_QUESTION_CREATE")
+	}
 }
diff --git a/assessment-api/assessment-actors/src/main/scala/org/sunbird/managers/AssessmentManager.scala b/assessment-api/assessment-actors/src/main/scala/org/sunbird/managers/AssessmentManager.scala
index d5a9e0204af942de2031c764c10b3fe4ee02b556..12e4b9ae0622e2115dd682bdc770294ad5dbca12 100644
--- a/assessment-api/assessment-actors/src/main/scala/org/sunbird/managers/AssessmentManager.scala
+++ b/assessment-api/assessment-actors/src/main/scala/org/sunbird/managers/AssessmentManager.scala
@@ -221,4 +221,9 @@ object AssessmentManager {
 			}}
 		(actor, context, objData, eData)
 	}
+
+	def createMapping(request: Request, str: String)(implicit oec: OntologyEngineContext, ec: ExecutionContext): Future[Response] = {
+
+		oec.graphService.saveExternalProps(request)
+	}
 }
diff --git a/assessment-api/assessment-service/app/controllers/v4/QuestionController.scala b/assessment-api/assessment-service/app/controllers/v4/QuestionController.scala
index 5fd17d92a58138f3aff7ea7bae342ad69012da1e..c27f41b0610343aee19762a8c1a3d60c276ef2c8 100644
--- a/assessment-api/assessment-service/app/controllers/v4/QuestionController.scala
+++ b/assessment-api/assessment-service/app/controllers/v4/QuestionController.scala
@@ -180,4 +180,16 @@ class QuestionController @Inject()(@Named(ActorNames.QUESTION_ACTOR) questionAct
 		logger.info("in Future sequence")
 		Await.result(f, Duration.apply("30s"))
 	}
+
+	def createFrameworkMappingData() = Action.async { implicit request =>
+		val headers = commonHeaders()
+		val body = requestBody()
+		val question = body.getOrDefault("question", new java.util.HashMap()).asInstanceOf[java.util.Map[String, AnyRef]]
+		question.putAll(headers)
+		val questionRequest = getRequest(question, headers, QuestionOperations.createFrameworkMapping.toString)
+		setRequestContext(questionRequest, version, "competency", "competency")
+		getResult(ApiId.FRAMEWORK_COMPETENCY_QUESTION, questionActor, questionRequest)
+	}
+
+
 }
diff --git a/assessment-api/assessment-service/app/utils/ApiId.scala b/assessment-api/assessment-service/app/utils/ApiId.scala
index daf20fc4819bf3c72e9e5e0318df15c1d25fbd31..7323204370ea827d548ee256d2079c5be6bf9ebd 100644
--- a/assessment-api/assessment-service/app/utils/ApiId.scala
+++ b/assessment-api/assessment-service/app/utils/ApiId.scala
@@ -26,6 +26,7 @@ object ApiId {
 	val REJECT_QUESTION = "api.question.reject"
 	val COPY_QUESTION = "api.question.copy"
 	val BULK_UPLOAD_QUESTION = "api.question.bulk.upload"
+	val FRAMEWORK_COMPETENCY_QUESTION = "api.question.mapping"
 	//QuestionSet APIs
 	val CREATE_QUESTION_SET = "api.questionset.create"
 	val READ_QUESTION_SET = "api.questionset.read"
diff --git a/assessment-api/assessment-service/app/utils/QuestionOperations.scala b/assessment-api/assessment-service/app/utils/QuestionOperations.scala
index 8d71d88e12b69be1db77e28e986bf4fab1bc628c..71327f4939c7d46a16fe752ad52a395e131345c9 100644
--- a/assessment-api/assessment-service/app/utils/QuestionOperations.scala
+++ b/assessment-api/assessment-service/app/utils/QuestionOperations.scala
@@ -1,5 +1,5 @@
 package utils
 
 object QuestionOperations extends Enumeration {
-  val createQuestion, readQuestion, readPrivateQuestion, updateQuestion, reviewQuestion, publishQuestion, retireQuestion, importQuestion, systemUpdateQuestion, listQuestions, rejectQuestion, copyQuestion = Value
+  val createQuestion, readQuestion, readPrivateQuestion, updateQuestion, reviewQuestion, publishQuestion, retireQuestion, importQuestion, systemUpdateQuestion, listQuestions, rejectQuestion, copyQuestion, createFrameworkMapping = Value
 }
diff --git a/assessment-api/assessment-service/conf/routes b/assessment-api/assessment-service/conf/routes
index 3202b944d1918678badc758a56f85593ac968781..f9c36b0699f041c8cc036b7defeff6bcc1aa6130 100644
--- a/assessment-api/assessment-service/conf/routes
+++ b/assessment-api/assessment-service/conf/routes
@@ -25,6 +25,7 @@ POST      /question/v4/list                       controllers.v4.QuestionControl
 POST      /question/v4/reject/:identifier         controllers.v4.QuestionController.reject(identifier:String)
 POST      /question/v4/copy/:identifier           controllers.v4.QuestionController.copy(identifier:String, mode:Option[String])
 POST      /question/v4/bulk/upload                controllers.v4.QuestionController.uploadExcel
+POST      /question/v4/bulk/upload/mapping        controllers.v4.QuestionController.createFrameworkMappingData
 
 # QuestionSet API's
 POST      /questionset/v4/create                     controllers.v4.QuestionSetController.create