diff --git a/dalmdl/coremongo/coremongo.go b/dalmdl/coremongo/coremongo.go
index 4998e981a7f4feec598a213ebb1f698d00db6768..df7c48b13b07f57d6795589e7a78a1394ba7e8a9 100644
--- a/dalmdl/coremongo/coremongo.go
+++ b/dalmdl/coremongo/coremongo.go
@@ -515,6 +515,48 @@ func (mg *MongoDAO) PushData(selector map[string]interface{}, data interface{})
 	return nil
 }
 
+//custom update with extra options
+func (mg *MongoDAO) CustomUpdateWithOptions(selector map[string]interface{}, data interface{}, updateOps map[string]interface{}) error {
+	session, sessionError := GetMongoConnection(mg.hostName)
+	if errormdl.CheckErr(sessionError) != nil {
+		return errormdl.CheckErr(sessionError)
+	}
+
+	if mg.hostName == "" {
+		mg.hostName = defaultHost
+	}
+	db, ok := config[mg.hostName]
+	if !ok {
+		return errormdl.Wrap("No_Configuration_Found_For_Host: " + mg.hostName)
+	}
+
+	collection := session.Database(db.Database).Collection(mg.collectionName)
+	ops := options.UpdateOptions{}
+	resMarshal, err := json.Marshal(updateOps)
+	if err != nil {
+		return errormdl.Wrap("cannot marshal:")
+	}
+	obj := gjson.ParseBytes(resMarshal)
+	loggermdl.LogError(obj)
+	if updateOps != nil {
+		if obj.Get("arrayFilter").Value() != nil {
+			arr := obj.Get("arrayFilter").Value().([]interface{})
+			ops.SetArrayFilters(options.ArrayFilters{
+				Filters: arr,
+			})
+		}
+		if obj.Get("upsert").Value() != nil {
+			ops.SetUpsert(obj.Get("upsert").Bool())
+		}
+	}
+
+	_, updateError := collection.UpdateMany(context.Background(), selector, data, &ops)
+	if errormdl.CheckErr1(updateError) != nil {
+		return errormdl.CheckErr1(updateError)
+	}
+	return nil
+}
+
 // CustomUpdate - CustomUpdate
 func (mg *MongoDAO) CustomUpdate(selector map[string]interface{}, data interface{}) error {
 	session, sessionError := GetMongoConnection(mg.hostName)