ecoDMS - Doucment Archive

Hi there,

I am using ecoDMS as my document archive. I´d really like to interact with it via n8n!

https://www.ecodms.de/index.php/de/component/jdownloads/send/83-handbuecher-18-09-de/206-api-rest-service

I am willing to compansate someone for the effort.

Cheers
Jan

I’d also compensate!

Hey @mosesjohann,

What would you be wanting to do in ecoDMS from n8n, Do you have any workflow ideas that may help with putting together a first version of a node?

1 Like

Thanks for your interest!

Some simple examples would be:

  • Search for documents with fixed criteria (all invoices within Folder “vendors” from 1.10-31.10.2021) and send them all per Mail (as zip) or to owncloud-Folder (would be our monthly accounting routine :wink: )
  • Create a PDF form Source and put it into ecoDMS as new Document (or in inbox), for example a User-List from a Portal
  • send notification to matrix-room when a new document with status “todo”, Folder “vendor”, fulltext-search"HA-122HA"(number-plate) is created

The new link to documntation is ecoDMS API Handbuch - ecoDMS API Handbuch

2 Likes

I played with the API in python:

import requests
import json
from requests.auth import HTTPBasicAuth

response = requests.get('https://myecodmsapi.com/api/classifyAttributes', auth=HTTPBasicAuth('user', 'password'))

print(response.json())

this gives you

{'docart': 'Dokumentenart', 'docid': 'DocID', 'defdate': 'Wiedervorlage ab', 'changeid': 'Bearbeitet von', 'revision': 'Revision', 'rechte': 'Berechtigung', 'folder': 'Ordner', 'cdate': 'Datum', 'dyn_0_1612129530096': 'für Steuerberater', 'bemerkung': 'Bemerkung', 'ctimestamp': 'Letzte Änderung', 'mainfolder': 'Hauptordner', 'status': 'Status'}

The attributes are quite handy, for a requested doc it is not obvious what ‘dyn_0_1612129530096’ would be:

import requests
import json
from requests.auth import HTTPBasicAuth

response = requests.get('https://myecodmsapi.com/api/documentInfo/540', auth=HTTPBasicAuth('username', 'password'))

print(response.json())

Answer:

[{'docId': 540, 'clDocId': 541, 'archiveName': '1', 'classifyAttributes': {'dyn_0_1612479280677': 'ERP-Purchase', 'docart': '6', 'docid': '540#541', 'defdate': '', 'dyn_0_1623744037311': '2', 'changeid': 'myEcoDMSusername', 'revision': '1.3', 'rechte': 'W', 'folder': '5', 'cdate': '2021-07-13', 'dyn_0_1612129530096': '0', 'dyn_0_1618918868587': 'ERP-Project Number', 'bemerkung': 'nc-2047616', 'dyn_0_1618387974189': '0', 'dyn_0_1618330142060': 'ERP-Invoice', 'ctimestamp': '2021-07-20 23:09:19', 'mainfolder': '5', 'status': '3'}, 'editRoles': ['Buchhaltung'], 'readRoles': []}]

Bools use ‘0’ for False and ‘2’ for True.

To update a document you can not use PUT for a single field. You have to post the whole string and only change the bits you want to change… I already complained.

import requests
import json
from requests.auth import HTTPBasicAuth

aaa = {'docId': 24, 'clDocId': 24, 'archiveName': '1', 'classifyAttributes': {'docart': '6', 'docid': '24#24', 'defdate': '', 'changeid': 'apiuser', 'revision': '2.1', 'rechte': 'W', 'folder': '5', 'cdate': '2020-11-10', 'dyn_0_1612129530096': '2', 'bemerkung': 'API E0300CN2IQ', 'ctimestamp': '', 'mainfolder': '5', 'status': '3'}, 'editRoles': ['r_apiuser'], 'readRoles': ['Buchhaltung']}


    
x = requests.post('https://myecodmsapi.com/api/classifyDocument', json=aaa ,auth=HTTPBasicAuth('username', 'password') )

Since you have to pay per API use (per download or upload), I found that the preview is quite handy. That creates a JPG-Preview to display the documents, without downloading them.

import requests
import json
from requests.auth import HTTPBasicAuth
from IPython.display import Image, display

response = requests.get('https://myecodmsapi.com/api/thumbnail/22/page/1/height/1080', auth=HTTPBasicAuth('username', 'password'))

display(Image(response.content))

Our workflows would be:

When we submit an outgoing Invoice in erpnext, a PDF is created and archived in ecoDMS.

When a invoice is uploaded, we search in the custom field ‘ERP Purchase Order’ for the erpnext-PO-number, look that up in erpnext and create an invoice (erpnext doc) for that purchase. The document ID and a preview picture are stored in the erpnext-invoice that is created.
Then read the customer name from erpnext and write that into the ecoDMS-doc.

Would be super cool to get started here! Let me know where I can help!

I´d suggest we all write an email to ecoDMS GmbH asking why there is no proper PUT method in the API :wink:

Cheers