With the new FDC3 2.0 release, it’s become clear that the standard is now a mainstay for workflows across the finance industry. Nearly every update to the standard came from some form of community contribution—whether it was group members in discussion groups or stakeholders implementing FDC3 and reporting results back. It’s these real world use cases—and those participating—that have helped the standard evolve so successfully.
In this blog post, I’ll walk you through why FDC3 2.0 brings an important moment to the standard and interoperability across the industry.
Who is using FDC3?
We’re seeing quite an uptick in FDC3 adoption. More and more application providers and institutions are seeing the value of FDC3. For interoperability, automated workflows and easy application adoption you don’t need to reinvent the wheel. With FDC3, applications can communicate using the common language immediately (as long as you have a Desktop Agent). Single-use application customization and slow application acquisition is over (good news for vendors), and it’s easier than ever for developers to implement the standard.
It’s no wonder we’re seeing implementations sky-rocket. FactSet, J.P. Morgan, UBS, Citi, NatWest Markets and Refinitive are all implementing the standard. We’re seeing records broken—recently, 500+ people downloaded the (optional) NPM module in one day. Additionally, main market participants, buy-sides and a more diversified group are reaching out to us.
As FDC3’s lead maintainer, I love to see the feature requests and questions that increased usage of the standard brings. As I mentioned, FDC3 2.0 came from direct input from the community via discussion groups, standards working group meetings and Github. Developers, end-users and business stakeholders who use FDC3 in the wild share issues, input and use-case examples. It’s the beauty of an open-sourced standard: different voices come together to help evolve the standard, with insights that maintainers don’t always have the industry knowledge to predict.
FDC3 is a living thing by design, and honing and refining that living thing is part of the process. So, what’s new with FDC3 2.0?
Desktop Agent API: Transactions and Data Feeds
FDC3 1.0-1.2 makes it easy to send requests over to other apps to do something by raising an intent, and historically the Desktop Agent resolves it to an app that does something immediately, with you receiving back details of which app it was resolved by (which may have been selected by the user) . But what about workflows where you might want to retrieve data or details of a result back?
FDC3 2.0 allows for true transactions. You can now raise an intent and “wait” for a result from the triggered action (which doesn’t have to be immediate). This is useful for workflows where the action may need to be reviewed before it’s finalized, or just because it takes time to complete.
For example, Symphony might want a human being to look at a message before it gets sent, or an order form might pop up pre-filled and you may need someone to confirm it before the order is created and you find out what the order ID created was.
Additionally, you can now automate any form of CRUD operation or other transaction that you need to pass from one application to another. For example, if you’ve just updated a record, you can have the updated record back and see it merged. Now you can carry on your workflow with that data, for example logging an interaction (such as an email or chat message you generated) in a CRM or compliance reporting system.
You can also create APIs to deliver data feeds such as pricing streams, streams of trades, order details updates, etc. A use case that’s quite close to our hearts at Finsemble (as the original founders of ChartIQ) is plotting data on a chart. FDC3 2.0 makes it easier for us to get a stream of orders, relating to a particular stock or firm, that can all be displayed alongside the pricing stream—a boon for traders.
Identities for individual instances of apps
Other key changes in the API include making FDC3 aware of individual instances of applications. If you open an app or raise an intent with FDC3 it will now give you a reference to the application that you’ve opened so you can start targeting it. For example, consider pricing charts on a sales trader’s desktop. Often they have five different apps open because they are actively working on five different orders. FDC3 2.0 allows for the most relevant app to become available.
FDC3 can also now attribute messages on channels and raised intents to particular application instances, so that you know who you are interoperating with—something that FDC3 initially shied away from but has adopted (as an optional feature) based on feedback from key industry participants.
Improved channel support
FDC3 2.0 involved a lot of clean-up. For example, we renamed ‘System channels’ to ‘User channels’ to eliminate developer confusion about their use-case. We also got rid of some older things like the global channel that was there for compatibility with FDC3 1.0, and we’ve added a recommended set of channels which will be important for future work with multiple Desktop Agents talking to each other.
App Directory (or appD)
The FDC3 2.0 update that will perhaps have the most profound effect on workflows and app onboarding processes across the industry are the changes to appD. Check out our recent article The Power of FDC3 appD: A universal standard to distribute and discover applications published in Waterstechnology.com for an overview of its importance.
For FDC3 2.0, we spent time reconfirming the appD role in desktop interoperability and have significantly refined both the API and the application records it serves. The goal was to make it easy for vendors to publish applications out to the industry, while also making their applications discoverable. With appD, vendors are free from proprietary pay-to-play app/content stores. Let’s take a closer look at what the updated appD entails:
- Multiple appDs
The future of app directories include those built in-house, along with directories provided by different vendors or aggregated by a third party. FINOS plans to host its own directory of FDC3 enabled apps that firms will be able to pull from. Thus, it’s important that FDC3 2.0 appD allows the Desktop Agent API access to multiple appDs.
- Improved, standardized application records
An important step in FDC3 2.0 was to improve application records and distribution so that apps can be discoverable by more than one Desktop Agent. By significantly improving the application records that describe the apps, one record works for everybody.How does an application actually use interoperability? This is now part of the appD. Previously, this process took some work. A developer would have to review the documentation—assuming this was included. At times, working out which apps interoperate with which other apps was a case of talking to the other development team and comparing notes. Now what the app does is in the record.
- Search and browse
We’ve now added support for browsing and search use cases. If you have large app catalogs powered by app directories it’s helpful to navigate them with categories or other metadata that just wasn’t in FDC3 records before.
- And more…
We also have better support for native applications, and localization and accessibility with language tags and translations of the appD records (the application record translated in French, Italian, German, etc for example).
We see FDC3 2.0 and appD as massive simplification of a headache of a process. We’re hoping to see appDs pop up everywhere!
Let’s get workflow specific with context data and intents
As we see FDC3 1.0-1.2 adopted, we’re learning of more and more use cases, and this means more intents and context data types are needed. Standardization of these prevents each firm from having to build the integration from scratch. These new intents and data standards take building quality workflows to a whole new level.
What are the new or updated intents?
- ViewChart: Visualize data
- ViewAnalysis/ViewResearch: Find and share research
- ViewOrders/ViewQuote/ViewHoldings: Interact with an OMS
- StartCall/StartChat/StartEmail: Initiate communication
- ViewInteractions/StartCall/StartChat/StartEmail: Interact with a CRM
Work on many more is underway for future versions!
Previously, the set of standard intents was relatively limited and you had to create your own. Now the types of workflows (and apps that support them out of the box) are growing dramatically.
The “ViewChart” intent is resolved on this Finsemble Smart Desktop
Improved documentation and terminology
We’ve also cleaned up where you can learn more about FDC3. This was a FINOS-supported project to improve and formalize the documentation of the FDC3 standard. With this project we:
- Consolidated and improved the docs for each part of the standard
- Created a glossary for better defined terminology
- Clarified compliance requirements
- Deduplicated docs and improved their structure
- Added formal references to external standards and trademarks
Part of increasing adoption across the FDC3 community is making the standard easy to understand. In fact, we are so committed to helping the standard expand that Finsemble contributed an open-source FDC3 workbench to help vendors test and publish their application.
Join our community!
FDC3 2.0 came about from community-driven evolution, with a common goal for application interoperability and modernizing financial desktop workflows.
Already I can see how the evolving standard has allowed teams to do great things. We’re anticipating more and more FDC3 usage in years to come. What workflows would you like to see standardized? How can we make FDC3 even better? Join the standards working group.
For all things FDC3 (including the history and videos) visit our resources page. Check out my presentation from OSFF London (the Finos-hosted Open-Source in Finance Forum) for a more in-depth overview of FDC3 2.0.
It’s becoming clear that FDC3 has crossed the chasm, and is now firmly implanted in the workflows of capital markets. We look forward to what’s to come with FDC3, and hope to see you along the way.