Extensibility


Besides the SOAP/REST API the Bulksign platform has a series of extensibility points that allow overwriting parts of its functionality. These can be done by referencing our Extensibility Library and implementing a custom provider. Here are the extension points :

  • ISMSProvider

Allows the implementation of a new SMS provider (to be used by Bulksign to sent SMSes). GitHub sample

  • IReverseGeolocationProvider

Allows the implementation of a provider used to get the location using the latitude and longitude (which are provided by the browser).

  • IPdfConversionProvider

Allows the implementation of a provider used to convert files to PDF.

  • IIPGeolocationProvider

Allows the implementation of a provider used for geolocation using the IP address. There's also a sample on GitHub

  • IRecipientActionNotificationProvider

Allows the implementation of a provider used to send the callback for a recipient action.

  • IEnvelopeStatusChangedNotificationProvider

Allows the implementation of a provider used to send the callback for a envelope status action.

  • ICompletedEnvelopeBackupProvider

Allows the implementation of a provider that allows access directly to the envelope finished archive file. Can be used to back up all finished envelope files as soon as they are finished.

  • ICertificateLoaderProvider

Allows the implementation of a provider that loads the default signing certificate

  • IMailSenderProvider

Allows the implementation of a provider used to send emails. This can be used instead of the default SMTP provider. By default, Bulksign ships with built-in providers for Sendgrid, Sparkpost and Mailjet

  • IRemoteSignProvider

Allows the implementation of a signature provider in which the signing is done remotely, either with certificates stored on a HSM or by a CA. Please see also the remote signature provider documentation

  • IDisposableSignProvider

Allows the implementation of a "disposable/one shot" signature that allows integration with a remote Certification Authority which emits a short lived certificate usable for a single signing session.

  • IStorageEncryptionProvider

Allows the implementation of a provider which returns the encryption key for the storage encryption feature

  • IFileScannerProvider

Allows the implementation of a provider which scans the PDF documents before they are written to disk.




Developing a Bulksign provider


We recommend you to clone one of our sample project from Github as a start point :


If you want to start from scratch, create a new .NET project that targets either .NET 8 and reference our Extensibility Library

FAQ :


1) How can I log from my custom provider ?

Logging is done using the "Log" event, like this :

  • log some info text
    Log(LogLevel.Info, null, "Sample text");
  • log exception
    Log(LogLevel.Error, exception, string.Empty );

These log entries can be found in the log file of the Bulksign component which loads your custom library.
2) How can I easily find my own log entries ?

You can prefix the log messages with your own provider name, like this

    Log(LogLevel.Info, null, "${ProviderName} : sample log text ");

and then search the logs with your provider name.


2) How do I configure my custom provider ?

Configuration is done from the main Bulksign configuration file, the configuration for providers follows this pattern : ProviderType.ProviderName.SettingName

Here is an example :

    "ISMSProvider.MyProvider.FirstSetting": "test",
    "ISMSProvider.MyProvider.SecondSetting": "anotherTestValue",


3) How to I access the settings of my custom provider ?

The property name is "Settings", it's a dictionary which contains the setting name and value.


4) What is HttpClient property for ?

It's the application's shared HttpClient instance, you can use it to do network requests from your provider.

5) What is the JsonSerializer property for ?

It can be used for JSON serialization in the provider.