Platform architecture

Here is a high level component overview of the Bulksign platform :



arhitecture diagram




Here are main components of the Bulksign platform :

WebSign : the signing web application, this is used by the signers to read and sign the documents.

Dashboard : the main dashboard, this is the application used to send documents for signing.

WebApi : the application that exposes the SOAP and REST Bulksign API.

BackgroundService : always running Windows service that is processing background tasks.



Deployment


We offer maximum flexibility when deploying Bulksign : from all components deployed together on same machine to deploying each component separately. Or load balancing one or all user facing components. The only component which is required to be single instance is BackgroundService



Components Visibility


The most common deployment scenario is to make WebSign publicly accessible (so it will be accessible to everyone) and make the Dashboard and WebApi components private (accessible only to your organization intra-net).

Load Balancing

Sticky sessions

Sessions is kept in-memory, just provision and deploy Bulksign on the servers you need and added them to load balancer.

No sticky sessions

For no sticky sessions, the session state must be kept in a database. For this scenario, please follow these steps :

  • create an empty SQL Server database.

  • connect to the database and run the following SQL script to create the schema :

CREATE TABLE [dbo].[SQLSessions](  
    [Id] [nvarchar](449) NOT NULL,  
    [Value] [varbinary](max) NOT NULL,  
    [ExpiresAtTime] [datetimeoffset](7) NOT NULL,  
    [SlidingExpirationInSeconds] [bigint] NULL,  
    [AbsoluteExpiration] [datetimeoffset](7) NULL,  
 CONSTRAINT [pk_Id] PRIMARY KEY CLUSTERED   
(  
    [Id] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]  
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]  
  
GO  
CREATE NONCLUSTERED INDEX [Index_ExpiresAtTime] ON [dbo].[SQLSessions]  
(  
    [ExpiresAtTime] ASC  
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
GO
  • modify the appsettings.json file of WebDashboard and/or WebSign and enabled DB session storage like this :
    "Session": {
        "EnableShared" : true
        "SharedConnectionString" : "session_db_connection_string"
    }