Installation
Steps to install and configure the Remote Signature application in OpenKM v7.1:
- Stop Tomcat
- Download the application from the OpenKM download center
- This application needs to share the database with OpenKM, so you don’t need to create a new one
- Copy the remote-signature.properties file into Tomcat and modify the configuration parameters
# Logging configlogging.file=${catalina.home}/logs/remote-signature.loglogging.level.org.springframework.security=INFOlogging.level.org.hibernate.sql = INFOlogging.level.com.openkm=INFO#logging.level.web=DEBUG
# Enable debugging for Spring Boot autoconfiguration#debug=true
# OpenKM Hibernate configuration valuesspring.datasource.driver-class-name=org.mariadb.jdbc.Driverspring.datasource.url=jdbc:mariadb://localhost:3306/remote-signature?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=truespring.datasource.username=openkmspring.datasource.password=openkm
# JPAspring.jpa.show-sql=falsespring.jpa.hibernate.ddl-auto=updatespring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialectspring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImplspring.jpa.properties.hibernate.jdbc.batch_size=50spring.jpa.properties.hibernate.order_inserts=truespring.jpa.properties.hibernate.order_updates=truespring.jpa.properties.hibernate.batch_versioned_data=true
# Base URLbase.url=http://localhost:8080/remote-signature
# OpenKMopenkm.url.preview=http://localhost:8080/openkmopenkm.url=http://localhost:8080/openkm
# OpenKM anonymous useropenkm.anonymous.user=okmAdminopenkm.anonymous.password=admin
# OpenKM admin useropenkm.admin.user=okmAdminopenkm.admin.password=admin
# Languagelanguages=es-ES#Español,en-GB#Englishdefault.language=en-GB
# Default cron trigger (by default every 15 minutes)cron.expression=0 0/15 * * * *
mail.from=
tenant.list=tenant.users=tenant.users.password=- Start Tomcat
- Log into OpenKM
- Go to Administration > Utilities > Database query and execute these SQL statements to create the required configuration properties:
INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject.es-ES', 'string', 'Un documento requiere de su firma');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject.en-GB', 'string', 'This document needs to be signed');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body.en-GB', 'html', '<p>You have a pending document to be signed <a href="${docURL}">${docName}</a></p>');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body.es-ES', 'html', '<p>Tiene un documento pendiente de firmar <a href="${docURL}">${docName}</a></p>');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-signed.es-ES', 'string', 'El documento se ha firmado');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-signed.es-ES', 'html', '<p>El documento <a href="${docURL}">${docName}</a> se ha firmado </p>');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-signed.en-GB', 'string', 'The document has been signed');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-signed.en-GB', 'html', '<p>The document <a href="${docURL}">${docName}</a> has been signed </p>');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-verify.es-ES', 'string', 'Remote Signature: Código de verificación');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-verify.es-ES', 'html', '<p>Su pin de verificación para el documento ${docName} es ${pin}</p>');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-verify.en-GB', 'string', 'Remote Signature: Verification pin');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-verify.en-GB', 'html', '<p>Your verification pin for the document ${docName} is ${pin} </p>');-
Set the configuration properties according to its usage:
- rs.subject.es-ES: The subject of the email.
- rs.subject.en-GB: The subject of the email.
- rs.body.es-ES: The body of the email.
- rs.body.en-GB: The body of the email.
- rs.subject-signed.es-ES: The subject of the email.
- rs.subject-signed.en-GB: The subject of the email.
- rs.body-signed.es-ES: The body of the email.
- rs.body-signed.en-GB: The body of the email.
- rs.subject-verify.es-ES: The subject of the email.
- rs.subject-verify.en-GB: The subject of the email.
- rs.body-verify.es-ES: The body of the email.
- rs.body-verify.en-GB: The body of the email.
-
Once the application is configured, you can log in to http://server.ip:8080/remote-signature with the default administrator or with a user with the role ROLE_REMOTE_SIGNATURE
Configuration parameters
Section titled “Configuration parameters”| Parameter | Description |
|---|---|
| rs.subject.es-ES | Mail subject message sent for signing in Spanish |
| rs.subject.en-GB | Mail subject message sent for signing in English |
| rs.body.es-ES | Mail body message sent for signing in Spanish |
| rs.body.en-GB | Mail body message sent for signing in English |
| rs.subject-signed.es-ES | Mail Subject message sent when a document has been signed in Spanish |
| rs.subject-signed.en-GB | Mail Subject message sent when a document has been signed in English |
| rs.body-signed.es-ES | Mail Body message sent when a document has been signed in Spanish |
| rs.body-signed.en-GB | Mail Body message sent when a document has been signed in English |
| rs.subject-verify.es-ES | Mail Subject message sent when pin verification is needed in Spanish |
| rs.body-verify.es-ES | Mail Body message sent when pin verification is needed in Spanish |
| rs.subject-verify.en-GB | Mail Subject message sent when pin verification is needed in English |
| rs.body-verify.en-GB | Mail Body message sent when pin verification is needed in English |
| rs.subject-error.es-ES | Mail subject message sent when an error occurs in Spanish |
| rs.subject-error.en-GB | Mail subject message sent when an error occurs in English |
| rs.body-error.es-ES | Mail body message sent when an error occurs in Spanish |
| rs.body-error.en-GB | Mail body message sent when an error occurs in English |
Configuration parameters that can be used in the body
Section titled “Configuration parameters that can be used in the body”The following notification parameters can be used in the body message:
| Parameter | Description |
|---|---|
| ${docURL} | The link to the document to be signed |
| ${docName} | The name of the document to be signed |
| ${pin} | Verification PIN |
Create role ROLE_REMOTE_SIGNATURE
Section titled “Create role ROLE_REMOTE_SIGNATURE”Go to Administration > Roles > New Role. In the id parameter, set ROLE_REMOTE_SIGNATURE and set the Active checkbox to true.
Add translations
Section titled “Add translations”Go to Administration > Utilities > Database query. At the bottom right, choose the option JDBC. Copy the SQL script and finally click the execute button at the bottom right.
DELETE FROM OKM_TRANSLATION WHERE TR_LANGUAGE='en-GB' and TR_MODULE='rs';INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'send.emails', 'Send e-mails', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'emails.sent', 'E-mails sent', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'home', 'Home', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'admin', 'Admin', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'logout', 'Logout', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'login', 'Login', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'sign', 'Sign', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'undo', 'Undo', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'clear', 'Clear', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'document.signed', 'Document signed successfully!', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.signature', 'There is no signature', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'take.home', 'Take me home.', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.exist', 'This page does not exist.', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.lost', 'You are lost.', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'signature.needed', 'This document needs to be signed', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'title', 'Remote Signature', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'close', 'Close', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'document.is.signed', '"<strong>{name}</strong>" has already been signed', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'error.occurred', 'An error has occurred', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'back', 'Back', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'next', 'Next', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'enter.pin', 'Enter pin', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'enter.valid.pin', 'Please enter a 6-digit pin.', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'submit', 'Submit', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'request', 'Request pin', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'pin.sent', 'Requested pin sent!', 'en-GB');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'invalid.pin', 'Invalid Pin!', 'en-GB');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-error.en-GB', 'string', 'Error signing a document');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-error.en-GB', 'html', '<p>Error in the process of signing the document document <a href="${docURL}">${docName}</a></p>');DELETE FROM OKM_TRANSLATION WHERE TR_LANGUAGE='es-ES' and TR_MODULE='rs';INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'send.emails', 'Enviar correos', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'emails.sent', 'Correos enviados', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'home', 'Inicio', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'admin', 'Administración', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'logout', 'Salir', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'login', 'Login', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'sign', 'Firma', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'undo', 'Deshacer', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'clear', 'Limpiar', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'document.signed', 'Documento firmado correctamente', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.signature', 'Es necesario dibujar la firma', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'take.home', 'Llévame al inicio', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.exist', 'Esta página no existe.', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'no.lost', 'Usted está perdido', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'signature.needed', 'Un documento requiere de su firma', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'title', 'Remote Signature', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'close', 'Cerrar', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'document.is.signed', '"<strong>{name}</strong>" ya ha sido firmado', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'error.occurred', 'Se ha producido un error', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'back', 'Atrás', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'next', 'Siguiente', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'enter.pin', 'Introducir pin', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'enter.valid.pin', 'Porfavor introduzca un numero de 6 cifras', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'submit', 'Enviar', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'request', 'Solicitar código', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'request.sent', 'El código de verificación ha sido enviado!', 'es-ES');INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs', 'invalid.pin', 'Pin incorrecto!', 'es-ES');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.subject-error.es-ES', 'string', 'Error firmando un documento');INSERT INTO OKM_CONFIG (CFG_KEY, CFG_TYPE, CFG_VALUE) VALUES ('rs.body-error.es-ES', 'html', '<p>Error en el proceso de firmar el documento <a href="${docURL}">${docName}</a></p>');Translations by tenant
Section titled “Translations by tenant”If you have several remote signature modules configured to work with your OpenKM, you may be interested in having different translations per tenant.
Set a new translations module name in the openkm.properties file
translation.module=rs2A sample showing how to register translations by renaming the module is shown below:
-- Take the original translations and update the module from rs to rsXDELETE FROM OKM_TRANSLATION WHERE TR_LANGUAGE='en-GB' and TR_MODULE='rs2';INSERT INTO OKM_TRANSLATION (TR_MODULE, TR_KEY, TR_TEXT, TR_LANGUAGE) VALUES ('rs2', 'send.emails', 'Send e-mails', 'en-GB');...From mail parameter by the tenant
Section titled “From mail parameter by the tenant”If you want to set up the from parameter of the emails to be sent, modify the mail-from configuration parameter in your openkm.properties to an existing mail account.
mail.from=sample@example.comEnable stamp extension
Section titled “Enable stamp extension”Ensure the stamp extension is enabled; otherwise, enable it. To enable extensions, take a look at Enable extensions
- Create the image stamps, which will be used to stamp the signature on the document. The id of these stamps will be the value for the options in okp:remotesignature.location parameter. Use the dummy.png as an image:
- These are some examples to configure-stamp locations:
- NorthEast Location
- Image: dummy.png
- Expr. X: PAGE_WIDTH
- Expr. Y: PAGE_HEIGHT
- North Location
- Image: dummy.png
- Expr. X: PAGE_CENTER - IMAGE_WIDTH / 2
- Expr. Y: PAGE_HEIGHT
- NorthWest Location
- Image: dummy.png
- Expr. X: 0
- Expr. Y: PAGE_HEIGHT
- East Location
- Image: dummy.png
- Expr. X: PAGE_WIDTH
- Expr. Y: PAGE_MIDDLE - IMAGE_HEIGHT / 2
- Center Location
- Image: dummy.png
- Expr. X: PAGE_CENTER - IMAGE_WIDTH / 2
- Expr. Y: PAGE_MIDDLE - IMAGE_HEIGHT / 2
- West Location
- Image: dummy.png
- Expr. X: 0
- Expr. Y: PAGE_MIDDLE - IMAGE_HEIGHT / 2
- SouthEast Location
- Image: dummy.png
- Expr. X: PAGE_WIDTH
- Expr. Y: 0
- South Location
- Image: dummy.png
- Expr. X: PAGE_CENTER - IMAGE_WIDTH / 2
- Expr. Y: 0
- SouthWest Location
- Image: dummy.png
- Expr. X: 0
- Expr. Y: 0
- NorthEast Location
Add extra metadata fields
Section titled “Add extra metadata fields”Input-type metadata fields can be added to collect data from the user when a document needs to be signed. It is necessary to add the input fields at the end of the metadata group, and this is an example of two text metadata fields.
<input label="DNI" type="text" name="okp:remotesignature.dni" readonly="true"></input><input label="Name" type="text" name="okp:remotesignature.name" readonly="true"></input>You may also have to add one option in the extra select for each input created, with the input name followed by the desired display order as the value. Example:
<select label="Extra" name="okp:remotesignature.extra" type="multiple"> <option label="DNI" value="okp:remotesignature.dni.1"/> <option label="Name" value="okp:remotesignature.name.2"/></select>Configuration
Section titled “Configuration”Create this property group
Section titled “Create this property group”Please create a new metadata group and assign it to the PDF documents that need to be signed.
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE property-groups PUBLIC "-//OpenKM//DTD Property Groups 3.10//EN" "http://www.openkm.com/dtd/property-groups-3.10.dtd"><property-groups> <property-group label="Remote Signature" name="okg:remotesignature"> <select label="Status" name="okp:remotesignature.status" type="simple" readonly="true"> <option label="Pending to send" value="pendingToSend" selected="true"/> <option label="Pending to sign" value="pendingToSign"/> <option label="Signed" value="signed" /> <option label="Error" value="error" /> </select> <input label="Mail to notify" type="text" name="okp:remotesignature.mail"> <validator type="req"/> </input> <checkbox label="Request Pin" name="okp:remotesignature.pin" /> <select label="Sign Location" name="okp:remotesignature.location" type="simple"> <option label="NorthWest" value="1"/> <option label="North" value="2"/> <option label="NorthEast" value="3" /> <option label="West" value="4"/> <option label="Center" value="5"/> <option label="East" value="6" /> <option label="SouthWest" value="7"/> <option label="South" value="8"/> <option label="SouthEast" value="9" /> <validator type="req"/> </select> <select label="Language" name="okp:remotesignature.lang" type="simple"> <option label="English" value="en-GB"/> <option label="Español" value="es-ES"/> <validator type="req"/> </select> <select label="Extra" name="okp:remotesignature.extra" type="multiple"> <option label="DNI" value="okp:remotesignature.dni.1"/> <option label="Name" value="okp:remotesignature.name.2"/> <option label="Checkbox" value="okp:remotesignature.checkbox.3"/> <option label="Select" value="okp:remotesignature.select.4"/> <option label="Select Multiple" value="okp:remotesignature.selectmultiple.2"/> </select> <input label="DNI" type="text" name="okp:remotesignature.dni" readonly="true"> </input> <input label="Name" type="text" name="okp:remotesignature.name" readonly="true"> </input> <input label="Page" type="text" name="okp:remotesignature.page"> </input> <input label="Send Date" type="date" name="okp:remotesignature.sendDate" timeFormat="hm" readonly="true"/> <input label="Sign Date" type="date" name="okp:remotesignature.signDate" timeFormat="hm" readonly="true"/> <input label="Signature Device IP" type="text" name="okp:remotesignature.ip" readonly="true"/> <textarea label="Error Message" name="okp:remotesignature.errorMessage" width="200px" readonly="true" dbColumnSize="512"/> </property-group></property-groups>Multitenant configuration
Section titled “Multitenant configuration”In order to add the multitenant feature, you need to establish values for tenant.list, tenant.users, tenant.users.password. The values must be comma-separated lists of tenant names, tenant admin users, and user passwords. Here is an example:
tenant.list=Tenant1,Tenant2,Tenant3tenant.users=rSign,rSign2,rSign3tenant.users.password=rsign,rsign2,rsign3