<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.delftsolutions.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vincent</id>
	<title>Delft Solutions - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.delftsolutions.nl/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Vincent"/>
	<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/wiki/Special:Contributions/Vincent"/>
	<updated>2026-04-03T20:28:59Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Postgres_issues&amp;diff=698</id>
		<title>Postgres issues</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Postgres_issues&amp;diff=698"/>
		<updated>2026-03-24T15:45:54Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;&amp;#039;&amp;#039;WIP&amp;#039;&amp;#039;  When you suspect database/postgres issues causing degraded performance on a service, you can check the following:  == Check blocking sessions ==  A function listing the sessions preventing a session from acquiring a lock  - https://pgpedia.info/p/pg_blocking_pids.html  == Lock monitoring ==  Viewing information on current locking state  - https://wiki.postgresql.org/wiki/Lock_Monitoring  == Postgres logging ==  Options for logging locking issues in postgres  - h...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;WIP&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When you suspect database/postgres issues causing degraded performance on a service, you can check the following:&lt;br /&gt;
&lt;br /&gt;
== Check blocking sessions ==&lt;br /&gt;
&lt;br /&gt;
A function listing the sessions preventing a session from acquiring a lock&lt;br /&gt;
&lt;br /&gt;
- https://pgpedia.info/p/pg_blocking_pids.html&lt;br /&gt;
&lt;br /&gt;
== Lock monitoring ==&lt;br /&gt;
&lt;br /&gt;
Viewing information on current locking state&lt;br /&gt;
&lt;br /&gt;
- https://wiki.postgresql.org/wiki/Lock_Monitoring&lt;br /&gt;
&lt;br /&gt;
== Postgres logging ==&lt;br /&gt;
&lt;br /&gt;
Options for logging locking issues in postgres&lt;br /&gt;
&lt;br /&gt;
- https://www.postgresql.org/docs/current/runtime-config-logging.html#GUC-LOG-LOCK-WAITS&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=697</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=697"/>
		<updated>2026-03-24T15:37:56Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Strategy ==&lt;br /&gt;
* [[Flow metrics|Flow metrics]]&lt;br /&gt;
* [[12%-time|12%-time]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking bonus|Booking bonus]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[booking quarterly hosting invoice|Booking quarterly hosting invoice]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
* [[invoice approval|Process for approving invoices (/filed receipts)]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Work Process ==&lt;br /&gt;
&lt;br /&gt;
* [[Definition of done|Definition of Done]]&lt;br /&gt;
* [[Incident Handling|Incident Handling]]&lt;br /&gt;
* [[SRE Maintenance|SRE Maintenance]]&lt;br /&gt;
* [[Release checklist|Release checklist]]&lt;br /&gt;
* [[Handover]]&lt;br /&gt;
&lt;br /&gt;
== Internal Process ==&lt;br /&gt;
* [[timetracking|Timetracking process]]&lt;br /&gt;
* [[Starting work for a new client]]&lt;br /&gt;
* [[12 percent|12% time]]&lt;br /&gt;
* [[Annual leave|Annual leave]]&lt;br /&gt;
* [[Bonus allocation|Bonus allocation]]&lt;br /&gt;
* [[Calamity leave|Calamity leave]]&lt;br /&gt;
* [[Overtime|Overtime]]&lt;br /&gt;
* [[Retrospectives|Retrospectives]]&lt;br /&gt;
* [[Sick leave|Sick leave]]&lt;br /&gt;
* [[Training and self-study|Training and Self-Study]]&lt;br /&gt;
* [[Daily|Daily]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border update|Process for updating a border]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[ceph|Common Ceph commands]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
* [[Resize VM Disk]]&lt;br /&gt;
* [[SRE tools]]&lt;br /&gt;
* [[Enroll Mac in Kerberos]]&lt;br /&gt;
* [[New Mac Setup]]&lt;br /&gt;
* [[Creating a VM on Hetzner]]&lt;br /&gt;
* [[Rebooting VM]]&lt;br /&gt;
* [[Rebooting Offsite]]&lt;br /&gt;
* [[ssh-fingerprints|Verifying SSH fingerprints]]&lt;br /&gt;
* [[Removing VM]]&lt;br /&gt;
* [[Install a new Disk in Server]]&lt;br /&gt;
* [[Setting Up Wildcard Subdomains with SSL on a Debian Application]]&lt;br /&gt;
* [[s3 bucket backup|Get credentials to backup S3 bucket to Zombie]]&lt;br /&gt;
* [[Hardware Incident Response: Memory Slot Failure on banshee]]&lt;br /&gt;
* [[dfz switch setup|DFZ Switch setup]]&lt;br /&gt;
* [[Update Zulip Server version]]&lt;br /&gt;
* [[update-sentry|Update Sentry]]&lt;br /&gt;
* [[iDRAC: Upload a new pem certificate for automatic updates]]&lt;br /&gt;
=== SLA ===&lt;br /&gt;
* [[Response for Backup Service being down for an extended period of time]]&lt;br /&gt;
* [[postgres issues|Analyzing postgres performance]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[stack|Greenfield stack]]&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;br /&gt;
* [[list of unfurl debuggers|List of unfurl debuggers]]&lt;br /&gt;
* [[Recommended suppliers]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Update-sentry&amp;diff=678</id>
		<title>Update-sentry</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Update-sentry&amp;diff=678"/>
		<updated>2025-11-07T16:16:47Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Context:&#039;&#039;&#039;&lt;br /&gt;
This procedure was written at the time of Sentry 25.10.0, and applies to upgrades performed on the sentry server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important Notes&#039;&#039;&#039;&lt;br /&gt;
* It is possible to skip version while upgrading, except for Hard-Stops, which you need to install before updating to newer releases, [https://develop.sentry.dev/self-hosted/releases/#hard-stops see Sentry docs on hard stops]&lt;br /&gt;
* Always consult the official [https://develop.sentry.dev/self-hosted/releases/ Sentry upgrade documentation] first.&lt;br /&gt;
&lt;br /&gt;
== Pre-upgrade Steps ==&lt;br /&gt;
# Read the [https://github.com/getsentry/self-hosted/releases release notes] and prepare accordingly if some specific actions need to be taken&lt;br /&gt;
# Schedule and announce the maintenance window&lt;br /&gt;
# Create a maintenance period in Zabbix&lt;br /&gt;
# Create a backup and/or snapshot&lt;br /&gt;
&lt;br /&gt;
== Upgrade Procedure ==&lt;br /&gt;
# Navigate to `/opt/sentry`&lt;br /&gt;
# Run `git fetch --tags`&lt;br /&gt;
# Run `git checkout &amp;lt;tag of release you want to update to&amp;gt;`&lt;br /&gt;
# Compare `./sentry/config.yml` with `./sentry/config.example.yml`, amend where necessary&lt;br /&gt;
# Compare `.sentry/sentry.conf.py` with `./sentry/sentry.conf.example.py`, amend where necessary&lt;br /&gt;
# Compare `./.env.delftsolutions` with `./.env` , amend where necessary&lt;br /&gt;
# Until we use Podman, Sentry finally lowers the docker-compose version requirement, or until the below steps stop working:&lt;br /&gt;
## In file install/dc-detect-version.sh need to modify the dcr variable (short for docker compose run, is boilerplate) command to remove the --pull flag&lt;br /&gt;
## In file install/_min-requirements.sh lower the min required version to at most 2.26.1 (or what version is currently installed)&lt;br /&gt;
# Run `./install.sh`&lt;br /&gt;
# Run `docker compose --env-file .env.delftsolutions up -d`&lt;br /&gt;
&lt;br /&gt;
== Post-upgrade Steps ==&lt;br /&gt;
# Go to Issues &amp;gt; Alerts&lt;br /&gt;
# Pick an alert rule (the kaboom-api rule is suggested), go to the alert edit page&lt;br /&gt;
# On the page, click the button &amp;quot;Send Test Notification&amp;quot;, announce the notifications were as expected when they come in&lt;br /&gt;
# Once you&#039;ve made sure everything is running as expected remove the snapshot and maintenance period&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Update-sentry&amp;diff=677</id>
		<title>Update-sentry</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Update-sentry&amp;diff=677"/>
		<updated>2025-11-07T16:10:01Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;&amp;#039;&amp;#039;&amp;#039;Context:&amp;#039;&amp;#039;&amp;#039; This procedure was written at the time of Sentry 25.5.1, and applies to upgrades performed on the sentry server.  &amp;#039;&amp;#039;&amp;#039;Important Notes&amp;#039;&amp;#039;&amp;#039; * It is possible to skip version while upgrading, except for Hard-Stops, which you need to install before updating to newer releases, [https://develop.sentry.dev/self-hosted/releases/#hard-stops see Sentry docs on hard stops] * Always consult the official [https://develop.sentry.dev/self-hosted/releases/ Sentry upgrade doc...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Context:&#039;&#039;&#039;&lt;br /&gt;
This procedure was written at the time of Sentry 25.5.1, and applies to upgrades performed on the sentry server.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Important Notes&#039;&#039;&#039;&lt;br /&gt;
* It is possible to skip version while upgrading, except for Hard-Stops, which you need to install before updating to newer releases, [https://develop.sentry.dev/self-hosted/releases/#hard-stops see Sentry docs on hard stops]&lt;br /&gt;
* Always consult the official [https://develop.sentry.dev/self-hosted/releases/ Sentry upgrade documentation] first.&lt;br /&gt;
&lt;br /&gt;
== Pre-upgrade Steps ==&lt;br /&gt;
# Read the [https://github.com/getsentry/self-hosted/releases release notes] and prepare accordingly if some specific actions need to be taken&lt;br /&gt;
# Schedule and announce the maintenance window&lt;br /&gt;
# Create a maintenance period in Zabbix&lt;br /&gt;
# Create a backup and/or snapshot&lt;br /&gt;
&lt;br /&gt;
== Upgrade Procedure ==&lt;br /&gt;
# Navigate to `/opt/sentry`&lt;br /&gt;
# Run `git fetch --tags`&lt;br /&gt;
# Run `git checkout &amp;lt;tag of release you want to update to&amp;gt;`&lt;br /&gt;
# Compare `./sentry/config.yml` with `./sentry/config.example.yml`, amend where necessary&lt;br /&gt;
# Compare `.sentry/sentry.conf.py` with `./sentry/sentry.conf.example.py`, amend where necessary&lt;br /&gt;
# Compare `./.env.delftsolutions` with `./.env` , amend where necessary&lt;br /&gt;
# Run `./install.sh`&lt;br /&gt;
# Run `docker compose --env-file .env.delftsolutions up -d`&lt;br /&gt;
&lt;br /&gt;
== Post-upgrade Steps ==&lt;br /&gt;
# Go to Issues &amp;gt; Alerts&lt;br /&gt;
# Pick an alert rule (the kaboom-api rule is suggested), go to the alert edit page&lt;br /&gt;
# On the page, click the button &amp;quot;Send Test Notification&amp;quot;, announce the notifications were as expected when they come in&lt;br /&gt;
# Once you&#039;ve made sure everything is running as expected remove the snapshot and maintenance period&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=676</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=676"/>
		<updated>2025-11-07T08:06:52Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* SRE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Strategy ==&lt;br /&gt;
* [[Flow metrics|Flow metrics]]&lt;br /&gt;
* [[12%-time|12%-time]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking bonus|Booking bonus]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[booking quarterly hosting invoice|Booking quarterly hosting invoice]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
* [[invoice approval|Process for approving invoices (/filed receipts)]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Work Process ==&lt;br /&gt;
&lt;br /&gt;
* [[Definition of done|Definition of Done]]&lt;br /&gt;
* [[Incident Handling|Incident Handling]]&lt;br /&gt;
* [[SRE Maintenance|SRE Maintenance]]&lt;br /&gt;
* [[Release checklist|Release checklist]]&lt;br /&gt;
* [[Handover]]&lt;br /&gt;
&lt;br /&gt;
== Internal Process ==&lt;br /&gt;
* [[timetracking|Timetracking process]]&lt;br /&gt;
* [[Starting work for a new client]]&lt;br /&gt;
* [[12 percent|12% time]]&lt;br /&gt;
* [[Annual leave|Annual leave]]&lt;br /&gt;
* [[Bonus allocation|Bonus allocation]]&lt;br /&gt;
* [[Calamity leave|Calamity leave]]&lt;br /&gt;
* [[Overtime|Overtime]]&lt;br /&gt;
* [[Retrospectives|Retrospectives]]&lt;br /&gt;
* [[Sick leave|Sick leave]]&lt;br /&gt;
* [[Training and self-study|Training and Self-Study]]&lt;br /&gt;
* [[Daily|Daily]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border update|Process for updating a border]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
* [[Resize VM Disk]]&lt;br /&gt;
* [[SRE tools]]&lt;br /&gt;
* [[Enroll Mac in Kerberos]]&lt;br /&gt;
* [[New Mac Setup]]&lt;br /&gt;
* [[Creating a VM on Hetzner]]&lt;br /&gt;
* [[Rebooting VM]]&lt;br /&gt;
* [[Rebooting Offsite]]&lt;br /&gt;
* [[ssh-fingerprints|Verifying SSH fingerprints]]&lt;br /&gt;
* [[Removing VM]]&lt;br /&gt;
* [[Install a new Disk in Server]]&lt;br /&gt;
* [[Setting Up Wildcard Subdomains with SSL on a Debian Application]]&lt;br /&gt;
* [[s3 bucket backup|Get credentials to backup S3 bucket to Zombie]]&lt;br /&gt;
* [[Hardware Incident Response: Memory Slot Failure on banshee]]&lt;br /&gt;
* [[dfz switch setup|DFZ Switch setup]]&lt;br /&gt;
* [[Update Zulip Server version]]&lt;br /&gt;
* [[update-sentry|Update Sentry]]&lt;br /&gt;
* [[iDRAC: Upload a new pem certificate for automatic updates]]&lt;br /&gt;
=== SLA ===&lt;br /&gt;
* [[Response for Backup Service being down for an extended period of time]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[stack|Greenfield stack]]&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;br /&gt;
* [[list of unfurl debuggers|List of unfurl debuggers]]&lt;br /&gt;
* [[Recommended suppliers]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=638</id>
		<title>S3 bucket backup</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=638"/>
		<updated>2025-09-04T14:25:04Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites ==&lt;br /&gt;
You need to provide Max with these things to enable him to setup backups for the desired S3 storage host&lt;br /&gt;
* backup retention policy (How long should backups be retained?)&lt;br /&gt;
* estimated backup size (How large do we expect the backups to be?)&lt;br /&gt;
* host name (What is the host name of the storage VM we want to backup from?)&lt;br /&gt;
&lt;br /&gt;
===Lead Time===&lt;br /&gt;
Max indicated minimum lead time for setting up a backup repository and providing credentials is 2 (working) days&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=637</id>
		<title>S3 bucket backup</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=637"/>
		<updated>2025-09-04T14:23:03Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* Prerequisites */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites ==&lt;br /&gt;
- backup retention policy&lt;br /&gt;
 - How long should backups be retained?&lt;br /&gt;
- estimated backup size&lt;br /&gt;
 - How large do we expect the backups to be?&lt;br /&gt;
- host name&lt;br /&gt;
 - What is the host name of the storage VM we want to backup from?&lt;br /&gt;
&lt;br /&gt;
Provide these details to Max when asking for credentials to backup to zombie&lt;br /&gt;
&lt;br /&gt;
===Lead Time===&lt;br /&gt;
Max indicated minimum lead time for setting up a backup repository and providing credentials is 2 (working) days&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=636</id>
		<title>S3 bucket backup</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=S3_bucket_backup&amp;diff=636"/>
		<updated>2025-09-04T14:22:52Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;== Prerequisites == - backup retention policy   - How long should backups be retained? - estimated backup size   - How large do we expect the backups to be? - host name   - What is the host name of the storage VM we want to backup from?  Provide these details to Max when asking for credentials to backup to zombie  ===Lead Time=== Max indicated minimum lead time for setting up a backup repository and providing credentials is 2 (working) days&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Prerequisites ==&lt;br /&gt;
- backup retention policy&lt;br /&gt;
  - How long should backups be retained?&lt;br /&gt;
- estimated backup size&lt;br /&gt;
  - How large do we expect the backups to be?&lt;br /&gt;
- host name&lt;br /&gt;
  - What is the host name of the storage VM we want to backup from?&lt;br /&gt;
&lt;br /&gt;
Provide these details to Max when asking for credentials to backup to zombie&lt;br /&gt;
&lt;br /&gt;
===Lead Time===&lt;br /&gt;
Max indicated minimum lead time for setting up a backup repository and providing credentials is 2 (working) days&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=635</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=635"/>
		<updated>2025-09-04T14:20:06Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* SRE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Strategy ==&lt;br /&gt;
* [[Flow metrics|Flow metrics]]&lt;br /&gt;
* [[12%-time|12%-time]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking bonus|Booking bonus]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[booking quarterly hosting invoice|Booking quarterly hosting invoice]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
* [[invoice approval|Process for approving invoices (/filed receipts)]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Work Process ==&lt;br /&gt;
&lt;br /&gt;
* [[Definition of done|Definition of Done]]&lt;br /&gt;
* [[Incident Handling|Incident Handling]]&lt;br /&gt;
* [[SRE Maintenance|SRE Maintenance]]&lt;br /&gt;
* [[Release checklist|Release checklist]]&lt;br /&gt;
&lt;br /&gt;
== Internal Process ==&lt;br /&gt;
* [[timetracking|Timetracking process]]&lt;br /&gt;
* [[Starting work for a new client]]&lt;br /&gt;
* [[12 percent|12% time]]&lt;br /&gt;
* [[Annual leave|Annual leave]]&lt;br /&gt;
* [[Bonus allocation|Bonus allocation]]&lt;br /&gt;
* [[Calamity leave|Calamity leave]]&lt;br /&gt;
* [[Overtime|Overtime]]&lt;br /&gt;
* [[Retrospectives|Retrospectives]]&lt;br /&gt;
* [[Sick leave|Sick leave]]&lt;br /&gt;
* [[Training and self-study|Training and Self-Study]]&lt;br /&gt;
* [[Daily|Daily]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border update|Process for updating a border]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
* [[Resize VM Disk]]&lt;br /&gt;
* [[SRE tools]]&lt;br /&gt;
* [[Enroll Mac in Kerberos]]&lt;br /&gt;
* [[New Mac Setup]]&lt;br /&gt;
* [[Creating a VM on Hetzner]]&lt;br /&gt;
* [[Rebooting VM]]&lt;br /&gt;
* [[Rebooting Offsite]]&lt;br /&gt;
* [[ssh-fingerprints|Verifying SSH fingerprints]]&lt;br /&gt;
* [[Removing VM]]&lt;br /&gt;
* [[Install a new Disk in Server]]&lt;br /&gt;
* [[Setting Up Wildcard Subdomains with SSL on a Debian Application]]&lt;br /&gt;
* [[s3 bucket backup|Get credentials to backup S3 bucket to Zombie]]&lt;br /&gt;
* [[Hardware Incident Response: Memory Slot Failure on banshee]]&lt;br /&gt;
* [[dfz switch setup|DFZ Switch setup]]&lt;br /&gt;
=== SLA ===&lt;br /&gt;
* [[Response for Backup Service being down for an extended period of time]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[stack|Greenfield stack]]&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;br /&gt;
* [[list of unfurl debuggers|List of unfurl debuggers]]&lt;br /&gt;
* [[Recommended suppliers]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Dfz_switch_setup&amp;diff=634</id>
		<title>Dfz switch setup</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Dfz_switch_setup&amp;diff=634"/>
		<updated>2025-09-03T20:39:51Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dell PowerConnect 8132 ==&lt;br /&gt;
This is currently dfz2&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* Physicial access to the switch&lt;br /&gt;
* Ethernet cable&lt;br /&gt;
* Serial to x cable&lt;br /&gt;
* Computer with x port and ethernet port&lt;br /&gt;
* Host entry in IPA for the switch with the exact hostname&lt;br /&gt;
* Ask Max in advance to make time to create a signed certificate from a certificate signing request (last time took multiple hours)&lt;br /&gt;
&lt;br /&gt;
=== Initial setup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
Prefer to use another serial emulator (e.g. minicom) but this is what we know for now&lt;br /&gt;
* screen /dev/tty.usbserial-AB87E34V 9600 # /dev/&amp;lt;device&amp;gt; may be different on your machine, 9600 is the baud/data-rate and is default for the switch&lt;br /&gt;
* enable&lt;br /&gt;
&lt;br /&gt;
SKIP NEXT STEP WHEN IN BROKEN STATE&lt;br /&gt;
* copy startup-config backup-config &lt;br /&gt;
&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan 1&lt;br /&gt;
* ip address 192.168.0.10 255.255.0.0&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ip interface vlan 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;END SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START WEBGUI CONFIGURE VLAN ADMIN ON PORT 1&amp;gt;&lt;br /&gt;
* connect ethernet cable to switch&lt;br /&gt;
* set your local ip address to e.g. 192.168.0.9/16&lt;br /&gt;
* navigate to (http://)192.168.0.10&lt;br /&gt;
* login&lt;br /&gt;
* Switching &amp;gt; VLAN &amp;gt; VLAN Membership&lt;br /&gt;
* Add (VLAN ID &amp;lt;ADMIN_VLAN_ID&amp;gt;; VLAN NAME &amp;quot;admin&amp;quot;)&lt;br /&gt;
* Add (VLAN ID &amp;lt;DFZ_VLAN_ID&amp;gt;; VLAN NAME &amp;quot;dfz&amp;quot;)&lt;br /&gt;
* Detail&lt;br /&gt;
* Show VLAN &amp;lt;DFZ_VLAN_ID&amp;gt;-dfz&lt;br /&gt;
* Select all ports which should be part of this VLAN&lt;br /&gt;
* Click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* repeat for VLAN &amp;lt;ADMIN_VLAN_ID&amp;gt;-admin with port 1 (and possibly 2 or more) # Once you hit Apply you will lose connection to the webgui as there is no ip address set for interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;END WEBGUI CONFIGURE VLAN ADMIN ON PORT 1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
* ipv6 address &amp;lt;IPV6_ADDRESS&amp;gt;&lt;br /&gt;
* ipv6 enable&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ipv6 interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan 1&lt;br /&gt;
* no ip address&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ip interface vlan 1&lt;br /&gt;
&lt;br /&gt;
# PERSIST CONFIG&lt;br /&gt;
* copy running-config startup-config&lt;br /&gt;
&lt;br /&gt;
=== SSL Certificate ===&lt;br /&gt;
&lt;br /&gt;
* Connect your computer to ethernet port 1 (or any other port on the admin vlan).&lt;br /&gt;
* Navigate to switch webinterface.&lt;br /&gt;
* Navigate to System &amp;gt; Management Security &amp;gt; HTTPS (Unsure about exact menu headings)&lt;br /&gt;
* Here fill in hostname (SAME AS HOST CREATED IN IPA) for the switch as name, country: &amp;quot;NL&amp;quot;, organization-name: &amp;quot;Delft Solutions&amp;quot;, key length: 2048, duration: 365&lt;br /&gt;
* Click Generate certificate&lt;br /&gt;
* Navigate to System &amp;gt; File management &amp;gt; Upload files&lt;br /&gt;
* From this view, using the HTTP method, downloa the relevant certificate and key files&lt;br /&gt;
* In your terminal, generate a Certificate Signing Request (CSR) with &amp;lt;code&amp;gt;openssl x509 -in sslt_cert1.pem -signkey sslt_key1.pem -x509toreq -out domain.csr&amp;lt;/code&amp;gt;&lt;br /&gt;
* Give Max the resulting CSR and ask him to create the signed certificate for the host&lt;br /&gt;
* When certificate has been generated successfully, download it from IPA&lt;br /&gt;
* Establish serial connection to switch&lt;br /&gt;
* &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crypto certificate &amp;lt;CERT_NUMBER&amp;gt; import&amp;lt;/code&amp;gt;&lt;br /&gt;
* paste signed certificate&lt;br /&gt;
* In webinterface, verify the newly signed certificate is now present&lt;br /&gt;
* In webinterface, enable HTTPS admin mode&lt;br /&gt;
* Navigate to https://&amp;lt;SWITCH_URL&amp;gt; in order to confirm HTTPS is enabled and the certificate is valid&lt;br /&gt;
* login&lt;br /&gt;
* save configuration&lt;br /&gt;
&lt;br /&gt;
==== When overwriting certs and/or keys ====&lt;br /&gt;
&lt;br /&gt;
Generated Key+CSR with OpenSSL in RSA 2048Bit SHA-256.The naming of the key on the switch is sslt_key1.pem and the cert is sslt_cert1.pem. Copy these files to flash:// and they override the existing ones, reload the website and it&#039;s working.&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Dfz_switch_setup&amp;diff=633</id>
		<title>Dfz switch setup</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Dfz_switch_setup&amp;diff=633"/>
		<updated>2025-09-03T16:05:46Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;== Dell PowerConnect 8132 == This is currently dfz2  === Prerequisites === * Physicial access to the switch * Ethernet cable * Serial to x cable * Computer with x port and ethernet port * Host entry in IPA for the switch with the exact hostname * Ask Max in advance to make time to create a signed certificate from a certificate signing request (last time took multiple hours)  === Initial setup ===  &amp;lt;START SERIAL CONNECTION TO SWITCH&amp;gt; Prefer to use another serial emulator...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Dell PowerConnect 8132 ==&lt;br /&gt;
This is currently dfz2&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
* Physicial access to the switch&lt;br /&gt;
* Ethernet cable&lt;br /&gt;
* Serial to x cable&lt;br /&gt;
* Computer with x port and ethernet port&lt;br /&gt;
* Host entry in IPA for the switch with the exact hostname&lt;br /&gt;
* Ask Max in advance to make time to create a signed certificate from a certificate signing request (last time took multiple hours)&lt;br /&gt;
&lt;br /&gt;
=== Initial setup ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
Prefer to use another serial emulator (e.g. minicom) but this is what we know for now&lt;br /&gt;
* screen /dev/tty.usbserial-AB87E34V 9600 # /dev/&amp;lt;device&amp;gt; may be different on your machine, 9600 is the baud/data-rate and is default for the switch&lt;br /&gt;
* enable&lt;br /&gt;
&lt;br /&gt;
SKIP NEXT STEP WHEN IN BROKEN STATE&lt;br /&gt;
* copy startup-config backup-config &lt;br /&gt;
&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan 1&lt;br /&gt;
* ip address 192.168.0.10 255.255.0.0&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ip interface vlan 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;END SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START WEBGUI CONFIGURE VLAN ADMIN ON PORT 1&amp;gt;&lt;br /&gt;
* connect ethernet cable to switch&lt;br /&gt;
* set your local ip address to e.g. 192.168.0.9/16&lt;br /&gt;
* navigate to (http://)192.168.0.10&lt;br /&gt;
* login&lt;br /&gt;
* Switching &amp;gt; VLAN &amp;gt; VLAN Membership&lt;br /&gt;
* Add (VLAN ID &amp;lt;ADMIN_VLAN_ID&amp;gt;; VLAN NAME &amp;quot;admin&amp;quot;)&lt;br /&gt;
* Add (VLAN ID &amp;lt;DFZ_VLAN_ID&amp;gt;; VLAN NAME &amp;quot;dfz&amp;quot;)&lt;br /&gt;
* Detail&lt;br /&gt;
* Show VLAN &amp;lt;DFZ_VLAN_ID&amp;gt;-dfz&lt;br /&gt;
* Select all ports which should be part of this VLAN&lt;br /&gt;
* Click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* repeat for VLAN &amp;lt;ADMIN_VLAN_ID&amp;gt;-admin with port 1 (and possibly 2 or more) # Once you hit Apply you will lose connection to the webgui as there is no ip address set for interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;END WEBGUI CONFIGURE VLAN ADMIN ON PORT 1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;START SERIAL CONNECTION TO SWITCH&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enable&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
* ipv6 address &amp;lt;IPV6_ADDRESS&amp;gt;&lt;br /&gt;
* ipv6 enable&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ipv6 interface vlan &amp;lt;ADMIN_VLAN_ID&amp;gt;&lt;br /&gt;
* configure&lt;br /&gt;
* interface vlan 1&lt;br /&gt;
* no ip address&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
* show ip interface vlan 1&lt;br /&gt;
&lt;br /&gt;
# PERSIST CONFIG&lt;br /&gt;
* copy running-config startup-config&lt;br /&gt;
&lt;br /&gt;
=== SSL Certificate ===&lt;br /&gt;
&lt;br /&gt;
* Connect your computer to ethernet port 1 (or any other port on the admin vlan).&lt;br /&gt;
* Navigate to switch webinterface.&lt;br /&gt;
* Navigate to System &amp;gt; Management Security &amp;gt; HTTPS (Unsure about exact menu headings)&lt;br /&gt;
* Here fill in hostname (SAME AS HOST CREATED IN IPA) for the switch as name, country: &amp;quot;NL&amp;quot;, organization-name: &amp;quot;Delft Solutions&amp;quot;, key length: 2048, duration: 365&lt;br /&gt;
* Click Generate certificate&lt;br /&gt;
* Navigate to System &amp;gt; File management &amp;gt; Upload files&lt;br /&gt;
* From this view, using the HTTP method, downloa the relevant certificate and key files&lt;br /&gt;
* In your terminal, generate a Certificate Signing Request (CSR) with &amp;lt;code&amp;gt;openssl x509 -in sslt_cert1.pem -signkey sslt_key1.pem -x509toreq -out domain.csr&amp;lt;/code&amp;gt;&lt;br /&gt;
* Give Max the resulting CSR and ask him to create the signed certificate for the host&lt;br /&gt;
* When certificate has been generated successfully, download it from IPA&lt;br /&gt;
* Establish serial connection to switch&lt;br /&gt;
* &amp;lt;code&amp;gt;enable&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;configure&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;crypto certificate &amp;lt;CERT_NUMBER&amp;gt; import&amp;lt;/code&amp;gt;&lt;br /&gt;
* paste signed certificate&lt;br /&gt;
* In webinterface, verify the newly signed certificate is now present&lt;br /&gt;
* In webinterface, enable HTTPS admin mode&lt;br /&gt;
* Navigate to https://&amp;lt;SWITCH_URL&amp;gt; in order to confirm HTTPS is enabled and the certificate is valid&lt;br /&gt;
* login&lt;br /&gt;
* save configuration&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=632</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=632"/>
		<updated>2025-09-03T15:22:21Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* SRE */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Strategy ==&lt;br /&gt;
* [[Flow metrics|Flow metrics]]&lt;br /&gt;
* [[12%-time|12%-time]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking bonus|Booking bonus]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[booking quarterly hosting invoice|Booking quarterly hosting invoice]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
* [[invoice approval|Process for approving invoices (/filed receipts)]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Work Process ==&lt;br /&gt;
&lt;br /&gt;
* [[Definition of done|Definition of Done]]&lt;br /&gt;
* [[Incident Handling|Incident Handling]]&lt;br /&gt;
* [[SRE Maintenance|SRE Maintenance]]&lt;br /&gt;
* [[Release checklist|Release checklist]]&lt;br /&gt;
&lt;br /&gt;
== Internal Process ==&lt;br /&gt;
* [[timetracking|Timetracking process]]&lt;br /&gt;
* [[Starting work for a new client]]&lt;br /&gt;
* [[12 percent|12% time]]&lt;br /&gt;
* [[Annual leave|Annual leave]]&lt;br /&gt;
* [[Bonus allocation|Bonus allocation]]&lt;br /&gt;
* [[Calamity leave|Calamity leave]]&lt;br /&gt;
* [[Overtime|Overtime]]&lt;br /&gt;
* [[Retrospectives|Retrospectives]]&lt;br /&gt;
* [[Sick leave|Sick leave]]&lt;br /&gt;
* [[Training and self-study|Training and Self-Study]]&lt;br /&gt;
* [[Daily|Daily]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border update|Process for updating a border]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
* [[Resize VM Disk]]&lt;br /&gt;
* [[SRE tools]]&lt;br /&gt;
* [[Enroll Mac in Kerberos]]&lt;br /&gt;
* [[New Mac Setup]]&lt;br /&gt;
* [[Creating a VM on Hetzner]]&lt;br /&gt;
* [[Rebooting VM]]&lt;br /&gt;
* [[Rebooting Offsite]]&lt;br /&gt;
* [[ssh-fingerprints|Verifying SSH fingerprints]]&lt;br /&gt;
* [[Removing VM]]&lt;br /&gt;
* [[Install a new Disk in Server]]&lt;br /&gt;
* [[Setting Up Wildcard Subdomains with SSL on a Debian Application]]&lt;br /&gt;
* [[Hardware Incident Response: Memory Slot Failure on banshee]]&lt;br /&gt;
* [[dfz switch setup|DFZ Switch setup]]&lt;br /&gt;
=== SLA ===&lt;br /&gt;
* [[Response for Backup Service being down for an extended period of time]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[stack|Greenfield stack]]&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;br /&gt;
* [[list of unfurl debuggers|List of unfurl debuggers]]&lt;br /&gt;
* [[Recommended suppliers]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=631</id>
		<title>Booking wages</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=631"/>
		<updated>2025-08-06T14:20:04Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wage slips ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken (English: Financial -&amp;gt; Entries &amp;amp; G/L Accounts -&amp;gt; Entries -&amp;gt; Create)&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (wage slip)&lt;br /&gt;
# Set `Supplier` to the person this wage slip meant for&lt;br /&gt;
# Beschijving: Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&lt;br /&gt;
# Ensure `Payment condition` is set to `M - Einde volgende maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the wage slip pertains to&lt;br /&gt;
# Totaalbedrag: Set to &#039;&#039;&#039;Totaal netto&#039;&#039;&#039; from the wage slip&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Salaris&#039;&#039;&#039; add the value of it as &#039;&#039;&#039;Bruto loon (4000)&#039;&#039;&#039;, with description &#039;Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Bonus (BT)&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Te betalen bonussen (1790)&#039;&#039;&#039; with description &#039;Salaris bonus {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Loonheffing&#039;&#039;&#039; add the value of it as a negative amount as &#039;&#039;&#039;af te dragen loonheffing (1700)&#039;&#039;&#039;, with description &#039;Salaris LH {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Netto &amp;gt; Onkostenvergoeding&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Kosten nettovergoedingen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wage taxes ==&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (LH/&#039;Loonaangifte_Bedrijf_Overzicht_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Belastingdienst`&lt;br /&gt;
# Beschrijving: Enter the value for &#039;&#039;LHnummer en volgnummer&#039;&#039; from the document&lt;br /&gt;
# Ensure `Payment Condition` is set to `D - Deze maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the taxes should be paid in, if the &#039;send&#039; date on the document is not of the same month. Otherwise, just set the &#039;send&#039; date&lt;br /&gt;
# Set `Total amount` to the value of `Totaal Generaal` from the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Loonbelasting / premie volksverzekering&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; with description `Loonbelasting / premie volksverzekering {YEAR}-{MONTH}`&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Premies&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Kosten sociale premies werkgever (4041)&#039;&#039;&#039; with description `Premies {YEAR}-{MONTH}`&lt;br /&gt;
&lt;br /&gt;
== Pension ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (JP/&#039;Journaalposten_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Bright Pensions N.V.`&lt;br /&gt;
# Beschrijving: Pensioen {YEAR}-{MONTH}-M&lt;br /&gt;
# Ensure `Payment condition` is set to `IN - Incasso`&lt;br /&gt;
# Ensure `Invoice date` is set to the the &#039;16th&#039; of the month of the period over which the document documents the pension payments. (Look at &#039;Periodes&#039; for this)&lt;br /&gt;
# Totaalbedrag: Set to the value of &#039;&#039;&#039;Pensioenafdracht WG en WN&#039;&#039;&#039; on the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## For each person who received pension payment: &#039;&#039;&#039;Pensioenen (4011)&#039;&#039;&#039; with description `Pensioen {YEAR}-{MONTH}-M {NAME}` and with the correct value.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation (after payment) ==&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Overzichten &amp;gt; Kaarten (In English: Financial &amp;gt; Entries &amp;amp; G/L Accounts &amp;gt; Reports &amp;gt; Transactions)&lt;br /&gt;
# Search for &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;. Ensure the relevant `Financial year` is selected.&lt;br /&gt;
# First, only mark (not actually match) the wage slips together with the IRS slip for wage taxes. The difference at the bottom (e.g. 0.16 EUR) needs to be added to the wage tax document.&lt;br /&gt;
## For line item &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; add the difference to the current value (0.16 EUR in this example)&lt;br /&gt;
## Create line item &#039;&#039;&#039;Rekenverschillen (9200)&#039;&#039;&#039; with description {ENTRY_DESCRIPTION} {YEAR}-{MONTH} and the value in negative (-0.16 EUR in this example)&lt;br /&gt;
## Mark the wage slips together with the IRS slip for wage taxes again. The difference should now be 0.&lt;br /&gt;
# Select `Afletteren` (`Match`) at the top of the screen to match the entries.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the payment itself ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L account is set to `1671 - Te betalen lonen`, and the account is set to `1 - Belastingdienst`.&lt;br /&gt;
# Select `Match` and select the matching entry (Previously created in the `Wage Taxes` section).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the pension payments ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L is set to `1671 - Te betalen lonen`, and the account is set to `47 - Bring Pensions N.V.` for the three pension payments.&lt;br /&gt;
# Click &#039;Match&#039; on any of the pension payments&lt;br /&gt;
# In the modal, check the checkbox for the other two pension payments, and the correct pension document entry (The one created earlier in the `Pension` section). Finally, click `Enter`.&lt;br /&gt;
&lt;br /&gt;
== Preparing wage payments ==&lt;br /&gt;
# Create a payment scheduled on the correct date (15th of the month) for 12:00 (Midday), for each wage slip added, with the description `Salaris periode {YEAR}-{MONTH}-M {NAME}`&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=630</id>
		<title>Booking wages</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=630"/>
		<updated>2025-08-06T14:12:38Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wage slips ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken (English: Financial -&amp;gt; Entries &amp;amp; G/L Accounts -&amp;gt; Entries -&amp;gt; Create)&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (wage slip)&lt;br /&gt;
# Set `Supplier` to the person this wage slip meant for&lt;br /&gt;
# Beschijving: Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&lt;br /&gt;
# Ensure `Payment condition` is set to `M - Einde volgende maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the wage slip pertains to&lt;br /&gt;
# Totaalbedrag: Set to &#039;&#039;&#039;Totaal netto&#039;&#039;&#039; from the wage slip&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Salaris&#039;&#039;&#039; add the value of it as &#039;&#039;&#039;Bruto loon (4000)&#039;&#039;&#039;, with description &#039;Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Bonus (BT)&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Te betalen bonussen (1790)&#039;&#039;&#039; with description &#039;Salaris bonus {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Loonheffing&#039;&#039;&#039; add the value of it as a negative amount as &#039;&#039;&#039;af te dragen loonheffing (1700)&#039;&#039;&#039;, with description &#039;Salaris LH {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Netto &amp;gt; Onkostenvergoeding&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Kosten nettovergoedingen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wage taxes ==&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (LH/&#039;Loonaangifte_Bedrijf_Overzicht_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Belastingdienst`&lt;br /&gt;
# Beschrijving: Enter the value for &#039;&#039;LHnummer en volgnummer&#039;&#039; from the document&lt;br /&gt;
# Ensure `Payment Condition` is set to `D - Deze maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the taxes should be paid in, if the &#039;send&#039; date on the document is not of the same month. Otherwise, just set the &#039;send&#039; date&lt;br /&gt;
# Set `Total amount` to the value of `Totaal Generaal` from the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Loonbelasting / premie volksverzekering&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; with description `Loonbelasting / premie volksverzekering {YEAR}-{MONTH}`&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Premies&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Kosten sociale premies werkgever (4041)&#039;&#039;&#039; with description `Premies {YEAR}-{MONTH}`&lt;br /&gt;
&lt;br /&gt;
== Pension ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (JP/&#039;Journaalposten_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Bright Pensions N.V.`&lt;br /&gt;
# Beschrijving: Pensioen {YEAR}-{MONTH}-M&lt;br /&gt;
# Ensure `Payment condition` is set to `IN - Incasso`&lt;br /&gt;
# Ensure `Invoice date` is set to the the &#039;16th&#039; of the month of the period over which the document documents the pension payments. (Look at &#039;Periodes&#039; for this)&lt;br /&gt;
# Totaalbedrag: Set to the value of &#039;&#039;&#039;Pensioenafdracht WG en WN&#039;&#039;&#039; on the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## For each person who received pension payment: &#039;&#039;&#039;Pensioenen (4011)&#039;&#039;&#039; with description `Pensioen {YEAR}-{MONTH}-M {NAME}` and with the correct value.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation (after payment) ==&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Overzichten &amp;gt; Kaarten (In English: Financial &amp;gt; Entries &amp;amp; G/L Accounts &amp;gt; Reports &amp;gt; Transactions)&lt;br /&gt;
# Search for &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;. Ensure the relevant `Financial year` is selected.&lt;br /&gt;
# First, only mark (not actually match) the wage slips together with the IRS slip for wage taxes. The difference at the bottom (e.g. 0.16 EUR) needs to be added to the wage tax document.&lt;br /&gt;
## For line item &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; add the difference to the current value (0.16 EUR in this example)&lt;br /&gt;
## Create line item &#039;&#039;&#039;Rekenverschillen (9200)&#039;&#039;&#039; with description {ENTRY_DESCRIPTION} {YEAR}-{MONTH} and the value in negative (-0.16 EUR in this example)&lt;br /&gt;
## Mark the wage slips together with the IRS slip for wage taxes again. The difference should now be 0.&lt;br /&gt;
# Select `Match` at the top of the screen to match the entries.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the payment itself ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L account is set to `1671 - Te betalen lonen`, and the account is set to `1 - Belastingdienst`.&lt;br /&gt;
# Select `Match` and select the matching entry (Previously created in the `Wage Taxes` section).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the pension payments ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L is set to `1671 - Te betalen lonen`, and the account is set to `47 - Bring Pensions N.V.` for the three pension payments.&lt;br /&gt;
# Click &#039;Match&#039; on any of the pension payments&lt;br /&gt;
# In the modal, check the checkbox for the other two pension payments, and the correct pension document entry (The one created earlier in the `Pension` section). Finally, click `Enter`.&lt;br /&gt;
&lt;br /&gt;
== Preparing wage payments ==&lt;br /&gt;
# Create a payment scheduled on the correct date (15th of the month) for 12:00 (Midday), for each wage slip added, with the description `Salaris periode {YEAR}-{MONTH}-M {NAME}`&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=629</id>
		<title>Booking wages</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=629"/>
		<updated>2025-08-06T13:30:28Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wage slips ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken (English: Financial -&amp;gt; Entries &amp;amp; G/L Accounts -&amp;gt; Entries -&amp;gt; Create)&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (wage slip)&lt;br /&gt;
# Set `Supplier` to the person this wage slip meant for&lt;br /&gt;
# Beschijving: Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&lt;br /&gt;
# Ensure `Payment condition` is set to `M - Einde volgende maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the wage slip pertains to&lt;br /&gt;
# Totaalbedrag: Set to &#039;&#039;&#039;Totaal netto&#039;&#039;&#039; from the wage slip&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Salaris&#039;&#039;&#039; add the value of it as &#039;&#039;&#039;Bruto loon (4000)&#039;&#039;&#039;, with description &#039;Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Bonus (BT)&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Te betalen bonussen (1790)&#039;&#039;&#039; with description &#039;Salaris bonus {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Loonheffing&#039;&#039;&#039; add the value of it as a negative amount as &#039;&#039;&#039;af te dragen loonheffing (1700)&#039;&#039;&#039;, with description &#039;Salaris LH {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Netto &amp;gt; Onkostenvergoeding&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Kosten nettovergoedingen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wage taxes ==&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (LH/&#039;Loonaangifte_Bedrijf_Overzicht_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Belastingdienst`&lt;br /&gt;
# Beschrijving: Enter the value for &#039;&#039;LHnummer en volgnummer&#039;&#039; from the document&lt;br /&gt;
# Ensure `Payment Condition` is set to `D - Deze maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the taxes should be paid in, if the &#039;send&#039; date on the document is not of the same month. Otherwise, just set the &#039;send&#039; date&lt;br /&gt;
# Set `Total amount` to the value of `Totaal Generaal` from the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Loonbelasting / premie volksverzekering&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; with description `Loonbelasting / premie volksverzekering {YEAR}-{MONTH}`&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Premies&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Kosten sociale premies werkgever (4041)&#039;&#039;&#039; with description `Premies {YEAR}-{MONTH}`&lt;br /&gt;
&lt;br /&gt;
== Pension ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (JP/&#039;Journaalposten_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Bright Pensions N.V.`&lt;br /&gt;
# Beschrijving: Pensioen {YEAR}-{MONTH}-M&lt;br /&gt;
# Ensure `Payment condition` is set to `IN - Incasso`&lt;br /&gt;
# Ensure `Invoice date` is set to the the &#039;16th&#039; of the month of the period over which the document documents the pension payments. (Look at &#039;Periodes&#039; for this)&lt;br /&gt;
# Totaalbedrag: Set to the value of &#039;&#039;&#039;Pensioenafdracht WG en WN&#039;&#039;&#039; on the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## For each person who received pension payment: &#039;&#039;&#039;Pensioenen (4011)&#039;&#039;&#039; with description `Pensioen {YEAR}-{MONTH}-M {NAME}` and with the correct value (At the moment, 1/3 of the total amount per person).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation (after payment) ==&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Overzichten &amp;gt; Kaarten (In English: Financial &amp;gt; Entries &amp;amp; G/L Accounts &amp;gt; Reports &amp;gt; Transactions)&lt;br /&gt;
# Search for &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;. Ensure the relevant `Financial year` is selected.&lt;br /&gt;
# First, only mark (not actually match) the wage slips together with the IRS slip for wage taxes. The difference at the bottom (e.g. 0.16 EUR) needs to be added to the wage tax document.&lt;br /&gt;
## For line item &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; add the difference to the current value (0.16 EUR in this example)&lt;br /&gt;
## Create line item &#039;&#039;&#039;Rekenverschillen (9200)&#039;&#039;&#039; with description {ENTRY_DESCRIPTION} {YEAR}-{MONTH} and the value in negative (-0.16 EUR in this example)&lt;br /&gt;
## Mark the wage slips together with the IRS slip for wage taxes again. The difference should now be 0.&lt;br /&gt;
# Select `Match` at the top of the screen to match the entries.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the payment itself ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L account is set to `1671 - Te betalen lonen`, and the account is set to `1 - Belastingdienst`.&lt;br /&gt;
# Select `Match` and select the matching entry (Previously created in the `Wage Taxes` section).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the pension payments ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L is set to `1671 - Te betalen lonen`, and the account is set to `47 - Bring Pensions N.V.` for the three pension payments.&lt;br /&gt;
# Click &#039;Match&#039; on any of the pension payments&lt;br /&gt;
# In the modal, check the checkbox for the other two pension payments, and the correct pension document entry (The one created earlier in the `Pension` section). Finally, click `Enter`.&lt;br /&gt;
&lt;br /&gt;
== Preparing wage payments ==&lt;br /&gt;
# Create a payment scheduled on the correct date (15th of the month) for 12:00 (Midday), for each wage slip added, with the description `Salaris periode {YEAR}-{MONTH}-M {NAME}`&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=628</id>
		<title>Booking wages</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=628"/>
		<updated>2025-08-06T13:24:14Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wage slips ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken (English: Financial -&amp;gt; Entries &amp;amp; G/L Accounts -&amp;gt; Entries -&amp;gt; Create)&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (wage slip)&lt;br /&gt;
# Set `Supplier` to the person this wage slip meant for&lt;br /&gt;
# Beschijving: Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&lt;br /&gt;
# Ensure `Payment condition` is set to `M - Einde volgende maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the wage slip pertains to&lt;br /&gt;
# Totaalbedrag: Set to &#039;&#039;&#039;Totaal netto&#039;&#039;&#039; from the wage slip&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Salaris&#039;&#039;&#039; add the value of it as &#039;&#039;&#039;Bruto loon (4000)&#039;&#039;&#039;, with description &#039;Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Bruto &amp;gt; Bonus (BT)&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Te betalen bonussen (1790)&#039;&#039;&#039; with description &#039;Salaris bonus {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Loonheffing&#039;&#039;&#039; add the value of it as a negative amount as &#039;&#039;&#039;af te dragen loonheffing (1700)&#039;&#039;&#039;, with description &#039;Salaris LH {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}&#039;&lt;br /&gt;
## From the wage slip&#039;s &#039;&#039;&#039;Netto &amp;gt; Onkostenvergoeding&#039;&#039;&#039; if present, add the value of it as &#039;&#039;&#039;Kosten nettovergoedingen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wage taxes ==&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (LH/&#039;Loonaangifte_Bedrijf_Overzicht_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Belastingdienst`&lt;br /&gt;
# Beschrijving: Enter the value for &#039;&#039;LHnummer en volgnummer&#039;&#039; from the document&lt;br /&gt;
# Ensure `Payment Condition` is set to `D - Deze maand`&lt;br /&gt;
# Ensure `Invoice date` is set to the beginning of the month the taxes pertain to, if the &#039;send&#039; date on the document is not of the same month. Otherwise, just set the &#039;send&#039; date&lt;br /&gt;
# Set `Total amount` to the value of `Totaal Generaal` from the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Loonbelasting / premie volksverzekering&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; with description `Loonbelasting / premie volksverzekering {YEAR}-{MONTH}`&lt;br /&gt;
## From the document&#039;s &#039;&#039;&#039;Premies&#039;&#039;&#039; add the section&#039;s total value as &#039;&#039;&#039;Kosten sociale premies werkgever (4041)&#039;&#039;&#039; with description `Premies {YEAR}-{MONTH}`&lt;br /&gt;
&lt;br /&gt;
== Pension ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (JP/&#039;Journaalposten_Delft_Solutions_BV_*.pdf)&lt;br /&gt;
# Set `Supplier` to `Bright Pensions N.V.`&lt;br /&gt;
# Beschrijving: Pensioen {YEAR}-{MONTH}-M&lt;br /&gt;
# Ensure `Payment condition` is set to `IN - Incasso`&lt;br /&gt;
# Ensure `Invoice date` is set to the the &#039;16th&#039; of the month of the period over which the document documents the pension payments. (Look at &#039;Periodes&#039; for this)&lt;br /&gt;
# Totaalbedrag: Set to the value of &#039;&#039;&#039;Pensioenafdracht WG en WN&#039;&#039;&#039; on the document&lt;br /&gt;
# Line items:&lt;br /&gt;
## For each person who received pension payment: &#039;&#039;&#039;Pensioenen (4011)&#039;&#039;&#039; with description `Pensioen {YEAR}-{MONTH}-M {NAME}` and with the correct value (At the moment, 1/3 of the total amount per person).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation (after payment) ==&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Overzichten &amp;gt; Kaarten (In English: Financial &amp;gt; Entries &amp;amp; G/L Accounts &amp;gt; Reports &amp;gt; Transactions)&lt;br /&gt;
# Search for &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;. Ensure the relevant `Financial year` is selected.&lt;br /&gt;
# First, only mark (not actually match) the wage slips together with the IRS slip for wage taxes. The difference at the bottom (e.g. 0.16 EUR) needs to be added to the wage tax document.&lt;br /&gt;
## For line item &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; add the difference to the current value (0.16 EUR in this example)&lt;br /&gt;
## Create line item &#039;&#039;&#039;Rekenverschillen (9200)&#039;&#039;&#039; with description {ENTRY_DESCRIPTION} {YEAR}-{MONTH} and the value in negative (-0.16 EUR in this example)&lt;br /&gt;
## Mark the wage slips together with the IRS slip for wage taxes again. The difference should now be 0.&lt;br /&gt;
# Select `Match` at the top of the screen to match the entries.&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the payment itself ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L account is set to `1671 - Te betalen lonen`, and the account is set to `1 - Belastingdienst`.&lt;br /&gt;
# Select `Match` and select the matching entry (Previously created in the `Wage Taxes` section).&lt;br /&gt;
&lt;br /&gt;
== Reconciliation of the pension payments ==&lt;br /&gt;
# Go to Financial &amp;gt; Banking &amp;amp; Cash &amp;gt; Statements &amp;gt; To be completed and search for `to be completed` statements.&lt;br /&gt;
# Ensure the G/L is set to `1671 - Te betalen lonen`, and the account is set to `47 - Bring Pensions N.V.` for the three pension payments.&lt;br /&gt;
# Click &#039;Match&#039; on any of the pension payments&lt;br /&gt;
# In the modal, check the checkbox for the other two pension payments, and the correct pension document entry (The one created earlier in the `Pension` section). Finally, click `Enter`.&lt;br /&gt;
&lt;br /&gt;
== Preparing wage payments ==&lt;br /&gt;
# Create a payment scheduled on the correct date (15th of the month) for 12:00 (Midday), for each wage slip added, with the description `Salaris periode {YEAR}-{MONTH}-M {NAME}`&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=622</id>
		<title>Incident Handling</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=622"/>
		<updated>2025-06-24T08:47:53Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Checklist =&lt;br /&gt;
This checklist is a shorter, imperative version of [[Incident Handling#Full_procedure|the longer procedure below]]. You&#039;re encouraged to read the [[Incident Handling#Full_procedure|full procedure]] at least once to improve your understanding of the core material.&lt;br /&gt;
&lt;br /&gt;
=== Critical Incidents ===&lt;br /&gt;
Critical incidents must be resolved within 16 hours. &lt;br /&gt;
&lt;br /&gt;
# Acknowledge trigger in Zabbix.&lt;br /&gt;
# Check if incident is still ongoing.&lt;br /&gt;
# If ongoing and clients are potentially affected, notify the affected clients via Slack (when done, communicate this internally).&lt;br /&gt;
# Document all actions taken in Zulip topic.&lt;br /&gt;
# Create plan of action.&lt;br /&gt;
# Execute plan and document results in Zabbix thread. &lt;br /&gt;
# If unresolved, create new plan.&lt;br /&gt;
# When resolved:&lt;br /&gt;
## Verify trigger is no longer firing.&lt;br /&gt;
## Decide on when to notify affected clients (that you have notified of the incident) the incident has been resolved, and communicate this internally&lt;br /&gt;
## Mark Zulip topic as resolved if no other incidents for host.&lt;br /&gt;
## Check for related triggers and resolve them.&lt;br /&gt;
&lt;br /&gt;
Common issues that have occurred previously, and &#039;&#039;could&#039;&#039; occur again:&lt;br /&gt;
* SSH down: Check MaxStartups throttling, apply custom SSH config&lt;br /&gt;
* No backup: Verify backup process is running, check devteam email&lt;br /&gt;
* HTTPS down on Sunday: this can be due to Gitlab updates&lt;br /&gt;
&lt;br /&gt;
=== Non-Critical Incidents ===&lt;br /&gt;
Non-critical incidents must be acknowledged within 9 hours and resolved within 1 week.&lt;br /&gt;
&lt;br /&gt;
# Acknowledge in Zabbix thread&lt;br /&gt;
# Check metrics sheet for existing milestone&lt;br /&gt;
## If a milestone exists:&lt;br /&gt;
### Add Lynx project ID to Zulip topic&lt;br /&gt;
### Add 🔁 emoji if ID already reported&lt;br /&gt;
## If no milestone exists:&lt;br /&gt;
### Add to metrics sheet&lt;br /&gt;
### Create Lynx project (priority 99, then 20 after estimation)&lt;br /&gt;
### Create Kimai activity&lt;br /&gt;
### Document IDs in Zulip topic&lt;br /&gt;
&lt;br /&gt;
=== Informational Incidents ===&lt;br /&gt;
Informational incidents must be acknowledged within 72 hours.&lt;br /&gt;
&lt;br /&gt;
# Acknowledge in Zabbix&lt;br /&gt;
# Verify issue&lt;br /&gt;
# Take action if needed&lt;br /&gt;
&lt;br /&gt;
=== External Reports ===&lt;br /&gt;
&lt;br /&gt;
# Acknowledge receipt&lt;br /&gt;
# Classify report as critical, non-critical or informational. &lt;br /&gt;
# Create a Zulip topic in SRE # Critical, SRE ## Non-critical or SRE ### Informational (depending on classification) and add sufficient details. &lt;br /&gt;
# Proceed with checklist above for the type of incident.&lt;br /&gt;
&lt;br /&gt;
= Full procedure =&lt;br /&gt;
&lt;br /&gt;
== General Rules ==&lt;br /&gt;
&lt;br /&gt;
# When an incident is in progress, and person A is handling it, then all incidents in area X, are handled by person A, rather than the FR. Unless working day ends. Person A should communicate clearly to FR when their day is over.&lt;br /&gt;
# FR always has the last word on what solution to apply for resolving an incident.&lt;br /&gt;
&lt;br /&gt;
== Zulip migration ==&lt;br /&gt;
Due to a migration to Zulip, the integration as was available on Mattermost is not available yet on Zulip. This leads to the following process changes:&lt;br /&gt;
* Acknowlegements and triggers resolving are not posted to Zulip by Zabbix&lt;br /&gt;
* Triggers are grouped in a topic on Zulip per host&lt;br /&gt;
* When an incident has been fully resolved, mark the topic as resolved, when any other incidents reported for the host are resolved&lt;br /&gt;
* There&#039;s no `?ongoing`, instead for now we can track open incidents by checking for unresolved topics&lt;br /&gt;
* The posting of incidents is less smart (only posting when not posted yet), so in order to prevent an incident from not being reported due to network issues or the likes, a message is posted after an inteval (8 hours for non-critical and lower, 1 hour for critical and above) while the incident has not been acknowleged.&lt;br /&gt;
* Incidents can be manually tracked by creating a topic by hand and reporting the problem.&lt;br /&gt;
* There is no automatic gitlab issue creation or syncing anymore.&lt;br /&gt;
&lt;br /&gt;
Finally, where this process says to do something on Mattermost, you should now do so on Zulip. The updates in the process chapters themselves are WIP.&lt;br /&gt;
&lt;br /&gt;
== Critical incidents ==&lt;br /&gt;
&#039;&#039;&#039;Critical incidents are resolved within 16 hours.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As first responder you take on the responsiblity of seeing an incident resolved. This does not mean that you are the person required to do all the work. You can attempt to involve others to help you (often referred to as escalating the incident), but since other are not on-call, they are not obliged to help you, especially outside of normal working hours.&lt;br /&gt;
Involving multiple people can quickly be required if multiple critical incidents with different causes occur simultaneously. In that case, the First Responder usually takes on a more information management role and steers those that are brought on into resolving the issues. (Example: if a server crashes, several critical triggers can fire, but the underlying cause can quite quickly be determined to be a single issue, the crashed server. So you wouldn&#039;t need to call in people to manage each incident. But a client&#039;s service being down in one cluster while in a different cluster a different VM no longer boots is likely to be to different issues, so in order to resolve them on time you&#039;d want to call in help to resolve the incident in time).&lt;br /&gt;
&lt;br /&gt;
=== Process ===&lt;br /&gt;
The general process is made up of the following steps. Each step has additional information on how to handle/execute them in the sections below.&lt;br /&gt;
# Take responsibility for seeing the incident resolved&lt;br /&gt;
# Determine if incident is still ongoing&lt;br /&gt;
# If ongoing: Communicate to affected clients that the issue is being investigated&lt;br /&gt;
# Communicate plan/next steps (even if that is gathering information)&lt;br /&gt;
# Communicate findings/results of executed plan, go back to previous step if not resolved&lt;br /&gt;
# Resolve incident + cleanup&lt;br /&gt;
&lt;br /&gt;
During working on an incident it is expected that all communication is done in the incident&#039;s thread. This means all information to a problem can be found in a clear a predictable place. Sometimes an incident can be resolved by work done in another incident. In that case, it is required to post a link to that thread in the incident&#039;s thread with the comment that the resolution is done in that thread.&lt;br /&gt;
&lt;br /&gt;
==== Acknowledge the incident on Zabbix ====&lt;br /&gt;
The first step is to take responsibility for seeing the incident resolved by acknowledging the incident on Zabbix. Simply acknowledging the trigger suffices. It is however entirely possible that multiple critical incidents are firing at the same time. This can be a coincidence, or can be because of a share cause of failure. For example, a server crashing will cause server VMs to reboot, or the router having an connectivity issue will lead to most other VMs having connectivity issues as well. If there are multiple critical incidents, it is advised to quickly observe what&#039;s ongoing, Zabbix is the best source of firing triggers for this, and pick the incident that is likely the root cause to  &lt;br /&gt;
&lt;br /&gt;
* Acknowledging an incident on Zabbix will stop Zabbix from calling the First Responder to notify them of the ongoing incident. And stops Zabbix from posting reminders on Zulip.&lt;br /&gt;
&lt;br /&gt;
==== Determine if incident is still ongoing ====&lt;br /&gt;
The next step is to check if the reported problem is still ongoing. Depending on the observations made here your process to follow and steps needed to resolve the incident can change. There are three options:&lt;br /&gt;
# The trigger resolved itself and the problem cannot be observed. Example: HTTPS is down for a site, but the FR can access the site through HTTPS without incident.&lt;br /&gt;
# The trigger resolved itself and the problem can still be observed.&lt;br /&gt;
# The trigger is still firing but the problem cannot be observed: Our triggers might not be perfect, so it could be that something else is causing it to fire. A simple example would be that Zabbix reports that the the DNS for a site can&#039;t be resolved, but in reality there&#039;s a bug in the script we wrote that checks if the DNS resolves and the DNS resolves fine. Final note: keep in mind that an &#039;it works on my machine&#039; does not necessarily mean it works for most other people, so depening on the trigger you need to do some evaluations if your tests suffice. &lt;br /&gt;
&lt;br /&gt;
In order to make sure you are actually trying to observe the same thing as the trigger is looking for, make sure to check the trigger definition and the current data of the associated item(s). Some triggers might fire if one of multiple conditions is met (Such as a trigger that monitors the ping response time firing if the value exceeds a certain threshold, or if no data for a certain period of time was observed).&lt;br /&gt;
&lt;br /&gt;
Make sure to report your findings in the incident&#039;s thread. It&#039;s advised to post a screenshot of the relevant item(s) and your own observations. (Continuing the ping example, you would post a screenshot of the relevant values, state your conclusion why the trigger is firing, and your own observations/pings)&lt;br /&gt;
&lt;br /&gt;
==== Communicate to affected clients ====&lt;br /&gt;
If the incident is still ongoing and the service is down, we need to communicate to affected clients that we are aware of the problem and that we are investigating it. This is because critical incident usually mean the service is down, something the clients can notice/are affected by, so we to be transparent that something is going on. There are some additional notes to this though:&lt;br /&gt;
* If an incident has already resolved itself and the problem is no longer observable, we don&#039;t communicate anything. Doing so might only cause confusion, and since the client has not reported any issues, they have not had a noticeable problem with it themselves.&lt;br /&gt;
* Although a critical incident generally means that the client service is down or experiencing reduced service, not all critical incidents are of that nature. Some are more administrative, or are only an issue for Delft Solutions itself. As of writing I don&#039;t have an exhaustive list, but here is those I can think of:&lt;br /&gt;
** SSH Service is down: We don&#039;t have any clients that SSH into their services, so it&#039;s generally not a problem. But SSH is mostly used for SRE maintenance and publishing new builds. The SRE maintenance is an internal problem, so no need to communicate to the client. The publishing is done to Kaboom, preventing new builds from being published, and the two SM VMs.&lt;br /&gt;
** No backup for x days: Clients don&#039;t notice it if a backup is running late, so no need to communicate with clients. Just need to make sure the backup gets completed&lt;br /&gt;
** SSL certificate is expiring in &amp;lt; 24 hours: This is a bit dependent on how soon this incident is being handled, but if it handled quickly, the certificate never actually expired, and there has not been any disruption to the client&#039;s service, so no need for communicating about it.&lt;br /&gt;
* Determining which clients are being affected can be done by looking at the host&#039;s DNS in the trigger, and/or looking up the VM in Proxmox and checking the tags of the VMs for client names. In the case that this issue is causing multiple other critical triggers to fire, you would have to check for which clients are affected by those incidents.&lt;br /&gt;
* Communicating to DS about ongoing incidents is usually assumed to be automatically have been done by the fact that the incident was reported on Zulip.&lt;br /&gt;
&lt;br /&gt;
As always, report the decisions taken and actions made in the incident thread. (e.g.: I&#039;ve sent a message in the Slack to let Kaboom know that we aware of problem x, and that we are investigating it)&lt;br /&gt;
&lt;br /&gt;
==== Communicate plan/next steps + Communicate findings/results of executed plan ====&lt;br /&gt;
This is the main part of handling an incident. There are several actions you can take in these steps, but at the basis they consist of sharing your next steps, performing those, and reporting the results. The reason all this needs to be reported is to ensure that all known information about a problem is logged, making it easier for someone else to be onboarded into the issue, for later reference if a similar issue is encountered, and even for use during the incident itself in case an older configuration needs to be referenced after you changed it.&lt;br /&gt;
The objective from these steps is determining what is actually wrong and how to resolve it. Depending on the observations made earlier on whether the incident is still ongoing and is (still) observable your investigation can go into different directions. (e.g. Find the underlying cause for a trigger, or determining why the trigger is firing while it likely shouldn&#039;t, and then how to resolve that underlying cause or how to update the trigger to work better)&lt;br /&gt;
&lt;br /&gt;
There are three main types of steps defined, but you are not limited to these:&lt;br /&gt;
# Hypothesis: If you have an idea what could be causing it, you would state your hypothesis and your next step would be to prove that hypothesis. For example, for an incident &#039;SSH service is down on X&#039; your hypothesis could be that this is due to &#039;MaxStartups&#039; throttling, which can be proven by &#039;grep&#039;ing journalctl for that, and compare the start and end times of throttling with the timestamps of the item reporting the status of the SSH service.&lt;br /&gt;
# Information gathering: Sometimes it just helps to get some facts about the situation collected. What is usefull information that is relevant depends on the triggers, but some examples are: The syslog/journalctl of the host from around the time of the incident (it can contain a reference to the an underlying problem in various levels of explicitness), the ping response from several hosts on the route to a host or a traceroute (this helps with networking issues). The gathered information is usually intended to help you come up with an hypothesis on what&#039;s wrong.&lt;br /&gt;
# Investigative: The most rigorous of process. The full process is described here originally [https://docs.google.com/document/d/1AQYJM1Q9l2Tyk6zfCVaQ2aEq-dpbfUH5okE88bpKkhw/edit#heading=h.5fq2skijqbdc Drive - Final Coundown - General Investigative Process]. To summarize, when you don&#039;t know why something is failing, and/or don&#039;t have any decent hypotheses to follow up, you can follow this process to systematically find the problem.&lt;br /&gt;
&lt;br /&gt;
Regarding the resolution to an incident: The resolution to any incident is usually one of two things:&lt;br /&gt;
# Fix the underlying problem.&lt;br /&gt;
# Fix the trigger itself.&lt;br /&gt;
Fixing the trigger is relatively straightforward, but do make sure document in the thread what you changed to which trigger.&lt;br /&gt;
Fixing the underlying problem can be more complex. A trade-off needs to be made sometimes between resolving technical debt, or simply patching the current system to resolve the issue. We usually look for a resolution that ensures that the problem won&#039;t re-occur soon, or makes it unexpected/unlikely for the problem to re-occur. Taking into account the time frame that is available to resolve the incident you can make some trade-offs. An example would be: normal backups of VMs are failing due to the Proxmox backup server being down/unreachable and it is determined that this cannot be resolved at that moment. We can set up automatic backups to local storage temporary to resolve the immediate problem and ensure we keep our SLO&#039;s versus setting up a new Proxmox Backup server at a different location. Since we don&#039;t have much time to resolve the problem, the resolution would be to set up the automatic backups to local storage, and set up a new Proxmox Backup Server later as a seperate issue.&lt;br /&gt;
&lt;br /&gt;
===== Some known issues and their resolutions =====&lt;br /&gt;
* SSH service is down: The internet is a vile place. There&#039;s constant port scanning and hacking attempts ongoing to any machine connected to the internet (mostly IPv4). Due to this, SSH has a throttling functionality build in to prevent a system from being DDOS&#039;ed by the amount of malicious SSH requests. This throttling can cause the Zabbix server from being denied an SSH connection, of which several failures fire this trigger. This hypothesis can be proven with a `journalctl -u ssh | grep &#039;MaxStartups throttling&#039;` (you probably want to select a relevant time period with `--since &amp;quot;2 hours ago&amp;quot;` or something similar to prevent having to process a month of logging). You can then compare the throttling start and end times with the timestamps of the item data itself. The resolution for the issue is to add our custom ssh configuration [https://chat.dsinternal.net/#narrow/stream/23-SRE---General/topic/DS.20Whitelisted.20Custom.20SSH.20configuration/near/1620 Custom SSH Configuration].&lt;br /&gt;
* No backup for 3 days: Are S3 backup is very slow. Not much to prove as an underlying issue here. What needs to be done is check that the backup process is ongoing. The Zabbix latest data can be checked to verify that backups are running by checking that that days backups were done for the smaller buckets. The devteam email can be checked for if the backup process could not start on day due to it already running (it takes 24+ hours, and an attempt to start it is done each day by cron).&lt;br /&gt;
* git.* HTTPS is down: On Sunday mostly, Gitlab gets automatically updated, but this incurs some downtime as the service is restarted. This is usually short enough to not be reported to Zulip as per our settings, but sometimes it&#039;s longer. If the service does not stay down, the issue can be just resolved.&lt;br /&gt;
&lt;br /&gt;
==== Resolve incident + cleanup ====&lt;br /&gt;
When you&#039;ve executed and verified the resolution in the previous steps we can proceed resolving the issue in our Mattermost integration. Resolving an incident can be done by doing the following:&lt;br /&gt;
# Verify that the trigger is no longer firing. An incident will be immediately re-opened if the trigger is still firing, and the incident cannot be considered resolved if the trigger is still firing. If the trigger is still firing but you&#039;re sure that you&#039;ve resolved the problem, you might need to force the item the trigger depends on to update. This can be done by finding the item in the host&#039;s configuration on Zabbix and selecting &#039;Execute Now&#039;, after a short period this should force Zabbix to re-execute the item. You can check the timestamps in the latest data of an item to check if it was updated.&lt;br /&gt;
# Close the incident by marking the topic as resolved, when there are no other triggers firing for the host.&lt;br /&gt;
&lt;br /&gt;
Unfortunately, some problems cause multiple critical and non-critical triggers to fire. This means we have to check Zabbix and Zulip for other fired triggers and ongoing incidents. The goal is to identify critical and non-critical incidents that were caused by the incident/underlying issue you just resolved.&lt;br /&gt;
# First, these incidents need to be acknowledged on Zabbix, and in the acknowledgement message you mention the incident/problem that caused this.&lt;br /&gt;
# Next, check the incident tracked by the integration on Mattermost using the `?ongoing` command. Resolve incidents that were (re-)opened by this incident by executing the following steps. If the first two fail (problem still persists, trigger is still firing), the incident needs to considered it&#039;s own issue and the relevant process needs to be followed (critical or non-critical depending on criticality).&lt;br /&gt;
## Ensuring the mentioned problem is no longer observable&lt;br /&gt;
## The trigger has resolved (You might need to force an update with `Execute Now`).&lt;br /&gt;
## Posting a link to the main incident you resolved with the comment that the underlying problem was resolved in that topic.&lt;br /&gt;
## Closing the incident by marking the topic as resolved, when there are no other triggers firing for the host.&lt;br /&gt;
&lt;br /&gt;
When you are done, there should be no more critical triggers firing in Zabbix or open in the Zabbix-Mattermost integration, for which no-one has taken responsibility or you have taken responsibility for and are not actively handling.&lt;br /&gt;
&lt;br /&gt;
===Additional context===&lt;br /&gt;
* Critical incidents are posted in [https://chat.dsinternal.net/#narrow/stream/24-SRE-.23-Critical &#039;&#039;&#039;SLA - Critical&#039;&#039;&#039;].&lt;br /&gt;
* &amp;lt;s&amp;gt;When it is being tracked on GitLab a heavy check mark is added to the message.&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;Responses on the thread and on GitLab are automatically synced (to some extend)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;When you reply with &#039;&#039;&#039;I agree that this has been fully resolved&#039;&#039;&#039; eventually our Zabbix-Mattermost integration will pick this up and a green check mark is added to the message.&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Non-Critical incidents ==&lt;br /&gt;
* Non-critical incidents are acknowledged within 9 hours and resolved within one week.&lt;br /&gt;
&lt;br /&gt;
=== Acknowledging ===&lt;br /&gt;
Fully acknowledging a non-critical incident requires the following tasks to have been completed:&lt;br /&gt;
* Acknowledging the incident on Zabbix, which means you take responsibility of completing the steps listed below.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next steps don&#039;t have to be done immediately, as they have dependencies, but be started and scheduled for completion the next work day.&lt;br /&gt;
&lt;br /&gt;
Check if there&#039;s already a uncompleted milestone for this host with this issue in the metrics sheet.&lt;br /&gt;
If a milestone is already present:&lt;br /&gt;
* Report in the topic the Lynx project ID for resolving this issue.&lt;br /&gt;
* If the ID has already been reported in the topic, we don&#039;t want to report it again and again, instead add the 🔁 emoji (:repeat:) under the zabbix bot alert&lt;br /&gt;
&lt;br /&gt;
If a milestone is NOT already present:&lt;br /&gt;
* Add the non-critical incident as a milestone in the metrics sheet, following the naming convention&lt;br /&gt;
** Start date is the date of the incident&lt;br /&gt;
** DoD states what needs to be true for the non-critical incident to be consider resolved&lt;br /&gt;
* Add the non-critical incident to Lynx as a project&lt;br /&gt;
** Follow the naming convention below for the title &amp;amp; project ID&lt;br /&gt;
** Tasks need to be added&lt;br /&gt;
** Final tasks needs to have the SLO deadline set as &#039;constraint&#039;&lt;br /&gt;
** Project priority is set to 99 while not estimated yet. After the estimation is done, the priority should be set to 20&lt;br /&gt;
** The tasks are estimated for SP&lt;br /&gt;
* The Lynx project ID is reported in the non-critical incident&#039;s topic on Zulip, and logged in the metrics sheet&lt;br /&gt;
* A Kimai activity is created in Kimai for the non-critical incident, following the naming convetion&lt;br /&gt;
&lt;br /&gt;
==== Naming convention ====&lt;br /&gt;
* Kimai activity name needs to follow the pattern: &#039;&amp;lt;YYYY-MM&amp;gt; &amp;lt;problem_title&amp;gt;&#039;. For &amp;lt;problem_title&amp;gt;, incorporate the trigger title and hostname for clarity.&lt;br /&gt;
* Milestone name needs to follow the pattern: &#039;Delft Solutions Hosting Incident response work &amp;lt;kimai_activity_name&amp;gt;&#039;&lt;br /&gt;
* Lynx project name needs to follow the pattern: &#039;Delft Solutions Hosting Incident response work &amp;lt;kimai_activity_name&amp;gt;&#039;&lt;br /&gt;
* Lynx project ID needs to follow the pattern: &#039;SRE&amp;lt;YYMM&amp;gt;&amp;lt;XXX&amp;gt;&#039;, where &amp;lt;XXX&amp;gt; is some three letter shorthand that relates to the problem/host&lt;br /&gt;
&lt;br /&gt;
== Informational incidents ==&lt;br /&gt;
* Informational incidents are acknowledged within 72 hours&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix&lt;br /&gt;
# Sanity check the event, post result in thread&lt;br /&gt;
# If action needed, perform action&lt;br /&gt;
&lt;br /&gt;
== If an incident is reported by other means than the Zabbix-Zulip integration ==&lt;br /&gt;
Besides the automated Zabbix-Zulip integration, incidents can also be reported through emails from cron jobs, direct emails from customers, or topics in SRE General (such as alerts about Zulip updates or issues raised by colleagues), etc.&lt;br /&gt;
# Acknowledge receipt.&lt;br /&gt;
# Classify the incident as critical, non-critical, or informational.&lt;br /&gt;
# Create an topic in the relevant SRE channel, stating the problem and that you is responsible for resolving it.&lt;br /&gt;
# Proceed to treat the incident according to the criticality you just classified it as. (So for a critical incident, it means you now start the critical incident handling process)&lt;br /&gt;
&lt;br /&gt;
== Handover ==&lt;br /&gt;
When handing over the responsibility of &#039;&#039;&#039;first responder&#039;&#039;&#039; (FR), the following needs to happen:&lt;br /&gt;
* The handover can be initiated by both the upcoming FR or the acting FR&lt;br /&gt;
* Acting FR adds the upcoming FR to the IPA sla-first-responder user group and enables Zabbix calling for the upcoming FR if they have that set by going to Zabbix &amp;gt; Configuration &amp;gt; Actions &amp;gt; [https://status.delftinfra.net/zabbix/actionconf.php?eventsource=0# Trigger actions]&lt;br /&gt;
* Before the handover, the acting FR must ensure that all active incidents are acknowledged (this includes alert emails or opened topics in SRE General, etc...), updated with the latest status, and properly documented.&lt;br /&gt;
* The upcoming FR makes sure they are aware of the state of the SLA and knows what questions they wants to ask the acting FR.&lt;br /&gt;
* The upcoming FR makes sure they are subscribed to the right channels.&lt;br /&gt;
&lt;br /&gt;
The following steps can be done async or in person:&lt;br /&gt;
* The acting FR announces/informs the upcoming FR has been added to the sla-first-responder group (In Zulip&#039;s [https://chat.dsinternal.net/#narrow/stream/13-Organisational Organisational channel] if asynq).&lt;br /&gt;
* If the acting FR wants to hand over responsibility for any ongoing incident they also state which incidents they want the upcoming FR to take over.&lt;br /&gt;
* If there are any particularities the upcoming FR needs to be aware of, those are shared.&lt;br /&gt;
* The upcoming FR asks their questions until they are satisfied and able to take over the FR&lt;br /&gt;
* The upcoming FR ensures they are subscribed to the following channels on Zulip: [https://chat.dsinternal.net/#narrow/stream/23-SRE---General SRE - General], [https://chat.dsinternal.net/#narrow/stream/24-SRE-.23-Critical SRE # Critical] and if part of the SRE team [https://chat.dsinternal.net/#streams/4/SRE%20##%20Non-critical SRE ## Non-Critical] and [https://chat.dsinternal.net/#streams/5/SRE%20###%20Informational SRE ### Informational].&lt;br /&gt;
* The upcoming FR announces/informs that they are now the acting FR over Zulip&#039;s [https://chat.dsinternal.net/#narrow/stream/13-Organisational Organisational channel]&lt;br /&gt;
* The now acting FR removes the previous FR from IPA the sla-first-responder user group and disables Zabbix calling for the previous FR if they had that enabled by going to Zabbix &amp;gt; Configuration &amp;gt; Actions &amp;gt; [https://status.delftinfra.net/zabbix/actionconf.php?eventsource=0# Trigger actions]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=254</id>
		<title>Booking bonus</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=254"/>
		<updated>2024-04-02T12:26:20Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Calculating bonus ==&lt;br /&gt;
&lt;br /&gt;
# Obtain the bonus calculation template from &#039;Money&#039; channel&lt;br /&gt;
# Use steps from help tab to fill in the sheet&lt;br /&gt;
# Save file as &#039;&amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;-bonus.xlsx&#039; and export as pdf&lt;br /&gt;
# Post pdf version of file in &#039;Money&#039; channel&lt;br /&gt;
&lt;br /&gt;
== Create bonus booking on exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel&lt;br /&gt;
# Boeken en grootboekrekeningen&lt;br /&gt;
# Boekingen&lt;br /&gt;
# Aanmaken&lt;br /&gt;
# Click &#039;91 - Bonus verdeling&#039;&lt;br /&gt;
# First line item&lt;br /&gt;
## Set &#039;Datum&#039; to last day of the quarter you&#039;re booking the bonus for (e.g. December 31st when booking Q4 bonus)&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving&#039; to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Debet&#039; to total bonus to be paid out as calculated in sheet (under &#039;Bonus costs&#039;)&lt;br /&gt;
# Line item for every employee that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;1790 - Te betalen bonussen&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;employee name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that employee (as calculated in bonus sheet)&lt;br /&gt;
# Line item for every owner that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;owner name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that owner (as calculated in bonus sheet)&lt;br /&gt;
# If at this point there is a small difference between Debet and Credit (and all entered numbers are correct), you can create a line with Grootboekrekening &#039;9200 - Rekenverschillen&#039; to make up for the difference&lt;br /&gt;
&lt;br /&gt;
== Attach bonus calc sheet to booking in Exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Documenten&lt;br /&gt;
# Nieuw document&lt;br /&gt;
# Subject: &#039;Bonus &amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
# Categorie: &#039;Crediteuren&#039;&lt;br /&gt;
# Date: Today&lt;br /&gt;
# Delen: Huidige administratie&lt;br /&gt;
# Type: Bijlage&lt;br /&gt;
# Boeking: The bonus booking for that quarter&lt;br /&gt;
# Attach the pdf version of the bonus calc sheet&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=236</id>
		<title>Booking bonus</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=236"/>
		<updated>2024-03-05T15:26:46Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* Attach bonus calc sheet to booking in Exact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Calculating bonus ==&lt;br /&gt;
&lt;br /&gt;
# Obtain the bonus calculation template from &#039;Money&#039; channel&lt;br /&gt;
# Use steps from help tab to fill in the sheet&lt;br /&gt;
# Save file as &#039;&amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;-bonus.xlsx&#039; and export as pdf&lt;br /&gt;
# Post pdf version of file in &#039;Money&#039; channel&lt;br /&gt;
&lt;br /&gt;
== Create bonus booking on exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel&lt;br /&gt;
# Boeken en grootboekrekeningen&lt;br /&gt;
# Boekingen&lt;br /&gt;
# Aanmaken&lt;br /&gt;
# Click &#039;91 - Bonus verdeling&#039;&lt;br /&gt;
# First line item&lt;br /&gt;
## Set &#039;Datum&#039; to last day of the quarter you&#039;re booking the bonus for (e.g. December 31st when booking Q4 bonus)&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving&#039; to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Debet&#039; to total bonus to be paid out as calculated in sheet (under &#039;Bonus costs&#039;)&lt;br /&gt;
# Line item for every employee that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;1790 - Te betalen bonussen&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;employee name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that employee (as calculated in bonus sheet)&lt;br /&gt;
# Line item for every owner that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;owner name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that employee (as calculated in bonus sheet)&lt;br /&gt;
# If at this point there is a small difference between Debet and Credit (and all entered numbers are correct), you can create a line with Grootboekrekening &#039;9200 - Rekenverschillen&#039; to make up for the difference&lt;br /&gt;
&lt;br /&gt;
== Attach bonus calc sheet to booking in Exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Documenten&lt;br /&gt;
# Nieuw document&lt;br /&gt;
# Subject: &#039;Bonus &amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
# Categorie: &#039;Crediteuren&#039;&lt;br /&gt;
# Date: Today&lt;br /&gt;
# Delen: Huidige administratie&lt;br /&gt;
# Type: Bijlage&lt;br /&gt;
# Boeking: The bonus booking for that quarter&lt;br /&gt;
# Attach the pdf version of the bonus calc sheet&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=235</id>
		<title>Booking bonus</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_bonus&amp;diff=235"/>
		<updated>2024-03-05T15:26:22Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;== Calculating bonus ==  # Obtain the bonus calculation template from &amp;#039;Money&amp;#039; channel # Use steps from help tab to fill in the sheet # Save file as &amp;#039;&amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;-bonus.xlsx&amp;#039; and export as pdf # Post pdf version of file in &amp;#039;Money&amp;#039; channel  == Create bonus booking on exact ==  # Exact # Financieel # Boeken en grootboekrekeningen # Boekingen # Aanmaken # Click &amp;#039;91 - Bonus verdeling&amp;#039; # First line item ## Set &amp;#039;Datum&amp;#039; to last day of the quarter you&amp;#039;re booking the bonus fo...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Calculating bonus ==&lt;br /&gt;
&lt;br /&gt;
# Obtain the bonus calculation template from &#039;Money&#039; channel&lt;br /&gt;
# Use steps from help tab to fill in the sheet&lt;br /&gt;
# Save file as &#039;&amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;-bonus.xlsx&#039; and export as pdf&lt;br /&gt;
# Post pdf version of file in &#039;Money&#039; channel&lt;br /&gt;
&lt;br /&gt;
== Create bonus booking on exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel&lt;br /&gt;
# Boeken en grootboekrekeningen&lt;br /&gt;
# Boekingen&lt;br /&gt;
# Aanmaken&lt;br /&gt;
# Click &#039;91 - Bonus verdeling&#039;&lt;br /&gt;
# First line item&lt;br /&gt;
## Set &#039;Datum&#039; to last day of the quarter you&#039;re booking the bonus for (e.g. December 31st when booking Q4 bonus)&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving&#039; to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Debet&#039; to total bonus to be paid out as calculated in sheet (under &#039;Bonus costs&#039;)&lt;br /&gt;
# Line item for every employee that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;1790 - Te betalen bonussen&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;employee name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that employee (as calculated in bonus sheet)&lt;br /&gt;
# Line item for every owner that receives a bonus (as calculated in bonus sheet)&lt;br /&gt;
## Set &#039;Datum&#039; to same value as first line&lt;br /&gt;
## Set &#039;Grootboekrekening&#039; to &#039;4010 - Bijzondere beloning&#039;&lt;br /&gt;
## Set &#039;Omschrijving to &#039;Bonuskosten &amp;lt;year&amp;gt; Q&amp;lt;quarter&amp;gt; &amp;lt;owner name&amp;gt;&#039;&lt;br /&gt;
## Set &#039;Credit&#039; to amount of bonus for that employee (as calculated in bonus sheet)&lt;br /&gt;
# If at this point there is a small difference between Debet and Credit (and all entered numbers are correct), you can create a line with Grootboekrekening &#039;9200 - Rekenverschillen&#039; to make up for the difference&lt;br /&gt;
&lt;br /&gt;
== Attach bonus calc sheet to booking in Exact ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Documenten&lt;br /&gt;
# Nieuw document&lt;br /&gt;
# Subject: &#039;Bonus &amp;lt;year&amp;gt;-Q&amp;lt;quarter&amp;gt;&#039;&lt;br /&gt;
# Categorie: &#039;Crediteuren&#039;&lt;br /&gt;
# Date: Today&lt;br /&gt;
# Delen: Huidige administratie&lt;br /&gt;
# Type: Bijlage&lt;br /&gt;
# Boeking: The bonus booking for that quarter&lt;br /&gt;
# Attach the pdf version of the bonux calc sheet&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=234</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=234"/>
		<updated>2024-03-05T14:27:44Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking bonus|Booking bonus]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
* [[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=233</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=233"/>
		<updated>2024-03-04T10:02:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
* [[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=232</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=232"/>
		<updated>2024-03-04T09:47:51Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[bonus calculation|Bonus calculation]]&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
* [[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
* Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;br /&gt;
* [[border reboot|Reboot border without downtime]]&lt;br /&gt;
* [[WS Proxmox node reboot|Reboot WS Proxmox node without downtime]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
&lt;br /&gt;
* [[standard tools|Standard Tools]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=219</id>
		<title>Border reboot</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=219"/>
		<updated>2024-02-19T15:21:13Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: Throughout this guide &amp;lt;ipv4&amp;gt; and &amp;lt;ipv6&amp;gt; are to be replaced by the correct IP&#039;s.&lt;br /&gt;
&lt;br /&gt;
== Preflight checks ==&lt;br /&gt;
These checks are to be done on the other border (So the border that will stay online). The commands are to be invoked in `vtysh`.&lt;br /&gt;
* Confirm our IPv4 block is announced over BGP with `show ip bgp neighbors &amp;lt;ipv4&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm our IPv6 block is announced over BGP with `show bgp neighbors &amp;lt;ipv6&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm that the border receives the ROUTED IPv4 routes from the router with `show ip route`&lt;br /&gt;
* Confirm that the border received the ROUTED &amp;amp; LAN IPv6 routes from the router with `show ipv6 route`&lt;br /&gt;
&lt;br /&gt;
Set a maintenance period for the host on Zabbix&lt;br /&gt;
&lt;br /&gt;
== Disabling routing through a border ==&lt;br /&gt;
On a border in `vtysh`, update the running configuration by invoking the following:&lt;br /&gt;
&lt;br /&gt;
* config&lt;br /&gt;
* router bgp&lt;br /&gt;
* neighbor &amp;lt;ipv4&amp;gt; shutdown&lt;br /&gt;
* neighbor &amp;lt;ipv6&amp;gt; shutdown&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf6&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
&lt;br /&gt;
== Reboot the border ==&lt;br /&gt;
&lt;br /&gt;
* After performing the pre-flight checks and disabling the routing, you can choose to wait until traffic has decreased (e.g. using `bmon` to check bandwidth used on interfaces)&lt;br /&gt;
* Execute `reboot` command&lt;br /&gt;
* When the border is back online, execute relavant items (system uptime, operating system, reboot required) to ensure these will not activate a trigger after disabling maintenance mode&lt;br /&gt;
* If you do not expect any Zabbix alert related to the reboot to be fired, delete the maintenance period&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Undoing the shutdown of the neighbors can be done by invoking `no neighbor &amp;lt;ipv4&amp;gt;/&amp;lt;ipv6&amp;gt; shutdown` in the `router bgp` part of the configuration.&lt;br /&gt;
&lt;br /&gt;
And the `no default-information originate` can be undone by invoking `default-information originate` in the corect ospf part of the configuration (ospf or ospf6, depending on which one you wish to re-enable).&lt;br /&gt;
&lt;br /&gt;
A reload/restart of the service will also reset to normal configuration.&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=218</id>
		<title>Border reboot</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=218"/>
		<updated>2024-02-19T14:43:26Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* Reboot the border */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: Throughout this guide &amp;lt;ipv4&amp;gt; and &amp;lt;ipv6&amp;gt; are to be replaced by the correct IP&#039;s.&lt;br /&gt;
&lt;br /&gt;
== Preflight checks ==&lt;br /&gt;
These checks are to be done on the other border (So the border that will stay online). The commands are to be invoked in `vtysh`.&lt;br /&gt;
* Confirm our IPv4 block is announced over BGP with `show ip bgp neighbors &amp;lt;ipv4&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm our IPv6 block is announced over BGP with `show bgp neighbors &amp;lt;ipv6&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm that the border receives the ROUTED IPv4 routes from the router with `show ip route`&lt;br /&gt;
* Confirm that the border received the ROUTED &amp;amp; LAN IPv6 routes from the router with `show ipv6 route`&lt;br /&gt;
&lt;br /&gt;
== Disabling routing through a border ==&lt;br /&gt;
On a border in `vtysh`, update the running configuration by invoking the following:&lt;br /&gt;
&lt;br /&gt;
* config&lt;br /&gt;
* router bgp&lt;br /&gt;
* neighbor &amp;lt;ipv4&amp;gt; shutdown&lt;br /&gt;
* neighbor &amp;lt;ipv6&amp;gt; shutdown&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf6&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
&lt;br /&gt;
== Reboot the border ==&lt;br /&gt;
&lt;br /&gt;
After performing the pre-flight checks and disabling the routing, you can choose to wait until traffic has decreased (e.g. using `bmon` to check bandwidth used on interfaces)&lt;br /&gt;
&lt;br /&gt;
Execute `reboot` command&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Undoing the shutdown of the neighbors can be done by invoking `no neighbor &amp;lt;ipv4&amp;gt;/&amp;lt;ipv6&amp;gt; shutdown` in the `router bgp` part of the configuration.&lt;br /&gt;
&lt;br /&gt;
And the `no default-information originate` can be undone by invoking `default-information originate` in the corect ospf part of the configuration (ospf or ospf6, depending on which one you wish to re-enable).&lt;br /&gt;
&lt;br /&gt;
A reload/restart of the service will also reset to normal configuration.&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=217</id>
		<title>Border reboot</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Border_reboot&amp;diff=217"/>
		<updated>2024-02-19T14:38:56Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: Throughout this guide &amp;lt;ipv4&amp;gt; and &amp;lt;ipv6&amp;gt; are to be replaced by the correct IP&#039;s.&lt;br /&gt;
&lt;br /&gt;
== Preflight checks ==&lt;br /&gt;
These checks are to be done on the other border (So the border that will stay online). The commands are to be invoked in `vtysh`.&lt;br /&gt;
* Confirm our IPv4 block is announced over BGP with `show ip bgp neighbors &amp;lt;ipv4&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm our IPv6 block is announced over BGP with `show bgp neighbors &amp;lt;ipv6&amp;gt; advertised-routes`&lt;br /&gt;
* Confirm that the border receives the ROUTED IPv4 routes from the router with `show ip route`&lt;br /&gt;
* Confirm that the border received the ROUTED &amp;amp; LAN IPv6 routes from the router with `show ipv6 route`&lt;br /&gt;
&lt;br /&gt;
== Disabling routing through a border ==&lt;br /&gt;
On a border in `vtysh`, update the running configuration by invoking the following:&lt;br /&gt;
&lt;br /&gt;
* config&lt;br /&gt;
* router bgp&lt;br /&gt;
* neighbor &amp;lt;ipv4&amp;gt; shutdown&lt;br /&gt;
* neighbor &amp;lt;ipv6&amp;gt; shutdown&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* router ospf6&lt;br /&gt;
* no default-information originate&lt;br /&gt;
* exit&lt;br /&gt;
* exit&lt;br /&gt;
&lt;br /&gt;
== Reboot the border ==&lt;br /&gt;
&lt;br /&gt;
Execute `reboot` command&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
&lt;br /&gt;
Undoing the shutdown of the neighbors can be done by invoking `no neighbor &amp;lt;ipv4&amp;gt;/&amp;lt;ipv6&amp;gt; shutdown` in the `router bgp` part of the configuration.&lt;br /&gt;
&lt;br /&gt;
And the `no default-information originate` can be undone by invoking `default-information originate` in the corect ospf part of the configuration (ospf or ospf6, depending on which one you wish to re-enable).&lt;br /&gt;
&lt;br /&gt;
A reload/restart of the service will also reset to normal configuration.&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Payment_reminders&amp;diff=209</id>
		<title>Payment reminders</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Payment_reminders&amp;diff=209"/>
		<updated>2024-01-16T13:58:21Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;# Log in to Exact # On the main Exact page go to &amp;quot;Verkoop&amp;quot; &amp;gt; &amp;quot;Openstaande posten&amp;quot; &amp;gt; &amp;quot;Herinneringen afdrukken&amp;quot; # Select the invoice for which you want to send a reminder and click &amp;quot;Email&amp;quot; (If you want Exact to send the email) or &amp;quot;Afdrukken&amp;quot; (If you want to generate a pdf that you can email yourself) # Select the correct Template, verify this is what you want and send # When returning to the overview page you will now see a link to view sent reminders for this invoice&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Log in to Exact&lt;br /&gt;
# On the main Exact page go to &amp;quot;Verkoop&amp;quot; &amp;gt; &amp;quot;Openstaande posten&amp;quot; &amp;gt; &amp;quot;Herinneringen afdrukken&amp;quot;&lt;br /&gt;
# Select the invoice for which you want to send a reminder and click &amp;quot;Email&amp;quot; (If you want Exact to send the email) or &amp;quot;Afdrukken&amp;quot; (If you want to generate a pdf that you can email yourself)&lt;br /&gt;
# Select the correct Template, verify this is what you want and send&lt;br /&gt;
# When returning to the overview page you will now see a link to view sent reminders for this invoice&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=208</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=208"/>
		<updated>2024-01-16T13:55:46Z</updated>

		<summary type="html">&lt;p&gt;Vincent: /* Exact */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
* [[payment reminders|Send payment reminder]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=207</id>
		<title>Booking wages</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Booking_wages&amp;diff=207"/>
		<updated>2023-12-22T15:17:46Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Wage slips ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (wage slip)&lt;br /&gt;
# Beschijving: Salaris periode {YEAR}-{MONTH}-M / {YEAR}-{MONTH}-M {NAME}, Periode: M&lt;br /&gt;
# Totaalbedrag: &#039;&#039;&#039;Totaal netto&#039;&#039;&#039;&lt;br /&gt;
# Line items:&lt;br /&gt;
## &#039;&#039;&#039;Bruto &amp;gt; Salaris&#039;&#039;&#039; as &#039;&#039;&#039;Loon (4000)&#039;&#039;&#039;,&lt;br /&gt;
## &#039;&#039;&#039;Bruto &amp;gt; Bonus (BT)&#039;&#039;&#039; as &#039;&#039;&#039;Te betalen bonussen (1790)&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Loonheffing&#039;&#039;&#039; as &#039;&#039;&#039;af te dragen loonheffing (1700)&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Netto &amp;gt; Onkostenvergoeding&#039;&#039;&#039; as &#039;&#039;&#039;Kosten nettovergoedingen&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Wage taxes ==&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (LH)&lt;br /&gt;
# Beschrijving: {LHnummer en volgnummer}, Periode: D&lt;br /&gt;
## &#039;&#039;&#039;Loonbelasting / premie volksverzekering&#039;&#039;&#039; as &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;&lt;br /&gt;
## &#039;&#039;&#039;Premies&#039;&#039;&#039; as &#039;&#039;&#039;Kosten sociale premies werkgever (4041)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Pension ==&lt;br /&gt;
&lt;br /&gt;
# Exact&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Boekingen &amp;gt; Aanmaken&lt;br /&gt;
# Inkoop &amp;gt; &#039;&#039;&#039;80 - Salarisstroken&#039;&#039;&#039;&lt;br /&gt;
# Add file (JP)&lt;br /&gt;
# Beschrijving: Pensioen {YEAR}-{MONTH}-M, Periode: IN&lt;br /&gt;
# Totaalbedrag: &#039;&#039;&#039;Amount under pensions on JP&#039;&#039;&#039;&lt;br /&gt;
# Line items:&lt;br /&gt;
## For each person who received pension payment: &#039;&#039;&#039;Pensioenen (4011)&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
== Reconciliation (after payment) ==&lt;br /&gt;
# Financieel &amp;gt; Boekingen en grootboekrekeningen &amp;gt; Overzichten &amp;gt; Kaarten&lt;br /&gt;
# Search for &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039;&lt;br /&gt;
# Mark the wage slips together with the IRS slip for wage taxes. The difference at the bottom (e.g. 0.16 EUR) needs to be added to the wage tax document.&lt;br /&gt;
## &#039;&#039;&#039;Af te dragen loonheffing (1700)&#039;&#039;&#039; 0.16 EUR&lt;br /&gt;
## &#039;&#039;&#039;Rekenverschillen (9200)&#039;&#039;&#039; -0.16 EUR&lt;br /&gt;
## Repeat process; difference should now be 0&lt;br /&gt;
# Afletteren; difference should be 0&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=203</id>
		<title>Incident Handling</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=203"/>
		<updated>2023-08-04T14:13:49Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Critical incidents ==&lt;br /&gt;
* Critical incidents are resolved within 16 hours.&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix and state who is responsible for resolving this in the description&lt;br /&gt;
# Determine affected clients&lt;br /&gt;
# Communicate to affected clients that the issue is being investigated&lt;br /&gt;
# Communicate plan/next steps (even if that is gathering information)&lt;br /&gt;
# Communicate findings/results of executed plan, go back to previous step if not resolved&lt;br /&gt;
# Resolve incident&lt;br /&gt;
&lt;br /&gt;
== Non-Critical incidents ==&lt;br /&gt;
* Non-critical incidents are acknowledged within 9 hours and resolved within one week.&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix and state who is responsible for resolving this in the description&lt;br /&gt;
# Communicate plan/next steps (even if that is gathering information)&lt;br /&gt;
# Communicate findings/results of executed plan, go back to previous step if not resolved&lt;br /&gt;
# Resolve incident&lt;br /&gt;
&lt;br /&gt;
== Informational incidents ==&lt;br /&gt;
* Informational incidents are acknowledged within 72 hours&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix&lt;br /&gt;
# Sanity check the event, post result in thread&lt;br /&gt;
# If action needed, perform action&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=202</id>
		<title>Incident Handling</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Incident_Handling&amp;diff=202"/>
		<updated>2023-08-04T14:12:58Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Critical incidents ==&lt;br /&gt;
* Critical incidents are resolved within 16 hours.&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix and state who is responsible for resolving this in the description&lt;br /&gt;
# Determine affected clients&lt;br /&gt;
# Communicate to affected clients that the issue is being investigated&lt;br /&gt;
# Communicate plan/next steps (even if that is gathering information)&lt;br /&gt;
# Communicate findings/results of executed plan, go back to previous step if not resolved&lt;br /&gt;
# Resolve incident&lt;br /&gt;
&lt;br /&gt;
== Non-Critical incidents ==&lt;br /&gt;
* Non-critical incidents are acknowledged within 9 hours and resolved within one week.&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix and state who is responsible for resolving this in the description&lt;br /&gt;
# Communicate plan/next steps (even if that is gathering information)&lt;br /&gt;
# Communicate findings/results of executed plan, go back to previous step if not resolved&lt;br /&gt;
# Resolve incident&lt;br /&gt;
&lt;br /&gt;
== Informational incidents ==&lt;br /&gt;
* Informational incidents are acknowledged within 72 hours&lt;br /&gt;
&lt;br /&gt;
Checklist&lt;br /&gt;
# Acknowledge on Zabbix&lt;br /&gt;
# Sanity check the event, post result in thread&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=190</id>
		<title>Create gitlab runner host</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=190"/>
		<updated>2023-05-16T13:38:59Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Create a (Debian) host&lt;br /&gt;
# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian]&lt;br /&gt;
# [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner]&lt;br /&gt;
# [https://docs.gitlab.com/runner/register/ Register runner]&lt;br /&gt;
## If you want to run Code Quality jobs on the runner [https://docs.gitlab.com/ee/ci/testing/code_quality.html#improve-code-quality-performance-with-private-runners see this guide]&lt;br /&gt;
&lt;br /&gt;
Coming soon (tm):&lt;br /&gt;
# [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=189</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=189"/>
		<updated>2023-05-16T12:42:59Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;br /&gt;
* [[vm setup|Create a (Debian) VM]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=188</id>
		<title>Create gitlab runner host</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=188"/>
		<updated>2023-05-16T12:40:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Create a (Debian) host&lt;br /&gt;
# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian]&lt;br /&gt;
# [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner]&lt;br /&gt;
# Register runner&lt;br /&gt;
## If you want to run Code Quality jobs on the runner [https://docs.gitlab.com/ee/ci/testing/code_quality.html#improve-code-quality-performance-with-private-runners see this guide]&lt;br /&gt;
&lt;br /&gt;
Coming soon (tm):&lt;br /&gt;
# [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=187</id>
		<title>Create gitlab runner host</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=187"/>
		<updated>2023-05-16T12:38:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Create a (Debian) host&lt;br /&gt;
# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian]&lt;br /&gt;
# [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner]&lt;br /&gt;
# Register runner&lt;br /&gt;
&lt;br /&gt;
Coming soon (tm):&lt;br /&gt;
# [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=186</id>
		<title>Create gitlab runner host</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=186"/>
		<updated>2023-05-16T08:55:45Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian]&lt;br /&gt;
# [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner]&lt;br /&gt;
# Register runner&lt;br /&gt;
&lt;br /&gt;
Coming soon (tm):&lt;br /&gt;
# [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=184</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=184"/>
		<updated>2023-05-08T09:22:51Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=183</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=183"/>
		<updated>2023-05-08T09:22:40Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
* [[invoicing|Send an invoice}}&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=182</id>
		<title>Create gitlab runner host</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Create_gitlab_runner_host&amp;diff=182"/>
		<updated>2023-04-25T14:58:04Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian] # [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner] # [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# [https://docs.docker.com/engine/install/debian/ Install Docker Engine on Debian]&lt;br /&gt;
# [https://docs.gitlab.com/runner/install/linux-repository.html Install GitLab runner]&lt;br /&gt;
# [https://git.dsinternal.net/delft-solutions/infrastructure/debian-ds-gitlab-runner Install ds-gitlab-runner]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=181</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=181"/>
		<updated>2023-04-25T14:52:56Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be further populated with guide from drive&#039;&#039;&lt;br /&gt;
* [[create gitlab runner host|Create a GitLab runner host]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=180</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=180"/>
		<updated>2023-04-25T10:55:11Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be populated with guide from drive&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=179</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=179"/>
		<updated>2023-04-25T10:01:26Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;br /&gt;
&lt;br /&gt;
== SRE ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;To be populated with guide from drive&#039;&#039;&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=New_receipt&amp;diff=178</id>
		<title>New receipt</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=New_receipt&amp;diff=178"/>
		<updated>2023-04-25T09:57:10Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Log into Exact&lt;br /&gt;
# Go to “Purchase” &amp;gt; “Entries” &amp;gt; “Overview”&lt;br /&gt;
# Click “New”&lt;br /&gt;
# Click “60 - Inkoopboek”&lt;br /&gt;
# Add a picture of the receipt as an attachment&lt;br /&gt;
# Under “Supplier”, find the supplier and select the correct supplier&lt;br /&gt;
# Numbered list item&lt;br /&gt;
## If the supplier does not exist, you have to add a new supplier, but there is no guide for this&lt;br /&gt;
# Under “Invoice Data”&lt;br /&gt;
## Enter the description of what is on the receipt (e.g. enter “lunch stuff” for when you have a receipt for buying lunch stuff)&lt;br /&gt;
## Enter total amount on the receipt under “Total amount” &lt;br /&gt;
## Update “Invoice Date” (And probably also “Due date”) to match the date on the receipt&lt;br /&gt;
# Make sure the expenses are for the correct G/L Account, e.g. lunch/borrel stuff should be under 4012&lt;br /&gt;
# Make sure the VAT code is correct, as well as the VAT amount&lt;br /&gt;
# Click “Save + new”&lt;br /&gt;
# Ask Vincent to reconcile the payment+receipt&lt;br /&gt;
# Done&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Top_up_account&amp;diff=177</id>
		<title>Top up account</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Top_up_account&amp;diff=177"/>
		<updated>2023-04-25T09:52:10Z</updated>

		<summary type="html">&lt;p&gt;Vincent: Created page with &amp;quot;We preferably top up our expense accounts every month (or more frequently in case alerts come in on the “Money” channel on Mattermost)  # Determine the amount needed to get your expense account back to €250 # Go to the Bunq “DevTeam” account # Select “Pay” # Enter amount previously determined # Click “Choose recipient” # Click “My accounts” # Select the correct expense account # Enter a reason for the top up (e.g. “top up after paying for car rent...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We preferably top up our expense accounts every month (or more frequently in case alerts come in on the “Money” channel on Mattermost)&lt;br /&gt;
&lt;br /&gt;
# Determine the amount needed to get your expense account back to €250&lt;br /&gt;
# Go to the Bunq “DevTeam” account&lt;br /&gt;
# Select “Pay”&lt;br /&gt;
# Enter amount previously determined&lt;br /&gt;
# Click “Choose recipient”&lt;br /&gt;
# Click “My accounts”&lt;br /&gt;
# Select the correct expense account&lt;br /&gt;
# Enter a reason for the top up (e.g. “top up after paying for car rental” or “top up after paying for a lot of lunches”)&lt;br /&gt;
# Review the payment details&lt;br /&gt;
# Click “Send for approval”&lt;br /&gt;
# Notify Vincent you created the top up request&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=176</id>
		<title>Internal</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Internal&amp;diff=176"/>
		<updated>2023-04-25T09:48:20Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Projects ==&lt;br /&gt;
&lt;br /&gt;
Era Inventory [[project_era_inventory_api|API Description]]&lt;br /&gt;
&lt;br /&gt;
== Process ==&lt;br /&gt;
&lt;br /&gt;
[[definition of done|Definition of Done]]&lt;br /&gt;
&lt;br /&gt;
== Finance ==&lt;br /&gt;
&lt;br /&gt;
=== Exact ===&lt;br /&gt;
&lt;br /&gt;
* [[booking wages|Booking wages]]&lt;br /&gt;
* [[new receipt|Enter a new receipt]]&lt;br /&gt;
* [[reconciliation|Reconciliation of transaction]]&lt;br /&gt;
&lt;br /&gt;
=== Bunq ===&lt;br /&gt;
&lt;br /&gt;
* [[top up account|Top up expense account]]&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=File:Tompouce.jpg&amp;diff=175</id>
		<title>File:Tompouce.jpg</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=File:Tompouce.jpg&amp;diff=175"/>
		<updated>2023-04-24T15:07:33Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Reconciliation&amp;diff=174</id>
		<title>Reconciliation</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Reconciliation&amp;diff=174"/>
		<updated>2023-04-24T15:06:22Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Navigation ==&lt;br /&gt;
The page for interacting with transactions to reconcile them can be found on Exact at: &#039;Financial&#039; -&amp;gt; &#039;Banking &amp;amp; Cash&#039; -&amp;gt; &#039;To be completed&#039;.&lt;br /&gt;
&lt;br /&gt;
== Retrieving Transactions ==&lt;br /&gt;
[[File:Search panel for transactions to reconcile.png|thumb|Search panel for transactions to reconcile]]&lt;br /&gt;
&lt;br /&gt;
First, we need to retrieve any transaction which need reconciliation. For this we need to use the search panel. The following steps are required:&lt;br /&gt;
&lt;br /&gt;
* Make sure the checkbox for &#039;To be completed&#039; is checked.&lt;br /&gt;
* Ensure no range is set. Or if it is set, that the range includes the date the transaction you wish to reconcile was made.&lt;br /&gt;
* Keep all other boxes and options empty.&lt;br /&gt;
* Click &#039;Refresh&#039; if you made any changes to the search panel after arriving on the page.&lt;br /&gt;
&lt;br /&gt;
On the right you can find an image showing an example of how the search panel ought to look.&lt;br /&gt;
&lt;br /&gt;
== Processing Transactions ==&lt;br /&gt;
[[File:Transaction example.png|thumb|Example of a transaction that needs reconciliation]]&lt;br /&gt;
&lt;br /&gt;
To the right, you can find an example of a transaction that requires reconciliation. In order to do this, two steps are required:&lt;br /&gt;
# Ensure the &#039;Entry line&#039; is set correctly. This is the information in the middle block of the transaction overview.&lt;br /&gt;
# Match the transaction to the correct invoice/receipt.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll use the example transaction to demonstrate how to perform these steps.&lt;br /&gt;
&lt;br /&gt;
=== Setting the Entry line ===&lt;br /&gt;
[[File:Grootboekregel example.png|thumb|Example of setting the G/L Account]]&lt;br /&gt;
&lt;br /&gt;
Setting the Entry line correctly consists of two things.&lt;br /&gt;
# Setting the correct G/L Account. this refers to the ledger this cost should be put on. This is ususually &#039;1600 - Crediteuren&#039;.&lt;br /&gt;
# Setting the correct Account. This refers to the business relation that was involved in this transaction.&lt;br /&gt;
&lt;br /&gt;
In the example transaction, you see that the G/L Account is &#039;1290 - Kruisposten liquide middelen&#039; and the &#039;Account&#039; is not set. Both parts are wrong for this transaction, so we need to set them correctly. There are two ways to achieve this:&lt;br /&gt;
# By clicking the suggestion from Exact. This is the blueish rectangle below &#039;1290- Kruisposten liquide middelen&#039;. The values shown are the suggestions from Exact for the G/L Account (In this case &#039;1600 - Crediteuren&#039;) and for the Account (In this case &#039;40 - Albert heijn&#039;). In this case, the suggestions are correct (For standard transactions, the &#039;1600 - Crediteuren&#039; is the correct G/L Account, and the payment was made to Albert Heijn, so the Account &#039;40 - Albert Heijn&#039; is also correct), but there might not always be a correct suggestion. There can also be multiple suggestions.&lt;br /&gt;
# By clicking the &#039;Edit&#039; button at the far right of the transaction line and manually adjusting the values.&lt;br /&gt;
&lt;br /&gt;
Both actions take you to &#039;Statement line&#039; edit modal, of which an example can be seen to the right. If you used option 1, the G/L Account and Account textbox will be filled in with the information from the suggestion. If you used option 2, you need to manually enter the correct value in the textbox. You can either type the number, or the name of the G/L Account and/or Account. When typing, a box will appear with suggestions. Finally, select the matching option from the suggestions box. You can also double click on a textbox to get another modal with a list of all possible values, from which you can pick the correct one.&lt;br /&gt;
&lt;br /&gt;
Finally, click the &#039;Save&#039; button at the top to store the updated values.&lt;br /&gt;
&lt;br /&gt;
Note: If the correct value for Account cannot be found in the list/suggestions, it is likely that the invoice/receipt for that transaction has not been added yet. Adding the receipt/invoice should be done first. This is because if you are using the Scan Service, the Account will be automaticly created and likely contain much more information then if you created the Account yourself. It&#039;s also a lot easier.&lt;br /&gt;
&lt;br /&gt;
=== Matching the Transaction ===&lt;br /&gt;
[[File:Example matching transaction and receipts-invoices modal.png|thumb|Example matching transaction and receipts/invoices modal]]&lt;br /&gt;
&lt;br /&gt;
With the Entry line set, we can move on to reconcile the transaction. To do this, click the &#039;Match&#039; button to bring up the modal to select the invoices/receipts this transaction matches with. An example of the modal can be seen on the right.&lt;br /&gt;
&lt;br /&gt;
Exact uses the G/L Account and Account of the transaction to present you with a list of possible receipts/invoices that could be matched with the transaction. If the list in the modal is empty, it means that either the G/L Account and Account are not set correctly, or the invoice/receipt has not been entered into the system yet.&lt;br /&gt;
&lt;br /&gt;
To reconcile the transaction you need to take the following steps:&lt;br /&gt;
# Check the checkboxes for the receipts/invoices that belong to this transaction. Generally, this means selecting the receipt/invoice with the matching monetary value.&lt;br /&gt;
# Make sure that the drop down for &#039;Difference&#039; is set to &#039;Don&#039;t write off&#039; for the selected receipts/invoices.&lt;br /&gt;
# Click &#039;Enter&#039; to finish the reconciliation.&lt;br /&gt;
&lt;br /&gt;
Congratulations, you&#039;ve just finished reconciling a transaction!&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=Reconciliation&amp;diff=173</id>
		<title>Reconciliation</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=Reconciliation&amp;diff=173"/>
		<updated>2023-04-24T15:06:11Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Navigation ==&lt;br /&gt;
The page for interacting with transactions to reconcile them can be found on Exact at: &#039;Financial&#039; -&amp;gt; &#039;Banking &amp;amp; Cash&#039; -&amp;gt; &#039;To be completed&#039;.&lt;br /&gt;
&lt;br /&gt;
== Retrieving Transactions ==&lt;br /&gt;
[[File:Search panel for transactions to reconcile.png|thumb|Search panel for transactions to reconcile]]&lt;br /&gt;
&lt;br /&gt;
First, we need to retrieve any transaction which need reconciliation. For this we need to use the search panel. The following steps are required:&lt;br /&gt;
&lt;br /&gt;
* Make sure the checkbox for &#039;To be completed&#039; is checked.&lt;br /&gt;
* Ensure no range is set. Or if it is set, that the range includes the date the transaction you wish to reconcile was made.&lt;br /&gt;
* Keep all other boxes and options empty.&lt;br /&gt;
* Click &#039;Refresh&#039; if you made any changes to the search panel after arriving on the page.&lt;br /&gt;
&lt;br /&gt;
On the right you can find an image showing an example of how the search panel ought to look.&lt;br /&gt;
&lt;br /&gt;
== Processing Transactions ==&lt;br /&gt;
[[File:Transaction example.png|thumb|Example of a transaction that needs reconciliation]]&lt;br /&gt;
&lt;br /&gt;
To the right, you can find an example of a transaction that requires reconciliation. In order to do this, two steps are required:&lt;br /&gt;
# Ensure the &#039;Entry line&#039; is set correctly. This is the information in the middle block of the transaction overview.&lt;br /&gt;
# Match the transaction to the correct invoice/receipt.&lt;br /&gt;
&lt;br /&gt;
We&#039;ll use the example transaction to demonstrate how to perform these steps.&lt;br /&gt;
&lt;br /&gt;
=== Setting the Entry line ===&lt;br /&gt;
[[File:Grootboekregel example.png|thumb|Example of setting the G/L Account]]&lt;br /&gt;
&lt;br /&gt;
Setting the Entry line correctly consists of two things.&lt;br /&gt;
# Setting the correct G/L Account. this refers to the ledger this cost should be put on. This is ususually &#039;1600 - Crediteuren&#039;.&lt;br /&gt;
# Setting the correct Account. This refers to the business relation that was involved in this transaction.&lt;br /&gt;
&lt;br /&gt;
In the example transaction, you see that the G/L Account is &#039;1290 - Kruisposten liquide middelen&#039; and the &#039;Account&#039; is not set. Both parts are wrong for this transaction, so we need to set them correctly. There are two ways to achieve this:&lt;br /&gt;
# By clicking the suggestion from Exact. This is the blueish rectangle below &#039;1290- Kruisposten liquide middelen&#039;. The values shown are the suggestions from Exact for the G/L Account (In this case &#039;1600 - Crediteuren&#039;) and for the Account (In this case &#039;40 - Albert heijn&#039;). In this case, the suggestions are correct (For standard transactions, the &#039;1600 - Crediteuren&#039; is the correct G/L Account, and the payment was made to Albert Heijn, so the Account &#039;40 - Albert Heijn&#039; is also correct), but there might not always be a correct suggestion. There can also be multiple suggestions.&lt;br /&gt;
# By clicking the &#039;Edit&#039; button at the far right of the transaction line and manually adjusting the values.&lt;br /&gt;
&lt;br /&gt;
Both actions take you to &#039;Statement line&#039; edit modal, of which an example can be seen to the right. If you used option 1, the G/L Account and Account textbox will be filled in with the information from the suggestion. If you used option 2, you need to manually enter the correct value in the textbox. You can either type the number, or the name of the G/L Account and/or Account. When typing, a box will appear with suggestions. Finally, select the matching option from the suggestions box. You can also double click on a textbox to get another modal with a list of all possible values, from which you can pick the correct one.&lt;br /&gt;
&lt;br /&gt;
Finally, click the &#039;Save&#039; button at the top to store the updated values.&lt;br /&gt;
&lt;br /&gt;
Note: If the correct value for Account cannot be found in the list/suggestions, it is likely that the invoice/receipt for that transaction has not been added yet. Adding the receipt/invoice should be done first. This is because if you are using the Scan Service, the Account will be automaticly created and likely contain much more information then if you created the Account yourself. It&#039;s also a lot easier.&lt;br /&gt;
&lt;br /&gt;
=== Matching the Transaction ===&lt;br /&gt;
[[File:Example matching transaction and receipts-invoices modal.png|thumb|Example matching transaction and receipts/invoices modal]]&lt;br /&gt;
&lt;br /&gt;
With the Entry line set, we can move on to reconcile the transaction. To do this, click the &#039;Match&#039; button to bring up the modal to select the invoices/receipts this transaction matches with. An example of the modal can be seen on the right.&lt;br /&gt;
&lt;br /&gt;
Exact uses the G/L Account and Account of the transaction to present you with a list of possible receipts/invoices that could be matched with the transaction. If the list in the modal is empty, it means that either the G/L Account and Account are not set correctly, or the invoice/receipt has not been entered into the system yet.&lt;br /&gt;
&lt;br /&gt;
To reconcile the transaction you need to take the following steps:&lt;br /&gt;
# Check the checkboxes for the receipts/invoices that belong to this transaction. Generally, this means selecting the receipt/invoice with the matching monetary value.&lt;br /&gt;
# Make sure that the drop down for &#039;Difference&#039; is set to &#039;Don&#039;t write off&#039; for the selected receipts/invoices.&lt;br /&gt;
# Click &#039;Enter&#039; to finish the reconciliation.&lt;br /&gt;
&lt;br /&gt;
?????&lt;br /&gt;
PROFIT&lt;br /&gt;
Congratulations, you&#039;ve just finished reconciling a transaction!&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=File:Prinspils.png&amp;diff=172</id>
		<title>File:Prinspils.png</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=File:Prinspils.png&amp;diff=172"/>
		<updated>2023-04-24T13:30:05Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
	<entry>
		<id>https://docs.delftsolutions.nl/index.php?title=New_receipt&amp;diff=171</id>
		<title>New receipt</title>
		<link rel="alternate" type="text/html" href="https://docs.delftsolutions.nl/index.php?title=New_receipt&amp;diff=171"/>
		<updated>2023-04-24T13:26:24Z</updated>

		<summary type="html">&lt;p&gt;Vincent: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Log into Exact&lt;br /&gt;
# Go to “Purchase” &amp;gt; “Entries” &amp;gt; “Overview”&lt;br /&gt;
# Click “New”&lt;br /&gt;
# Click “60 - Inkoopboek”&lt;br /&gt;
# Add a picture of the receipt as an attachment&lt;br /&gt;
# Under “Supplier”, find the supplier and select the correct supplier&lt;br /&gt;
# Note: If the supplier does not exist, you have to add a new supplier, but there is no guide for this&lt;br /&gt;
# Under “Invoice Data”&lt;br /&gt;
# Enter the description of what is on the receipt (e.g. enter “lunch stuff” for when you have a receipt for buying lunch stuff)&lt;br /&gt;
# Enter total amount on the receipt under “Total amount” &lt;br /&gt;
# Update “Invoice Date” (And probably also “Due date”) to match the date on the receipt&lt;br /&gt;
# Make sure the expenses are for the correct G/L Account, e.g. lunch/borrel stuff should be under 4012&lt;br /&gt;
# Click “Save + new”&lt;br /&gt;
# Ask Vincent to reconcile the payment+receipt&lt;br /&gt;
# Done&lt;/div&gt;</summary>
		<author><name>Vincent</name></author>
	</entry>
</feed>