Пример #1
0
        private RetrieveVersionResponse ConnectToCrm(string connectionString)
        {
            try
            {
                CrmConnection connection = CrmConnection.Parse(connectionString);
                using (OrganizationService orgService = new OrganizationService(connection))
                {
                    WhoAmIRequest  wRequest  = new WhoAmIRequest();
                    WhoAmIResponse wResponse = (WhoAmIResponse)orgService.Execute(wRequest);
                    _logger.WriteToOutputWindow("Connected To CRM Organization: " + wResponse.OrganizationId, Logger.MessageType.Info);

                    OrgId = wResponse.OrganizationId.ToString();

                    RetrieveVersionRequest  vRequest  = new RetrieveVersionRequest();
                    RetrieveVersionResponse vResponse = (RetrieveVersionResponse)orgService.Execute(vRequest);
                    _logger.WriteToOutputWindow("Version: " + vResponse.Version, Logger.MessageType.Info);

                    return(vResponse);
                }
            }
            catch (FaultException <OrganizationServiceFault> crmEx)
            {
                _logger.WriteToOutputWindow("Error Connecting To CRM: " + crmEx.Message + Environment.NewLine + crmEx.StackTrace, Logger.MessageType.Error);
                return(null);
            }
            catch (Exception ex)
            {
                _logger.WriteToOutputWindow("Error Connecting To CRM: " + ex.Message + Environment.NewLine + ex.StackTrace, Logger.MessageType.Error);
                return(null);
            }
        }
Пример #2
0
        private static string GetVersion(IOrganizationService service)
        {
            RetrieveVersionRequest  request  = new RetrieveVersionRequest();
            RetrieveVersionResponse response = (RetrieveVersionResponse)service.Execute(request);

            return(response.Version);
        }
        //<snippetCRUDOperations1>
        /// <summary>
        /// This method performs entity create, retrieve, and update operations.
        /// The delete operation is handled in the DeleteRequiredrecords() method.
        /// </summary>
        /// <param name="serviceProxy">An established connection to the Organization web service.</param>
        /// <param name="records">A collection of entity records created by this sample.</param>
        public void Run(OrganizationServiceProxy serviceProxy, EntityReferenceCollection records)
        {
            // Enable early-bound entity types. This enables use of IntelliSense in Visual Studio
            // and avoids spelling errors in attribute names when using the Entity property bag.
            serviceProxy.EnableProxyTypes();

            // Here we will use the interface instead of the proxy object.
            IOrganizationService service = (IOrganizationService)serviceProxy;

            // Display information about the logged on user.
            Guid userid = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
            SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid, 
                new ColumnSet(new string[] {"firstname", "lastname"}));
            Console.WriteLine("Logged on user is {0} {1}.", systemUser.FirstName, systemUser.LastName);
 
            // Retrieve the version of Microsoft Dynamics CRM.
            RetrieveVersionRequest versionRequest = new RetrieveVersionRequest();
            RetrieveVersionResponse versionResponse =
                (RetrieveVersionResponse)service.Execute(versionRequest);
            Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);

            //<snippetCRUDOperations2>
            // Instantiate an account object. Note the use of the option set enumerations defined
            // in OptionSets.cs.
            Account account = new Account { Name = "Fourth Coffee" };
            account.AccountCategoryCode = new OptionSetValue((int)AccountAccountCategoryCode.PreferredCustomer);
            account.CustomerTypeCode = new OptionSetValue((int)AccountCustomerTypeCode.Investor);

            // Create an account record named Fourth Coffee.
            // Save the record reference so we can delete it during cleanup later.
            Guid accountId = service.Create(account);
            //</snippetCRUDOperations2>
            records.Add(new EntityReference(Account.EntityLogicalName, accountId));
            Console.Write("{0} {1} created, ", account.LogicalName, account.Name);

            // Retrieve the account containing several of its attributes. This results in
            // better performance compared to retrieving all attributes.
            ColumnSet cols = new ColumnSet(
                new String[] { "name", "address1_postalcode", "lastusedincampaign" });

            Account retrievedAccount = (Account)service.Retrieve("account", accountId, cols);
            Console.Write("retrieved, ");

            // Update the postal code attribute.
            retrievedAccount.Address1_PostalCode = "98052";

            // There is no address 2 postal code needed.
            retrievedAccount.Address2_PostalCode = null;

            // Shows use of a Money value.
            retrievedAccount.Revenue = new Money(5000000);

            // Shows use of a Boolean value.
            retrievedAccount.CreditOnHold = false;

            // Update the account record.
            service.Update(retrievedAccount);
            Console.WriteLine("and updated.");
        }
Пример #4
0
        private RetrieveVersionResponse HandleRetrieveVersion(OrganizationRequest orgRequest, EntityReference userRef)
        {
            var request = MakeRequest <RetrieveVersionRequest>(orgRequest);
            var resp    = new RetrieveVersionResponse();

            resp.Results["Version"] = dataMethods.RetrieveVersion();
            return(resp);
        }
Пример #5
0
        public void ShowCRMVersion()
        {
            RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
            RetrieveVersionResponse versionResponse =
                (RetrieveVersionResponse)CRMOrganizationService.Execute(versionRequest);

            Logger(String.Format("Microsoft Dynamics CRM version {0}.", versionResponse.Version));
        }
Пример #6
0
        private static void DisplayDynamicsCrmVersion(IOrganizationService organizationService)
        {
            // Retrieve the version of Microsoft Dynamics CRM.
            RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
            RetrieveVersionResponse versionResponse =
                (RetrieveVersionResponse)organizationService.Execute(versionRequest);

            Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);
        }
Пример #7
0
        private async void Connect_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(Name.Text))
            {
                MessageBox.Show("Enter A Name");
                return;
            }

            if (string.IsNullOrEmpty(Url.Text))
            {
                MessageBox.Show("Enter The Url");
                return;
            }

            ComboBoxItem item = (ComboBoxItem)ConnectionType.SelectedItem;

            if (item == null)
            {
                return;
            }

            if (Domain.IsEnabled && string.IsNullOrEmpty(Domain.Text))
            {
                MessageBox.Show("Enter The Domain");
                return;
            }

            if (item.Content.ToString() != "On-premises using Windows integrated security")
            {
                if (string.IsNullOrEmpty(Username.Text) || string.IsNullOrEmpty(Password.Password))
                {
                    MessageBox.Show("Enter The Username And Password");
                    return;
                }
            }

            ConnectionString = CreateConnectionString(item);

            LockOverlay.Visibility = Visibility.Visible;

            RetrieveVersionResponse vResponse = await System.Threading.Tasks.Task.Run(() => ConnectToCrm(ConnectionString));

            LockOverlay.Visibility = Visibility.Hidden;

            if (vResponse == null)
            {
                MessageBox.Show("Error Connecting to CRM. See the Output Window for additional details.");
                return;
            }

            Version        = vResponse.Version;
            ConnectionName = Name.Text;

            DialogResult = true;
            Close();
        }
Пример #8
0
        internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef)
        {
            var request = MakeRequest <RetrieveVersionRequest>(orgRequest);

            Assembly sdk = AppDomain.CurrentDomain.GetAssemblies()
                           .Where(x => x.ManifestModule.Name == "Microsoft.Xrm.Sdk.dll").First();

            var resp = new RetrieveVersionResponse();

            resp.Results["Version"] = FileVersionInfo.GetVersionInfo(sdk.Location).FileVersion;
            return(resp);
        }
Пример #9
0
        public void getEntityMetaData()
        {
            IOrganizationService service = CRMHelper.ConnectToMSCRM();

            RetrieveVersionRequest  versionReq = new RetrieveVersionRequest();
            RetrieveVersionResponse resp       = (RetrieveVersionResponse)service.Execute(versionReq);
            //assigns the version to a string
            string VersionNumber = resp.Version;

            bool isKeyCompatibleVersion = isCompatibleVersion(VersionNumber);

            MetadataFilterExpression EntityFilter = new MetadataFilterExpression(LogicalOperator.And);

            EntityFilter.Conditions.Add(new MetadataConditionExpression("LogicalName", MetadataConditionOperator.Equals, "contact"));

            MetadataPropertiesExpression EntityProperties = new MetadataPropertiesExpression()
            {
                AllProperties = false
            };

            EntityProperties.PropertyNames.AddRange(new string[] { "Attributes", "OneToManyRelationships", "LogicalName", "DisplayName", "PrimaryIdAttribute", "PrimaryNameAttribute" });
            if (isKeyCompatibleVersion)
            {
                EntityProperties.PropertyNames.Add("Keys");
            }


            MetadataPropertiesExpression AttributeProperties = new MetadataPropertiesExpression()
            {
                AllProperties = false
            };

            AttributeProperties.PropertyNames.AddRange("AttributeType", "LogicalName", "DisplayName", "SchemaName", "AttributeType", "IsPrimaryName", "IsValidForUpdate", "OptionSet");

            EntityQueryExpression entityQueryExpression = new EntityQueryExpression()
            {
                Criteria       = EntityFilter,
                Properties     = EntityProperties,
                AttributeQuery = new AttributeQueryExpression()
                {
                    Properties = AttributeProperties
                }//,
                 //RelationshipQuery = new RelationshipQueryExpression() { Properties = new MetadataPropertiesExpression() {  AllProperties = true} }
            };

            RetrieveMetadataChangesRequest req = new RetrieveMetadataChangesRequest()
            {
                Query = entityQueryExpression
            };

            var response = (RetrieveMetadataChangesResponse)service.Execute(req);
        }
Пример #10
0
        /// <summary>
        /// Checks the current CRM version.
        /// If it is anything lower than 7.1.0.0, prompt to upgrade.
        /// </summary>
        private bool CheckCRMVersion()
        {
            RetrieveVersionRequest  crmVersionReq  = new RetrieveVersionRequest();
            RetrieveVersionResponse crmVersionResp = (RetrieveVersionResponse)_serviceProxy.Execute(crmVersionReq);

            if (String.CompareOrdinal("7.1.0.0", crmVersionResp.Version) < 0)
            {
                return(true);
            }
            else
            {
                Console.WriteLine("This sample cannot be run against the current version of CRM.");
                Console.WriteLine("Upgrade your CRM instance to the latest version to run this sample.");
                return(false);
            }
        }
Пример #11
0
        private void Connect_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(Name.Text))
            {
                MessageBox.Show("Enter A Name");
                return;
            }

            if (string.IsNullOrEmpty(ConnString.Text))
            {
                MessageBox.Show("Enter A Connection String");
                return;
            }

            try
            {
                CrmConnection connection = CrmConnection.Parse(ConnString.Text);
                using (OrganizationService orgService = new OrganizationService(connection))
                {
                    WhoAmIRequest  wRequest  = new WhoAmIRequest();
                    WhoAmIResponse wResponse = (WhoAmIResponse)orgService.Execute(wRequest);

                    OrgId = wResponse.OrganizationId.ToString();

                    RetrieveVersionRequest  vRequest  = new RetrieveVersionRequest();
                    RetrieveVersionResponse vResponse = (RetrieveVersionResponse)orgService.Execute(vRequest);

                    Version          = vResponse.Version;
                    ConnectionName   = Name.Text;
                    ConnectionString = ConnString.Text;

                    DialogResult = true;
                    Close();
                }
            }
            catch (Exception)
            {
                //TODO: handle error
                MessageBox.Show("Error Connecting to CRM");
            }
        }
        /// <summary>
        /// The Connect() method first connects to the organization service.
        /// </summary>
        /// <param name="connectionString">Provides service connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Connect(String connectionString, bool promptforDelete)
        {
            try
            {
                // Establish a connection to the organization web service.
                Print("Connecting to the server ...");

                // Connect to the CRM web service using a connection string.
                CrmServiceClient conn = new Microsoft.Xrm.Tooling.Connector.CrmServiceClient(connectionString);

                // Cast the proxy client to the IOrganizationService interface.
                _orgService = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy;
                Print("connected");

                // Obtain information about the logged on user from the web service.
                Guid       userid     = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
                SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser", userid,
                                                                         new ColumnSet(new string[] { "firstname", "lastname" }));
                Println("Logged on user is " + systemUser.FirstName + " " + systemUser.LastName + ".");

                // Retrieve the version of Microsoft Dynamics CRM.
                RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                RetrieveVersionResponse versionResponse =
                    (RetrieveVersionResponse)_orgService.Execute(versionRequest);
                Println("Microsoft Dynamics CRM version " + versionResponse.Version + ".");

                //enable the action buttons when a connection is available
                this.btnCreate.IsEnabled   = true;
                this.btnRetrieve.IsEnabled = true;
                this.btnUpdate.IsEnabled   = true;
                this.btnDelete.IsEnabled   = true;
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Пример #13
0
        private static void GetConnectionDetails(IOrganizationService service)
        {
            if (service != null)
            {
                // Obtain information about the logged on user from the web service.
                Guid userid = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
                //SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
                //    new ColumnSet(new string[] { "firstname", "lastname" }));
                var systemUser = (Entity)service.Retrieve("systemuser", userid,
                                                          new ColumnSet(new string[] { "firstname", "lastname" }));
                Console.WriteLine("Connected...");
                Console.WriteLine("Logged on user is {0} {1}.", systemUser.Attributes["firstname"], systemUser.Attributes["lastname"]);

                // Retrieve the version of Microsoft Dynamics CRM.
                RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                RetrieveVersionResponse versionResponse =
                    (RetrieveVersionResponse)service.Execute(versionRequest);
                Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);
            }
            else
            {
                Console.WriteLine("Connection failed!");
            }
        }
Пример #14
0
        private string GetCurrentVersion()
        {
            TracingService.Trace("{0} - Inside GetCurrentVersion", className);

            string currentVersion = string.Empty;

            RetrieveVersionRequest request = new RetrieveVersionRequest();

            TracingService.Trace("{0} - Retrieving Current Dynamics Version Number", className);

            RetrieveVersionResponse response = (RetrieveVersionResponse)OrganizationService.Execute(request);

            TracingService.Trace("{0} - Retrived Current Dynamics Version Number", className);

            if (response != null && response.Results != null && response.Results.Count > 0)
            {
                currentVersion = response.Version;
            }

            TracingService.Trace("{0} - Current Version Number is {1}", className, currentVersion);
            TracingService.Trace("{0} - Leaving GetCurrentVersion", className);

            return(currentVersion);
        }
Пример #15
0
        [STAThread] // Added to support UX
        static void Main(string[] args)
        {
            CrmServiceClient service = null;

            try
            {
                service = SampleHelpers.Connect("Connect");
                if (service.IsReady)
                {
                    #region Sample Code
                    #region Set up
                    SetUpSample(service);
                    #endregion Set up
                    #region Demonstrate


                    // Obtain information about the logged on user from the web service.
                    Guid       userid     = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
                    SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
                                                                         new ColumnSet(new string[] { "firstname", "lastname" }));
                    Console.WriteLine("Logged on user is {0} {1}.", systemUser.FirstName, systemUser.LastName);

                    // Retrieve the version of Microsoft Dynamics CRM.
                    RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                    RetrieveVersionResponse versionResponse =
                        (RetrieveVersionResponse)service.Execute(versionRequest);
                    Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);

                    // Instantiate an account object. Note the use of option set enumerations defined in OptionSets.cs.
                    // Refer to the Entity Metadata topic in the SDK documentation to determine which attributes must
                    // be set for each entity.
                    Account account = new Account {
                        Name = "Fourth Coffee"
                    };
                    account.AccountCategoryCode = new OptionSetValue((int)AccountAccountCategoryCode.PreferredCustomer);
                    account.CustomerTypeCode    = new OptionSetValue((int)AccountCustomerTypeCode.Investor);

                    // Create an account record named Fourth Coffee.
                    _accountId = service.Create(account);

                    Console.Write("{0} {1} created, ", account.LogicalName, account.Name);

                    // Retrieve the several attributes from the new account.
                    ColumnSet cols = new ColumnSet(
                        new String[] { "name", "address1_postalcode", "lastusedincampaign" });

                    Account retrievedAccount = (Account)service.Retrieve("account", _accountId, cols);
                    Console.Write("retrieved, ");

                    // Update the postal code attribute.
                    retrievedAccount.Address1_PostalCode = "98052";

                    // The address 2 postal code was set accidentally, so set it to null.
                    retrievedAccount.Address2_PostalCode = null;

                    // Shows use of a Money value.
                    retrievedAccount.Revenue = new Money(5000000);

                    // Shows use of a Boolean value.
                    retrievedAccount.CreditOnHold = false;

                    // Update the account record.
                    service.Update(retrievedAccount);
                    Console.WriteLine("and updated.");

                    #region Clean up
                    CleanUpSample(service);
                    #endregion Clean up
                }
                #endregion Demonstrate
                #endregion Sample Code

                else
                {
                    const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service";
                    if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR))
                    {
                        Console.WriteLine("Check the connection string values in cds/App.config.");
                        throw new Exception(service.LastCrmError);
                    }
                    else
                    {
                        throw service.LastCrmException;
                    }
                }
            }
            catch (Exception ex)
            {
                SampleHelpers.HandleException(ex);
            }

            finally
            {
                if (service != null)
                {
                    service.Dispose();
                }

                Console.WriteLine("Press <Enter> to exit.");
                Console.ReadLine();
            }
        }
Пример #16
0
        [STAThread] // Added to support UX
        static void Main(string[] args)
        {
            CrmServiceClient service = null;

            try
            {
                service = SampleHelpers.Connect("Connect");
                if (service.IsReady)
                {
                    #region Sample Code
                    ////////////////////////////////////
                    #region Set up
                    SetUpSample(service);
                    #endregion Set up
                    #region Demonstrate
                    // Obtain information about the logged on user from the web service.
                    Guid       userid     = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
                    SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
                                                                         new ColumnSet(new string[] { "firstname", "lastname" }));
                    Console.WriteLine("Logged on user is {0} {1}.", systemUser.FirstName, systemUser.LastName);

                    // Retrieve the version of Microsoft Dynamics CRM.
                    RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                    RetrieveVersionResponse versionResponse =
                        (RetrieveVersionResponse)service.Execute(versionRequest);
                    Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);

                    bool fetchEverything = false;

                    if (fetchEverything)
                    {
                        QueryExpression queGetAllIncidents = new QueryExpression("incident");
                        queGetAllIncidents.ColumnSet = new ColumnSet(true);
                        EntityCollection allIncidents = service.RetrieveMultiple(queGetAllIncidents);
                        WriteToJson(allIncidents.Entities[0], @"entity0.json");

                        QueryExpression queGetAllContacts = new QueryExpression("contact");
                        queGetAllContacts.ColumnSet = new ColumnSet(true);
                        EntityCollection allContacts = service.RetrieveMultiple(queGetAllContacts);
                        WriteToJson(allContacts, @"contacts.json");

                        QueryExpression queGetAllAccounts = new QueryExpression("account");
                        queGetAllAccounts.ColumnSet = new ColumnSet(true);
                        //queGetAllAccounts.ColumnSet = new ColumnSet(new String[]{ "AccountId", "Name" });
                        EntityCollection allAccounts = service.RetrieveMultiple(queGetAllAccounts);
                        WriteToJson(allAccounts, @"accounts.json");
                    }


                    //TODO - fetch by name
                    var incident = new Incident
                    {
                        Title = "Testing From Roy",
                        //PrimaryContactId = new EntityReference("contact", new Guid("{6a9334ad-bd04-ea11-a811-000d3a4a1025}")),
                        CustomerId = new EntityReference("account", new Guid("{852179cc-e2a6-e911-a97f-000d3a2cba5f}"))
                    };

                    var       incidentId = service.Create(incident);
                    ColumnSet cols       = new ColumnSet(
                        new String[] { "title", "new_tguvot_text" });

                    Incident retrievedIncident = (Incident)service.Retrieve("incident", incidentId, cols);
                    Console.Write("retrieved, ");

                    var incidentAttributes = retrievedIncident.Attributes;
                    incidentAttributes["new_tguvot_text"] = 5;

                    service.Update(retrievedIncident);
                    Console.WriteLine("and updated.");
                }
                #endregion Demonstrate
                #endregion Sample Code
                else
                {
                    const string UNABLE_TO_LOGIN_ERROR = "Unable to Login to Common Data Service";
                    if (service.LastCrmError.Equals(UNABLE_TO_LOGIN_ERROR))
                    {
                        Console.WriteLine("Check the connection string values in cds/App.config.");
                        throw new Exception(service.LastCrmError);
                    }
                    else
                    {
                        throw service.LastCrmException;
                    }
                }
            }
            catch (Exception ex)
            {
                SampleHelpers.HandleException(ex);
            }

            finally
            {
                if (service != null)
                {
                    service.Dispose();
                }

                Console.WriteLine("Press <Enter> to exit.");
                Console.ReadLine();
            }
        }
Пример #17
0
        private void Start_Api(string var, bool start)
        {
            // The connection to the Organization web service.
            OrganizationServiceProxy  serviceProxy = null;
            EntityReferenceCollection records      = null;

            // Obtain the target organization's web address and client logon credentials
            // from the user by using a helper class.
            ServerConnection serverConnect = new ServerConnection();

            ServerConnection.Configuration config = serverConnect.GetServerConfiguration();

            // Establish an authenticated connection to the Organization web service.
            serviceProxy = new OrganizationServiceProxy(config.OrganizationUri, config.HomeRealmUri,
                                                        config.Credentials, config.DeviceCredentials);

            CRUDOperations app = new CRUDOperations();

            // Create any records that must exist in the database. These record references are
            // stored in a collection so the records can be deleted later.
            records =
                app.CreateRequiredEntityRecords(serviceProxy);


            // Enable early-bound entity types. This enables use of IntelliSense in Visual Studio
            // and avoids spelling errors in attribute names when using the Entity property bag.
            serviceProxy.EnableProxyTypes();

            // Here we will use the interface instead of the proxy object.
            IOrganizationService service = (IOrganizationService)serviceProxy;

            // Display information about the logged on user.
            Guid       userid     = ((WhoAmIResponse)service.Execute(new WhoAmIRequest())).UserId;
            SystemUser systemUser = (SystemUser)service.Retrieve("systemuser", userid,
                                                                 new ColumnSet(new string[] { "firstname", "lastname" }));

            Console.WriteLine("Logged on user is {0} {1}.", systemUser.FirstName, systemUser.LastName);

            // Retrieve the version of Microsoft Dynamics CRM.
            RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
            RetrieveVersionResponse versionResponse =
                (RetrieveVersionResponse)service.Execute(versionRequest);

            Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);
            // Perform the primary operation of this sample.



            // Some exceptions to consider catching.
            //<snippetCRUDOperations3>

            //</snippetCRUDOperations3>


            if (start)
            {
                MyTimer.Interval = (Convert.ToInt32(var) * 60 * 1000); // 1 mins
                MyTimer.Tick    += (sender2, e2) => MyTimer_Tick(sender2, e2, serviceProxy, records);
                MyTimer.Start();
            }
            else
            {
                MyTimer.Stop();
            }
        }
Пример #18
0
        /// <summary>
        /// The Run() method first connects to the Organization service. Afterwards,
        /// basic create, retrieve, update, and delete entity operations are performed.
        /// </summary>
        /// <param name="connectionString">Provides service connection information.</param>
        /// <param name="promptforDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(String connectionString, bool promptforDelete)
        {
            try
            {
                // Connect to the CRM web service using a connection string.
                CrmServiceClient conn = new Xrm.Tooling.Connector.CrmServiceClient(connectionString);

                // Cast the proxy client to the IOrganizationService interface.
                _orgService = (IOrganizationService)conn.OrganizationWebProxyClient != null ? (IOrganizationService)conn.OrganizationWebProxyClient : (IOrganizationService)conn.OrganizationServiceProxy;

                //Create any entity records this sample requires.
                CreateRequiredRecords();

                // Obtain information about the logged on user from the web service.
                Guid       userid     = ((WhoAmIResponse)_orgService.Execute(new WhoAmIRequest())).UserId;
                SystemUser systemUser = (SystemUser)_orgService.Retrieve("systemuser", userid,
                                                                         new ColumnSet(new string[] { "firstname", "lastname" }));
                Console.WriteLine("Logged on user is {0} {1}.", systemUser.FirstName, systemUser.LastName);

                // Retrieve the version of Microsoft Dynamics CRM.
                RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                RetrieveVersionResponse versionResponse =
                    (RetrieveVersionResponse)_orgService.Execute(versionRequest);
                Console.WriteLine("Microsoft Dynamics CRM version {0}.", versionResponse.Version);

                // Instantiate an account object. Note the use of option set enumerations defined in OptionSets.cs.
                // Refer to the Entity Metadata topic in the SDK documentation to determine which attributes must
                // be set for each entity.
                Account account = new Account {
                    Name = "Fourth Coffee"
                };
                account.AccountCategoryCode = new OptionSetValue((int)AccountAccountCategoryCode.PreferredCustomer);
                account.CustomerTypeCode    = new OptionSetValue((int)AccountCustomerTypeCode.Investor);

                // Create an account record named Fourth Coffee.
                _accountId = _orgService.Create(account);

                Console.Write("{0} {1} created, ", account.LogicalName, account.Name);

                // Retrieve the several attributes from the new account.
                ColumnSet cols = new ColumnSet(
                    new String[] { "name", "address1_postalcode", "lastusedincampaign" });

                Account retrievedAccount = (Account)_orgService.Retrieve("account", _accountId, cols);
                Console.Write("retrieved, ");

                // Update the postal code attribute.
                retrievedAccount.Address1_PostalCode = "98052";

                // The address 2 postal code was set accidentally, so set it to null.
                retrievedAccount.Address2_PostalCode = null;

                // Shows use of a Money value.
                retrievedAccount.Revenue = new Money(5000000);

                // Shows use of a Boolean value.
                retrievedAccount.CreditOnHold = false;

                // Update the account record.
                _orgService.Update(retrievedAccount);
                Console.WriteLine("and updated.");

                // Delete any entity records this sample created.
                DeleteRequiredRecords(promptforDelete);
            }

            // Catch any service fault exceptions that Microsoft Dynamics CRM throws.
            catch (FaultException <Microsoft.Xrm.Sdk.OrganizationServiceFault> )
            {
                // You can handle an exception here or pass it back to the calling method.
                throw;
            }
        }
Пример #19
0
    public IOrganizationService ConnectService()
    {
        IOrganizationService organizationService = null;

        var connection = ConfigurationManager.ConnectionStrings["CrmConnection"].ConnectionString;
        CrmServiceClient serviceClient = new CrmServiceClient(connection);

        /*
         * Logger.Info("Connected Org Friendly Name : " + serviceClient.ConnectedOrgFriendlyName);
         * Logger.Info("CrmConnectOrgUriActual :" + serviceClient.CrmConnectOrgUriActual);
         * Logger.Info("Service Is Ready :  " + serviceClient.IsReady);
         * Logger.Info("Trying to initialise OrganizationServiceProxy");
         */
        try
        {
            if (serviceClient.IsReady)
            {
                //Logger.Info("Connection is ready : initiating Service Client");
                ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
                organizationService = (IOrganizationService)serviceClient.OrganizationWebProxyClient != null
                                    ? (IOrganizationService)serviceClient.OrganizationWebProxyClient
                                    : (IOrganizationService)serviceClient.OrganizationServiceProxy;

                if (organizationService != null)
                {
                    //Logger.Info("Seeking CRM Version");
                    RetrieveVersionRequest  versionRequest  = new RetrieveVersionRequest();
                    RetrieveVersionResponse versionResponse = (RetrieveVersionResponse)organizationService.Execute(versionRequest);
                    System.Console.WriteLine("Microsoft Dynamics CRM Version {0}", versionResponse.Version);
                    //Logger.Info("Found CRM Version " + versionResponse.Version);

                    // Test Call
                    Guid WhoAmIid = ((WhoAmIResponse)organizationService.Execute(new WhoAmIRequest())).UserId;
                    if (WhoAmIid != Guid.Empty)
                    {
                        Logger.Info("Successful connection to CRM");
                        //Logger.Info("WhoAmI : " + WhoAmIid);
                        Entity user = organizationService.Retrieve("systemuser", WhoAmIid, new ColumnSet(true));
                        if (user != null)
                        {
                            Logger.Info("UserName : "******"fullname"));
                            //Logger.Info("DomainName : " + user.GetAttributeValue<String>("domainname"));
                        }
                        else
                        {
                            Logger.Info("Unable to get user from CRM : WhoAmI request failed");
                        }
                    }
                }
            }
            else
            {
                Logger.Info("Last CRM Error : " + serviceClient.LastCrmError);
                Logger.Info("Last CRM Exception : " + serviceClient.LastCrmException);
                Logger.Info("Service was not ready for initialisation : IOrganizationService provision failed. Exiting");
            }
        }
        catch (FaultException <IOrganizationService> ex)
        {
            Logger.Fatal(ex.Message);
            throw;
        }
        catch (CommunicationException ex)
        {
            Logger.Fatal(ex.Message);
            throw;
        }
        catch (Exception ex)
        {
            Logger.Fatal(ex.Message);
            throw;
        }

        return(organizationService);
    }
Пример #20
0
        private async void Connect_Click(object sender, RoutedEventArgs e)
        {
            if (string.IsNullOrEmpty(Name.Text))
            {
                MessageBox.Show("Enter A Name");
                return;
            }

            if (string.IsNullOrEmpty(Url.Text))
            {
                MessageBox.Show("Enter The Url");
                return;
            }

            ComboBoxItem item = (ComboBoxItem)ConnectionType.SelectedItem;

            if (item == null)
            {
                return;
            }

            if (item.Content.ToString() != "On-premises using Windows integrated security")
            {
                if (string.IsNullOrEmpty(Username.Text) || string.IsNullOrEmpty(Password.Password))
                {
                    MessageBox.Show("Enter The Username And Password");
                    return;
                }
            }

            string value = "Url=" + Url.Text.Trim() + ";";

            switch (item.Content.ToString())
            {
            case "Online using Office 365":
                value += "Username="******";";
                value += "Password="******";";
                break;

            case "On-premises with provided user credentials":
                if (!string.IsNullOrEmpty(Domain.Text))
                {
                    value += "Domain=" + Domain.Text.Trim() + ";";
                }
                value += "Username="******";";
                value += "Password="******";";
                break;

            case "On-premises using Windows integrated security":
                break;

            case "On-premises (IFD) with claims":
                if (!string.IsNullOrEmpty(Domain.Text))
                {
                    value += "Domain=" + Domain.Text.Trim() + ";";
                }
                value += "Username="******";";
                value += "Password="******";";
                break;
            }

            ConnectionString = value;

            LockOverlay.Visibility = Visibility.Visible;

            RetrieveVersionResponse vResponse = await System.Threading.Tasks.Task.Run(() => ConnectToCrm(ConnectionString));

            LockOverlay.Visibility = Visibility.Hidden;

            if (vResponse == null)
            {
                MessageBox.Show("Error Connecting to CRM. See the Output Window for additional details.");
                return;
            }

            Version        = vResponse.Version;
            ConnectionName = Name.Text;

            DialogResult = true;
            Close();
        }
        /// <summary>
        /// Create and configure the organization service proxy.
        /// Create a date/time attribute for account entity with UserLocal behavior.
        /// Create an account record.
        /// Retrieve the value in the new date/time attribute.
        /// Update attribute to set the behavior to DateOnly.
        /// Create another account record.
        /// Retrieve both the account records to compare the date value retrieved.
        /// Use the "ConvertDateandTimeRequest" message to change the behavior for the
        /// existing records.
        /// Optionally delete/revert any attributes 
        /// that were created/changed for this sample.
        /// </summary>
        /// <param name="serverConfig">Contains server connection information.</param>
        /// <param name="promptForDelete">When True, the user will be prompted to delete all
        /// created entities.</param>
        public void Run(ServerConnection.Configuration serverConfig, bool promptForDelete)
        {
            try
            {

                // Connect to the Organization service. 
                // The using statement assures that the service proxy will be properly disposed.
                using (_serviceProxy = new OrganizationServiceProxy(serverConfig.OrganizationUri, serverConfig.HomeRealmUri, 
                    serverConfig.Credentials, serverConfig.DeviceCredentials))
                {
                    // This statement is required to enable early-bound type support.
                    _serviceProxy.EnableProxyTypes();

                    // Check if you are running the correct version of CRM.
                    // This sample requires that the CRM version be 7.1.0.xxxx or later.
                    RetrieveVersionRequest crmVersionReq = new RetrieveVersionRequest();
                    RetrieveVersionResponse crmVersionResp = (RetrieveVersionResponse)_serviceProxy.Execute(crmVersionReq);

                    if (String.CompareOrdinal("7.1.0.0", crmVersionResp.Version) < 0)
                    {
                        // Create required records for the sample.
                        CreateRequiredRecords();

                        // Use the ConvertDateandTimeBehaviorRequest SDK message to change
                        // the behavior of the date and time values in the custom attribute
                        // (new_SampleDateTimeAttribute) for the account entity.
                        ConvertDateAndTimeBehaviorRequest request = new ConvertDateAndTimeBehaviorRequest()
                        {
                            Attributes = new EntityAttributeCollection() 
                                    { 
                                        new KeyValuePair<string, StringCollection>("account", new StringCollection() 
                                        { "new_sampledatetimeattribute" }) 
                                    },
                            ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value,
                            TimeZoneCode = 190, // Time zone code for India Standard Time (IST) in CRM
                            AutoConvert = false // Conversion must be done using ConversionRule
                        };

                        // Execute the request
                        ConvertDateAndTimeBehaviorResponse response = (ConvertDateAndTimeBehaviorResponse)_serviceProxy.Execute(request);
                        
                        Console.WriteLine("***************************************");
                        Console.WriteLine("Executed the ConvertDateAndTimeBehaviorRequest SDK message.\n");

                        // Wait for two seconds to let the async job be created
                        System.Threading.Thread.Sleep(2000);

                        if (response.JobId != null)
                        {
                            Console.WriteLine("An async job created with ID: {0}", response.JobId.ToString());
                        }

                        // Retrieve the job completion details based on the Job ID                    
                        ColumnSet cs = new ColumnSet("statecode", "statuscode", "friendlymessage", "message");
                        Console.WriteLine("Waiting for the async job to complete...\n");
                        
                        AsyncOperation crmAsyncJob = new AsyncOperation();
                        while (response.JobId != null &amp;&amp; waitCount > 0)
                        {
                            // Check to see if the async operation is complete
                            crmAsyncJob =
                              (AsyncOperation)_serviceProxy.Retrieve(AsyncOperation.EntityLogicalName,
                                           response.JobId, cs);
                            if (crmAsyncJob.StateCode.HasValue &amp;&amp;
                                    crmAsyncJob.StateCode.Value == AsyncOperationState.Completed &amp;&amp; 
                                    crmAsyncJob.StatusCode.Value == (int)asyncoperation_statuscode.Succeeded)
                            {
                                waitCount = 0;                                
                                
                                Console.WriteLine("The async job is complete.\n");
                                Console.WriteLine("****************************");
                                Console.WriteLine(crmAsyncJob.FriendlyMessage);
                                Console.WriteLine("****************************");
                                Console.WriteLine(crmAsyncJob.Message);
                                Console.WriteLine("****************************\n");

                                // Retrieve both the account records created earlier to check the date value
                                Console.WriteLine("Retrieving the date and time values after the conversion...\n");
                                // Create a column set to define which attributes should be retrieved.
                                ColumnSet attributes = new ColumnSet(new string[] { "name", "new_sampledatetimeattribute" });

                                Account retrievedAccount1 = (Account)_serviceProxy.Retrieve(Account.EntityLogicalName, _account1ID, attributes);
                                Account retrievedAccount2 = (Account)_serviceProxy.Retrieve(Account.EntityLogicalName, _account2ID, attributes);

                                Console.WriteLine("'{0}' is: {1}", retrievedAccount1.GetAttributeValue<String>("name"), retrievedAccount1.GetAttributeValue<DateTime>("new_sampledatetimeattribute"));
                                Console.WriteLine("'{0}' is: {1}\n", retrievedAccount2.GetAttributeValue<String>("name"), retrievedAccount2.GetAttributeValue<DateTime>("new_sampledatetimeattribute"));
                                Console.WriteLine("The behavior converted to DateOnly for account record ('Sample Account 1')\nbased on the specified conversion rule.\n");
                                Console.WriteLine("No changes to 'Sample Account 2' because it was already DateOnly.\n");
                                Console.WriteLine("***************************************\n");
                            }
                            else
                            {
                                waitCount--;
                                System.Threading.Thread.Sleep(1000);
                            }
                        }

                        // If the async job is taking tool long to process,
                        // inform the user about the same.
                        if (waitCount == 0 &amp;&amp; crmAsyncJob.StateCode.Value != (AsyncOperationState.Completed))
                        {
                            Console.WriteLine("The async job is taking too long to complete. Aborting the sample.");
                        }

                        // Prompt the user to delete the records and attribute created by the sample.
                        DeleteRequiredRecords(promptForDelete);
                    }
                    else
                    {
                        Console.WriteLine("This sample cannot be run against the current version of CRM.");
                        Console.WriteLine("Upgrade your CRM instance to the latest version to run this sample.");
                    }
                }