---
schema_version: "1"
id: f2c9ae0e3574dfee34c9bded0f2dec4baaaf28af328accbeed2891ab748ad54a
title: Callable Implementations
collection: admin
version: current
locale: en-us
portal_url: https://docs.salesforce.com/admin/current/en-us/xcloud/264-0-0/os_callable_implementations.md
canonical_url: https://help.salesforce.com/s/articleView?id=xcloud.os_callable_implementations.htm&release=264.0.0&type=5
source_site: help.salesforce.com
content_type: documentation
content_hash: fade4e544bfa450c41d585efad106ad800542edc157f7f853fc6e1206c6486f0
description: Vlocity Apex classes and the Remote Actions of Omniscripts and Integration Procedures support the Callable interface.
products:
  - Omnistudio
release: "264"
---
# Callable Implementations

Vlocity Apex classes and the Remote Actions of Omniscripts and Integration Procedures support the Callable interface.

Although the VlocityOpenInterface and VlocityOpenInterface2 interfaces enable flexible implementations with a uniform signature, they reside in the Vlocity managed package and aren't truly Salesforce standards. However, classes that implement VlocityOpenInterface or VlocityOpenInterface2 also implement the [Callable Interface](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_interface_System_Callable.htm), which is a Salesforce standard.

In addition, Remote Actions of Omniscripts and Integration Procedures can invoke any class that implements Callable, regardless of whether it implements VlocityOpenInterface or VlocityOpenInterface2. You specify the Remote Class, Remote Method, and Additional Input properties in the same way for classes that implement any of these interfaces.

To change custom classes that implement VlocityOpenInterface or VlocityOpenInterface2 to Callable implementations, convert the signature with a few lines of code:

```
global with sharing class ClassName implements Callable
{
    public Object call(String action, Map<String, Object> args) {

        Map<String, Object> input = (Map<String, Object>)args.get('input');
        Map<String, Object> output = (Map<String, Object>)args.get('output');
        Map<String, Object> options = (Map<String, Object>)args.get('options');

        return invokeMethod(action, input, output, options);
    }
    private Object invokeMethod(String methodName, Map<String, Object> inputMap, Map<String, Object> outMap, Map<String, Object> options) {
        ...
    }
    ...
}
```

For a full example, see [Make a Long-Running Remote Call Using Omnistudio.OmniContinuation](https://help.salesforce.com/s/articleView?id=xcloud.os_make_a_long_running_remote_call_using_omnistudio_omnicontinuation_56479.htm&release=264.0.0&type=5 "To support long-running remote calls, Vlocity supports the use of the Salesforce Continuation object.").