configApiServer.apiGet(gscURL, appData, function(err, gscData) {
     if ((null != err) || (null == gscData)) {
         callback(err, gscData);
         return;
     }
     var uiASN =
         dataObj['putData']['global-system-config']
                ['autonomous_system'];
     var diffObj =
         jsonDiff.getConfigJSONDiff('global-system-config',
                                    gscData, dataObj['putData']);
     if (null == diffObj) {
         return;
     }
     configApiServer.apiPut(gscURL, diffObj, appData,
                            function(error, data) {
         if (null == uiASN) {
             callback(error, data);
             return;
         }
         setTimeout(function() {
             callback(error, data);
             return;
         }, 3000);
     });
 });
 configApiServer.apiGet(dnsRecURL, appData, function(err, configData) {
     if ((null != err) || (null == configData)) {
         commonUtils.handleJSONResponse(err, response, null);
         return;
     }
     var oldConfigData = commonUtils.cloneObj(configData);
     configData['virtual-DNS-record']['virtual_DNS_record_data'] =
         vdnsRecData;
     configData['virtual-DNS-record']['perms2'] =
         perms2;
     var delta =
         jsonDiff.getConfigJSONDiff('virtual-DNS-record',
             oldConfigData,
             configData);
     configApiServer.apiPut(dnsRecURL, delta, appData,
         function(err, data) {
             if (err) {
                 commonUtils.handleJSONResponse(err, response,
                     null);
             } else {
                 commonUtils.handleJSONResponse(err, response,
                     data);
             }
         });
 });
        function(error, data) {
           	if (error) {
                callback(error, null);
           		return;
           	} else {
        	    var gvrPutURL = '/global-vrouter-config/' + gvrId;
        	    var gvrConfigData = commonUtils.cloneObj(data);
        	    gvrConfigData["global-vrouter-config"]["vxlan_network_identifier_mode"] =
        	    	gvrPutData["global-vrouter-config"]["vxlan_network_identifier_mode"];
                gvrConfigData["global-vrouter-config"]["forwarding_mode"] =
                    gvrPutData["global-vrouter-config"]["forwarding_mode"];
                gvrConfigData["global-vrouter-config"]["flow_export_rate"] =
                    gvrPutData["global-vrouter-config"]["flow_export_rate"];
                gvrConfigData["global-vrouter-config"]
                    ["ecmp_hashing_include_fields"] =
                    gvrPutData["global-vrouter-config"]["ecmp_hashing_include_fields"];

                if ('flow_aging_timeout_list' in
                    gvrPutData["global-vrouter-config"]) {
                    gvrConfigData["global-vrouter-config"]
                                 ['flow_aging_timeout_list'] =
                        gvrPutData["global-vrouter-config"]
                                  ['flow_aging_timeout_list'];
                }
        	    gvrConfigData["global-vrouter-config"]["encapsulation_priorities"] = {};
        	    gvrConfigData["global-vrouter-config"]["encapsulation_priorities"]["encapsulation"] =
        	    	gvrPutData["global-vrouter-config"]["encapsulation_priorities"]["encapsulation"];
        	    var diffObj = jsonDiff.getConfigJSONDiff('global-vrouter-config', data, gvrConfigData);
                if(diffObj != null) {
        	        configApiServer.apiPut(gvrPutURL, diffObj, appData,
        	            function (error, data) {
		                	if (error) {
                                callback(error, null);
		                		return;
		                	} else {
                                callback(error, data);
		                	}
		                	return;
        	            });
           		} else {
                    callback(error, null);
                }
            }
        });