---
schema_version: "1"
id: f88c86360548e4188ec4d652e1df23db61412fdbbae1a27109b6cf00cacf7c0b
title: Create Hooks for MultiServiceAppHandler
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/industries/cme/guides/comms-t-create-hooks-for-multiserviceapphandler.md
canonical_url: https://developer.salesforce.com/docs/industries/cme/guide/comms-t-create-hooks-for-multiserviceapphandler.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 803ed8b2b2082961d12713245b9f6583915d8cc365adefe54fe3338c4be8a5d6
products:
  - Communications, Media, Energy and Utilities APIs (Managed Package)
  - Industries Developer Documentation
---
# Create Hooks for MultiServiceAppHandler

The Multisite APIs provide an option to write custom pre- and post-hooks for each API to implement custom logic. A pre-hook is run before the actual API runs. A post-hook runs after the actual API runs.

1.  Write the custom class to implement the pre and post hook.

    Example code:

    ```nolang
    1 global with sharing class MSCustomHookImplementation implements vlocity_cmt.VlocityOpenInterface
    2 {
    3  global Boolean invokeMethod(String methodName, Map<String, Object> input, Map<String, Object> output, Map<String, Object> options)
    4  {
    5    if( methodName.equalsIgnoreCase('getGroups.PreInvoke'))
    6    {
    7      getGroups_PreInvoke(methodName, input, output,options);
    8      return true;
    9    }
    10
    11    if( methodName.equalsIgnoreCase('getGroups.PostInvoke'))
    12    {
    13      getGroups_PostInvoke(methodName, input, output,options);
    14      return true;
    15    }
    16
    17    return false;
    18  }
    19
    20  private void getGroups_PreInvoke(String methodName, Map<String, Object> input, Map<String, Object> output, Map<String, Object> options)
    21  {
    22    //This method gets called before getGroups
    23  }
    24  private void getGroups_PostInvoke(String methodName, Map<String, Object> input, Map<String, Object> output, Map<String, Object> options)
    25  {
    26    //This method gets called after getGroups
    27  }

    ```

2.  Create the interface implementation.

    1.  From the App Launcher, click **Interface Implementations**.

    2.  Click **New**.

    3.  In the New Interface Implementation dialog, enter the following:

        - **Interface Name:** MSAppHandlerHookInterface

        - **Active Implementation Class:** MSCustomHookImplementation (Name of Custom Class)

    4.  Click **Save**.

3.  Create a new Interface Implementation Detail for the interface created above.

    1.  On the Related tab for your new custom interface implementation, click **New**.

    2.  In the New Interface Implementation Detail dialog, enter MSCustomHookImplementation for **Available Implementation**.

    3.  Click **Active** to make this implementation the active implementation.

    4.  Click **Save**.
