/// <summary>
        /// Method to process the pass syncronization event
        /// </summary>
        private void ProcessPassSynchronizationEvent()
        {
            try
            {
                StringBuilder sb = new StringBuilder();

                // construct a Jetstream service client
                JetstreamServiceClient client = new JetstreamServiceClient(JetstreamConfiguration.URL, JetstreamConfiguration.ApplicationAccessKey);

                // create the GetDeviceDefinitions request
                GetDeviceDefinitionsRequest deviceRequest = new GetDeviceDefinitionsRequest();

                // call the Jetstream GetDeviceDefinitions ReST endpoint
                GetDeviceDefinitionsResponse deviceResponse = client.GetDeviceDefinitions(deviceRequest);

                List<Device> devices = JetstreamEventRepository.GetDevices();

                //Get the passrfids to be added or updated
                List<User> users = JetstreamEventRepository.GetUser();
                List<string> passesAdd = users.Where(x => x.StatusId == 1).Select(x => x.PassRFID).Distinct().ToList();
                List<string> passesRemove = users.Where(x => x.StatusId == 0).Select(x => x.PassRFID).Distinct().ToList();

                foreach (var device in devices)
                {
                    var deviceModel = deviceResponse.DeviceDefinitionList.Where(x => x.Id == device.DeviceGuid).ToList();

                    if (deviceModel.Count > 0)
                    {
                        var jetstreamGetDeviceDefinitionsResponseDeviceDefinition = deviceModel.FirstOrDefault();
                        bool updatePass = jetstreamGetDeviceDefinitionsResponseDeviceDefinition != null && jetstreamGetDeviceDefinitionsResponseDeviceDefinition.CommandList.DeviceSpecificCommandList.DeviceSpecificCommand.ToList().Select(x => x.CommandName).Contains("UpdatePasses");

                        if (updatePass)
                        {
                            GetPassesRequest getPassRequest = new GetPassesRequest
                            {
                                LogicalDeviceId = device.LogicalDeviceId
                            };
                            DeviceSpecificCommandResponse getPassResponse = client.DeviceSpecificCommand(getPassRequest);

                            XmlDocument xmlDoc = new XmlDocument();
                            xmlDoc.LoadXml(getPassResponse.Body);

                            string xpath = System.Configuration.ConfigurationManager.AppSettings["xpath"];
                            var nodes = xmlDoc.SelectNodes(xpath);

                            if (nodes != null)
                                foreach (XmlNode childrenNode in nodes)
                                {
                                    var user = users.FirstOrDefault(x => x.PassRFID == childrenNode.Value);
                                    if (user == null)
                                    {
                                        passesRemove.Add(childrenNode.Value);
                                    }
                                    else
                                    {
                                        passesAdd.Remove(childrenNode.Value);
                                    }
                                }

                            UpdatePassesRequest updateRequest = new UpdatePassesRequest
                            {
                                LogicalDeviceId = device.LogicalDeviceId,
                                Add = passesAdd,
                                Remove = passesRemove
                            };

                            // call the Jetstream ResT endpoint 
                            client.DeviceSpecificCommand(updateRequest);
                        }
                    }
                    sb.AppendLine("ProcessPassSynchronizationEvent for Logical Device " + device.LogicalDeviceId);
                }

                // write the collected data to the event log
                EventLog.WriteEntry("JetstreamSDK ", sb.ToString());
            }
            catch (Exception)
            {
                // ignored
            }
        }
        public void DeviceSpecificCommandTest()
        {
            // construct a Jetstream service client
            JetstreamServiceClient client = new JetstreamServiceClient(JetstreamConfiguration.Url, JetstreamConfiguration.ApplicationAccessKey);

            try
            {
                // create and configure the request object
                GetPassesRequest request = new GetPassesRequest();
                request.LogicalDeviceId = LogicalDeviceId;

                // call the Jetstream ReST endpoint 
                client.DeviceSpecificCommand(request);
            }
            catch (Exception ex)
            {
                Assert.Fail(ex.ToString());
            }
        }