public void VsixRefreshConnectionDialogTest() { var xrmConfiguration = new InterfaceMapperFor <IXrmConfiguration, XrmConfiguration>().Map(XrmConfiguration); var xrmRecordConfiguration = new XrmConfigurationMapper().Map(xrmConfiguration); var dialog = new ConnectionEntryDialog(CreateDialogController(), xrmRecordConfiguration, VisualStudioService, true); dialog.Controller.BeginDialog(); var entryViewModel = (ObjectEntryViewModel)dialog.Controller.UiItems.First(); Assert.IsTrue(entryViewModel.Validate()); entryViewModel.OnSave(); }
public void VsixPackageSettingsModuleTestEnterPackageSettings() { var recordConnection = new XrmConfigurationMapper().Map(XrmConfiguration as XrmConfiguration); InitialiseModuleXrmConnection = false; var testApplication = CreateAndLoadTestApplication <XrmPackageSettingsModule>(loadXrmConnection: false); //navigate to package settings will initally load connection entry as we dont yet have one var dialog = testApplication.NavigateToDialog <XrmPackageSettingsModule, XrmPackageSettingsDialog>(); var connectionEntry = dialog.Controller.UiItems.First() as ObjectEntryViewModel; //verify autocompletes only display for those not reliant on existing values Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); //enter the connection connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Name)).Value = "Script Entry 1"; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).Value = connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).ItemsSource.First(p => p == PicklistOption.EnumToPicklistOption(recordConnection.AuthenticationProviderType)); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).Value = recordConnection.DiscoveryServiceAddress; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).Value = recordConnection.Domain; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).Value = recordConnection.Username; connectionEntry.GetFieldViewModel(nameof(SavedXrmRecordConfiguration.Password)).ValueObject = recordConnection.Password; //including using autocomplete for the organisation unique name connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.SelectedRow = connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.First(r => r.GetStringFieldFieldViewModel(nameof(Xrm.Organisation.UniqueName)).Value == recordConnection.OrganizationUniqueName); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.SetToSelectedRow(); Assert.AreEqual(recordConnection.OrganizationUniqueName, connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); //save the connection and verify added to grid Assert.IsTrue(connectionEntry.Validate()); connectionEntry.SaveButtonViewModel.Invoke(); var packageSettingsEntryForm = testApplication.GetSubObjectEntryViewModel(dialog, index: 1) as ObjectEntryViewModel; var connectionsGrid = packageSettingsEntryForm.GetEnumerableFieldViewModel(nameof(XrmPackageSettings.Connections)); Assert.AreEqual(1, connectionsGrid.GridRecords.Count); //go to add another connection and verify username now has autocomplete due to existing value connectionsGrid.DynamicGridViewModel.AddRowButton.Invoke(); connectionEntry = testApplication.GetSubObjectEntryViewModel(packageSettingsEntryForm); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); }
public void XrmConnectionModuleTestEnterConnection() { var recordConnection = new XrmConfigurationMapper().Map(XrmConfiguration as XrmConfiguration); //clear all saved settings for test script app var testApplication = TestApplication.CreateTestApplication(); var settingsFolder = testApplication.Controller.SettingsPath; FileUtility.DeleteFiles(settingsFolder); //create app with saved connections module testApplication = TestApplication.CreateTestApplication(); testApplication.AddModule <SavedXrmConnectionsModule>(); //navgiate to adding saved conneciton var module = testApplication.GetModule <XrmConnectionModule>(); module.DialogCommand(); var dialog = testApplication.GetNavigatedDialog <XrmConnectionDialog>(); var connectionEntry = testApplication.GetSubObjectEntryViewModel(dialog); //verify autocompletes only display for those not reliant on existing values Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Domain)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); //enter the connection connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Name)).Value = "Script Entry 1"; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetPicklistFieldFieldViewModel(nameof(XrmRecordConfiguration.AuthenticationProviderType)).Value = connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).ItemsSource.First(p => p == PicklistOption.EnumToPicklistOption(recordConnection.AuthenticationProviderType)); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.DiscoveryServiceAddress)).Value = recordConnection.DiscoveryServiceAddress; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Domain)).Value = recordConnection.Domain; connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.Username)).Value = recordConnection.Username; connectionEntry.GetFieldViewModel(nameof(XrmRecordConfiguration.Password)).ValueObject = recordConnection.Password; //including using autocomplete for the organisation unique name connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.SelectedRow = connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.First(r => r.GetStringFieldFieldViewModel(nameof(Xrm.Organisation.UniqueName)).Value == recordConnection.OrganizationUniqueName); connectionEntry.GetStringFieldFieldViewModel(nameof(XrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.SetToSelectedRow(); Assert.AreEqual(recordConnection.OrganizationUniqueName, connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); //save the connection and verify added to grid Assert.IsTrue(connectionEntry.Validate()); connectionEntry.SaveButtonViewModel.Invoke(); }
public XrmPackageSettings GetTestPackageSettings() { if (_testPackageSettings == null) { var xrmConfiguration = new InterfaceMapperFor <IXrmConfiguration, XrmConfiguration>().Map(XrmConfiguration); var xrmRecordConfiguration = new XrmConfigurationMapper().Map(xrmConfiguration); var savedConnection = SavedXrmRecordConfiguration.CreateNew(xrmRecordConfiguration); var testSolution = ReCreateTestSolution(); var packageSettings = new XrmPackageSettings(); PopulateObject(packageSettings); packageSettings.AddToSolution = true; packageSettings.Solution = testSolution.ToLookup(); packageSettings.Connections = new SavedXrmRecordConfiguration[] { savedConnection }; _testPackageSettings = packageSettings; } return(_testPackageSettings); }
private void AddConnectionFieldsAutocomplete() { //standard online regional endpoints var onlineDiscoveryServices = new[] { new DiscoveryAutocomplete("North America", "https://disco.crm.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("North America 2", "https://disco.crm9.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("EMEA", "https://disco.crm4.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Asia Pacific Area", "https://disco.crm5.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Oceania", "https://disco.crm6.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Japan", "https://disco.crm7.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("South America", "https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("India", "https://disco.crm8.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Canada", "https://disco.crm3.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("United Kingdom", "https://disco.crm11.dynamics.com/XRMServices/2011/Discovery.svc"), }; this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { return(onlineDiscoveryServices); }, typeof(DiscoveryAutocomplete), nameof(DiscoveryAutocomplete.Value), new[] { new GridFieldMetadata(nameof(DiscoveryAutocomplete.Name), 120), new GridFieldMetadata(nameof(DiscoveryAutocomplete.Value), 450) }, sortField: nameof(DiscoveryAutocomplete.Name), displayInGrid: false), typeof(XrmRecordConfiguration), nameof(XrmRecordConfiguration.DiscoveryServiceAddress)); //get the organisations based on details entered this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var objectRecord = recordForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(null); } var thisConnectionEntered = objectRecord.Instance as XrmRecordConfiguration; if (thisConnectionEntered == null) { return(null); } var xrmRecordConfiguration = new XrmRecordConfigurationInterfaceMapper().Map(thisConnectionEntered); var xrmConfiguration = new XrmConfigurationMapper().Map(xrmRecordConfiguration); var xrmConnection = new Xrm.XrmConnection(xrmConfiguration); return(xrmConnection .GetActiveOrganisations());; }, typeof(Xrm.Organisation), nameof(Xrm.Organisation.UniqueName), new[] { new GridFieldMetadata(nameof(Xrm.Organisation.UniqueName), 100), new GridFieldMetadata(nameof(Xrm.Organisation.FriendlyName), 400) }, sortField: nameof(Xrm.Organisation.FriendlyName), displayInGrid: false, autosearch: false), typeof(XrmRecordConfiguration), nameof(XrmRecordConfiguration.OrganizationUniqueName)); }
public void SavedXrmConnectionsModuleTestEnterSavedConnections() { var recordConnection = new XrmConfigurationMapper().Map(XrmConfiguration as XrmConfiguration); //clear all saved settings for test script app var testApplication = TestApplication.CreateTestApplication(); var settingsFolder = testApplication.Controller.SettingsPath; FileUtility.DeleteFiles(settingsFolder); //create app with saved connections module testApplication = TestApplication.CreateTestApplication(); testApplication.AddModule <SavedXrmConnectionsModule>(); //navgiate to adding saved conneciton var dialog = testApplication.NavigateToDialog <SavedXrmConnectionsModule, SavedXrmConnectionsDialog>(); var savedConnectionsEntryForm = testApplication.GetSubObjectEntryViewModel(dialog); //click to add a connection to the grid var connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); connectionsGrid.DynamicGridViewModel.AddRowButton.Invoke(); var connectionEntry = testApplication.GetSubObjectEntryViewModel(savedConnectionsEntryForm); //verify autocompletes only display for those not reliant on existing values Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).AutocompleteViewModel); Assert.IsNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); //enter the connection connectionEntry.GetBooleanFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Active)).Value = true; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Name)).Value = "Script Entry 1"; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).Value = connectionEntry.GetPicklistFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.AuthenticationProviderType)).ItemsSource.First(p => p == PicklistOption.EnumToPicklistOption(recordConnection.AuthenticationProviderType)); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).Value = recordConnection.DiscoveryServiceAddress; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Domain)).Value = recordConnection.Domain; connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).Value = recordConnection.Username; connectionEntry.GetFieldViewModel(nameof(SavedXrmRecordConfiguration.Password)).ValueObject = recordConnection.Password; //including using autocomplete for the organisation unique name connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).SearchButton.Invoke(); Assert.IsTrue(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.Any()); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.SelectedRow = connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.DynamicGridViewModel.GridRecords.First(r => r.GetStringFieldFieldViewModel(nameof(Xrm.Organisation.UniqueName)).Value == recordConnection.OrganizationUniqueName); connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel.SetToSelectedRow(); Assert.AreEqual(recordConnection.OrganizationUniqueName, connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).Value); //save the connection and verify added to grid Assert.IsTrue(connectionEntry.Validate()); connectionEntry.SaveButtonViewModel.Invoke(); Assert.IsFalse(savedConnectionsEntryForm.ChildForms.Any()); connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); Assert.AreEqual(1, connectionsGrid.GridRecords.Count); //save the connections and verify reloads same form with the connection Assert.IsTrue(savedConnectionsEntryForm.Validate()); savedConnectionsEntryForm.SaveButtonViewModel.Invoke(); savedConnectionsEntryForm = savedConnectionsEntryForm = testApplication.GetSubObjectEntryViewModel(dialog, index: 1); connectionsGrid = savedConnectionsEntryForm.GetEnumerableFieldViewModel(nameof(SavedXrmConnections.SavedXrmConnections.Connections)); Assert.AreEqual(1, connectionsGrid.GridRecords.Count); //go to add another connection and verify username now has autocomplete due to existing value connectionsGrid.DynamicGridViewModel.AddRowButton.Invoke(); connectionEntry = testApplication.GetSubObjectEntryViewModel(savedConnectionsEntryForm); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.Username)).AutocompleteViewModel); Assert.IsNotNull(connectionEntry.GetStringFieldFieldViewModel(nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)).AutocompleteViewModel); }
private void AddConnectionFieldsAutocomplete() { //existing values for these var propertiesForAutocompleteExistingValues = new[] { new KeyValuePair <string, double>(nameof(SavedXrmRecordConfiguration.Domain), 150), new KeyValuePair <string, double>(nameof(SavedXrmRecordConfiguration.Username), 400), }; foreach (var prop in propertiesForAutocompleteExistingValues) { Func <RecordEntryViewModelBase, IEnumerable <AutocompleteOption> > getExistingValues = (recordForm) => { var parentForm = recordForm.ParentForm; if (parentForm == null) { return(new AutocompleteOption[0]); } var objectRecord = parentForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(new AutocompleteOption[0]); } var instance = objectRecord.Instance as ISavedXrmConnections; if (instance == null || instance.Connections == null) { return(new AutocompleteOption[0]); } return(instance .Connections .Select(pt => (string)pt.GetPropertyValue(prop.Key)) .Where(g => !string.IsNullOrWhiteSpace(g)) .Distinct() .Select(s => new AutocompleteOption(s)) .ToArray()); }; this.AddAutocompleteFunction(new AutocompleteFunction(getExistingValues, gridWidth: prop.Value , isValidForFormFunction: (f) => getExistingValues(f).Any(), displayInGrid: false), typeof(SavedXrmRecordConfiguration), prop.Key); } //existing values + the standard online regional endpoints var onlineDiscoveryServices = new[] { new DiscoveryAutocomplete("North America", "https://disco.crm.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("North America 2", "https://disco.crm9.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("EMEA", "https://disco.crm4.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Asia Pacific Area", "https://disco.crm5.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Oceania", "https://disco.crm6.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Japan", "https://disco.crm7.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("South America", "https://disco.crm2.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("India", "https://disco.crm8.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("Canada", "https://disco.crm3.dynamics.com/XRMServices/2011/Discovery.svc"), new DiscoveryAutocomplete("United Kingdom", "https://disco.crm11.dynamics.com/XRMServices/2011/Discovery.svc"), }; this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var parentForm = recordForm.ParentForm; if (parentForm == null) { return(onlineDiscoveryServices); } var objectRecord = parentForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(onlineDiscoveryServices); } var instance = objectRecord.Instance as ISavedXrmConnections; var otherSavedConnections = instance == null || instance.Connections == null ? new string[0] : instance .Connections .Select(pt => (string)pt.GetPropertyValue(nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress))) .Where(g => !string.IsNullOrWhiteSpace(g) && !onlineDiscoveryServices.Any(sv => sv.Value.ToLower() == g.ToLower())); return(onlineDiscoveryServices .Union(otherSavedConnections.Select(s => new DiscoveryAutocomplete(" ", s)))); }, typeof(DiscoveryAutocomplete), nameof(DiscoveryAutocomplete.Value), new[] { new GridFieldMetadata(nameof(DiscoveryAutocomplete.Name), 120), new GridFieldMetadata(nameof(DiscoveryAutocomplete.Value), 450) }, sortField: nameof(DiscoveryAutocomplete.Name), displayInGrid: false), typeof(SavedXrmRecordConfiguration), nameof(SavedXrmRecordConfiguration.DiscoveryServiceAddress)); //get the organisations based on details entered this.AddAutocompleteFunction(new AutocompleteFunction((recordForm) => { var objectRecord = recordForm.GetRecord() as ObjectRecord; if (objectRecord == null) { return(null); } var thisConnectionEntered = objectRecord.Instance as XrmRecordConfiguration; if (thisConnectionEntered == null) { return(null); } var xrmRecordConfiguration = new XrmRecordConfigurationInterfaceMapper().Map(thisConnectionEntered); var xrmConfiguration = new XrmConfigurationMapper().Map(xrmRecordConfiguration); var xrmConnection = new Xrm.XrmConnection(xrmConfiguration); return(xrmConnection .GetActiveOrganisations());; }, typeof(Xrm.Organisation), nameof(Xrm.Organisation.UniqueName), new[] { new GridFieldMetadata(nameof(Xrm.Organisation.UniqueName), 100), new GridFieldMetadata(nameof(Xrm.Organisation.FriendlyName), 400) }, sortField: nameof(Xrm.Organisation.FriendlyName), displayInGrid: false, autosearch: false), typeof(SavedXrmRecordConfiguration), nameof(SavedXrmRecordConfiguration.OrganizationUniqueName)); }