Reports Parsing
Overview
The finance team wanted to bridge reporting@hvcapital.com and Applicata.
Since Applicata exposes no API endpoints for upload, the solution is the
Applicata Data Gateway SharePoint site with folders dedicated to different
purposes, where the Applicata team can pull the data instead of HV pushing it.
Access
User interface and impact surface
Consists of:
- The 3 files, namely the settings, the log, and the Applicata-pulling files
in SharePoint at
Applicata Data Gateway/Monthly Reports/project_ownerfiles - The 1
owner_reference.pdfin the same location - The mailbox
reporting@itself, where successful processing is flagged via a green tag on the pertinent email, and ambiguous or aborted scenarios are flagged via a blue tag. Emails not identified as containing a valid relevant file are not tagged.
Credentials
The credentials are not managed on the n8n GUI side. They are included via
environment variables and baked into docker-compose.yaml on the n8n-1 VPS.
Warning
For any updated environment variables to be applied, such as a new client
secret, docker compose down and docker compose up -d --force-recreate are
necessary. Something like docker compose restart n8n does not suffice.
Common Tasks
N/A
Troubleshooting
Expired IAM credentials
The application-level credentials are set via Entra/Enterprise to expire after
a period of time. When refreshed, a new client secret must be added to
docker-compose.yaml on the n8n-1 VPS. Kilian has confirmed that the current
ones should be good through September 2, 2026.
Unique Custom Node Implementation
This is the sole n8n project written as a custom node in TypeScript that has reached production maturity.
The n8n workflow
The n8n workflow is minimal. Any inbound emails are passed from a default n8n Outlook trigger to the custom node.
Future development
As discussed during ITxAutomation meeting on March 30th 2026, a zip of the source files has been shared with Alec via Teams.
When engaging in further local development, keep track of the env vars in the
file .env.n8n.dev, and note that for them to be applied in localhost:5678
n8n, the dev must start via npm run dev:env. By contrast the
env.n8n.placeholder was just for secure storage in Milos’s private repo,
without the client secret, but blurs the source of knowledge and is safe to
delete.
The private (and manual) deployment procedure is documented below.
Readability vars
These are just examples and are only intended to increase the readability of the steps below.
node name=n8n-nodes-reports-parsing-0.2.1tarball name=<node name>.tgz
Step 1: In the n8n dev source files
npm run buildnpm packcreates a tarball using the name frompackage.json; increment the version manually
Step 2: Secure copy the tarball onto the VPS, then into the container
scp <tarball name> <user>@<vps-host>:/tmp/- Now SSH into the VPS and
cdto/home/n8n/n8n-docker-caddyfor baseline access to Compose docker cp /tmp/<tarball name> n8n-docker-caddy-n8n-1:/tmp/
Step 3: npm install
docker compose exec -u node n8n sh -lc '
cd /home/node/.n8n/nodes &&
[ -f package.json ] || npm init -y >/dev/null 2>&1 &&
npm install --omit=dev /tmp/<tarball name>
'
(Optional) Step 4: Apply any new or updated env vars
docker compose downdocker compose up -d --force-recreate