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
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 different file formats to PDF.
1) DefaultProvider :
The default provider can convert text, Microsoft Office and image files to PDF.
The supported file formats by this provider are : .pdf,.txt,.html,.ods,.odt,.doc,.docx,.xls,.xlsx,.pptx,.ppt,.jpg,.png,.bmp,.csv
For Microsoft Office file conversions, MS Office NEEDS to be installed on the server.
2) LibreOfficeProvider : converts both Libre/OpenOffice and MicrosoftOffice documents to PDF using LibreOffice.
The supported file formats by this provider are : .pdf,.txt,.html,.ods,.odt,.doc,.docx,.xls,.xlsx,.pptx,.ppt,.jpg,.png,.bmp,.csv
The LibreOffice provider requires LibreOffice version 4.2.4.2 to be installed on the same server as Bulksign
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.
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
3) AsposeProvider : convert documents to PDF using Aspose Words
Configuration :
"IPdfConversionProvider" : "Bulksign.Providers.AsposeConverter,c:\\Program Files\\Bulksign\\Settings\\Providers\\Aspose\\Bulksign.Provider.Aspose.dll"
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":"" }