noviembre 27, 2021

Ensayo: Integración entre DocuSign y Sharepoint (I)

Veremos paso a paso como automatizar el archivado de documentos firmados procedentes de DocuSign a Sharepoint con Power Automate.

Ensayo: Integración entre DocuSign y Sharepoint (I)

El post de hoy es de tipo ensayo, por lo tanto me centraré en un caso práctico donde iré explicando paso a paso como resolver el enunciado inicial. Dado que el ensayo es bastante largo, lo separaré en dos partes. Para poner en contexto explicaré los dos elementos que vamos a integrar.

Elementos del ensayo

DocuSign

DocuSign es probablemente la solución de firma electrónica mas extendida del mundo. Sirve para completar aprobaciones y finalizar acuerdos, desde cualquier lugar y en cualquier dispositivo. Brinda la capacidad de acceder a documentos y fírmalos de forma rápida y segura. También permite subir y enviar documentos fácilmente para que otros los firmen. Envía recordatorios y revisa el estado de firma en cualquier instante. Es una herramienta de terceros ideal para ser integrada con la Power Platform ya que dispone de conector certificado (premium) por Microsoft listo para ser utilizado. Toda la documentación del conector esta disponible en:

DocuSign - Connectors

Sharepoint

Se trata de una plataforma de colaboración empresarial, formada por productos y elementos de software que incluye, funciones de colaboración, módulos de administración de procesos, módulos de búsqueda y una plataforma de administración de documentos (gestión documental). Para esta plataforma tendremos disponible un conector certificado (gratuito) por Microsoft listo para ser utilizado. Toda la documentación del conector esta disponible en:

SharePoint - Connectors

Enunciado

Se solicita la implementación de dos procesos en la gestión de la firma y seguimiento de contratos mediante DocuSign y SharePoint. Las dos funcionalidades a implementar son:

1. Al completarse un envelope de DocuSign mediante la firma por parte de todos los firmantes requeridos, se quiere guardar una copia del documento firmado en una carpeta de una biblioteca de documentos de SharePoint. La carpeta donde debe guardarse el documento debe ubicarte en una carpeta que corresponda al año de firma del documento y una subcarpeta con el nombre de la sociedad, que estará identificada en uno de los metadatos del documento. El documento se creará en dicha carpeta con ciertos atributos que se obtendrán de etiquetas creadas en DocuSign para clasificar los documentos.

2. Mediante una configuración de tipo de documento (identificado en los metadatos de cada uno) y de tiempo previo de alerta, se requiere un proceso que envíe un correo a ciertos destinatarios, dependiendo del tipo de documento, alertando un tiempo antes de la fecha de caducidad. Cada tipo de documento tendrá un tiempo de preaviso y unos destinatarios distintos. Esta problemática se resolverá en el siguiente post.

Resolución

Para realizar el archivado de los documentos incluidos en un envelope de DocuSign se utilizará  Power Automate. Este flujo utilizará el conector estándar de DocuSign para Power Automate para detectar los cambios de estado de cada envelope de la cuenta y comprobar si se ha cambiado a estado completado. Para que el sobre contenga los metadatos que deseamos podemos editar los campos personalizados del sobre. En nuestro caso vamos a crear los campos "Tipo de documento", "sociedad". En el apartado Campos personalizados del documento crearemos el campo "fecha de caducidad". De esta manera todos los documentos que vayamos a crear contendrán este campo, necesario para resolver el punto 2 del enunciado.

Cuando enviemos un documento y todas las personas requeridas hayan firmado, aparecerá el documento en estado completado.

Cuando se detecte que el estado ha cambiado a completado, realizará los siguientes pasos:

a. Recuperará los documentos del envelope.

b. Calculará el directorio donde almacenar los documentos a partir de la fecha de firma (se utilizará la fecha del cambio de estado a completado pues corresponde con la fecha del último firmante) y del atributo Sociedad, que deberá contener siempre el envelope.

c. Creará el directorio <año>\<sociedad> en caso de no existir.

d. Copiará los documentos contenidos en el envelope en el directorio correspondiente.

Creando un nuevo Power Automate, con trigger DocuSign, realizaremos los siguientes pasos:

  1. Recoger el evento de cuando el envelope pasa a estado completado. Con el identificador devuelto por el trigger, recuperamos el documento contenido en el envelope (esto nos servirá para poder archivarlo).

A continuación inicializamos todas las variables que vamos a necesitar a lo largo del flujo. Esta parte se puede hacer de otra manera, por lo que no me pararé en el detalle de cada una de las variables. Como punto importante vemos que se crea una ramificación. Esto es debido a que el elemento creado en el documento "fecha de vencimiento" no es obligatorio y por lo tanto a veces puede venir y a veces no. Esto supone que en el JSON DocumentStatuts tengamos esquemas diferentes a la hora de parsearlo. La solución ha sido que en caso que no exista el elemento "fecha de vencimiento" se aplique el parseo del JSON con otro esquema.

Una vez tenemos inicializadas las variables y tenemos parseado el JSON con los datos del Envelope de DocuSign vamos a construir los valores para trabajar en la convención de nombres que hemos especificado en el enunciado para crear los directorios en Sharepoint.

Primero haremos un Trim para quitar los posibles espacios en los nombres introducidos desde DocuSign. El siguiente paso será comprobar si el directorio que vamos a crear siguiendo la convención de nombres año/sociedad ya existe.

Necesitaremos formatear la fecha de vencimiento en un formato manejable para tratar el dato en Sharepoint. Para eso utilizaremos el conversor de Power Automate. Se trata de trocear con la función split la fecha de vencimiento y colocarla en el formato mes/dia/año. Reordenamos con la siguiente fórmula:

split(variables('ExpirationDate'),'/')[1] / split(variables('ExpirationDate'),'/')[0 /split(variables('ExpirationDate'),'/')[2]]

Si la fecha viniera en otro formato ( en nuestro caso venía como día/mes/año la ordenación sería diferente.

En el siguiente paso, mediante un condicional, realizaremos las siguientes acciones en SharePoint:

Sí el directorio existe, directamente crearemos el documento sobre el directorio que corresponda y actualizaremos los metadatos con la información que hemos obtenido anteriormente en el flujo.

Si el directorio no existe, lo crearemos siguiendo la convención de nombres anteriormente establecida  y luego realizaremos exactamente los mismos pasos que en la ramificación paralela, es decir, crearemos el documento y actualizaremos las propiedades.

En caso de que ya exista el documento en SharePoint en el directorio indicado (existente o recientemente creado) se realizará una copia, evitando así que el proceso falle.

La parte de la copia en detalle es similar a la de su rama paralela:

Resumen

En este ensayo, mediante Power Automate, conectores existentes de la Power Platform (DocuSign y SharePoint) y la utilización de lógica y formulación sencilla hemos sido capaces de automatizar el archivado de documentos firmados de una organización. De esta manera, cualquier empresa que utilice DocuSign, puede almacenar y tener perfectamente clasificados todos sus documentos legales firmados digitalmente en un gestor de archivos como SharePoint. Dado que es un post bastante largo, publicaré un segundo post con la resolución de la problemática de alerta de caducidad de los documentos.