Ticket.findOne({company: ardsResponse.Company, tenant: ardsResponse.Tenant, _id: ardsResponse.SessionID}, function (err, ticket) {
                        if (err) {
                            jsonString = messageFormatter.FormatMessage(err, "Fail Find Ticket", false, undefined);
                            res.writeHead(503, {'Content-Type': 'application/json; charset=utf-8'});
                            res.end(jsonString);
                        }
                        else {
                            if (ticket) {

                                var oldTicket = deepcopy(ticket.toJSON());
                                var time = Date.now();
                                ticket.updated_at = time;
                                var tEvent = TicketEvent({
                                    type: 'status',
                                    body: {
                                        "message" :  "ARDS Ticket Assign To "+user.id,
                                        "time" : time
                                    }
                                });
                                ticket.events.push(tEvent);

                                ticket.assignee_group = undefined;
                                ticket.assignee = user.id ;

                                ticket.update(ticket, function (err, obj) {
                                    if (err) {
                                        jsonString = messageFormatter.FormatMessage(err, "Fail Find Ticket", false, undefined);
                                        res.writeHead(503, {'Content-Type': 'application/json; charset=utf-8'});
                                        res.end(jsonString);
                                    }
                                    if(obj){
                                        jsonString = messageFormatter.FormatMessage(undefined, "Ticket Assign To User.", true, undefined);
                                        res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
                                        res.end(jsonString);
                                        RemoveRequest(ardsResponse.Tenant, ardsResponse.Company,ardsResponse.SessionID, "NONE", function(){

                                        });
                                        TriggerWorker.ExecuteTrigger(ticket.id, "change_assignee", oldTicket.assignee);
                                    }
                                    else{
                                        jsonString = messageFormatter.FormatMessage(undefined, "Invalid Ticket Information.", false, undefined);
                                        res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
                                        res.end(jsonString);
                                        RejectRequest(ardsResponse.Tenant, ardsResponse.Company,ardsResponse.SessionID, "NoSession", function(){

                                        });
                                    }
                                });

                            } else {
                                jsonString = messageFormatter.FormatMessage(undefined, "Fail Find Ticket", false, undefined);
                                res.writeHead(200, {'Content-Type': 'application/json; charset=utf-8'});
                                res.end(jsonString);
                                RejectRequest(ardsResponse.Tenant, ardsResponse.Company,ardsResponse.SessionID, "NoSession", function(){

                                });
                            }
                        }
                    });
var CreateNewCase = function(tenant, company, caseConfig, ticketArray, callback){
    logger.info("DVP-LiteTicket.CaseWorker.CreateNewCase Internal method ");

    //var ticketArray = [ticketInfo._id];
    //Ticket.find({
    //    company: company,
    //    tenant: tenant,
    //    active: true,
    //    isolated_tags: { $all: caseConfig.tagArray },
    //    status: {$nin: ['closed', 'solved']}
    //}, function (err, tickets) {
    //    if (err) {
    //        logger.error("Get Tickets By isolated_tags Failed :: "+ err);
    //    } else {
    //
    //        if (tickets) {
    //            for(var i =0; i < tickets.length;i++){
    //                if(caseConfig.activeTicketTypes && caseConfig.activeTicketTypes.length > 0){
    //                    if(caseConfig.activeTicketTypes.indexOf(tickets[i].type) > -1){
    //                        logger.info("Ticket Id:: "+tickets[i]._id +" Added to Case");
    //                        ticketArray.push(tickets[i]._id);
    //                    }
    //                }else{
    //
    //                    logger.info("Ticket Id:: "+tickets[i]._id +" Added to Case");
    //                    ticketArray.push(tickets[i]._id);
    //                }
    //            }
    //
    //        } else {
    //            logger.info("Get Tickets By isolated_tags Failed");
    //        }
    //    }

        var time = new Date();
        var tEvent = TicketEvent({
            type: 'status',
            "author": 'system',
            "create_at": Date.now(),
            body: {
                "message": "System Create Case",
                "time": time
            }
        });

        var caseName = util.format('%s-%d', caseConfig.configurationName, time.getTime());

        var caseInfo = Case({
            created_at: time.toISOString(),
            updated_at: time.toISOString(),
            active: true,
            status: "new",
            caseName: caseName,
            description: caseConfig.description,
            company: company,
            tenant: tenant,
            caseConfiguration: caseConfig._id,
            related_tickets:ticketArray,
            events: [tEvent],
            SLAViolated: false
        });

        caseInfo.save(function (err, caseData) {
            if (err) {
                logger.error("Create Case Failed :: "+ err);
                callback(err, "Create Case Failed");
            }
            else {
                if (caseData) {
                    logger.info("Case Saved Successfully :: "+ caseData);
                    callback(undefined, "Case Saved Successfully");
                }
                else {
                    logger.info("Fail To Save Case :: "+ caseData);
                    callback(undefined, "Fail To Save Case");
                }
            }
        });
    //});
};
    Case.findOne({company: company, tenant: tenant, caseConfiguration: caseConf._id, active: true}, function (err, caseData) {
        if (err) {
            logger.error("Fail Find Case:: "+ err);
            callback(err, "Fail Find Case");
        }
        else {
            if (caseData) {

                if(caseConf.activeTicketTypes && caseConf.activeTicketTypes.indexOf(ticketInfo.type) > -1) {
                    logger.info("Ticket Id:: " + ticketInfo._id + " Added to Case");


                    var time = new Date().toISOString();
                    var tEvent = TicketEvent({
                        type: 'status',
                        "author": 'system',
                        "create_at": Date.now(),
                        body: {
                            "message": "System Add Ticket To Case " + ticketInfo._id,
                            "time": time,
                            "differences": {}
                        }
                    });

                    caseData.update({
                        "$set": {
                            "updated_at": Date.now()
                        },
                        "$addToSet": {"events": tEvent, "related_tickets": ticketInfo._id}
                    }, function (err, rCase) {
                        if (err) {
                            logger.error("Fail Update Case:: " + err);
                            callback(err, "Fail Update Case");
                        }
                        else {
                            if (rCase) {
                                logger.info("Add Ticket To Case Success:: " + rCase);
                                callback(undefined, "Add Ticket To Case Success");
                            }
                            else {
                                logger.info("Failed To Update Case:: " + caseData._id);
                                callback(undefined, "Failed To Update Case");
                            }
                        }
                    });
                }else{
                    callback(undefined, "Ticket Not Matched");
                }
            }
            else {
                logger.info("Fail Find Case");
                //GetCurrentTicketCount(ticketInfo.tenant, ticketInfo.company, caseConf.configurationRule.replace(/ /g,''), function(err, currentCount){
                GetCurrentTicketCount(ticketInfo.tenant, ticketInfo.company, caseConf, function(err, currentTickets){
                    if(err){
                        callback(err, "Get Current Ticket Count Failed");
                    }else{
                        if(caseConf.threshold && currentTickets.length >= caseConf.threshold){
                            currentTickets.push(ticketInfo._id);
                            CreateNewCase(ticketInfo.tenant, ticketInfo.company, caseConf, currentTickets, function(err, msg){
                                callback(err, msg);
                            });
                        }else{
                            logger.info("Threshold Not Exceeded");
                            callback(undefined, "Threshold Not Exceeded");
                        }
                    }

                });
            }
        }

    });