Onboarding

tl;dr

1 matrix

in matrix (element) go to room 'Ask the bot'
enter:

!on <firstname> <lastname> <email>
2 create_openproject_member_tasks

The dagster asset 'create_openproject_member_tasks' then creates entries in Openproject.

TODO: Schedule the asset
3 specification

In Openproject the entries need to be reviewed and specified (which accounts, username etc.)
The Status needs to be set to 'scheduled' for the job to be picked up.

4 create_user_accounts

The dagster asset 'create_user_accounts' then uses the openproject entries to create the specified user accounts.

There could be an auto create option when entries are create by matrix (secure channel)

Goal:

creating a scalable , highly automated process to onboard new members


Out of Scope

remaining manual tasks (for now):


Tech Stack


Alternative agents

onboarding can be initiated by various agents:
Write a minimal csv file or write a json string to couchDB

uml diagram

Endresult is a minimal entry in couchDB


Process Pipelines

--- 
config: 
  theme: 'forest' 
---
sequenceDiagram
	autonumber
	participant matrix as Matrix Bot
	participant csv as CSV File
	participant op as OP Member Tasks
	actor admin as Onboarding Admin
	participant next as NX user data
	participant opu as OP user data
	participant couch as CouchDB
	par
		matrix ->> couch: initialisation
	and
		rect rgb(240, 240, 244)
			note right of csv: Import Pipeline
			csv ->> couch: import
		end 
	end
	rect rgb(255,244,245)
		note right of op: create member task pipeline
all docs without member_id couch ->> op: create member task op ->> couch: write member_id end admin ->> op: specify task admin ->> op: schedule task rect rgb(244,244,255) note right of op: create account pipeline par op->>next: create account next->>op: write comment next->>couch: write user_info and op->>opu: create account opu->>op: write comment opu->>couch: write user_info end end rect rgb(244, 255, 244) note right of op: Consolidation Pipeline op->> couch: update task account data next->> couch: update account data opu->> couch: update account data couch ->> op: consolidate task account data end

Process Initiation

is done by writing a minimal csv file firstname,lastname,email,(username)
Onboarding Apps:


Minimal data

the process shall work with minimal input data
when username is missing it is first letter of first name followed by last name.
when last name is also missing it is name part of email address.

uml diagram

Import Pipeline


flowchart LR
csv[[CSV File]] --> import>import Pipeline]
import --> couch[(CouchDB)]

CouchDB Initiation

Apps can forego the csv file and write to couchDB directly.
This is the preferred method for apps that can do so. An example for this approach is the Matrix oh-bot


initial couchDB doc

uml diagram

Openproject Pipeline

flowchart LR
couch[(couchDB)] --> pipe>create_openproject_member_tasks]
pipe --> opemproject[(openproject member task)]

Openproject Workflow

In specification Status means user data needs augmentation.
In progress Status means everything is fine and user has working accounts.
Scheduled Status means begin of automated processing
Considering to use Status 'closed' for deleting accounts.

flowchart LR
start(((start)))-->isp
isp(In specification)-->assign>complete task specification]
assign-->sp(specified)
assign-->tsd(to be scheduled)
assign-->sd(scheduled)
sp-->tsd
tsd-->sd
sd-->cap>create accounts pipeline]
cap-->success{Success?}
success-->|yes|ip(in progress)
success-->|no|isp
ip-->cp>consolidation pipeline]
cp-->success
ip-->dev(developed)
ip-->stop(((end)))
dev-->stop

Dagster

Screenshot
account
dg-openheidelberg
consolidation
dg-openheidelberg
initialisation
dg-openheidelberg
create_nextcloud_user_accounts
op->>next
Latest event
Asset checks
Materialized9. Aug., 20:41
create_openproje…_user_accounts
op->>opu
Latest event
Asset checks
Materialized9. Aug., 20:41
Unsynced (2)
update_couchdb
op->>couch
Latest event
Asset checks
Materialized9. Aug., 15:09
update_openproject_member_tasks
couch->>op
Latest event
Asset checks
Materialized9. Aug., 18:58
user_initialisation
Write initial user onboarding task from couchdb
Latest event
Asset checks
Never materialized
user_onboarding_csv
GET user onboarding csv data from Nextcloud
Latest event
Asset checks
0 / 1 Passed
Never materialized
validate_user_nextcloud
next->>couch
Latest event
Asset checks
Materialized9. Aug., 16:57
validate_user_openproject
opu->>couch
Latest event
Asset checks
Materialized9. Aug., 17:07


Authorization Task

A task can be edited at a later time to grant additional accounts (skills, interests)
This can be done by the user after onboarding


Create Accounts Pipeline


Accumulated Data

uml diagram

Consolidation Pipelines

the consolidation pipeline takes into account that accounts can be created outside of the onboarding process.


Update CouchDB


Openproject User Data


Nextcloud User Data


Update Member Tasks

we should not write a comment when member task status is "In specification"

Onboarding

An invitation mail is send to new users.
The new users are directed to the polls section.
There they can choose an available onboarding event.
Onboarding will be done via jitsi and in realspace.


Revoking Accounts

Accounts not used for a defined period shall be revoked.