Structure registration workflow

Registration is not free, structure have to fill its informations then submit it to a validation from admins.

Introduction

Standard form

User have to fill datas about:

Account login
  • Username: Required, unique, only accepts letters, numbers and special characters @, ., +, - and _;
  • Password: Required;
Identity
  • First name: Required;
  • Last name: Required;
  • Email: Required, unique;
  • Employment: Required;
  • Phone: Required;
Structure
  • Name: Required;
  • Adress: Required;
  • Town: Required;
  • Zipcode: Required, have to be a valid full zipcode number;
  • SIRET number: Required, unique, have to be a valid SIRET number (validated from Luhn algorithm);
  • Network: Required, a multiple choices selection, choice values are depending on plateforms;
  • Structure approval: Required, a single choice selection. Not enabled on all plateforms (actually only on Inserdiag);
  • Structure creation date: Required, a date with format DD/MM/YYYY. Not enabled on all plateforms (actually only on Culturdiag);
  • Wished guide: Optional, user can select a guide he wish to be accompanied by. Not enabled on all plateforms (actually only on Inserdiag);
  • How did you know about Inserdiag: Required, a single choice selection.. Not enabled on all plateforms (actually only on Inserdiag);

And finally at the end of the form, there is a required checkbox input to validate user readed general terms.

Workbook reclaim form

An optional second way to register for Structures which wants to reclaim an allready existing workbooks that have been imported previously from archives.

This is historically for Inserdiag only, after some existing workbooks archives were imported from a specific routine.

It is similar to the standard form except some additional inputs where structure fill informations (a title and a comment) about its existing workbook. Admins will use these infos to retrieve the workbook and link it to the new structure when validating its registration.

Also, this form does not display guide choice input (on plateform than implements it).

Note

Because imported workbooks are created with Status #11 - Validé, the structure will directly starts on Simplified mode.

Validation

Structure subscribe will go throught some status steps.

Status #1 - En attente

The first status when structure fill the registration form.

It means the registration have not been validated yet by an admin.

When admin will edit it, he will have some choices to change the registration status to:

Validated

Registration will go to the next status, selected Guide for accompanying will be informed with an email notification about new structure requiring him.

During save, the Supervisor and DLA Accompanist will be automatically assigned to the structure.

Rejected

Registration is rejected by admin, it will stays in this status forever without admin intervention.

A rejected registration will stay archived in database to avoid user trying to register again and again after reject.

Deleted

Registration is rejected by admin and its datas will be directly deleted in database.

Structure will be able to fill again a registration with the same datas.

Also, admin can :

  • Edit structure informations if needed;
  • Fill a comment about the registration, it will be used only for refused registrations within email notification;

Status #2 - En cours de choix d’accompagnateur

Used to enable selected guides during registration to accept or refuse its assignment to the structure.

The Guide will have a form with a single choice to accept or refuse the assignment. Until the Guide has refused or accepted a registration, the structure account will not change.

If the guide accept

The structure account will be activated.

The structure, all linked accompanists and admins will be notified about the validation;

During save, the Supervisor and DLA Accompanist will be automatically assigned to the structure.

If the guide refuse

The structure registration will still under this status but the Guide will be removed from registration.

Admins can validate it, selecting a new Guide that will be automatically assigned to the structure without consent.

At any time, an admin can validate this registration, forcing guide assignment and possibly edit Structure datas, this will inherit from same behaviors of Guide accept.

Status #3 - Activé

Account registration is validated, the structure can login and start to work.

Status #4 - Désactivé

Account is disabled, the structure cannot login anymore and should not be visible from their accompanists.

Flow chart

digraph Workflow {
    /* Define all the entities label */
    structure_start [label="Anonymous", shape="invhouse"];
    admin_start [label="Admin", shape="invhouse"];
    guide_start [label="Guide", shape="invhouse"];

    form [label="Registration form", shape=rectangle];
    validation [label="Validation", shape="diamond", style="rounded"];

    pending_registration [label="Status #1\nPending"];
    waiting_guide_registration [label="Status #2\nWaiting guide"];
    waiting_guide_validation [label="<f0> Admin\nforce|<f1> Guide\naccept", shape="record"];
    waiting_guide_refuse [label="Guide\nrefuse"];
    waiting_guide_blanked [label="Guide is removed", shape="rectangle"];

    account_enabled [label="Status #3\nEnabled", shape="egg"];
    account_rejected [label="Status #4\nDisabled", shape="egg"];
    account_deleted [label="Account deleted", shape="rectangle"];

    /* Links */
    subgraph cluster_user_kinds {
        style="rounded";
        color="lightgrey";
        fontcolor="lightslategray";
        node [style="filled", color="white"];
        label = "User kinds";

        structure_start;
        admin_start;
        guide_start;
    }

    subgraph cluster_pending {
        style="rounded";
        color="lightgrey";
        fontcolor="lightslategray";
        node [style="filled", color="white"];
        label = "Pending state";

        pending_registration;
        waiting_guide_registration;
    }

    subgraph cluster_result {
        style="rounded";
        color="lightgrey";
        fontcolor="lightslategray";
        node [style="filled", color="white"];
        label = "Final state";

        account_enabled;
        account_rejected;
        account_deleted;
    }

    structure_start -> form;
    admin_start -> {pending_registration waiting_guide_registration};
    guide_start -> waiting_guide_registration;

    form -> validation;

    validation -> form [taillabel=<<font color="firebrick2">Fail</font>>, arrowhead="ediamond", dir="forward", headport="e", tailport="e"];
    validation -> pending_registration [taillabel=<<font color="darkgreen">Success</font>>, arrowhead="diamond", dir="forward", headport="w", tailport="s"];


    pending_registration -> waiting_guide_registration [label="Accepted"];
    pending_registration -> account_rejected [label="Rejected"];
    pending_registration -> account_deleted [label="Deleted"];
    waiting_guide_registration -> {waiting_guide_validation waiting_guide_refuse};
    waiting_guide_validation -> account_enabled;
    waiting_guide_refuse -> waiting_guide_blanked;
    waiting_guide_blanked -> waiting_guide_registration;

}