Providers

Here is the list of all providers shipped by default with Bulksign.



IFileScannerProvider

The IFileScannerProvider provider scans the uploaded files using an AV application.

1) ClamScanProvider : scan the uploaded PDF files using ClamAV antivirus.

Configuration :

"IFileScannerProvider": "Bulksign.FileScanner.ClamScanProvider, C:\\Program Files\\Bulksign\\Settings\\Providers\\ClamAV\\Bulksign.Provider.ClamAv.dll"

Provider Settings :

"IFileScannerProvider.ClamAVScanner.Port": "3310",
"IFileScannerProvider.ClamAVScanner.ServerName": "localhost",
"IFileScannerProvider.ClamAVScanner.TimeoutSeconds": "30",

Settings Description :

"Port" : the port used to connect to ClamAV
"ServerName" : name of the server on which ClamAV runs. We recommend to use localhost to minimize latency.
"TimeoutSeconds" : how much time to wait in seconds until receiving the scan report from ClamAV



IMailSenderProvider

The IMailSenderProvider provider is used to send the notification emails.

1) SmtpEmailSender : send emails using a SmtpClient

Configuration :

"IMailSenderProvider" : "Bulksign.Integrations.SmtpEmailSender,Bulksign.Integrations.dll"

Provider Settings :

"IMailSenderProvider.SmtpProvider.Host" : "",
"IMailSenderProvider.SmtpProvider.Password": "",
"IMailSenderProvider.SmtpProvider.UserName": "",
"IMailSenderProvider.SmtpProvider.Port": 465,
"IMailSenderProvider.SmtpProvider.UseSSL": true,
"IMailSenderProvider.SmtpProvider.DeliveryMethod": 1,
"IMailSenderProvider.SmtpProvider.UseDefaultCredentials": false,
"IMailSenderProvider.SmtpProvider.TimeoutSeconds" : 60,

Settings Description :

"Host" : The name of the email server host
"UserName" : User name used to connect to SMTP server
"Password" : Password used to connect to SMTP server
"Port" : The SMTP server port
"UseSSL" : Flag used to determine if the server connection is using SSL/TSL
"DeliveryMethod" : Set the SMTP server delivery method. Allowed Values :
1 - Network
2 - SpecifiedPickupDirectory
3 - PickupDirectoryFromIIS
"UseDefaultCredentials" : Flag to determine if default credentials are used when connecting to SMTP server
"TimeoutSeconds" : The connection timeout value in seconds



2) MailjetProvider : send emails using
Mailjet

Configuration :

"IMailSenderProvider" : "Bulksign.Providers.MailjetProvider,c:\\Program Files\\Bulksign\\Settings\\Providers\\Mailjet\\Bulksign.Provider.Mailjet.dll"

Provider Settings :

"IMailSenderProvider.Mailjet.ApiKey": "",
"IMailSenderProvider.Mailjet.SecretKey": "",
"IMailSenderProvider.Mailjet.Endpoint": "https://api.mailjet.com",

Settings Description :

"ApiKey": your Mailjet API key
"SecretKey": your Mailjet secret key,
"Endpoint": the Mailjet endpoint,



3) SendGridProvider : send emails using Sendgrid

Configuration :

"IMailSenderProvider" : "Bulksign.Providers.SendGridProvider,c:\\Program Files\\Bulksign\\Settings\\Providers\\Sendgrid\\Bulksign.Provider.SendGrid.dll"

Provider Settings :

"IMailSenderProvider.SendGrid.ApiKey" : "",
"IMailSenderProvider.SendGrid.TimeoutSeconds" : "60",

Settings Description :

"ApiKey" : your SendGrid API key
"TimeoutSeconds" : the request timeout



4) SparkpostProvider : send emails using Sparkpost

Configuration :

"IMailSenderProvider" : "Bulksign.Providers.SparkPostProvider,c:\\Program Files\\Bulksign\\Settings\\Providers\\Sparkpost\\Bulksign.Provider.Sparkpost.dll"

Provider Settings :

"IMailSenderProvider.SparkPost.ApiKey" : ""

Settings Description :

"ApiKey" : your Sparkpost API key



ISMSProvider

The ISMSProvider provider is used to send SMSes, it is required for the SMS OTP authentication and SM-OTP signature feature.

Multiple providers can be configured and each provider can handle one or multiple phone number prefixes (so, for example, a provider can be used to send OTPs for Swedish and Denmark phone numbers, another one for sending OTPs to Germany and Switzerland and another one to handling the rest).

Here is a sample configuration which illustrates number filtering. Assuming we have 3 providers (P1, P2 and P3) configured like this :

"ProviderConfiguration": {
    "ISMSProvider.P1.NumberFilter": "+34;+44;+456", 
    "ISMSProvider.P2.NumberFilter": "+80", 
    "ISMSProvider.P3.NumberFilter": "*", 
}

provider P3 will handle all phone numbers not handled by the other 2.

1) TwilioProvider : send SMSes using Twilio

Configuration :

"ISMSProvider" : "Bulksign.Providers.TwilioProvider,c:\\Program Files\\Bulksign\\Settings\\Providers\\Twilio\\Bulksign.Provider.Twilio.dll"

Provider Settings :

"ISMSProvider.Twilio.AccountSid": "", 
"ISMSProvider.Twilio.Token": "",
"ISMSProvider.Twilio.SenderPhoneNumber" : "",
"ISMSProvider.Twilio.NumberFilter" : "*"


2) BulksignSmsProvider : send SMSes using Bulksign SMS

Configuration :

"ISMSProvider" : "Bulksign.Providers.BulksignGatewayProvider,c:\\Program Files\\Bulksign\\Settings\\Providers\\BulksignGatewayProvider\\BulksignGateway.dll"

Provider Settings :

"ISMSProvider.BulksignGateway.ServiceUrl": "https://bulksign.com/smsgateway/",
"ISMSProvider.BulksignGateway.Key": "",
"ISMSProvider.BulksignGateway.NumberFilter": "",

Settings Description :

"ISMSProvider.BulksignGateway.Key": enter your authentication key received from us


Important!

If, after installing the on-premise version of Bulksign, you get this error : "The current envelope requires sending SMS but the SMSProvider is not configured. Please configure it to be able to send SMSes" , this means that have to configure the SMS Provider.



IPdfConversionProvider

The IPdfConversionProvider provider is used to convert Office documents to PDF.

Important!

The LibreOffice provider is enabled and requires LibreOffice version 4.2.4.2 to be installed on the server.

Also please note that this requires to update the app pool setting to load the user profile. Without this change the LibreOffice conversion will fail. This setting should be applied to both WebDashboard and WebApi app pools.

1) LibreOfficeProvider : convert documents to PDF using LibreOffice.

Configuration :

"IPdfConversionProvider" :"Bulksign.Integrations.LibreOfficePdfConverter, Bulksign.Integrations.dll"


Provider Settings :

"IPdfConversionProvider.LibreOfficePdfConverter.ConverterPath" : "C:\\Program Files (x86)\\LibreOffice 4\\program\\soffice.exe"
"IPdfConversionProvider.LibreOfficePdfConverter.ConverterRetries" : "195000"


Settings Description :

"IPdfConversionProvider.LibreOfficePdfConverter.ConverterPath" : The path to the LibreOffice's "soffice.exe" executable
"IPdfConversionProvider.LibreOfficePdfConverter.ConverterRetries" : The max number of conversion checks to do before timing out



2)AsposeProvider : convert documents to PDF using Aspose Words

Configuration :

"IPdfConversionProvider" : "Bulksign.Providers.AsposeConverter,c:\\Program Files\\Bulksign\\Settings\\Providers\\Aspose\\Bulksign.Provider.Aspose.dll"
Important!

Please note that Aspose conversion requires a license. Drop your license key file in the same folder as the provider to be able to use it.



ICertificateLoaderProvider

The ICertificateLoaderProvider provider is used to load a custom signing certificate.

1) CertificateStoreProvider : loads the signing certificate from Windows certificate store.

Configuration :

"ICertificateLoaderProvider" : "Bulksign.Integrations.CertificateStoreProvider, Bulksign.Integrations.dll"

The requirements for this provider are :

  • the certificate must have a private key

  • the private key of the certificate must be marked as exportable.

  • the user under which Bulksign is configured to run must have access to that certificate.

If these requirements are met, the following data needs to be configured :

Provider Settings :

"ICertificateLoaderProvider.CertificateStoreProvider.StoreName": "",
"ICertificateLoaderProvider.CertificateStoreProvider.Thumbprint": "",
"ICertificateLoaderProvider.CertificateStoreProvider.Password": ""

Settings Description :

"ICertificateLoaderProvider.CertificateStoreProvider.StoreName"

This is the name of the certificate store category, the following values can be used :

"My" -> The X.509 certificate store for personal certificates

"AddressBook" -> The X.509 certificate store for other users.

"AuthRoot" -> The X.509 certificate store for third-party certificate authorities (CAs).

"CertificateAuthority" -> The X.509 certificate store for intermediate certificate authorities (CAs).

"Root" -> The X.509 certificate store for trusted root certificate authorities (CAs).

"TrustedPeople" -> The X.509 certificate store for directly trusted people and resources.

"TrustedPublisher" -> The X.509 certificate store for directly trusted publishers.

"ICertificateLoaderProvider.CertificateStoreProvider.Thumbprint" : this is the thumbprint that identifies the certificate

"ICertificateLoaderProvider.CertificateStoreProvider.Password" : the password of the certificate, leave empty if it doesn't have one.



2) CertificatePathProvider : load the signing certificate from file system (format must be p12/pfx)

Configuration :

"ICertificateLoaderProvider" : "Bulksign.Integrations.CertificatePathProvider, Bulksign.Integrations.dll"

Provider Settings :

"ICertificateLoaderProvider.CertificatePathProvider.Path": "",
"ICertificateLoaderProvider.CertificatePathProvider.Password": ""

Settings Description :

"ICertificateLoaderProvider.CertificatePathProvider.Path" : the path to the certificate pfx/p12 file "ICertificateLoaderProvider.CertificatePathProvider.Password": the certificate password



IReverseGeolocationProvider

The IReverseGeolocationProvider provider retrieves location data based on signer latitude/longitude data read from browser. This data is then added to the audit trail.

1) ReverseGeolocation : does reverse geolocation using Google Maps (based on the latitude/longitude information).

Configuration :

"IReverseGeolocationProvider": "Bulksign.Integrations.ReverseGeolocation, Bulksign.Integrations.dll"

Provider Settings :

"IReverseGeolocationProvider.GoogleMaps.Key": "",

Settings Description :

"IReverseGeolocationProvider.GoogleMaps.Key": the Google Maps key



IIPGeolocationProvider

The IIPGeolocationProvider provider retrieves geo-location data using the signer IP address. If this provider is enabled the signers geolocation data will be added to the audit trail.

1) IPGeolocation : does IP geolocation using the ip-api.com

Configuration :

"IIPGeolocationProvider": "Bulksign.Integrations.IPGeolocation,Bulksign.Integrations.dll"

Provider Settings :

"IIPGeolocationProvider.IpApi.ApiKey": "",

Settings Description :

"IIPGeolocationProvider.IpApi.ApiKey": your ip-api.com key



ICompletedEnvelopeBackupProvider

The ICompletedEnvelopeBackupProvider provider allows you to backup envelope completed file to a different system.

1) CompletedEnvelopeBackupToFileSystem : copies the completed envelope zip file to a preconfigured path on the filesystem

Configuration :

"ICompletedEnvelopeBackupProvider": "Bulksign.Integrations.CompletedEnvelopeBackupToFileSystem, Bulksign.Integrations.dll"

Provider Settings :

"ICompletedEnvelopeBackupProvider.CompletedEnvelopeBackupToFileSystem.OutputPath": "\\myfilesystem\backup\",
"ICompletedEnvelopeBackupProvider.CompletedEnvelopeBackupToFileSystem.CreateSubFolder": "true"

Settings Description :

"ICompletedEnvelopeBackupProvider.CompletedEnvelopeBackupToFileSystem.OutputPath": the path to which the envelope completed zip files will be copied.

"ICompletedEnvelopeBackupProvider.CompletedEnvelopeBackupToFileSystem.CreateSubFolder": boolean flag which indicates if a folder name will be created for each envelope



ISummaryProvider

The ISummaryProvider allows the creation of a summary based on the entire document content.

1) OpenAIProvider : provider which generates the document summary using ChatGTP

Configuration :

"ISummaryProvider": "Bulksign.Providers.OpenAiProvider, c:\\Program Files\\Bulksign\\Settings\\Providers\\OpenAi\\Bulksign.Provider.OpenAi.dll"

Provider Settings :

"ISummaryProvider.OpenAI.ApiKey": "",
"ISummaryProvider.OpenAI.Organization": ""

Settings Description :

"ISummaryProvider.OpenAI.ApiKey": your OpenAI API key "ISummaryProvider.OpenAI.Organization": your OpenAI organization key



IStorageEncryptionProvider

The IStorageEncryptionProvider allows to retrieve the encryption key for the storage encryption feature

1) EnvironmentStorageEncryptionProvider : provider which retrieves the storage encryption key from Windows environment variables.

Configuration :

"StorageEncryption": {
    "Enabled": false,
    "IStorageEncryptionProvider": "Bulksign.Integrations.EnvironmentStorageEncryptionProvider, Bulksign.Integrations.dll"
  },

Provider Settings :

"IStorageEncryptionProvider.EnvironmentVariable.VariableName": "BulksignKey",
"IStorageEncryptionProvider.EnvironmentVariable.Target": "Machine",

Settings Description : "IStorageEncryptionProvider.EnvironmentVariable.VariableName": the name of the environment variable key which stores the encryption key

"IStorageEncryptionProvider.EnvironmentVariable.Target": use "Machine" or "User" depending on which type the environment variable is.

2) VaultProvider : provider which retrieves the storage encryption key from Vault

Configuration :

"StorageEncryption": {
    "Enabled": false,
    "IStorageEncryptionProvider": "Bulksign.Providers.VaultProvider, c:\\Program Files\\Bulksign\\Settings\\Providers\\Vault\\Bulksign.Provider.Vault.dll"
  },

Provider Settings :

"IStorageEncryptionProvider.Vault.Token": "",
"IStorageEncryptionProvider.Vault.Url": "",
"IStorageEncryptionProvider.Vault.SecretPath": "",
"IStorageEncryptionProvider.Vault.MountPoint": "",
"IStorageEncryptionProvider.Vault.Key": "",

Settings Description :

"IStorageEncryptionProvider.Vault.Token": the value of the access token used to authenticate to Vault "IStorageEncryptionProvider.Vault.Url": the Vault instance url "IStorageEncryptionProvider.Vault.SecretPath": the secret path "IStorageEncryptionProvider.Vault.MountPoint": the mount point "IStorageEncryptionProvider.Vault.Key": the name of the key

IEnvelopeStatusCallbackProvider and IRecipientActionCallbackProvider

The IEnvelopeStatusCallbackProvider and IRecipientActionCallbackProvider providers are used to dispatch callbacks.

1) HttpEnvelopeStatusCallbackProvider and HttpRecipientActionCallbackProvider : these provider sends callbacks using HTTP requests.

Configuration :

"IEnvelopeStatusCallbackProvider": "Bulksign.Integrations.HttpEnvelopeStatusCallbackProvider, Bulksign.Integrations.dll"

"IRecipientActionCallbackProvider": "Bulksign.Integrations.HttpRecipientActionCallbackProvider, Bulksign.Integrations.dll",

Provider Settings :

"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.RequestVerb": "get",
"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.IgnoreHttpsCertificateError": "true",
"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.TimeoutSeconds": "10",

"IRecipientActionCallbackProvider.HttpRecipientActionCallbackProvider.RequestVerb": "get",
"IRecipientActionCallbackProvider.HttpRecipientActionCallbackProvider.IgnoreHttpsCertificateError": "true",
"IRecipientActionCallbackProvider.HttpRecipientActionCallbackProvider.TimeoutSeconds": "10",

Settings Description :

"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.RequestVerb": set if the callback will use "get" or "post".

"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.IgnoreHttpsCertificateError" : boolean flag which determines if the SSL certificate is validated or not

"IEnvelopeStatusCallbackProvider.HttpEnvelopeStatusCallbackProvider.TimeoutSeconds" : set the request timeout in seconds.



2) NamedPipeEnvelopeCallbackProvider and NamedPipeRecipientActionCallbackProvider : send callbacks using named pipes.

Configuration :

"IEnvelopeStatusCallbackProvider": "Bulksign.Integrations.NamedPipeEnvelopeCallbackProvider, Bulksign.Integrations.dll"

"IRecipientActionCallbackProvider": "Bulksign.Integrations.NamedPipeRecipientActionCallbackProvider, Bulksign.Integrations.dll",

Provider Settings :

"IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.PipeName": "bulksign",
"IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.MachineName": ".",
"IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.TimeoutInSeconds": "30",

"IRecipientActionCallbackProvider.NamedPipeRecipientActionCallbackProvider.PipeName": "bulksign",
"IRecipientActionCallbackProvider.NamedPipeRecipientActionCallbackProvider.MachineName": ".",
"IRecipientActionCallbackProvider.NamedPipeRecipientActionCallbackProvider.TimeoutInSeconds": "30",

Settings Description :

"IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.PipeName" : the name of the pipe used to exchange the information "IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.MachineName": the name of the machine. Use "." for local machine "IEnvelopeStatusCallbackProvider.NamedPipeEnvelopeCallbackProvider.TimeoutInSeconds": set the timeout

For the envelope status callback the data sent over the named pipe has the same schema :

{
    "Status" : "",
    "EnvelopeId" : "",
    "SenderEmail" : ""
}

For the recipient action callback the data sent over the named pipe has the same schema :

{
    "Action":"",
    "RecipientEmail":"",
    "SenderEmail":"",
    "EnvelopeId":""
}



3) RabbitMQEnvelopeStatusProvider and RabbitMQRecipientActionProvider : sends the callbacks to a RabbitMQ queue.

Configuration :

"IEnvelopeStatusCallbackProvider": "Bulksign.RabbitMQ.RabbitMQEnvelopeStatusProvider, c:\\Program Files\\Bulksign\\Settings\\Providers\\RabbitMQ\\Bulksign.Provider.RabbitMQ.dll"

"IRecipientActionCallbackProvider": "Bulksign.RabbitMQ.RabbitMQRecipientActionProvider, c:\\Program Files\\Bulksign\\Settings\\Providers\\RabbitMQ\\Bulksign.Provider.RabbitMQ.dll",

Provider Settings :

"IEnvelopeStatusCallbackProvider.RabbitMQProvider.Hostname": "integration",
"IEnvelopeStatusCallbackProvider.RabbitMQProvider.Queue": "bulksign",
"IEnvelopeStatusCallbackProvider.RabbitMQProvider.RoutingKey": "rk",
"IEnvelopeStatusCallbackProvider.RabbitMQProvider.Port": "114",


"IRecipientActionCallbackProvider.RabbitMQProvider.Hostname": "integration",
"IRecipientActionCallbackProvider.RabbitMQProvider.Queue": "bulksign",
"IRecipientActionCallbackProvider.RabbitMQProvider.RoutingKey": "rk",
"IRecipientActionCallbackProvider.RabbitMQProvider.Port": "114",

Settings Description :

"IEnvelopeStatusCallbackProvider.RabbitMQProvider.Hostname": the name of the RabbitMQ machine "IEnvelopeStatusCallbackProvider.RabbitMQProvider.Queue": the name of the queue "IEnvelopeStatusCallbackProvider.RabbitMQProvider.RoutingKey": the name of the routing key "IEnvelopeStatusCallbackProvider.RabbitMQProvider.Port": the port used to connect to RabbitMQ

For the envelope status callback the data sent over the named pipe has the same schema :

{
    "Status" : "",
    "EnvelopeId" : "",
    "SenderEmail" : ""
}

For the recipient action callback the data sent over the named pipe has the same schema :

{
    "Action":"",
    "RecipientEmail":"",
    "SenderEmail":"",
    "EnvelopeId":""
}