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.