public Entity CreateRecordAllFieldsPopulated(string type) { var entity = new Entity(type); var fieldsToExlcude = new[] { "traversedpath", "parentarticlecontentid", "rootarticleid", "previousarticlecontentid" }; var fields = XrmService.GetFields(type) .Where(f => !fieldsToExlcude.Contains(f)); foreach (var field in fields) { if (XrmService.IsWritable(field, type)) { var fieldType = XrmService.GetFieldType(field, type); switch (fieldType) { case AttributeTypeCode.BigInt: { entity.SetField(field, 1); break; } case AttributeTypeCode.Boolean: { entity.SetField(field, true); break; } case AttributeTypeCode.CalendarRules: { break; } case AttributeTypeCode.Customer: { entity.SetField(field, CreateAccount()); break; } case AttributeTypeCode.DateTime: { var now = DateTime.UtcNow; var noMilliSeconds = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, DateTimeKind.Utc); entity.SetField(field, noMilliSeconds); break; } case AttributeTypeCode.Decimal: { entity.SetField(field, (decimal)1); break; } case AttributeTypeCode.Double: { entity.SetField(field, (double)1); break; } case AttributeTypeCode.EntityName: { break; } case AttributeTypeCode.Integer: { var options = XrmService.GetPicklistKeyValues(type, field); if (options != null && options.Any()) { entity.SetField(field, options.First().Key); } else { entity.SetField(field, 1); } break; } case AttributeTypeCode.Lookup: { var target = XrmService.GetLookupTargetEntity(field, type); var typesToExlcude = new[] { "equipment", "transactioncurrency", "pricelevel", "service", "systemuser", "incident", "campaign", "territory", "sla", "bookableresource", "msdyn_taxcode", "languagelocale" }; if (!typesToExlcude.Contains(target)) { entity.SetField(field, CreateTestRecord(target).ToEntityReference()); } break; } case AttributeTypeCode.ManagedProperty: { break; } case AttributeTypeCode.Memo: { entity.SetField(field, "blah blah blah \n blah"); break; } case AttributeTypeCode.Money: { entity.SetField(field, new Money(1)); break; } case AttributeTypeCode.Owner: { entity.SetField(field, new EntityReference("systemuser", CurrentUserId)); break; } case AttributeTypeCode.PartyList: { entity.AddActivityParty(field, "systemuser", CurrentUserId); break; } case AttributeTypeCode.Picklist: { entity.SetField(field, new OptionSetValue(XrmService.GetOptions(field, type).First().Key)); break; } case AttributeTypeCode.State: { break; } case AttributeTypeCode.Status: { break; } case AttributeTypeCode.String: { entity.SetField(field, PopulateStringValue); break; } case AttributeTypeCode.Uniqueidentifier: { break; } case AttributeTypeCode.Virtual: { break; } } } } return(CreateAndRetrieve(entity)); }
public static void AddToParty(this Entity entity, string type, Guid id) { entity.AddActivityParty("to", type, id); }
public void PopulateField(string field, Entity entity) { var type = entity.LogicalName; var fieldType = XrmService.GetFieldType(field, type); switch (fieldType) { case AttributeTypeCode.BigInt: { entity.SetField(field, 1); break; } case AttributeTypeCode.Boolean: { entity.SetField(field, true); break; } case AttributeTypeCode.CalendarRules: { break; } case AttributeTypeCode.Customer: { entity.SetField(field, CreateAccount()); break; } case AttributeTypeCode.DateTime: { var now = DateTime.UtcNow; var noMilliSeconds = new DateTime(now.Year, now.Month, now.Day, now.Hour, now.Minute, now.Second, DateTimeKind.Utc); entity.SetField(field, noMilliSeconds); break; } case AttributeTypeCode.Decimal: { entity.SetField(field, (decimal)1); break; } case AttributeTypeCode.Double: { entity.SetField(field, (double)1); break; } case AttributeTypeCode.EntityName: { break; } case AttributeTypeCode.Integer: { entity.SetField(field, 1); break; } case AttributeTypeCode.Lookup: { var target = XrmService.GetLookupTargetEntity(field, type); var typesToExlcude = new[] { "equipment", "transactioncurrency", "pricelevel", "service", "systemuser", "incident", "campaign", "territory" }; if (!typesToExlcude.Contains(target)) { entity.SetField(field, CreateTestRecord(target).ToEntityReference()); } break; } case AttributeTypeCode.ManagedProperty: { break; } case AttributeTypeCode.Memo: { entity.SetField(field, "blah blah blah \n blah"); break; } case AttributeTypeCode.Money: { entity.SetField(field, new Money(1)); break; } case AttributeTypeCode.Owner: { entity.SetField(field, new EntityReference("systemuser", CurrentUserId)); break; } case AttributeTypeCode.PartyList: { entity.AddActivityParty(field, "systemuser", CurrentUserId); break; } case AttributeTypeCode.Picklist: { entity.SetField(field, new OptionSetValue(XrmService.GetOptions(field, type).First().Key)); break; } case AttributeTypeCode.State: { break; } case AttributeTypeCode.Status: { break; } case AttributeTypeCode.String: { entity.SetField(field, "1234"); break; } case AttributeTypeCode.Uniqueidentifier: { break; } case AttributeTypeCode.Virtual: { break; } } }
public static void AddFromParty(this Entity entity, string type, Guid id) { entity.AddActivityParty("from", type, id); }
public void DeploymentImportActivityPartiesTest() { PrepareTests(); var contact1 = XrmService.GetFirst(Entities.contact, Fields.contact_.fullname, "TESTEMAIL IMPORT 1") ?? CreateTestRecord(Entities.contact, new Dictionary <string, object> { { Fields.contact_.firstname, "TESTEMAIL" }, { Fields.contact_.lastname, "IMPORT 1" }, { Fields.contact_.emailaddress1, "*****@*****.**" } }); var contact2 = XrmService.GetFirst(Entities.contact, Fields.contact_.fullname, "TESTEMAIL IMPORT 2") ?? CreateTestRecord(Entities.contact, new Dictionary <string, object> { { Fields.contact_.firstname, "TESTEMAIL" }, { Fields.contact_.lastname, "IMPORT 2" }, { Fields.contact_.emailaddress1, "*****@*****.**" } }); var account = XrmService.GetFirst(Entities.account, Fields.account_.name, "TESTEMAILIMPORT") ?? CreateTestRecord(Entities.account, new Dictionary <string, object> { { Fields.account_.name, "TESTEMAILIMPORT" }, { Fields.account_.emailaddress1, "*****@*****.**" } }); var queue = XrmService.GetFirst(Entities.queue, Fields.queue_.name, "TESTQUEUE") ?? CreateTestRecord(Entities.queue, new Dictionary <string, object> { { Fields.queue_.name, "TESTQUEUE" }, { Fields.queue_.emailaddress, "*****@*****.**" } }); var email = new Entity(Entities.email); email.SetField(Fields.email_.subject, "Testing Import Email " + DateTime.Now.ToFileTime().ToString()); email.AddFromParty(queue.LogicalName, queue.Id); email.AddToParty(contact1.LogicalName, contact1.Id); email.AddToParty(contact2.LogicalName, contact2.Id); email.AddToParty(account.LogicalName, account.Id); email.AddActivityParty(Fields.email_.to, "*****@*****.**"); email = CreateAndRetrieve(email); XrmService.SetState(email, OptionSets.Email.ActivityStatus.Completed, OptionSets.Email.StatusReason.Sent); //okay lets xml export var exportXmlApplication = CreateAndLoadTestApplication <ExportXmlModule>(); var instance = new ExportXmlRequest(); instance.IncludeNNRelationshipsBetweenEntities = true; instance.Folder = new Folder(TestingFolder); instance.RecordTypesToExport = new[] { new ExportRecordType() { Type = ExportType.SpecificRecords, RecordType = new RecordType(Entities.email, Entities.email), SpecificRecordsToExport = new LookupSetting[] { new LookupSetting() { Record = new Lookup(email.LogicalName, email.Id.ToString(), email.GetStringField(Fields.email_.subject)) } } } }; var exportXmlResponse = exportXmlApplication.NavigateAndProcessDialog <ExportXmlModule, ExportXmlDialog, ExportXmlResponse>(instance); Assert.IsFalse(exportXmlResponse.HasError); //okay lets delete the email then import it XrmService.Delete(email); //do an xml import var importXmlApplication = CreateAndLoadTestApplication <ImportXmlModule>(); var importRequest = new ImportXmlRequest { Folder = new Folder(TestingFolder) }; var importXmlResponse = importXmlApplication.NavigateAndProcessDialog <ImportXmlModule, ImportXmlDialog, ImportXmlResponse>(importRequest); Assert.IsFalse(importXmlResponse.HasError); Assert.AreEqual(1, importXmlResponse.ImportSummary.Count()); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Created == 1)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Updated == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.NoChange == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Errors == 0)); var importedEmail = XrmService.Retrieve(email.LogicalName, email.Id); Assert.AreEqual(OptionSets.Email.StatusReason.Sent, importedEmail.GetOptionSetValue(Fields.email_.statuscode)); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.from).Count() == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.from).Count(p => Entities.queue == p.GetLookupType(Fields.activityparty_.partyid)) == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count() == 4); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => Entities.contact == p.GetLookupType(Fields.activityparty_.partyid)) == 2); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => Entities.account == p.GetLookupType(Fields.activityparty_.partyid)) == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => null == p.GetField(Fields.activityparty_.partyid) && p.GetStringField(Fields.activityparty_.addressused) == "*****@*****.**") == 1); importXmlResponse = importXmlApplication.NavigateAndProcessDialog <ImportXmlModule, ImportXmlDialog, ImportXmlResponse>(importRequest); Assert.IsFalse(importXmlResponse.HasError); Assert.AreEqual(1, importXmlResponse.ImportSummary.Count()); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Created == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Updated == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.NoChange == 1)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Errors == 0)); importedEmail = XrmService.Retrieve(email.LogicalName, email.Id); XrmService.SetState(importedEmail, OptionSets.Email.ActivityStatus.Open); var toParties = importedEmail.GetActivityParties(Fields.email_.to); importedEmail.SetField(Fields.email_.to, toParties.Skip(1).ToArray()); importedEmail = UpdateFieldsAndRetreive(importedEmail, Fields.email_.to); importXmlResponse = importXmlApplication.NavigateAndProcessDialog <ImportXmlModule, ImportXmlDialog, ImportXmlResponse>(importRequest); Assert.IsFalse(importXmlResponse.HasError); Assert.AreEqual(1, importXmlResponse.ImportSummary.Count()); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Created == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Updated == 1)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.NoChange == 0)); Assert.IsTrue(importXmlResponse.ImportSummary.All(i => i.Errors == 0)); importedEmail = XrmService.Retrieve(email.LogicalName, email.Id); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.from).Count() == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.from).Count(p => Entities.queue == p.GetLookupType(Fields.activityparty_.partyid)) == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count() == 4); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => Entities.contact == p.GetLookupType(Fields.activityparty_.partyid)) == 2); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => Entities.account == p.GetLookupType(Fields.activityparty_.partyid)) == 1); Assert.IsTrue(importedEmail.GetActivityParties(Fields.email_.to).Count(p => null == p.GetField(Fields.activityparty_.partyid) && p.GetStringField(Fields.activityparty_.addressused) == "*****@*****.**") == 1); }