Exemple #1
0
        public RightNowService(IGlobalContext _gContext)
        {
            // Set up SOAP API request to retrieve Endpoint Configuration -
            // Get the SOAP API url of current site as SOAP Web Service endpoint
            EndpointAddress endPointAddr = new EndpointAddress(_gContext.GetInterfaceServiceUrl(ConnectServiceType.Soap));


            // Minimum required
            BasicHttpBinding binding2 = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);

            binding2.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

            // Optional depending upon use cases
            binding2.MaxReceivedMessageSize = 1024 * 1024;
            binding2.MaxBufferSize          = 1024 * 1024;
            binding2.MessageEncoding        = WSMessageEncoding.Mtom;

            // Create client proxy class
            _rnowClient = new RightNowSyncPortClient(binding2, endPointAddr);
            BindingElementCollection elements = _rnowClient.Endpoint.Binding.CreateBindingElements();

            elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
            _rnowClient.Endpoint.Binding = new CustomBinding(elements);

            // Add SOAP msg inspector behavior
            //_rnowClient.Endpoint.Behaviors.Add(new LogMsgBehavior());

            // Ask the Add-In framework the handle the session logic
            _gContext.PrepareConnectSession(_rnowClient.ChannelFactory);

            // Set up query and set request
            _rnowClientInfoHeader       = new ClientInfoHeader();
            _rnowClientInfoHeader.AppID = "Case Management Accelerator Services";
        }
Exemple #2
0
        public Boolean initializeLogger(IGlobalContext globalContext)
        {
            EndpointAddress endPointAddr = new EndpointAddress(globalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap));

            // Minimum required
            BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);

            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

            // Optional depending upon use cases
            binding.MaxReceivedMessageSize = 1024 * 1024;
            binding.MaxBufferSize          = 1024 * 1024;
            binding.MessageEncoding        = WSMessageEncoding.Mtom;

            // Create client proxy class
            RightNowSyncPortClient client = new RightNowSyncPortClient(binding, endPointAddr);

            // Ask the client to not send the timestamp
            BindingElementCollection elements = client.Endpoint.Binding.CreateBindingElements();

            elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
            client.Endpoint.Binding = new CustomBinding(elements);

            // Ask the Add-In framework the handle the session logic
            globalContext.PrepareConnectSession(client.ChannelFactory);

            this.client    = client;
            this.extObject = getExtension();
            return(true);
        }
 public bool Init()
 {
     try
     {
         bool             result       = false;
         EndpointAddress  endPointAddr = new EndpointAddress(gcontext.GetInterfaceServiceUrl(ConnectServiceType.Soap));
         BasicHttpBinding binding      = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
         binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
         binding.ReceiveTimeout         = new TimeSpan(0, 10, 0);
         binding.MaxReceivedMessageSize = 1048576; //1MB
         binding.SendTimeout            = new TimeSpan(0, 10, 0);
         clientORN = new RightNowSyncPortClient(binding, endPointAddr);
         BindingElementCollection elements = clientORN.Endpoint.Binding.CreateBindingElements();
         elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
         clientORN.Endpoint.Binding = new CustomBinding(elements);
         gcontext.PrepareConnectSession(clientORN.ChannelFactory);
         if (clientORN != null)
         {
             result = true;
         }
         return(result);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Error en INIT: " + ex.Message);
         return(false);
     }
 }
Exemple #4
0
        public bool Init()
        {
            try
            {
                bool            result       = false;
                EndpointAddress endPointAddr = new EndpointAddress(globalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap));
                // Minimum required
                BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
                binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
                binding.ReceiveTimeout         = new TimeSpan(0, 10, 0);
                binding.MaxReceivedMessageSize = 1048576; //1MB
                binding.SendTimeout            = new TimeSpan(0, 10, 0);
                // Create client proxy class
                clientRN = new RightNowSyncPortClient(binding, endPointAddr);
                // Ask the client to not send the timestamp
                BindingElementCollection elements = clientRN.Endpoint.Binding.CreateBindingElements();
                elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
                clientRN.Endpoint.Binding = new CustomBinding(elements);
                // Ask the Add-In framework the handle the session logic
                globalContext.PrepareConnectSession(clientRN.ChannelFactory);
                if (clientRN != null)
                {
                    result = true;
                }

                return(result);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return(false);
            }
        }
Exemple #5
0
            /// <summary>
            /// Create a log entry in the custom object PSLog$Log
            ///
            /// If this table does not exists, please retrieve the package from: https://tools.src.rightnow.com/spaces/logging/documents
            /// </summary>
            /// <param name="client">Extend the RightNow soap client</param>
            /// <param name="existingID">ID of the existing PSLog object</param>
            /// <param name="type">Optional (default=blank): application type causing the log m
            /// <param name="message">Optional (default=blank): human readable friendly message</param>essage</param>
            /// <param name="subtype">Optional (default=blank): friendly name of the application</param>
            /// <param name="source">Optional (default=blank): name of the current assembly or script</param>
            /// <param name="note">Optional (default=blank): additional details about the message</param>
            /// <param name="interfaceID">Optional (default=blank): the interface this error occurred on. (GlobalContext.InterfaceId)</param>
            /// <param name="severity">Optional (default=blank): mark the importance of the message</param>
            /// <param name="exception">Optional (default=blank): if populated the stack trace from the exception will be stored in the log</param>
            /// <param name="account">Optional (default=blank): reference to an Account</param>
            /// <param name="answer">Optional (default=blank): reference to an Answer</param>
            /// <param name="contact">Optional (default=blank): reference to a Contact</param>
            /// <param name="incident">Optional (default=blank): reference to an Incident</param>
            /// <param name="opportunity">Optional (default=blank): reference to an Opportunity</param>
            /// <param name="org">Optional (default=blank): reference to an Organization</param>
            /// <param name="task">Optional (default=blank): reference to a Task</param>
            /// <param name="customObjects">Optional (default=blank): an array of custom object references. the name of the object must match the name of the database column</param>
            /// <returns>ID of the newly created log object</returns>
            public static void UpdateLogAsync(this RightNowSyncPortClient client,
                                              int existingID,
                                              Type type                     = Type.None,
                                              string message                = null,
                                              string subtype                = null,
                                              string note                   = null,
                                              string source                 = null,
                                              int?interfaceID               = null,
                                              Severity severity             = Severity.None,
                                              Exception exception           = null,
                                              Account account               = null,
                                              Answer answer                 = null,
                                              Contact contact               = null,
                                              Incident incident             = null,
                                              Opportunity opportunity       = null,
                                              Organization org              = null,
                                              Task task                     = null,
                                              GenericObject[] customObjects = null)
            {
                BackgroundWorker asyncWorker = new BackgroundWorker();

                asyncWorker.DoWork             += delegate(object sender, DoWorkEventArgs e) { UpdateLog(client, existingID, type, message, subtype, note, source, interfaceID, severity, exception, account, answer, contact, incident, opportunity, org, task, customObjects); };
                asyncWorker.RunWorkerCompleted += delegate(object sender, RunWorkerCompletedEventArgs e) { if (UpdateLogAsyncCompleteEvent != null)
                                                                                                           {
                                                                                                               UpdateLogAsyncCompleteEvent();
                                                                                                           }
                };
                asyncWorker.RunWorkerAsync();
            }
        public RightNowService(IGlobalContext _gContext)
        {
            // Set up SOAP API request to retrieve Endpoint Configuration -
            // Get the SOAP API url of current site as SOAP Web Service endpoint
            EndpointAddress endPointAddr = new EndpointAddress(_gContext.GetInterfaceServiceUrl(ConnectServiceType.Soap));

            // Minimum required
            BasicHttpBinding binding2 = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
            binding2.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

            // Optional depending upon use cases
            binding2.MaxReceivedMessageSize = 5 * 1024 * 1024;
            binding2.MaxBufferSize = 5 * 1024 * 1024;
            binding2.MessageEncoding = WSMessageEncoding.Mtom;

            // Create client proxy class
            _rnowClient = new RightNowSyncPortClient(binding2, endPointAddr);
            BindingElementCollection elements = _rnowClient.Endpoint.Binding.CreateBindingElements();
            elements.Find<SecurityBindingElement>().IncludeTimestamp = false;
            _rnowClient.Endpoint.Binding = new CustomBinding(elements);

            // Add SOAP msg inspector behavior
            //_rnowClient.Endpoint.Behaviors.Add(new LogMsgBehavior());

            // Ask the Add-In framework the handle the session logic
            _gContext.PrepareConnectSession(_rnowClient.ChannelFactory);

            // Set up query and set request
            _rnowClientInfoHeader = new ClientInfoHeader();
            _rnowClientInfoHeader.AppID = "Case Management Accelerator Services";
        }
Exemple #7
0
 public SCLogWrapper(string productExtSignature = null, string productExtName = null, string businessFunction = null)
     : base(productExtName, productExtName, default(DateTime), logLevel.Debug, businessFunction)
 {
     _rnowClient       = ConfigurationSetting.client;
     _businessFunction = businessFunction;
     base.initializeLogger(_rnowClient);
     _host = ConfigurationSetting.host;
 }
Exemple #8
0
        public Boolean initializeLogger(RightNowSyncPortClient client)
        {
            // Ask the client to not send the timestamp
            BindingElementCollection elements = client.Endpoint.Binding.CreateBindingElements();

            elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
            client.Endpoint.Binding = new CustomBinding(elements);

            this.client    = client;
            this.extObject = getExtension();
            return(true);
        }
Exemple #9
0
        public static IRightNowConnectService GetService()
        {
            if (_rightnowConnectService != null)
            {
                return(_rightnowConnectService);
            }

            try
            {
                lock (_sync)
                {
                    if (_rightnowConnectService == null)
                    {
                        // Initialize client with current interface soap url
                        string          url      = IOTClouddAutoClientAddIn.GlobalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap);
                        EndpointAddress endpoint = new EndpointAddress(url);
                        //EndpointAddress endpoint = new EndpointAddress("https://day04-16500-sql-80h.qb.lan/cgi-bin/day04_16500_sql_80h.cfg/services/soap");

                        BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
                        binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

                        // Optional depending upon use cases
                        binding.MaxReceivedMessageSize = 1024 * 1024;
                        binding.MaxBufferSize          = 1024 * 1024;
                        binding.MessageEncoding        = WSMessageEncoding.Mtom;

                        _rightNowClient = new RightNowSyncPortClient(binding, endpoint);


                        // Initialize credentials for rightnow client

                        /*var rightNowConnectUser = ConfigurationManager.AppSettings["rightnow_user"];
                         * var rightNowConnectPassword = ConfigurationManager.AppSettings["rightnow_password"];
                         *
                         * _rightNowClient.ClientCredentials.UserName.UserName = "******";
                         * _rightNowClient.ClientCredentials.UserName.Password = "******";*/

                        BindingElementCollection elements = _rightNowClient.Endpoint.Binding.CreateBindingElements();
                        elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
                        _rightNowClient.Endpoint.Binding = new CustomBinding(elements);
                        _rightnowConnectService          = new RightNowConnectService();
                    }
                }
            }
            catch (Exception e)
            {
                _rightnowConnectService = null;
                MessageBox.Show(ExceptionMessages.RIGHTNOW_CONNECT_SERVICE_NOT_INITIALIZED, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return(_rightnowConnectService);
        }
        public static IRightNowConnectService GetService()
        {
            if (_rightnowConnectService != null)
            {
                return _rightnowConnectService;
            }

            try
            {
                lock (_sync)
                {
                    if (_rightnowConnectService == null)
                    {
                        // Initialize client with current interface soap url 
                        string url = SalesCloudAutoClientAddIn.GlobalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap);
                        EndpointAddress endpoint = new EndpointAddress(url);
                        //EndpointAddress endpoint = new EndpointAddress("https://osc-svc-integration-qb1--dvp.qb.lan/cgi-bin/osc_svc_integration_qb1.cfg/services/soap");

                        BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
                        binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

                        // Optional depending upon use cases
                        binding.MaxReceivedMessageSize = 1024 * 1024;
                        binding.MaxBufferSize = 1024 * 1024;
                        binding.MessageEncoding = WSMessageEncoding.Mtom;

                        _rightNowClient = new RightNowSyncPortClient(binding, endpoint);
                        

                        // Initialize credentials for rightnow client
                        /*var rightNowConnectUser = ConfigurationManager.AppSettings["rightnow_user"];
                        var rightNowConnectPassword = ConfigurationManager.AppSettings["rightnow_password"];

                        _rightNowClient.ClientCredentials.UserName.UserName = rightNowConnectUser;
                        _rightNowClient.ClientCredentials.UserName.Password = rightNowConnectPassword;*/

                        BindingElementCollection elements = _rightNowClient.Endpoint.Binding.CreateBindingElements();
                        elements.Find<SecurityBindingElement>().IncludeTimestamp = false;
                        _rightNowClient.Endpoint.Binding = new CustomBinding(elements);
                        _rightnowConnectService = new RightNowConnectService();                        
                    }

                }
            }
            catch (Exception e)
            {
                _rightnowConnectService = null;
                MessageBox.Show(OSCExceptionMessages.RightNowConnectServiceNotInitialized, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return _rightnowConnectService;
        }
Exemple #11
0
        public static void Main(string[] args)
        {
            BasicHttpBinding basicHttpBinding = null;
            EndpointAddress endpointAddress = null;
            

            basicHttpBinding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
            endpointAddress = new EndpointAddress(new Uri("url-soap-aqui"));

            try
            {
                System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12;

                ServiceReference1.RightNowSyncPortClient syncClient = new RightNowSyncPortClient(basicHttpBinding,endpointAddress);
                syncClient.ClientCredentials.UserName.UserName = "******";
                syncClient.ClientCredentials.UserName.Password = "******";

                Contact contact = new Contact();
                ID cID = new ID();
                cID.id = 0;
                cID.idSpecified = true;
                contact.ID = cID;

                var api = new APIAccessRequestHeader();
                GetProcessingOptions getProcessiongOptions = new GetProcessingOptions();
                getProcessiongOptions.FetchAllNames = false;
                ClientInfoHeader clientInfoHeader = new ClientInfoHeader();
                clientInfoHeader.AppID = "Read Contact";
                RNObject[] orgObjects = new RNObject[] { contact };
                RNObject[] readReturn;

                var resp = syncClient.GetAsync(clientInfoHeader, api,
                    orgObjects, getProcessiongOptions);
                
                
                readReturn  = resp.Result.RNObjectsResult;
                
                Contact readContact = (Contact)readReturn[0];

                Console.WriteLine("Lookup name: " + readContact.LookupName);
                Console.WriteLine("Login: "******"Digite \"ENTER\" para sair...");
            Console.ReadLine();
        }
        public static RightNowConnectService GetService(IGlobalContext _globalContext)
        {
            if (_rightnowConnectService != null)
            {
                return(_rightnowConnectService);
            }

            try
            {
                lock (_sync)
                {
                    if (_rightnowConnectService == null)
                    {
                        // Initialize client with current interface soap url
                        string url = _globalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap);

                        EndpointAddress endpoint = new EndpointAddress(_globalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap));

                        BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
                        binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

                        // Optional depending upon use cases
                        binding.MaxReceivedMessageSize = 1024 * 1024;
                        binding.MaxBufferSize          = 1024 * 1024;
                        binding.MessageEncoding        = WSMessageEncoding.Mtom;

                        _rightNowClient = new RightNowSyncPortClient(binding, endpoint);

                        BindingElementCollection elements = _rightNowClient.Endpoint.Binding.CreateBindingElements();
                        elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
                        _rightNowClient.Endpoint.Binding = new CustomBinding(elements);
                        WorkspaceAddIn._globalContext.PrepareConnectSession(_rightNowClient.ChannelFactory);

                        _rightnowConnectService = new RightNowConnectService();
                    }
                }
            }
            catch (Exception e)
            {
                _rightnowConnectService = null;

                //  WorkspaceAddIn.InfoLog(e.Message);
            }

            return(_rightnowConnectService);
        }
Exemple #13
0
            /// <summary>
            /// Create a log entry in the custom object PSLog$Log
            ///
            /// If this table does not exists, please retrieve the package from: https://tools.src.rightnow.com/spaces/logging/documents
            /// </summary>
            /// <param name="client">Extend the RightNow soap client</param>
            /// <param name="existingID">ID of the existing PSLog object</param>
            /// <param name="type">Optional (default=blank): application type causing the log m
            /// <param name="message">Optional (default=blank): human readable friendly message</param>essage</param>
            /// <param name="subtype">Optional (default=blank): friendly name of the application</param>
            /// <param name="source">Optional (default=blank): name of the current assembly or script</param>
            /// <param name="note">Optional (default=blank): additional details about the message</param>
            /// <param name="interfaceID">Optional (default=blank): the interface this error occurred on. (GlobalContext.InterfaceId)</param>
            /// <param name="severity">Optional (default=blank): mark the importance of the message</param>
            /// <param name="exception">Optional (default=blank): if populated the stack trace from the exception will be stored in the log</param>
            /// <param name="account">Optional (default=blank): reference to an Account</param>
            /// <param name="answer">Optional (default=blank): reference to an Answer</param>
            /// <param name="contact">Optional (default=blank): reference to a Contact</param>
            /// <param name="incident">Optional (default=blank): reference to an Incident</param>
            /// <param name="opportunity">Optional (default=blank): reference to an Opportunity</param>
            /// <param name="org">Optional (default=blank): reference to an Organization</param>
            /// <param name="task">Optional (default=blank): reference to a Task</param>
            /// <param name="customObjects">Optional (default=blank): an array of custom object references. the name of the object must match the name of the database column</param>
            /// <returns>ID of the newly created log object</returns>
            public static void UpdateLog(this RightNowSyncPortClient client,
                                         int existingID,
                                         Type type                     = Type.None,
                                         string message                = null,
                                         string subtype                = null,
                                         string note                   = null,
                                         string source                 = null,
                                         int?interfaceID               = null,
                                         Severity severity             = Severity.None,
                                         Exception exception           = null,
                                         Account account               = null,
                                         Answer answer                 = null,
                                         Contact contact               = null,
                                         Incident incident             = null,
                                         Opportunity opportunity       = null,
                                         Organization org              = null,
                                         Task task                     = null,
                                         GenericObject[] customObjects = null)
            {
                try
                {
                    GenericObject go = CreateLogGenericObject(type, subtype, message, note, source, interfaceID, severity, exception, account, answer, contact, incident, opportunity, org, task, customObjects);
                    go.ID = new ID
                    {
                        id          = existingID,
                        idSpecified = true
                    };

                    client.Update(
                        new ClientInfoHeader {
                        AppID = "PSLog"
                    },
                        new RNObject[] { go },
                        new UpdateProcessingOptions {
                        SuppressExternalEvents = true, SuppressRules = false
                    });
                }
                catch (Exception ex)
                {
                    if (LogFailedEvent != null)
                    {
                        LogFailedEvent(ex);
                    }
                }
            }
Exemple #14
0
        public static IRightNowConnectService GetService()
        {
            if (_rightnowConnectService != null)
            {
                return(_rightnowConnectService);
            }

            try
            {
                lock (_sync)
                {
                    if (_rightnowConnectService == null)
                    {
                        // Initialize client with current interface soap url
                        string           url      = OutOfOfficeClientAddIn.GlobalContext.GetInterfaceServiceUrl(ConnectServiceType.Soap);
                        EndpointAddress  endpoint = new EndpointAddress(url);
                        BasicHttpBinding binding  = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);
                        binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

                        // Optional depending upon use cases
                        binding.MaxReceivedMessageSize = 1024 * 1024;
                        binding.MaxBufferSize          = 1024 * 1024;
                        binding.MessageEncoding        = WSMessageEncoding.Mtom;

                        _rightNowClient = new RightNowSyncPortClient(binding, endpoint);

                        BindingElementCollection elements = _rightNowClient.Endpoint.Binding.CreateBindingElements();
                        elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
                        _rightNowClient.Endpoint.Binding = new CustomBinding(elements);
                        _rightnowConnectService          = new RightNowConnectService();
                    }
                }
            }
            catch (Exception e)
            {
                _rightnowConnectService = null;
                MessageBox.Show(OOOExceptionMessages.RightNowConnectServiceNotInitialized, Common.Common.ErrorLabel, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

            return(_rightnowConnectService);
        }
Exemple #15
0
        /// <summary>
        /// Method which is invoked by the AddIn framework when the control is created.
        /// </summary>
        /// <param name="inDesignMode">Flag which indicates if the control is being drawn on the Workspace Designer. (Use this flag to determine if code should perform any logic on the workspace record)</param>
        /// <param name="RecordContext">The current workspace record context.</param>
        /// <returns>The control which implements the IWorkspaceComponent2 interface.</returns>
        public IWorkspaceComponent2 CreateControl(bool inDesignMode, IRecordContext RecordContext)
        {
            if (!ConfigurationSetting.configVerbPerfect)
            {
                if (!ConfigurationSetting.loginUserIsAdmin)
                {
                    MessageBox.Show("Contact Search Add-In is not initialized properly. \nPlease contact your system administrator.\n You are now logged out.");
                    _globalContext.Logout();
                }
                else // don't want to logout admin
                {
                    MessageBox.Show("Contact Search Add-In is not loaded because of invalid configuration verb.");
                    return(new ContactWorkspaceAddIn(inDesignMode, RecordContext, _globalContext));
                }
            }
            _rContext = RecordContext;
            if (!inDesignMode && RecordContext != null)
            {
                //Get configuration
                ConfigurationSetting instance = ConfigurationSetting.Instance(_globalContext);
                _usr    = ConfigurationSetting.username;
                _pwd    = ConfigurationSetting.password;
                _client = ConfigurationSetting.client;
                _rnSrv  = ConfigurationSetting.rnSrv;
                _log    = ConfigurationSetting.logWrap;

                Accelerator.EBS.SharedServices.ContactModel.ServiceProvider      = ConfigurationSetting.EBSProvider;
                Accelerator.EBS.SharedServices.ContactModel.ListLookupURL        = ConfigurationSetting.LookupContactList_WSDL;
                Accelerator.EBS.SharedServices.ContactModel.ServiceUsername      = String.IsNullOrEmpty(_usr) ? "ebusiness" : _usr;
                Accelerator.EBS.SharedServices.ContactModel.ServicePassword      = String.IsNullOrEmpty(_pwd) ? "password" : _pwd;
                Accelerator.EBS.SharedServices.ContactModel.ServiceClientTimeout = ConfigurationSetting.EBSServiceTimeout;
                Accelerator.EBS.SharedServices.ContactModel.InitEBSProvider();

                Contact_Search_Report_ID = ConfigurationSetting.contactSearchReportID;
            }
            _wsAddIn = new ContactWorkspaceAddIn(inDesignMode, RecordContext, _globalContext);
            _wsAddIn._contactSearchReportId = Contact_Search_Report_ID;
            _wsAddIn._rnSrv = _rnSrv;
            _wsAddIn._log   = _log;
            return(_wsAddIn);
        }
        private void SetupRightNowClient()
        {
            var configBindings = ConfigurationManager.GetSection("system.serviceModel/bindings") as
                                 System.ServiceModel.Configuration.BindingsSection;
            var configClient = ConfigurationManager.GetSection("system.serviceModel/client") as
                               System.ServiceModel.Configuration.ClientSection;

            var binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);

            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
            binding.MaxBufferSize          = int.MaxValue;
            binding.MaxReceivedMessageSize = int.MaxValue;
            binding.MaxBufferPoolSize      = int.MaxValue;

            var endPointAddr = new EndpointAddress(configClient.Endpoints[0].Address);

            _client = new RightNowSyncPortClient(binding, endPointAddr);
            if (_client.ClientCredentials != null)
            {
                _client.ClientCredentials.UserName.UserName = _user;
                _client.ClientCredentials.UserName.Password = _pass;
            }

            BindingElementCollection elements = _client.Endpoint.Binding.CreateBindingElements();

            elements.Find <SecurityBindingElement>().IncludeTimestamp        = false;
            elements.Find <TransportBindingElement>().MaxReceivedMessageSize = int.MaxValue;
            elements.Find <TransportBindingElement>().MaxBufferPoolSize      = int.MaxValue;

            _client.Endpoint.Binding                = new CustomBinding(elements);
            _client.Endpoint.Binding.SendTimeout    = configBindings.CustomBinding.ConfiguredBindings[0].SendTimeout;
            _client.Endpoint.Binding.ReceiveTimeout = configBindings.CustomBinding.ConfiguredBindings[0].ReceiveTimeout;
            _client.Endpoint.Binding.OpenTimeout    = configBindings.CustomBinding.ConfiguredBindings[0].OpenTimeout;
            _client.Endpoint.Binding.CloseTimeout   = configBindings.CustomBinding.ConfiguredBindings[0].CloseTimeout;

            _clientInfoHeader = new ClientInfoHeader {
                AppID = "AmberLeaf Data Integrator"
            };
        }
Exemple #17
0
        static RightNowSyncPortClient SetupConnection(string endpointAddress, string user, string password)
        {
            BasicHttpBinding binding = new BasicHttpBinding(BasicHttpSecurityMode.TransportWithMessageCredential);

            binding.MaxBufferPoolSize      = 20000000;
            binding.MaxBufferSize          = 20000000;
            binding.MaxReceivedMessageSize = 20000000;
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
            EndpointAddress endPointAddress = new EndpointAddress(endpointAddress);

            var service = new RightNowSyncPortClient(binding, endPointAddress);

            service.ClientCredentials.UserName.UserName = user;
            service.ClientCredentials.UserName.Password = password;

            BindingElementCollection elements = service.Endpoint.Binding.CreateBindingElements();

            elements.Find <SecurityBindingElement>().IncludeTimestamp = false;
            service.Endpoint.Binding = new CustomBinding(elements);

            return(service);
        }
 public Program()
 {
     _Service = new RightNowSyncPortClient();
     _Service.ClientCredentials.UserName.UserName = "******";
     _Service.ClientCredentials.UserName.Password = "******";
 }
Exemple #19
0
        static void GetAllContacts(RightNowSyncPortClient client)
        {
            Contact contactTemplate = new Contact();

            contactTemplate.Phones = new Phone[] { };

            UpdateProcessingOptions options = new UpdateProcessingOptions();

            RNObject[] objectTemplates = new RNObject[] { contactTemplate };
            bool       hasMoreResults  = true;

            int currentOffset = 0;

            do
            {
                var resultTable = client.QueryObjects(s_clientInfoHeader, String.Format("SELECT Contact FROM Contact LIMIT {0} OFFSET {1}", PageSize, currentOffset), objectTemplates, PageSize);

                RNObject[] rnObjects = resultTable[0].RNObjectsResult;

                List <RNObject> updatedObjects = new List <RNObject>();

                foreach (RNObject obj in rnObjects)
                {
                    Contact contact = (Contact)obj;
                    Phone[] phones  = contact.Phones;
                    if (phones != null)
                    {
                        List <Phone> newPhoneNumbers = new List <Phone>();

                        foreach (Phone phone in phones)
                        {
                            var sanitizedNumber = SanitizeNumber(phone.Number);

                            System.Console.WriteLine(contact.Name.Last + " - " + phone.Number + " (" + phone.RawNumber + ") - " + sanitizedNumber);
                            if (sanitizedNumber != phone.Number)
                            {
                                //need to create a new Phone object, if we reuse/update the existing one, the update won't work.
                                var newNumber = new Phone()
                                {
                                    action          = ActionEnum.update,
                                    actionSpecified = true,
                                    Number          = SanitizeNumber(phone.Number),
                                    PhoneType       = phone.PhoneType
                                };
                                newPhoneNumbers.Add(newNumber);
                            }
                        }
                        if (newPhoneNumbers.Count > 0)
                        {
                            updatedObjects.Add(new Contact()
                            {
                                ID     = contact.ID,
                                Phones = newPhoneNumbers.ToArray(),
                            });
                        }
                    }
                }

                if (updatedObjects.Count > 0)
                {
                    client.Update(s_clientInfoHeader, updatedObjects.ToArray(), options);
                }

                hasMoreResults = resultTable[0].Paging.ReturnedCount == PageSize;
                currentOffset  = currentOffset + resultTable[0].Paging.ReturnedCount;

                Console.WriteLine(String.Format("Processed {0} contacts", currentOffset));
            } while (hasMoreResults);
        }
        /// <summary>
        /// Method which is invoked by the AddIn framework when the control is created.
        /// </summary>
        /// <param name="inDesignMode">Flag which indicates if the control is being drawn on the Workspace Designer. (Use this flag to determine if code should perform any logic on the workspace record)</param>
        /// <param name="RecordContext">The current workspace record context.</param>
        /// <returns>The control which implements the IWorkspaceComponent2 interface.</returns>
        public IWorkspaceComponent2 CreateControl(bool inDesignMode, IRecordContext RecordContext)
        {
            if (!ConfigurationSetting.configVerbPerfect)
            {
                if (!ConfigurationSetting.loginUserIsAdmin)
                {
                    MessageBox.Show("Contact Search Add-In is not initialized properly. \nPlease contact your system administrator.\n You are now logged out.");
                    _globalContext.Logout();
                }
                else // don't want to logout admin
                {
                    MessageBox.Show("Contact Search Add-In is not loaded because of invalid configuration verb.");
                    return new ContactWorkspaceAddIn(inDesignMode, RecordContext, _globalContext);
                }
            }
            _rContext = RecordContext;
            if (!inDesignMode && RecordContext != null)
            {
                //Get configuration
                ConfigurationSetting instance = ConfigurationSetting.Instance(_globalContext);
                _usr = ConfigurationSetting.username;
                _pwd = ConfigurationSetting.password;
                _client = ConfigurationSetting.client;
                _rnSrv = ConfigurationSetting.rnSrv;
                _log = ConfigurationSetting.logWrap;

                Accelerator.Siebel.SharedServices.ContactModel.ServiceProvider = ConfigurationSetting.SiebelProvider;
                Accelerator.Siebel.SharedServices.ContactModel.ListLookupURL = ConfigurationSetting.LookupContactList_WSDL;
                Accelerator.Siebel.SharedServices.ContactModel.ServiceUsername = String.IsNullOrEmpty(_usr) ? "ebusiness" : _usr;
                Accelerator.Siebel.SharedServices.ContactModel.ServicePassword = String.IsNullOrEmpty(_pwd) ? "password" : _pwd;
                Accelerator.Siebel.SharedServices.ContactModel.ServiceClientTimeout = ConfigurationSetting.SiebelServiceTimeout;
                Accelerator.Siebel.SharedServices.ContactModel.InitSiebelProvider();

                Contact_Search_Report_ID = ConfigurationSetting.contactSearchReportID;
            }
            _wsAddIn = new ContactWorkspaceAddIn(inDesignMode, RecordContext, _globalContext);
            _wsAddIn._contactSearchReportId = Contact_Search_Report_ID;
            _wsAddIn._rnSrv = _rnSrv;
            _wsAddIn._log = _log;
            return _wsAddIn;
        }
Exemple #21
0
 public QueryCSV()
 {
     _client = new RightNowSyncPortClient();
     _client.ClientCredentials.UserName.UserName = "******";
     _client.ClientCredentials.UserName.Password = "******";
 }
Exemple #22
0
        //Retrieve configuration verb via RNow SOAP and Parse it as JSON
        public static bool getConfigVerb(IGlobalContext _gContext)
        {
            //Init the RightNow Service
            rnSrv  = new RightNowService(_gContext);
            client = rnSrv._rnowClient;
            string logMessage, logNote;

            //Query configuration from Cloud Service
            String query = "select Configuration.Value from Configuration where lookupname='CUSTOM_CFG_Accel_Ext_Integrations'";

            String[] rowData = null;
            try
            {
                rowData = rnSrv.queryData(query);
            }
            catch (Exception ex)
            {
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb is not set properly. ";
                    logNote    = "Error in query config 'CUSTOM_CFG_Accel_Ext_Integrations' from Cloud Service. Error query: " + query + "; Error Message: " + ex.Message;
                    logWrap.ErrorLog();
                }
                MessageBox.Show("Integration Configuration verb is not set properly. Please contact your system administrator. ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return(false);
            }

            // Check whether configuration is set
            if (rowData.Length == 0)
            {
                String message = "Integration Configuration verb does not exist. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not exist.";
                    logNote    = "CUSTOM_CFG_Accel_Ext_Integrations is missing in Configuration Settings.";
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }

            // Get configuration value
            string jsonString = rowData[0];

            jsonString = jsonString.Replace("\"\"", "\"");

            // get the AdminProfileID
            // make sure it is located before "hosts" (if this is also missing, well, the config
            // verb is in bad shape.
            // can't use "{"AdminProfileID" because { can be followed by newline in config verb
            if (jsonString.Contains("AdminProfileID") &&
                jsonString.Contains("hosts") &&
                jsonString.IndexOf("AdminProfileID") < jsonString.IndexOf("hosts"))
            {
                // get the AdminProfileID value
                AdminProfileID = Convert.ToInt32(jsonString.Split(',')[0].Split(':')[1]);
            }
            else
            {
                String message = "Integration Configuration verb does not contain AdminProfileID as first member of JSON.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not contain AdminProfileID as first member of JSON";
                    logNote    = "The string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }

                AdminProfileID = 0;
                return(false);
            }

            loginUserIsAdmin = _gContext.ProfileId == ConfigurationSetting.AdminProfileID;
            // Parse endpoint configuration
            int i = jsonString.IndexOf("[");
            int j = jsonString.LastIndexOf("]");

            if (i < 0 || i > j)
            {
                String message = "Siebel Integration Configuration verb is not set properly. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Accelerator Integration Configuration verb [] array is not set properly.";
                    logNote    = "Configuration cannot be parsed, the string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }
            string jsonTrim = jsonString.Substring(i, j - i + 1);

            /*  Using Serializer to parse Configuration JSON String
             *  The parsing is based on the classes definition in the following region
             */
            var serializer = new JavaScriptSerializer();
            List <ConfigurationVerb> configVerbArray = null;

            try
            {
                configVerbArray = serializer.Deserialize <List <ConfigurationVerb> >(jsonTrim);
            }
            catch (System.ArgumentException ex)
            {
                String message = "Accelerator Integration Configuration verb JSON is invalid. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                logMessage = "Accelerator Integration Configuration verb JSON is invalid.";
                logNote    = "Configuration cannot be parsed, the string is: " + jsonString;
                logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);

                return(false);
            }
            bool found = false;

            // Get the server url of current site
            string _interfaceUrl = _gContext.InterfaceURL;

            string[] splittedInterfaceUrl = _interfaceUrl.Split('/');
            string   _configServerUrl     = splittedInterfaceUrl[2];

            // Get values in configuration settings
            foreach (ConfigurationVerb configVerb in configVerbArray)
            {
                if (configVerb.rnt_host.Contains(_configServerUrl))
                {
                    string extBaseUrl = configVerb.integration.ext_base_url;

                    //Get Siebel server type and initiate Siebel Provider
                    string serverType = configVerb.integration.server_type;
                    SiebelProvider = serverTypeToProvider(serverType);

                    username               = configVerb.integration.username;
                    password               = configVerb.integration.password;
                    siebelServiceUserId    = configVerb.integration.siebel_service_user_id;
                    siebelDefaultSrOwnerId = configVerb.integration.siebel_default_sr_owner_id;
                    SiebelServiceTimeout   = configVerb.integration.SiebelServiceTimeout;
                    log_level              = configVerb.integration.log_level;
                    assignLogLevelEnum();
                    rnt_host = configVerb.rnt_host;
                    //Prepare the Service Request Type Mapping
                    if (configVerb.integration.request_type_mapping != null)
                    {
                        requestTypeMapping = setRequestTypeMapping(configVerb.integration.request_type_mapping);
                    }

                    incidentsByContactReportID = configVerb.integration.incidentsByContactReportID;
                    contactSearchReportID      = configVerb.integration.contactSearchReportID;

                    uspsUsername             = configVerb.postalValidation.username;
                    ext_address_validate_url = configVerb.postalValidation.ext_address_validate_url;

                    Dictionary <String, Service> extServices = configVerb.integration.ext_services;
                    foreach (KeyValuePair <String, Service> extService in extServices)
                    {
                        switch (extService.Key)
                        {
                        case "service_request_detail":
                            if (extService.Value.create != null)
                            {
                                CreateSR_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            if (extService.Value.update != null)
                            {
                                UpdateSR_WSDL = extBaseUrl + extService.Value.update.relative_path;
                            }
                            if (extService.Value.read != null)
                            {
                                LookupSR_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "service_request_list":
                            if (extService.Value.read != null)
                            {
                                LookupSRbyContactPartyID_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_order_detail":
                            if (extService.Value.create != null)
                            {
                                CreateRepair_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            if (extService.Value.update != null)
                            {
                                UpdateRepair_WSDL = extBaseUrl + extService.Value.update.relative_path;
                            }
                            if (extService.Value.read != null)
                            {
                                LookupRepair_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_order_list":
                            if (extService.Value.read != null)
                            {
                                RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "service_request_note":
                            if (extService.Value.create != null)
                            {
                                CreateInteraction_WSDL = extBaseUrl + extService.Value.create.relative_path;
                            }
                            break;

                        case "contact_list":
                            if (extService.Value.read != null)
                            {
                                LookupContactList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "item_list":
                            if (extService.Value.read != null)
                            {
                                ItemList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "entitlement_list":
                            if (extService.Value.read != null)
                            {
                                EntitlementList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_logistics_list":
                            if (extService.Value.read != null)
                            {
                                RepairLogisticsList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;

                        case "repair_list":
                            if (extService.Value.read != null)
                            {
                                RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                            }
                            break;
                        }
                    }
                    found = true;
                    break;
                }
            }

            // If current site is not set in configuration.
            if (!found)
            {
                String message = "The current host, " + _configServerUrl + ", is not present in Integration Configuration verb.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Current Host is not present in Integration Configuration verb. ";
                    logNote    = "Current site is not set in configuration CUSTOM_CFG_Accel_Ext_Integrations. The configuration verb is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return(false);
            }

            configVerbPerfect = true;
            return(true);
        }
Exemple #23
0
 public RightNowTestHarness()
 {
     this.client = new RightNowSyncPortClient();
     this.client.ClientCredentials.UserName.UserName = "******";
     this.client.ClientCredentials.UserName.Password = "******";
 }
 public sampleClient()
 {
     _service = new RightNowSyncPortClient();
     _service.ClientCredentials.UserName.UserName = "******";
     _service.ClientCredentials.UserName.Password = "******";
 }
Exemple #25
0
            /// <summary>
            /// Create a log entry in the custom object PSLog$Log
            ///
            /// If this table does not exists, please retrieve the package from: https://tools.src.rightnow.com/spaces/logging/documents
            /// </summary>
            /// <param name="client">Extend the RightNow soap client</param>
            /// <param name="type">Required: application type causing the log message</param>
            /// <param name="message">Required: human readable friendly message</param>
            /// <param name="subtype">Required: friendly name of the application</param>
            /// <param name="note">Optional (default=blank): additional details about the message</param>
            /// <param name="source">Optional (default=current assembly name): the name of the script that is executing</param>
            /// <param name="interfaceID">Optional (default=blank): the interface this error occurred on. (GlobalContext.InterfaceId)</param>
            /// <param name="severity">Optional (default=blank): mark the importance of the message</param>
            /// <param name="exception">Optional (default=blank): if populated the stack trace from the exception will be stored in the log</param>
            /// <param name="account">Optional (default=blank): reference to an Account</param>
            /// <param name="answer">Optional (default=blank): reference to an Answer</param>
            /// <param name="contact">Optional (default=blank): reference to a Contact</param>
            /// <param name="incident">Optional (default=blank): reference to an Incident</param>
            /// <param name="opportunity">Optional (default=blank): reference to an Opportunity</param>
            /// <param name="org">Optional (default=blank): reference to an Organization</param>
            /// <param name="task">Optional (default=blank): reference to a Task</param>
            /// <param name="customObjects">Optional (default=blank): an array of custom object references. the name of the object must match the name of the database column</param>
            /// <returns>ID of the newly created log object</returns>
            public static int CreateLog(this RightNowSyncPortClient client,
                                        Type type,
                                        string message,
                                        string subtype          = null,
                                        string note             = null,
                                        string source           = null,
                                        int?interfaceID         = null,
                                        Severity severity       = Severity.None,
                                        Exception exception     = null,
                                        Account account         = null,
                                        Answer answer           = null,
                                        Contact contact         = null,
                                        Incident incident       = null,
                                        Opportunity opportunity = null,
                                        Organization org        = null,
                                        Task task = null,
                                        GenericObject[] customObjects = null)
            {
                #region sanity checks
                if (type == Type.None)
                {
                    throw new Exception("Type can not be None when creating a new Log entry");
                }

                if (string.IsNullOrWhiteSpace(message))
                {
                    throw new Exception("Message can not be empty");
                }
                #endregion

                try
                {
                    if (source == null)
                    {
                        source = Assembly.GetExecutingAssembly().ManifestModule.Name + " (" + Assembly.GetExecutingAssembly().GetName().Version + ")";
                    }

                    GenericObject go = CreateLogGenericObject(type, subtype, message, note, source, interfaceID, severity, exception, account, answer, contact, incident, opportunity, org, task, customObjects);

                    RNObject[] results = client.Create(
                        new ClientInfoHeader {
                        AppID = "PSLog"
                    },
                        new RNObject[] { go },
                        new CreateProcessingOptions {
                        SuppressExternalEvents = true, SuppressRules = false
                    });

                    if (results == null || results.Length == 0)
                    {
                        return(0);
                    }
                    else
                    {
                        return((int)results[0].ID.id);
                    }
                }
                catch (Exception ex)
                {
                    if (LogFailedEvent != null)
                    {
                        LogFailedEvent(ex);
                    }

                    return(0);
                }
            }
 // Initialize CWSS
 public static void initCWSS(IGlobalContext _gContext)
 {
     rnSrv = new RightNowService(_gContext);
     client = rnSrv._rnowClient;
 }
Exemple #27
0
 // Initialize CWSS
 public static void initCWSS(IGlobalContext _gContext)
 {
     rnSrv  = new RightNowService(_gContext);
     client = rnSrv._rnowClient;
 }
        //Retrieve configuration verb via RNow SOAP and Parse it as JSON
        public static bool getConfigVerb(IGlobalContext _gContext)
        {
            //Init the RightNow Service
            rnSrv = new RightNowService(_gContext);
            client = rnSrv._rnowClient;
            string logMessage, logNote;

            //Query configuration from Cloud Service
            String query = "select Configuration.Value from Configuration where lookupname='CUSTOM_CFG_Accel_Ext_Integrations'";
            String[] rowData = null;
            try
            {
                rowData = rnSrv.queryData(query);
            }
            catch (Exception ex)
            {
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb is not set properly. ";
                    logNote = "Error in query config 'CUSTOM_CFG_Accel_Ext_Integrations' from Cloud Service. Error query: " + query + "; Error Message: " + ex.Message;
                    logWrap.ErrorLog();
                }
                MessageBox.Show("Integration Configuration verb is not set properly. Please contact your system administrator. ", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }

            // Check whether configuration is set
            if (rowData.Length == 0)
            {
                String message = "Integration Configuration verb does not exist. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not exist.";
                    logNote = "CUSTOM_CFG_Accel_Ext_Integrations is missing in Configuration Settings.";
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }
            
            // Get configuration value
            string jsonString = rowData[0];
            jsonString = jsonString.Replace("\"\"", "\"");
           
            // get the AdminProfileID
            // make sure it is located before "hosts" (if this is also missing, well, the config
            // verb is in bad shape.
            // can't use "{"AdminProfileID" because { can be followed by newline in config verb       
            if (jsonString.Contains("AdminProfileID") && 
                jsonString.Contains("hosts") &&
                jsonString.IndexOf("AdminProfileID") < jsonString.IndexOf("hosts"))
            {              
                // get the AdminProfileID value
                AdminProfileID = Convert.ToInt32(jsonString.Split(',')[0].Split(':')[1]);
            }
            else
            {
                String message = "Integration Configuration verb does not contain AdminProfileID as first member of JSON.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Integration Configuration verb does not contain AdminProfileID as first member of JSON";
                    logNote = "The string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }

                AdminProfileID = 0;
                return false;
                
            }

            loginUserIsAdmin = _gContext.ProfileId == ConfigurationSetting.AdminProfileID;
            // Parse endpoint configuration
            int i = jsonString.IndexOf("[");
            int j = jsonString.LastIndexOf("]");  
            if (i < 0 || i > j)
            {
                String message = "Siebel Integration Configuration verb is not set properly. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Accelerator Integration Configuration verb [] array is not set properly.";
                    logNote = "Configuration cannot be parsed, the string is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }
            string jsonTrim = jsonString.Substring(i, j - i + 1);
            
            /*  Using Serializer to parse Configuration JSON String  
             *  The parsing is based on the classes definition in the following region
             */
            var serializer = new JavaScriptSerializer();
            List<ConfigurationVerb> configVerbArray = null;
            try
            {
                configVerbArray = serializer.Deserialize<List<ConfigurationVerb>>(jsonTrim);
            }
            catch (System.ArgumentException ex)
            {
                String message = "Accelerator Integration Configuration verb JSON is invalid. Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);

                logMessage = "Accelerator Integration Configuration verb JSON is invalid.";
                logNote = "Configuration cannot be parsed, the string is: " + jsonString;
                logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);

                return false;
            }
            bool found = false;

            // Get the server url of current site
            string _interfaceUrl = _gContext.InterfaceURL;
            string[] splittedInterfaceUrl = _interfaceUrl.Split('/');
            string _configServerUrl = splittedInterfaceUrl[2];

            // Get values in configuration settings
            foreach (ConfigurationVerb configVerb in configVerbArray)
            {
                if (configVerb.rnt_host.Contains(_configServerUrl))
                {
                    string extBaseUrl = configVerb.integration.ext_base_url;
                    
                    //Get Siebel server type and initiate Siebel Provider
                    string serverType = configVerb.integration.server_type;
                    SiebelProvider = serverTypeToProvider(serverType);

                    username = configVerb.integration.username;
                    password = configVerb.integration.password;
                    siebelServiceUserId = configVerb.integration.siebel_service_user_id;
                    siebelDefaultSrOwnerId = configVerb.integration.siebel_default_sr_owner_id;
                    SiebelServiceTimeout = configVerb.integration.SiebelServiceTimeout;
                    log_level = configVerb.integration.log_level;
                    assignLogLevelEnum();
                    rnt_host = configVerb.rnt_host;
                    //Prepare the Service Request Type Mapping
                    if (configVerb.integration.request_type_mapping != null)
                    {
                        requestTypeMapping = setRequestTypeMapping(configVerb.integration.request_type_mapping);
                    }

                    incidentsByContactReportID = configVerb.integration.incidentsByContactReportID;
                    contactSearchReportID = configVerb.integration.contactSearchReportID;

                    uspsUsername = configVerb.postalValidation.username;
                    ext_address_validate_url = configVerb.postalValidation.ext_address_validate_url;

                    Dictionary<String, Service> extServices = configVerb.integration.ext_services;
                    foreach (KeyValuePair<String, Service> extService in extServices)
                    {
                        switch (extService.Key)
                        {
                            case "service_request_detail":
                                if (extService.Value.create != null)
                                    CreateSR_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                if (extService.Value.update != null)
                                    UpdateSR_WSDL = extBaseUrl + extService.Value.update.relative_path;
                                if (extService.Value.read != null)
                                    LookupSR_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "service_request_list":
                                if (extService.Value.read != null)
                                    LookupSRbyContactPartyID_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_order_detail":
                                if (extService.Value.create != null)
                                    CreateRepair_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                if (extService.Value.update != null)
                                    UpdateRepair_WSDL = extBaseUrl + extService.Value.update.relative_path;
                                if (extService.Value.read != null)
                                    LookupRepair_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_order_list":
                                if (extService.Value.read != null)
                                    RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "service_request_note":
                                if (extService.Value.create != null)
                                    CreateInteraction_WSDL = extBaseUrl + extService.Value.create.relative_path;
                                break;
                            case "contact_list":
                                if (extService.Value.read != null)
                                    LookupContactList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "item_list":
                                if (extService.Value.read != null)
                                    ItemList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "entitlement_list":
                                if (extService.Value.read != null)
                                    EntitlementList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_logistics_list":
                                if (extService.Value.read != null)
                                    RepairLogisticsList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                            case "repair_list":
                                if (extService.Value.read != null)
                                    RepairOrderList_WSDL = extBaseUrl + extService.Value.read.relative_path;
                                break;
                        }
                    }
                    found = true; 
                    break;
                }
            }
            
            // If current site is not set in configuration.
            if (!found)
            {
                String message =  "The current host, " + _configServerUrl + ", is not present in Integration Configuration verb.\n Please contact your system administrator";
                MessageBox.Show(message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                if (logWrap != null)
                {
                    logMessage = "Current Host is not present in Integration Configuration verb. ";
                    logNote = "Current site is not set in configuration CUSTOM_CFG_Accel_Ext_Integrations. The configuration verb is: " + jsonString;
                    logWrap.ErrorLog(logMessage: logMessage, logNote: logNote);
                }
                return false;
            }

            configVerbPerfect = true;
            return true;
        }