This sample shows how to write code to perform the function of the following APIs that are deprecated.
- RetrieveByPrincipal
 - RetrieveByOrganization
 - RetrieveBySubContacts
 
1: //# [Build Query Expressions]
2: using System;
3: using System.Web.Services.Protocols;
4: using Microsoft.Crm.Sdk.Utility;
   5:   6: namespace Microsoft.Crm.Sdk.HowTo
   7:  {8: // Using following Microsoft Dynamics CRM namespace(s) in the sample.
9: using CrmSdk;
  10:   11: /// <summary>
12: /// This Sample shows how to perform retrieveby methods that have been deprecated using RetrieveMultiple
13: /// -use RetrieveMultiple to carry out a RetrieveByPrincipal command
14: /// -use RetrieveMultiple to carry out a RetrieveByOrganization command
15: /// -use RetrieveMultiple to carry out a RetrieveBySubContacts command.
16: /// </summary>
17: public class HowToRetrieveMultiple
  18:     {19: static void Main(string[] args)
  20:          {21: try
  22:              {23: // TODO: Change the server URL and Organization to match your
24: // CRM Server and CRM Organization
25: HowToRetrieveMultiple.Run("http://localhost:5555", "CRM_Organization");
26: Console.WriteLine("RetrieveByPrincipal, RetrieveByOrganization" +
27: "and RetrieveBySubContacts messages retrieved successfully.");
  28:              }29: catch (SoapException ex)
  30:              {31: Console.WriteLine("The application terminated with an error.");
  32:                  Console.WriteLine(ex.Message);  33:                  Console.WriteLine(ex.Detail.InnerText);  34:              }35: catch (System.Exception ex)
  36:              {37: Console.WriteLine("The application terminated with an error.");
  38:                  Console.WriteLine(ex.Message);  39:   40: // Display the details of the inner exception.
41: if (ex.InnerException != null)
  42:                  {  43:                      Console.WriteLine(ex.InnerException.Message);  44:   45: SoapException se = ex.InnerException as SoapException;
46: if (se != null)
  47:                          Console.WriteLine(se.Detail.InnerText);  48:                  }  49:              }50: finally
  51:              {52: Console.WriteLine("Press <Enter> to exit.");
  53:                  Console.ReadLine();  54:              }  55:          }  56:        57: public static bool Run(string crmServerUrl, string orgName)
  58:        {59: // Set up the CRM Service.
  60:              CrmService service = CrmServiceUtility.GetCrmService(crmServerUrl, orgName);61: // Cache credentials so each request does not have to be re-authenticated.
62: service.PreAuthenticate = true;
  63:   64: #region Setup Data Required for this Sample
  65:           66: bool success = false;
  67:              68: // Get user information.
69: WhoAmIRequest userRequest = new WhoAmIRequest();
  70:              WhoAmIResponse user = (WhoAmIResponse)service.Execute(userRequest);  71:   72: // Get the organizationId.
73: TargetRetrieveBusinessUnit targetGetBusinessUnit = new TargetRetrieveBusinessUnit();
  74:              targetGetBusinessUnit.EntityId = user.BusinessUnitId;  75:   76: RetrieveRequest getBusinessUnit = new RetrieveRequest();
  77:              getBusinessUnit.Target = targetGetBusinessUnit;78: // Be aware that using AllColumns may adversely affect
79: // performance and cause unwanted cascading in subsequent
80: // updates. A best practice is to retrieve the least amount of
81: // data required.
82: getBusinessUnit.ColumnSet = new AllColumns();
  83:     84:              RetrieveResponse businessUnitResponse = (RetrieveResponse)service.Execute(getBusinessUnit);  85:              Lookup org = ((businessunit)businessUnitResponse.BusinessEntity).organizationid;  86:     87:              Guid organizationId = org.Value;  88:   89: // Create a sample account.
90: account accountCreate = new account();
91: accountCreate.name = "Fourth Coffee";
  92:   93: TargetCreateAccount targetCreate = new TargetCreateAccount();
  94:              targetCreate.Account = accountCreate;  95:   96: CreateRequest create = new CreateRequest();
  97:              create.Target = targetCreate;  98:     99:              CreateResponse created = (CreateResponse)service.Execute(create); 100:    101:              Guid accountId = created.id; 102:   103: //Create contact
104: contact contactCreate = new contact();
105: contactCreate.firstname = "Oliveira";
106: contactCreate.lastname = "Leonardo";
107: //Set the account created above to be the parent account for the contact
108: Customer parentCustomer = new Customer();
109: parentCustomer.type = "account";
 110:              parentCustomer.Value = accountId; 111:              contactCreate.parentcustomerid = parentCustomer; 112:   113: TargetCreateContact targetCreateContact = new TargetCreateContact();
 114:              targetCreateContact.Contact = contactCreate; 115:   116: CreateRequest createContactRequest = new CreateRequest();
 117:              createContactRequest.Target = targetCreateContact; 118:    119:              CreateResponse createdContact = (CreateResponse)service.Execute(createContactRequest); 120:   121: #endregion
 122:   123: #region RetrieveByPrincipal
124: // The following code example demonstrates how to use RetrieveMultiple
125: // to carry out a RetrieveByPrincipal.
 126:   127: // Sets the principalId to be the principal.
128: //SDK: Guid principalId = new Guid("2aa418c2-82ff-dd11-95c2-00155da4c706");
 129:              Guid principalId = user.UserId; 130:        131: // Create a column set holding the names of the columns to be retrieved.
132: ColumnSet colsPrincipal = new ColumnSet();
 133:   134: // Set the properties of the column set.
135: colsPrincipal.Attributes = new string [] {"name", "accountid"};
 136:   137: // Create a ConditionExpression.
138: ConditionExpression conditionPrincipal = new ConditionExpression();
 139:   140: // Set the ConditionExpressions properties so that the condition is true when the
141: // ownerid of the account equals the principalId.
142: conditionPrincipal.AttributeName = "ownerid";
 143:           conditionPrincipal.Operator = ConditionOperator.Equal;144: conditionPrincipal.Values = new object [1];
 145:              conditionPrincipal.Values[0] = principalId; 146:   147: // Create the FilterExpression.
148: FilterExpression filterPrincipal = new FilterExpression();
 149:   150: // Set the properties of the FilterExpression.
 151:           filterPrincipal.FilterOperator = LogicalOperator.And;152: filterPrincipal.Conditions = new ConditionExpression[] {conditionPrincipal};
 153:   154: // Create the QueryExpression.
155: QueryExpression queryPrincipal = new QueryExpression();
 156:   157: // Set the properties of the QueryExpression.
 158:           queryPrincipal.EntityName = EntityName.account.ToString(); 159:           queryPrincipal.ColumnSet = colsPrincipal; 160:           queryPrincipal.Criteria = filterPrincipal; 161:   162: // Create the request object.
163: RetrieveMultipleRequest retrievePrincipal = new RetrieveMultipleRequest();
 164:   165: // Set the properties of the request object.
 166:           retrievePrincipal.Query = queryPrincipal; 167:        168: // Execute the request.
 169:           RetrieveMultipleResponse principalResponse =  170:                  (RetrieveMultipleResponse) service.Execute(retrievePrincipal);171: #endregion
 172:   173: #region RetrieveByOrganization
174: // The following code example demonstrates how to use RetrieveMultiple
175: // to carry out a RetrieveByOrganization.
 176:   177: // Create a column set that holds the names of the columns to be retrieved.
178: ColumnSet colsOrganization = new ColumnSet();
179: colsOrganization.Attributes = new string [] {"fullname", "systemuserid"};
 180:   181: // Create a ConditionExpression.
182: ConditionExpression conditionUsersInOrganization = new ConditionExpression();
 183:   184: // Set the ConditionExpressions properties so that the condition is true when
185: // the organizationid of the user is equal to the organizationId.
186: conditionUsersInOrganization.AttributeName = "organizationid";
 187:           conditionUsersInOrganization.Operator = ConditionOperator.Equal;188: conditionUsersInOrganization.Values = new object [1];
189: // SDK: conditionUsersInOrganization.Values[0] = new Guid("435547a3-10e4-dd11-acef-00155da4c70}");
 190:           conditionUsersInOrganization.Values[0] = organizationId; 191:   192: // Create the FilterExpression.
193: FilterExpression filterUsersInOrganization = new FilterExpression();
 194:   195: // Set the properties of the FilterExpression.
 196:           filterUsersInOrganization.FilterOperator = LogicalOperator.And;197: filterUsersInOrganization.Conditions = new ConditionExpression[] {conditionUsersInOrganization};
 198:   199: // Create the QueryExpression.
200: QueryExpression queryUsersInOrganization = new QueryExpression();
 201:           202: // Set the properties of the QueryExpression.
 203:           queryUsersInOrganization.EntityName = EntityName.systemuser.ToString(); 204:           queryUsersInOrganization.ColumnSet = colsOrganization; 205:           queryUsersInOrganization.Criteria = filterUsersInOrganization; 206:   207: // Create the request object.
208: RetrieveMultipleRequest retrieveUsersInOrganization = new RetrieveMultipleRequest();
 209:   210: // Set the properties of the request object.
 211:           retrieveUsersInOrganization.Query = queryUsersInOrganization; 212:        213: // Execute the request.
 214:           RetrieveMultipleResponse retrievedUsers =  215:                  (RetrieveMultipleResponse) service.Execute(retrieveUsersInOrganization);216: #endregion
 217:   218: #region RetrieveBySubContacts
219: // The following code example demonstrates how to use RetrieveMultiple
220: // to carry out a RetrieveBySubContacts command.
 221:   222: // Create a column set that holds the names of the columns to be retrieved.
223: ColumnSet colsContact = new ColumnSet();
224: colsContact.Attributes = new string [] {"fullname", "contactid"};
 225:   226: // Create the ConditionExpression.
227: ConditionExpression conditionContact = new ConditionExpression();
 228:           229: // Set the ConditionExpressions Properties so that the condition is true when
230: // the accountid or the contact is equal to accountId.
231: conditionContact.AttributeName = "accountid";
 232:           conditionContact.Operator = ConditionOperator.Equal;233: // SDK: conditionContact.Values = new string [] {"f0df7fbf-b51f-de11-892f-00155da4c706"};
234: conditionContact.Values = new string [] {accountId.ToString()};
 235:   236: // Create the FilterExpression.
237: FilterExpression filterContact = new FilterExpression();
 238:   239: // Set the properties of the FilterExpression.
 240:           filterContact.FilterOperator = LogicalOperator.And;241: filterContact.Conditions = new ConditionExpression[] {conditionContact};
 242:   243: // Create the QueryExpression.
244: QueryExpression queryContact = new QueryExpression();
 245:   246: // Set the properties of the QueryExpression.
 247:           queryContact.EntityName = EntityName.contact.ToString(); 248:           queryContact.ColumnSet = colsContact; 249:           queryContact.Criteria = filterContact; 250:        251: // Retrieve the contacts.
 252:           BusinessEntityCollection contacts = service.RetrieveMultiple(queryContact);253: #endregion
 254:   255: #region check success
 256:   257: if ((principalResponse.BusinessEntityCollection.EntityName.ToLower().Equals("account")) &&
258: (retrievedUsers.BusinessEntityCollection.EntityName.ToLower().Equals("systemuser")) &&
259: (contacts.EntityName.ToLower().Equals("contact")))
 260:           {261: success = true;
 262:           }263: #endregion
 264:   265: #region Remove Data Required for this Sample
 266:    267:              service.Delete(EntityName.contact.ToString(), createdContact.id); 268:              service.Delete(EntityName.account.ToString(), accountId); 269:   270: #endregion
 271:    272:   273: return success;
 274:        } 275:     } 276:  }
No comments:
Post a Comment