Ir al contenido
Otras versiones

Cargando…

Instalación

Pasos para instalar y configurar la aplicación Remote Signature en OpenKM v7.1:

  • Detenga Tomcat
  • Descargue la aplicación desde el centro de descargas de OpenKM
  • Esta aplicación necesita compartir la base de datos con OpenKM, así que no necesita crear una nueva
  • Copie el fichero remote-signature.properties en Tomcat y modifique los parámetros de configuración
# Logging config
logging.file=${catalina.home}/logs/remote-signature.log
logging.level.org.springframework.security=INFO
logging.level.org.hibernate.sql = INFO
logging.level.com.openkm=INFO
#logging.level.web=DEBUG
# Enable debugging for Spring Boot autoconfiguration
#debug=true
# OpenKM Hibernate configuration values
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
spring.datasource.url=jdbc:mariadb://localhost:3306/remote-signature?useUnicode=true&characterEncoding=UTF8&serverTimezone=CET&nullNamePatternMatchesAll=true
spring.datasource.username=openkm
spring.datasource.password=openkm
# JPA
spring.jpa.show-sql=false
spring.jpa.hibernate.ddl-auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MariaDB103Dialect
spring.jpa.hibernate.naming.physical-strategy=org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
spring.jpa.properties.hibernate.jdbc.batch_size=50
spring.jpa.properties.hibernate.order_inserts=true
spring.jpa.properties.hibernate.order_updates=true
spring.jpa.properties.hibernate.batch_versioned_data=true
# Base URL
base.url=http://localhost:8080/remote-signature
# OpenKM
openkm.url.preview=http://localhost:8080/openkm
openkm.url=http://localhost:8080/openkm
# OpenKM anonymous user
openkm.anonymous.user=okmAdmin
openkm.anonymous.password=admin
# OpenKM admin user
openkm.admin.user=okmAdmin
openkm.admin.password=admin
# Language
languages=es-ES#Español,en-GB#English
default.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=
  • Inicie Tomcat
  • Inicie sesión en OpenKM
  • Vaya a Administration > Utilities > Database query y ejecute estas sentencias SQL para crear las propiedades de configuración necesarias:
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>');
  • Establezca las propiedades de configuración según su uso:

    • rs.subject.es-ES: El asunto del correo.
    • rs.subject.en-GB: El asunto del correo.
    • rs.body.es-ES: El cuerpo del correo.
    • rs.body.en-GB: El cuerpo del correo.
    • rs.subject-signed.es-ES: El asunto del correo.
    • rs.subject-signed.en-GB: El asunto del correo.
    • rs.body-signed.es-ES: El cuerpo del correo.
    • rs.body-signed.en-GB: El cuerpo del correo.
    • rs.subject-verify.es-ES: El asunto del correo.
    • rs.subject-verify.en-GB: El asunto del correo.
    • rs.body-verify.es-ES: El cuerpo del correo.
    • rs.body-verify.en-GB: El cuerpo del correo.
  • Una vez configurada la aplicación, puede iniciar sesión en http://server.ip:8080/remote-signature con el administrador por defecto o con un usuario con el rol ROLE_REMOTE_SIGNATURE

Parámetro Descripción
rs.subject.es-ES Asunto del correo enviado para firmar, en español
rs.subject.en-GB Asunto del correo enviado para firmar, en inglés
rs.body.es-ES Cuerpo del correo enviado para firmar, en español
rs.body.en-GB Cuerpo del correo enviado para firmar, en inglés
rs.subject-signed.es-ES Asunto del correo enviado cuando un documento se ha firmado, en español
rs.subject-signed.en-GB Asunto del correo enviado cuando un documento se ha firmado, en inglés
rs.body-signed.es-ES Cuerpo del correo enviado cuando un documento se ha firmado, en español
rs.body-signed.en-GB Cuerpo del correo enviado cuando un documento se ha firmado, en inglés
rs.subject-verify.es-ES Asunto del correo enviado cuando se necesita verificación por PIN, en español
rs.body-verify.es-ES Cuerpo del correo enviado cuando se necesita verificación por PIN, en español
rs.subject-verify.en-GB Asunto del correo enviado cuando se necesita verificación por PIN, en inglés
rs.body-verify.en-GB Cuerpo del correo enviado cuando se necesita verificación por PIN, en inglés
rs.subject-error.es-ES Asunto del correo enviado cuando se produce un error, en español
rs.subject-error.en-GB Asunto del correo enviado cuando se produce un error, en inglés
rs.body-error.es-ES Cuerpo del correo enviado cuando se produce un error, en español
rs.body-error.en-GB Cuerpo del correo enviado cuando se produce un error, en inglés

Parámetros de configuración que se pueden usar en el cuerpo

Sección titulada «Parámetros de configuración que se pueden usar en el cuerpo»

Los siguientes parámetros de notificación se pueden usar en el mensaje del cuerpo:

Parámetro Descripción
${docURL} El enlace al documento que se va a firmar
${docName} El nombre del documento que se va a firmar
${pin} PIN de verificación

Vaya a Administration > Roles > New Role. En el parámetro id, establezca ROLE_REMOTE_SIGNATURE y marque la casilla Active como true.

Vaya a Administration > Utilities > Database query. En la parte inferior derecha, elija la opción JDBC. Copie el script SQL y, por último, haga clic en el botón execute de la parte inferior derecha.

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>');

Si tiene varios módulos de remote signature configurados para trabajar con su OpenKM, puede que le interese tener traducciones distintas por tenant.

Establezca un nuevo nombre de módulo de traducciones en el fichero openkm.properties

translation.module=rs2

A continuación se muestra un ejemplo de cómo registrar traducciones renombrando el módulo:

-- Take the original translations and update the module from rs to rsX
DELETE 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');
...

Si desea configurar el parámetro from de los correos que se envían, modifique el parámetro de configuración mail-from en su openkm.properties con una cuenta de correo existente.

mail.from=sample@example.com

Habilitar la extensión de estampado (stamp)

Sección titulada «Habilitar la extensión de estampado (stamp)»

Asegúrese de que la extensión de estampado esté habilitada; si no lo está, habilítela. Para habilitar extensiones, consulte Enable extensions

  • Cree las imágenes de estampado que se usarán para estampar la firma en el documento. El id de estos estampados será el valor de las opciones del parámetro okp:remotesignature.location. Use dummy.png como imagen:
  • Estos son algunos ejemplos para configurar las ubicaciones de estampado:
    • 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

Se pueden añadir campos de metadatos de tipo input para recopilar datos del usuario cuando un documento necesita ser firmado. Es necesario añadir los campos input al final del grupo de metadatos; este es un ejemplo de dos campos de metadatos de texto.

<input label="DNI" type="text" name="okp:remotesignature.dni" readonly="true">
</input>
<input label="Name" type="text" name="okp:remotesignature.name" readonly="true">
</input>

También puede que tenga que añadir una opción en el select extra por cada input creado, con el nombre del input seguido del orden de visualización deseado como valor. Ejemplo:

<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>

Cree un nuevo grupo de metadatos y asígnelo a los documentos PDF que necesiten ser firmados.

<?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>

Para añadir la funcionalidad multitenant, debe establecer los valores de tenant.list, tenant.users y tenant.users.password. Los valores deben ser listas separadas por comas con los nombres de los tenants, los usuarios administradores de cada tenant y las contraseñas de esos usuarios. Aquí tiene un ejemplo:

tenant.list=Tenant1,Tenant2,Tenant3
tenant.users=rSign,rSign2,rSign3
tenant.users.password=rsign,rsign2,rsign3