Building External Storage Provider

Version 7

    What is the External Storage Framework

     

    The External Storage Framework (ESF) is a foundation on which our customers can build configurable integrations with any of their External Storage Providers (ESPs). If they’re using Documentum (as an example) for their document storage, they can easily build an ESP that will connect Jive to Documentum and allow them to continue to work and collaborate inside Jive, while leveraging Documentum as the place where all binaries are stored.

    ESP is the middle man between Jive and the external system that is responsible for the communication with Jive on one side and the external system on the other.

     

    Possibilities with the ESF:

    • Use the ESP as backend binary storage for documents stored in Places
    • Connect Jive Places to ESP folders/sites/etc
    • Sync members between Jive and ESP
    • Sync document versions/updates between Jive and ESP
    • Sync comments on a document between Jive and ESP, where comments are available in the ESP
    • Configure the availability of the integration for only certain users, as desired
    • Configure the default storage provider, Jive or an ESP

     

    External Storage Provider (ESP) is essentially a REST service on your preferred technology that implements the relevant end-points for Jive to connect with.

     

    Why This is Good for You

     

    The ESF allows you to:

    • Easily build configurable integrations to your own internal system (even just a local file repository) without having to wait for Jive/PS to do it for them.
    • Have full control over the specifics of your custom integrations, based on your needs
    • Build this integration in such a way that it is standardised and upgrade-proof
    • Have multiple ESPs configured differently based on specific requirements for each ESP
    • The ESP itself can be a REST service store locally inside you firewall being the mitigator with your internal app of storage.

     

    Building External Storage Provider

     

    Building an ESP is easy:

    • First you'll need a REST service, it can be using any technology you prefer and can be hosted anywhere you want as long as your jive instance can do http calls to it.
    • Next, create you AddOn (Building a Jive Add-on) and define a StorageDefinition in the definitions.js
    • In your ESP service implement:
      • One or more of the Configuration pages (see below)
      • The required endpoints such as the /register call, /uploadFile etc ([LINK TO THE DOCUMENTATION])
      • Any other optional capabilities you like
    • Install your Add-on on your instance and configure a Storage instance in the Storage Management tab (see below)
    • You're all set ! Now when you'll create a group you will have the option to choose your ESP as the Storage backhand of that group !


    Show me an example?

     

    You can run a Jive Node SDK example using the following command:

    jive-sdk create example-filestorage
    

     

    The source code for this example is available here.


    References & Further Reading

     

    [LINK TO THE DOCUMENTATION]

     

    Storage Definition Example

     

     

    "storageDefinitions":[
            {
                 "name": "MOCK_ESP_JIVE_STORAGE_DEF",
        "displayName": "mock.esp.storage_defintion.display_name",
        "description": "mock.esp.storage_defintion.description",
        "configPlace": "%serviceURL%/admin/configurePlace.html",
        "configInstance": "%serviceURL%/admin/configureInstance.html",
        "registerPlace": "%serviceURL%/rest/containers/register",
        "goToContainerName": "mock.esp.storage_defintion.gotofolder",
        "goToFileName":"mock.esp.storage_defintion.gotofile",
        "healthCheckURL": "%serviceURL%/rest/containers/healthcheck",
    
    
        "userMappingOptions": [
            "USERNAME",
           "EMAIL"
        ],
        "supportedResourceNames": [
            "uploadFile",
            "downloadFile"
        ],
        "prefixUrl": "%serviceURL%",
        "clientID": "123453",
        "icons": {
            "16": "http://www.atarhafakot.co.il/img/man-2-icon.png",
            "48": "http://www.directorlab.co.il/wp-content/uploads/2013/01/george-lucas-icon.png",
            "128": "http://betar.org.il/hadracha/wp-content/uploads/2011/02/MDI-Text-Editor-icon.png"
        }
            }
        ]
    
    
    
    
    
    
    
    
    
    
    

     

    Storage Management

     

    The Storage Management page (User drop-down>Add-ons>Storage Management) is a page that only visible to Admins and allows them to define what Storage Providers can be used in that instance, from the installed Add-ons.

     

    Note - Due to safety reasons, Installing an Add-on with a Storage definition does not automatically activate it as a Storage option.

    To activate your ESP to be available for your Jive users you need to activate it in the Storage Management page (by clicking the "Add Integration" button).

     

    Add-ons___Jive 2.png

     

     

    Configuration pages of an ESP

     

    There are 3 optional configuration pages the ESP can surface at Jive:

    • Add-on level config - (Visible to admins) shows up after installing the Add-on or when modifying the Add-on.
      Mainly used for "instance wide" configuration such as authentication (service account), instance information etc
    • General settings config - (Visible to admins) shows up after configuring a Storage instance in the Storage Management tab. Default is what is being set to "Everyone" but the admin can also create "Permissions Overrides" using Jive permissions groups and open up this config for each specific override.
      Mainly used for cases you want the Place-creation-config to be different for different users or just for the admin to set up default values or stuff like that.
    • Place creation config - (Visible to all place creation permitted users) shows up after user chooses to use the ESP as the storage integration. Get's the default from the General settings config according to the acting user.
      Mainly used for setting specific information about the mapped container that the ESP will create in the external system (for ex a Folder that is created on google drive, can have custom settings for the user such custom labels etc).

     

    Note - All 3 are optional and there appearance depends on whether the specific config endpoint was provided in the definition or not.

     

    Add-on level config

    Add-ons___Jive-2.png

    General settings config

    Add-ons___Jive.png

    Place creation config


    Create_Group___Jive.png