diff --git a/dalmdl/coremongo/coremongo.go b/dalmdl/coremongo/coremongo.go
index 43192c1ef41f4a33b791dd0d7998f0aa098ce6f1..20817f2c7ce32b3470f24588d4a69c116d57aec8 100644
--- a/dalmdl/coremongo/coremongo.go
+++ b/dalmdl/coremongo/coremongo.go
@@ -189,8 +189,10 @@ type MongoDAO struct {
 	MetaData       MetaData
 }
 type MetaData struct {
-	Findops   map[string]interface{}
-	UpdateOps map[string]interface{}
+	Findops           map[string]interface{}
+	UpdateOps         map[string]interface{}
+	AggregateOptions  map[string]interface{}
+	InsertManyOptions map[string]interface{}
 }
 
 // GetMongoDAOWithHost return mongo DAO instance
@@ -230,6 +232,42 @@ func (mg *MongoDAO) SaveData(data interface{}) (string, error) {
 	return getInsertedId(opts.InsertedID), nil
 }
 
+// Insert many data in mongo db
+func (mg *MongoDAO) SaveBulkData(data []interface{}) (string, 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 errormdl.CheckBool(!ok) {
+		return "", errormdl.Wrap("No_Configuration_Found_For_Host: " + mg.hostName)
+	}
+	collection := session.Database(db.Database).Collection(mg.collectionName)
+	insertManyOptions := options.InsertMany()
+	if mg.MetaData.InsertManyOptions != nil {
+		marshaledQuery, err := json.Marshal(mg.MetaData.InsertManyOptions)
+		if err != nil {
+			return "", errormdl.Wrap("cannot marshal:query option")
+		}
+		obj := gjson.ParseBytes(marshaledQuery)
+		if obj.Get("ordered").Value() != nil {
+			insertManyOptions.SetOrdered(obj.Get("ordered").Bool())
+		}
+		if obj.Get("bypassDocumentValidation").Value() != nil {
+			insertManyOptions.SetBypassDocumentValidation(obj.Get("bypassDocumentValidation").Bool())
+		}
+	}
+	opts, insertManyError := collection.InsertMany(context.Background(), data, insertManyOptions)
+	if errormdl.CheckErr1(insertManyError) != nil {
+		return "", errormdl.CheckErr1(insertManyError)
+	}
+	return getInsertedId(opts.InsertedIDs), nil
+}
+
 // UpdateAll update all
 func (mg *MongoDAO) UpdateAll(selector map[string]interface{}, data interface{}) error {
 	session, sessionError := GetMongoConnection(mg.hostName)
@@ -364,6 +402,16 @@ func (mg *MongoDAO) SetFindOps(findOps map[string]interface{}) {
 	mg.MetaData.Findops = findOps
 }
 
+// Set Aggregate Options
+func (mg *MongoDAO) SetAggregateOptions(aggregateOpts map[string]interface{}) {
+	mg.MetaData.AggregateOptions = aggregateOpts
+}
+
+// Set InsertMany Options
+func (mg *MongoDAO) SetInsertManyOptions(insertManyOptions map[string]interface{}) {
+	mg.MetaData.InsertManyOptions = insertManyOptions
+}
+
 // GetProjectedData will return query for selector and projector
 func (mg *MongoDAO) GetProjectedData(selector map[string]interface{}, projector map[string]interface{}) (*gjson.Result, error) {
 	session, sessionError := GetMongoConnection(mg.hostName)
@@ -399,7 +447,7 @@ func (mg *MongoDAO) GetProjectedData(selector map[string]interface{}, projector
 				m := value.Map()
 				// fmt.Println(m)
 				for k, v := range m {
-					sort = append(sort, bson.E{k, v.Value()})
+					sort = append(sort, bson.E{Key: k, Value: v.Value()})
 				}
 				return true
 			})
@@ -447,7 +495,34 @@ func (mg *MongoDAO) GetAggregateData(selector interface{}) (*gjson.Result, error
 		return nil, errormdl.Wrap("No_Configuration_Found_For_Host: " + mg.hostName)
 	}
 	collection := session.Database(db.Database).Collection(mg.collectionName)
-	cur, err := collection.Aggregate(context.Background(), selector)
+	aggregateOpts := &options.AggregateOptions{}
+	if mg.MetaData.AggregateOptions != nil {
+		marshaledQuery, err := json.Marshal(mg.MetaData.AggregateOptions)
+		if err != nil {
+			return nil, errormdl.Wrap("cannot marshal:query option")
+		}
+		obj := gjson.ParseBytes(marshaledQuery)
+		loggermdl.LogError("Aggregate Options", obj)
+		if obj.Get("AllowDiskUse").Value() != nil {
+			aggregateOpts.SetAllowDiskUse(obj.Get("AllowDiskUse").Bool())
+		}
+		if obj.Get("BypassDocumentValidation").Value() != nil {
+			aggregateOpts.SetBypassDocumentValidation(obj.Get("BypassDocumentValidation").Bool())
+		}
+		if obj.Get("Custom").Value() != nil {
+			custom := obj.Get("Custom").Value().(map[string]interface{})
+			aggregateOpts.SetCustom(primitive.M(custom))
+		}
+		if obj.Get("MaxTime").Value() != nil {
+			maxTime := time.Duration(obj.Get("MaxTime").Int())
+			aggregateOpts.SetMaxTime(maxTime)
+		}
+		if obj.Get("MaxAwaitTime").Value() != nil {
+			maxAwaitTime := time.Duration(obj.Get("MaxAwaitTime").Int())
+			aggregateOpts.SetMaxAwaitTime(maxAwaitTime)
+		}
+	}
+	cur, err := collection.Aggregate(context.Background(), selector, aggregateOpts)
 	if err != nil {
 		loggermdl.LogError(err)
 		return nil, err
@@ -655,6 +730,7 @@ func (mg *MongoDAO) BulkSaveData(data []interface{}) error {
 }
 
 // BulkUpdateData  update data in mongo db in bulk
+// Updating only first document from resultset
 func (mg *MongoDAO) BulkUpdateData(data []interface{}) error {
 	if checkBulkInput(data) {
 		return nil
@@ -691,7 +767,46 @@ func (mg *MongoDAO) BulkUpdateData(data []interface{}) error {
 	return nil
 }
 
+// BulkUpdateData  update data in mongo db in bulk
+// Updating All document from resultset
+func (mg *MongoDAO) BulkUpdate(data []interface{}) error {
+	if checkBulkInput(data) {
+		return nil
+	}
+	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 errormdl.CheckBool(!ok) {
+		return errormdl.Wrap("No_Configuration_Found_For_Host: " + mg.hostName)
+	}
+	collection := session.Database(db.Database).Collection(mg.collectionName)
+	opts := &options.BulkWriteOptions{}
+	opts.SetOrdered(true)
+	var models []mongo.WriteModel
+	for i := 0; i < len(data); i++ {
+		model := mongo.NewUpdateManyModel()
+		model.SetFilter(data[i])
+		i++
+		model.SetUpdate(bson.M{"$set": data[i]})
+		models = append(models, model)
+	}
+
+	_, insertError := collection.BulkWrite(context.Background(), models, opts)
+	if errormdl.CheckErr1(insertError) != nil {
+		loggermdl.LogError(insertError)
+		return errormdl.CheckErr1(insertError)
+	}
+	return nil
+}
+
 // BulkDeleteData  delete data in mongo db in bulk
+// Deleting only first document from resultset
 func (mg *MongoDAO) BulkDeleteData(data []interface{}) error {
 	if checkBulkInput(data) {
 		return nil
diff --git a/routebuildermdl/routebuilder_fasthttp.go b/routebuildermdl/routebuilder_fasthttp.go
index c96b97765b164ebe5964c202c8a4e9ce67c99d74..161d4ea70b8eadbe3043b403880152f73f975c37 100644
--- a/routebuildermdl/routebuilder_fasthttp.go
+++ b/routebuildermdl/routebuilder_fasthttp.go
@@ -1,4 +1,5 @@
-//  +build fasthttp
+//go:build fasthttp
+// +build fasthttp
 
 package routebuildermdl
 
@@ -225,7 +226,7 @@ func RestrictedHandler(c *routing.Context) error {
 	if extractError != nil {
 		loggermdl.LogError(extractError)
 		_, err := c.WriteString(extractError.Error())
-		c.SetStatusCode(412)
+		c.SetStatusCode(http.StatusUnauthorized)
 		return err
 	}
 	commonHandler(c, true, false, false, pricipalObj)
@@ -239,7 +240,7 @@ func RoleBasedHandler(c *routing.Context) error {
 	if extractError != nil {
 		loggermdl.LogError(extractError)
 		_, err := c.WriteString(extractError.Error())
-		c.SetStatusCode(412)
+		c.SetStatusCode(http.StatusUnauthorized)
 		return err
 	}
 	commonHandler(c, true, true, false, pricipalObj)
@@ -262,7 +263,7 @@ func HeavyRestrictedHandler(c *routing.Context) error {
 	if extractError != nil {
 		loggermdl.LogError(extractError)
 		_, err := c.WriteString(extractError.Error())
-		c.SetStatusCode(412)
+		c.SetStatusCode(http.StatusUnauthorized)
 		return err
 	}
 	commonHandler(c, true, false, true, pricipalObj)
@@ -276,7 +277,7 @@ func HeavyRoleBasedHandler(c *routing.Context) error {
 	if extractError != nil {
 		loggermdl.LogError(extractError)
 		_, err := c.WriteString(extractError.Error())
-		c.SetStatusCode(412)
+		c.SetStatusCode(http.StatusUnauthorized)
 		return err
 	}
 	commonHandler(c, true, true, true, pricipalObj)
diff --git a/servicebuildermdl/servicebuildermdl.go b/servicebuildermdl/servicebuildermdl.go
index 5b8ae97ee37f5602fdfa0102900628f2d8619680..b37ad2111c544f68cd37e2dcd2e4f05d805fc235 100644
--- a/servicebuildermdl/servicebuildermdl.go
+++ b/servicebuildermdl/servicebuildermdl.go
@@ -12,6 +12,7 @@ import (
 	"time"
 
 	"github.com/dgraph-io/dgo/v2"
+	"github.com/golang-jwt/jwt/v5"
 
 	"corelab.mkcl.org/MKCLOS/coredevelopmentplatform/corepkgv2/utiliymdl/guidmdl"
 	"github.com/tidwall/sjson"
@@ -605,6 +606,7 @@ type Principal struct {
 	HitsCount         int       `json:"hitsCount"`
 	Token             string    `json:"token"`
 	Metadata          string    `json:"metadata"`
+	jwt.RegisteredClaims
 }
 
 // // SetPrincipalObject - Set Principal object to BLHolder