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); } }
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."); }
private RetrieveVersionResponse HandleRetrieveVersion(OrganizationRequest orgRequest, EntityReference userRef) { var request = MakeRequest <RetrieveVersionRequest>(orgRequest); var resp = new RetrieveVersionResponse(); resp.Results["Version"] = dataMethods.RetrieveVersion(); return(resp); }
public void ShowCRMVersion() { RetrieveVersionRequest versionRequest = new RetrieveVersionRequest(); RetrieveVersionResponse versionResponse = (RetrieveVersionResponse)CRMOrganizationService.Execute(versionRequest); Logger(String.Format("Microsoft Dynamics CRM version {0}.", versionResponse.Version)); }
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); }
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(); }
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); }
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); }
/// <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); } }
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; } }
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!"); } }
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); }
[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(); } }
[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(); } }
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(); } }
/// <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; } }
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); }
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 && waitCount > 0) { // Check to see if the async operation is complete crmAsyncJob = (AsyncOperation)_serviceProxy.Retrieve(AsyncOperation.EntityLogicalName, response.JobId, cs); if (crmAsyncJob.StateCode.HasValue && crmAsyncJob.StateCode.Value == AsyncOperationState.Completed && 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 && 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."); } }