Skip to main content
Full Circle Insights

The FCR_ExtensibilityAPI Class Interfaces and Methods

The FCRM.ExtensibilityAPI class is a global class that defines and implements the interface between the Full Circle CRM Response Management System and your extensibility plugin. Once your plugin is registered (using the advanced configuration page or API), an instance of your plugin class object will be created as needed and methods on the interface invoked by the application.

The IExtensibilityPlugin interface

The following methods are defined on this interface:

String GetUniqueName()

You must return a unique name for your extensibility plugin. We recommend you include your company name as part of this string in order to assure that it does not conflict with other company's plugins. This string is used to differentiate between plugins.

Set<string> RequestedAPIs()

Return a list of the API calls that you want this plugin to receive (case sensitive).

Map<String,Set<String>> RequestedFields

Returns a map of additional fields that should be included in queries by the application. The key is the Object Name: "CampaignMember,Lead,Contact, or Opportunity" (case sensitive). Only fields of the object itself may be included (i.e. you cannot specify Account.Name on a contact). Do not include keys (objects) for which there are no fields. Do not query fields in the Full Circle CRM namespace. Return null if not using this function. See documentation and notes for individual events for more information.

ExtensibilityEvent(eventname, IExtensibilityEventArgs)

The name of the extensibility event being called (see API Event Reference documentation for a list of events supported). 
IExtensibilityEventArgs object containing the information and parameters of this API event


The IExtensibilityArgs interface

The following methods are defined on this interface:

List<List<Sobject>> getRecordLists

An array of SObject arrays. The types and meaning of this data will depend on the event.

List<Map<ID, Sobject>> getRecordMaps

An array of SObject maps. The types and meanings of this data will depend on the event

List<List<ID>> getRecordids

An array of lists of IDs. The type and meaning of the ID will depend on the event.

List<Object> getAdditionalParams

An array of objects containing additional parameters. They type and meaning of these parameters will depend on the event.

Boolean setRaiseFuture

Use this method if this event is occuring during a future call to request a later event during a future context.

String getXMLdata

Additional data (depends on event type)



The Extensibility infrastructure will not raise extensibility events if already in the context of an extensibility event. In other words, if your plugin performs a DML operation that would normally cause the Response Management system to call plugins, it will not do so. This is necessary to prevent infinite loops.

The only exception to this are the scheduled operations (TimedAsync events), during which other extensibility events do occur.


Your plugin, like any APEX code, must adhere to limits. In most cases, your code will be sharing the limits of your organization. Use the following guidelines when building your plugin:

  • Your trigger should be as efficient as possible, as it may be called frequently. Avoid placing SOQL, DML or significant computation in the trigger or in your plugin object's constructor. Plugin initialization should be done during the first call to the ExtensibilityEvent method call.
  • The GetUniqueName, RequestedAPIs and RequestedFields methods are called in a standard SFDC context. There should be no need to perform any significant operations during these calls. Avoid any SOQL or DML calls during these methods.
  • The ExtensbilityEvent method may be called in either a trigger or future context. Be sure to adhere to SFDC restrictions of allowed operations during future calls.
  • It is STRONGLY recommended that you disable the response management system during any DML operations performed during an event on lead, contact, opportunity, account or CampaignMember objects using the DisableApplicationForContext API. Otherwise do not, under any circumstances, update more than 200 objects. Doing so will likely cause the application to exceed script limits.
  • Was this article helpful?