private void LoadComponentItems(IEnumerable <string> ids, XrmRecordService xrmRecordService) { if (ComponentTypeKey == OptionSets.SolutionComponent.ObjectTypeCode.Entity) { AllItems = xrmRecordService .GetAllRecordTypes() .Select(r => xrmRecordService.GetRecordTypeMetadata(r)) .Where(m => ids.Contains(m.MetadataId)) .Select(m => new AddToSolutionComponentItem(m.MetadataId, m.DisplayName)) .ToArray(); } else if (ComponentTypeKey == OptionSets.SolutionComponent.ObjectTypeCode.OptionSet) { AllItems = xrmRecordService .GetSharedPicklists() .Where(m => ids.Contains(m.MetadataId)) .Select(m => new AddToSolutionComponentItem(m.MetadataId, m.DisplayName)) .ToArray(); } else { var propTypeMaps = new Dictionary <int, string>(); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.SystemForm, Entities.systemform); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.EmailTemplate, Entities.template); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.PluginAssembly, Entities.pluginassembly); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.SDKMessageProcessingStep, Entities.sdkmessageprocessingstep); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.Report, Entities.report); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.Role, Entities.role); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.WebResource, Entities.webresource); propTypeMaps.Add(OptionSets.SolutionComponent.ObjectTypeCode.Workflow, Entities.workflow); if (!propTypeMaps.ContainsKey(ComponentTypeKey)) { throw new NotImplementedException($"Component Type {ComponentTypeKey} Is Not Implemented"); } var recordType = propTypeMaps[ComponentTypeKey]; var primaryKeyField = xrmRecordService.GetPrimaryKey(recordType); var nameField = xrmRecordService.GetPrimaryField(recordType); AllItems = xrmRecordService .RetrieveAllOrClauses(recordType, ids.Select(i => new Condition(primaryKeyField, ConditionType.Equal, i))) .Select(e => new AddToSolutionComponentItem(e.Id, e.GetStringField(nameField))) .OrderBy(c => c.Name) .ToArray(); } ItemsSelection = AllItems .Select(i => new SelectableAddToSolutionComponentItem(i.Id, i.Name)) .ToArray(); }
private void VerifyRecordTypes(CustomisationImportRequest request) { var response = new CustomisationImportResponse(); var optionMetadata = CustomisationImportService.ExtractOptionSetsFromExcel(request.ExcelFile.FileName, Controller, response); var fieldMetadata = CustomisationImportService.ExtractFieldMetadataFromExcel(request.ExcelFile.FileName, Controller, optionMetadata, response).Values; var recordMetadata = CustomisationImportService.ExtractRecordMetadataFromExcel(request.ExcelFile.FileName, Controller, fieldMetadata, response).Values; foreach (var metadata in recordMetadata) { Assert.IsTrue(XrmRecordService.RecordTypeExists(metadata.SchemaName)); Assert.IsTrue(metadata.DisplayName == XrmRecordService.GetRecordTypeMetadata(metadata.SchemaName).DisplayName); Assert.IsTrue(metadata.CollectionName == XrmRecordService.GetRecordTypeMetadata(metadata.SchemaName).CollectionName); Assert.IsTrue(metadata.Audit == XrmRecordService.GetRecordTypeMetadata(metadata.SchemaName).Audit); } }
public void CustomisationImportTestImportServiceAddToSolution() { //verifies that entities or shared option sets //are added to solution for customisation import where selected PrepareTests(); var testSolution = ReCreateTestSolution(); //initial verifies created entity, field, shared option set and n2n relationship var request = new CustomisationImportRequest { ExcelFile = new FileReference("TestCustomisationsAddToSolution.xlsx"), Entities = true, Fields = true, Relationships = true, Views = false, FieldOptionSets = true, SharedOptionSets = true, AddToSolution = true, Solution = testSolution.ToLookup() }; var importService = new XrmCustomisationImportService(XrmRecordService); var response = importService.Execute(request, CreateServiceRequestController()); if (response.HasError) { Assert.Fail(response.GetResponseItemsWithError().First().Exception.DisplayString()); } Assert.IsFalse(response.ExcelReadErrors); Assert.IsNull(response.Exception); var currentComponentIds = XrmRecordService.RetrieveAllAndClauses(Entities.solutioncomponent, new[] { new Condition(Fields.solutioncomponent_.solutionid, ConditionType.Equal, testSolution.Id) }, null).Select(c => c.GetIdField(Fields.solutioncomponent_.objectid)); var dummyResponse = new CustomisationImportResponse(); var relationShipmetadata = CustomisationImportService.ExtractRelationshipMetadataFromExcel(request.ExcelFile.FileName, Controller, response).Values; var optionMetadata = CustomisationImportService.ExtractOptionSetsFromExcel(request.ExcelFile.FileName, Controller, response) .Where(o => o.IsSharedOptionSet); var fieldMetadata = CustomisationImportService.ExtractFieldMetadataFromExcel(request.ExcelFile.FileName, Controller, optionMetadata, response).Values; var typeMetadata = CustomisationImportService.ExtractRecordMetadataFromExcel(request.ExcelFile.FileName, Controller, fieldMetadata, response).Values; Assert.IsTrue(relationShipmetadata.All(r => currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata(r.RecordType1).MetadataId))); Assert.IsTrue(relationShipmetadata.All(r => currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata(r.RecordType2).MetadataId))); Assert.IsTrue(optionMetadata.All(r => currentComponentIds.Contains(XrmRecordService.GetSharedPicklist(r.SchemaName).MetadataId))); Assert.IsTrue(fieldMetadata.All(r => currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata(r.RecordType).MetadataId))); Assert.IsTrue(typeMetadata.All(r => currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata(r.SchemaName).MetadataId))); //this one verifies where just fields picklist options and entity views testSolution = ReCreateTestSolution(); request = new CustomisationImportRequest { ExcelFile = new FileReference("TestCustomisationsAddToSolution.xlsx"), Entities = false, Fields = false, Relationships = false, Views = true, FieldOptionSets = true, SharedOptionSets = true, AddToSolution = true, Solution = testSolution.ToLookup() }; importService = new XrmCustomisationImportService(XrmRecordService); response = importService.Execute(request, CreateServiceRequestController()); if (response.HasError) { Assert.Fail(response.GetResponseItemsWithError().First().Exception.DisplayString()); } Assert.IsFalse(response.ExcelReadErrors); Assert.IsNull(response.Exception); currentComponentIds = XrmRecordService.RetrieveAllAndClauses(Entities.solutioncomponent, new[] { new Condition(Fields.solutioncomponent_.solutionid, ConditionType.Equal, testSolution.Id) }, null).Select(c => c.GetIdField(Fields.solutioncomponent_.objectid)); //addded for field picklist change Assert.IsTrue(currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata(Entities.account).MetadataId)); //addded for field change Assert.IsTrue(currentComponentIds.Contains(XrmRecordService.GetRecordTypeMetadata("new_testentitysolutionadd").MetadataId)); }