Introduction

When it comes to managing business operations and finances, Microsoft Dynamics is a highly regarded enterprise resource planning and customer relationship management intelligent business applications system. On the other hand, FactSet is a financial data and analytics platform that provides financial data, analytics, and market insights to investment professionals.

What will happen if these two platforms are integrated?

Dynamics and FactSet Integration Opportunities

Integrating these two platforms using custom connectors or APIs can offer several benefits for businesses. Integrating Dynamics and FactSet can enable finance professionals to access real-time financial data and analysis seamlessly. With the integration, financial data and insights from FactSet can be accessed directly within Microsoft Dynamics, allowing investment professionals to make better-informed investment decisions. This integration can also save time and eliminate errors when manually gathering and organizing data from various sources.

The Powerful Integration in Power Apps

The best tool for integrating Dynamics and FactSet is Power Apps.

Power Apps is a low-code development platform developed by Microsoft that allows businesses to create custom applications without extensive coding knowledge. Power Apps can be used to create custom apps that integrate with Microsoft Dynamics and FactSet, enabling enterprises to build custom workflows that automate processes and streamline investment management workflows.

FactSet integration in PowerApps provides a centralized source of financial data, enabling users to easily create customized reports and dashboards, giving them the insights they need to make informed decisions.

For example, a business could use Power Apps to create a custom app that pulls financial data from FactSet and automatically populates it into Microsoft Dynamics. It could help to save time and reduce errors by eliminating the need for manual data entry. Additionally, Power Apps could be used to create custom dashboards or reports that provide real-time financial data and analysis, helping businesses to make more informed investment decisions.

It opens a world of possibilities for making fast, data-driven decisions with minimal time and effort.

How to Create a Power App for Dynamics and FactSet Integration Task

Task

Assume that you need to get stock prices for a list of companies every morning. FactSet formula API gives us the possibility to do this.

Solution

  1. Create .NET framework class library project.
  2. Add nugget packages. Libraries needed to work with Power Apps: Microsoft.CrmSdk
    FactSet provides C# SDK libraries:
    GitHub Repository
    NuGet Package
  3. Setup Credentials through FactSet's Developer Portal
  4. Create FactSet service. (In constructor, we initialize TimeSeriesApiclass that allows us to request API).

    public class FactSetService : IFinanceDataService
    {
        private readonly TimeSeriesApi apiInstance;
        private readonly HttpClient httpClient;
        private readonly FactSet.SDK.Formula.Client.Configuration config;
    
        public FactSetService(HttpClient httpClient)
        {
            config = new FactSet.SDK.Formula.Client.Configuration();
            var loginConfig = GetLoginConfig();
            ConfidentialClient confidentialClient = ConfidentialClient
                .CreateAsync(loginConfig, httpClient)
                .GetAwaiter()
                .GetResult();
    
            config.OAuth2Client = confidentialClient;
            this.apiInstance = new TimeSeriesApi(config);
            this.httpClient = httpClient;
        }
    }
  5. Create a method that will retrieve data from formula API for stock prices.

    public async Task<List<Entity>> GetStocks(List<string> companyIds)
    {
        var formulas = new List<string>()
        {
            $"P_PRICE({DateTime.Today.ToString("MM/dd/yyyy")})"
        };
    
        var names = new List<string>() { "price" };
    
        try
        {
            TimeSeriesApi.GetTimeSeriesDataResponseWrapper result =
                await apiInstance.GetTimeSeriesDataAsync(
                    formulas: formulas,
                    ids: companyIds,
                    displayName: names,
                    flatten: "Y"
                );
    
            var dataItems = result.Response200.Data;
            var resultList = new List<Entity>();
    
            foreach (var data in dataItems)
            {
                var field = data.GetTimeSeriesResultObjectFlattened();
                var counter = 0;
                var entity = new Entity("uds_stockPrice");
                entity["uds_copmanyId"] = field.RequestId;
                entity["uds_updated_at"] = field.Date;
                entity["uds_price"] = field.AdditionalProperties.ToDictionary(
                    x => x.Key,
                    y => y.Value
                )["price"]?.GetDouble();
                resultList.Add(entity);
            }
    
            return resultList;
        }
        catch (ApiException e)
        {
            throw new InvalidPluginExecutionException("Formula API request error: \n" + e.Message);
        }
    }



  6. Create a plugin where we initialize FactSet service and create new entities in Power Apps. 

    public class TestPlugin : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)
                serviceProvider.GetService(typeof(IOrganizationServiceFactory));
    
            IOrganizationService service = factory.CreateOrganizationService(null);
    
            var httpClient = HttpClientFactory.Create();
            var factSetService = new FactSetService(httpClient);
    
            var comanyIds = new List<string>() { "testId1", "testId2" };
            var stocks = factSetService.GetStocks(comanyIds).GetAwaiter().GetResult();
    
            foreach (var stock in stocks)
            {
                service.Create(stock);
            }
        }
    }

    So, we have a plugin assembly that will get data from FactSet and generate data in Power Apps.
    Now we are going to call this plugin from cloud flow.
  7. In the plugin registration tool register a new Custom API. 
    Customer API
  8. Open your working solution and create a new scheduled cloud flow. (Select the name and click 'Create' button).
    Guide image
    Guide image
  9. Select Add an element.  
    Guide image
  10. In Action Name select the name of custom API. 
    Guide image
  11. Run flow. 

Done! Now you can retrieve actual data from FactSet and show it in Power Apps. 

 

Benefits of Dynamics and FactSet integration in Power Apps

Integrating Dynamics and FactSet in Power Apps can provide several advantages for businesses.

  • With accurate and up-to-date data, businesses can make better decisions and avoid costly mistakes.
  • Automating workflows and processes can save time and resources, while real-time collaboration can enhance team productivity.
  • Access to a wealth of data and insights can help businesses make informed decisions.
  • Power Apps` agility allows businesses to quickly adapt to changing market conditions and customer needs.

Summary

In conclusion, integrating Microsoft Dynamics and FactSet through Power Apps presents many opportunities for businesses. With its low-code development capabilities, Power Apps provides a powerful tool for creating custom apps that integrate with Dynamics and FactSet, enabling companies to automate workflows, streamline investment management processes, and gain valuable insights through customized reports and dashboards. Whether a small business or a large enterprise, this integration can help companies to achieve their goals and stay competitive in today`s fast-paced business environment.