Life ConnectLife Connect
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
Wiki index
Architecture
Services
Concepts
Runbooks
Infra
Swagger Docs
GitHub
  • Archive
  • Data Dictionary
  • Functional Epics

    • DICTIONARY OF ATTRIBUTES
    • Search Condos
    • Display

      • DisplayAll

        • Display all - Contracts
        • Display all - invoices
        • Display all - parts
        • Display all - Persons Relationships
        • Display all - Persons
        • Display tickets
      • DisplayContract

        • Display bank account Contract
        • Display Condo Member Contract
        • Display contact contract
        • Display Employee Contract
        • Display Generic Contract
        • Display Insurance Contract
        • Display Legal Represent Contract
        • Display Oral Contract
        • Display Owner Contract
        • Display Condo Regulation Contract
        • Display rental Contract
        • Display Supplier Contract
        • Display Trustee Contract
      • DisplayDelegate

        • Display Delegate
      • DisplayHistory

        • Display history
      • DisplayPerson

        • Display Company Person
        • Display Condo Person
        • Display Division Person
        • Display Group Person
        • Display Indivision Person
        • Display Natural Person
        • Display Union Person
        • Display Unknown Person
      • DisplayPersonsContracts

        • Display all Interventions
      • DisplayProperty

        • Display part
        • Display part
      • UiPerson

        • Display "mini" Persons
    • Process

      • Create

        • Create property & condo
      • Delete

        • Delete objects according to state machine
      • RC Renewal

        • RC RESIDENTIAL - automatic renewal
      • Review

        • rent amount review - RC residential - creation
        • rent amount review - RC residential - take-over
      • Sell

        • Sell a unit
    • Reporting

      • GRR

        • GLOBAL RENT REPORT
    • Search

      • Search
    • StateMachine

      • CreatingContract

        • State machine - creating a rental contract
        • State machine - creating a rental delegate contract
        • State machine - Referencing a abstract part contract
        • State machine - Referencing a bank contract
        • State machine - Referencing a condo regulation contract
        • State machine - Referencing a contact contract
        • State machine - Referencing an employee contract
        • State machine - Referencing a generic contract
        • State machine - Referencing a legal represent contract
        • State machine - Referencing a owner contract
        • State machine - Referencing a rental contract
        • State machine - Referencing a supplier contract
        • State machine - Referencing a trustee contract
      • CreatingIntervention

        • State machine - creating a ticket
        • State machine - Referencing a message
      • CreatingInvoice

        • State machine - creating a incoming (supplier) invoice
      • CreatingPayments

        • State machine - creating an incoming payment
      • EncodingPart

        • CreatingPart

          • State machine - Referencing part relationships
          • State machine - Referencing a part
      • EncodingPerson

        • CreatingAddresses

          • State machine - Creating email address
          • State machine - Creating phone address
          • State machine - Creating postal address
          • State machine - Creating web address
        • CreatingPerson

          • State machine - Referencing a company person
          • State machine - Referencing a condo person
          • State machine - Referencing a division person
          • State machine - Referencing an group person
          • State machine - Referencing an indivision person
          • State machine - Referencing a natural person
          • State machine - Referencing a union person
        • CreatingShareHolders

          • State machine - valuing a shareholder
      • Scanning

        • State machine scanning - analyze a document
        • State machine scanning - matching a document
        • State machine scanning - encoding a document : related information
    • Utility

      • Allocation keys
      • Company settings
      • Document data & file
      • Revision Index
    • Validations

      • Shareholders validation
  • Implicit

    • Callback

      • Logging In
  • ProductBoard

    • Rental Process

      • Rental delegate process
    • Ticketing

      • Create a ticket - link a ticket in Outlook add-in - add a call - display a ticket
      • Display Person Info in Outlook add-in
  • Technical Epics

    • Indexation Feature Documentation
    • Rent Amount Management Feature Documentation
    • I have an API
    • I can store the balance of an account
    • I Have Person Notifications
    • 🧩 System Process Diagrams
    • The Team has a DEV environment
    • The Team is organized
    • Accounting

      • Re-generation of Invoices
      • I can call the rent for my Rental Contract
      • Payment Creation Strategy Feature Documentation
      • I Can Revese

        • Payment Reversal
      • I Have Invoices

        • I have direction on invoice's item level
      • I Have Subsidies

        • I Can Receive Family Allowance Payments - Technical Documentation
        • Subsidies + Direct Debit Documentation
    • Communication Module

      • Communication module
    • Contracts

      • I can have contract guarantors
      • API Models
      • I Have Call For Rent Process

        • Call For Rent (CFR) Process Documentation
      • Occupancy Compensation

        • **OCCUPANCY COMPENSATION Documentation**
      • State Machine

        • I can have the Rental Contract state machine
    • Database

      • Database Indexes
    • E2e Testing

      • I can create an E2E dataset
    • Env Setup

      • Adapt env to stateless UI build
      • Blockhound
      • Table of Environments and Their Specifications
      • Environment How-To
      • Java Flight Recorder Management Documentation
      • Local Environment Setup
      • Kubernetes Logs Retrieval Documentation
      • Monitoring
      • I can create a new organisation
      • Production Environment Configuration
      • Remote Environment Setup
      • Set up of separate DB for env
      • Terraform Aws S3 Buckets
      • adb-ui Service Version Update
    • Files

      • I can have tags for files
    • Globals

      • boundaries
      • boundaries
      • boundaries
      • boundaries
    • Messaging

      • MongoDB Trigger Model Documentation
    • Open Api

      • Swagger Documentation Guide
      • Swagger
    • Parts

      • I Have A Forecast And Actuals Module
      • I can have part equipments
    • Process

      • Pre-Meeting Questionnaire
      • I Can Release My Feature
    • Security

      • I can create and provision an organisation
      • a user is granted access to the application
    • Stress Test

      • Introduction
      • Reports

        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Introduction
        • Table of contents
    • Tickets

      • Ticket Details Functionality
    • Troubleshooting

      • Prometheus Memory Issue Handling
Last updated 2024-12-03⚠️ 1 year 6 months old — verify against current code before relying on details.

I can create a new organisation


var root = db.getSiblingDB('adb-persons').getCollection('organization').findOne({ "legacyId": "000000000000000000000000" });
var newOrgId = new ObjectId();
var orgName = 'Immo-Sandbox'

// Agency setup
var agency = {};
agency._id = newOrgId;
agency.type = "PersonCompany";
agency.name = orgName;

// Org setup
var org = {};
org._id = newOrgId;
org.agency = agency;
org.alias = orgName;
org.organisationId = root._id.valueOf();
org._class = 'fr.lifeconnect.adb.person.model.entity.OrganizationEntity';


db.getSiblingDB('adb-persons').getCollection('organization').insertOne(org);

// Complete agency for person creation
agency.organisationId = newOrgId.valueOf();
agency.corporateName = orgName;
agency.timeZone = 'Europe/Paris';
agency.contactCategories = ["CONTACT_CATEGORY.ORGANIZATION"];
agency._class = 'fr.lifeconnect.adb.person.model.entity.PersonEntity';

db.getSiblingDB('adb-persons').getCollection('persons').insertOne(agency);

I can provision fiscal year

var organisationId = '674724e5ed73d37a1d296783';
var year = 2024;

db.getSiblingDB('adb-accounting').getCollection('fiscal_year').insertOne({
    "fiscalYear": year,
    "organisationId": organisationId,
    "activity": "ACTIVITY.PROPERTY_MANAGEMENT",
    "target": {
        "targetId": ObjectId(organisationId),
        "targetType": "Organization"
    },
    "beginDate": ISODate((year - 1) + "-12-31T23:00:00.000+01:00"),
    "endDate": ISODate(year + "-12-30T23:00:00.000+01:00"),
    "periods": Array.from({ length: 12 }, (_, i) => ({
        "period": year + "-" + String(i + 1).padStart(2, '0'),
        "open": true,
        "_class": "fr.lifeconnect.adb.accounting.model.entity.FiscalYearPeriodEntity"
    })),
    "_class": "fr.lifeconnect.adb.accounting.model.entity.FiscalYearEntity",
    "open": true
});

I can provision fiscal year for all organisations

const createIfNotExists = 2025;

db.getSiblingDB('adb-persons')
    .getCollection('organization').find({ "legacyId": { "$ne": "000000000000000000000000" } })
    .forEach(org => {
        // Define the fiscal year collection
        const fiscalYearCollection = db.getSiblingDB('adb-accounting').getCollection('fiscal_year');
        const orgId = org._id.valueOf();
        
        const existingFY = fiscalYearCollection.findOne({
            fiscalYear: createIfNotExists,
            organisationId: orgId
        });
        
        if (!existingFY) {
            const newFiscalYear = {
                fiscalYear: createIfNotExists,
                organisationId: org._id.valueOf(),
                activity: "ACTIVITY.PROPERTY_MANAGEMENT",
                target: {
                    targetId: org._id,
                    targetType: "Organization"
                },
                beginDate: new Date(`${createIfNotExists - 1}-12-31T23:00:00.000+01:00`),
                endDate: new Date(`${createIfNotExists}-12-30T23:00:00.000+01:00`),
                periods: Array.from({ length: 12 }, (_, i) => ({
                    period: `${createIfNotExists}-${String(i + 1).padStart(2, '0')}`,
                    open: true,
                    _class: "fr.lifeconnect.adb.accounting.model.entity.FiscalYearPeriodEntity"
                })),
                _class: "fr.lifeconnect.adb.accounting.model.entity.FiscalYearEntity",
                open: true
            };

            // Insert the fiscal year document into the collection
            fiscalYearCollection.insertOne(newFiscalYear);

            print(`${createIfNotExists} FY does NOT exists for organization ${orgId}, creating...` + JSON.stringify(newFiscalYear));
        } else {
            print(`${createIfNotExists} FY already exists for organization ${orgId}, NOT creating...`);
        }
    });

Add a logo

// TODO: provide script to upload logo
Edit this page
Last Updated:
Contributors: Yevhenii Khudolii
Prev
Monitoring
Next
Production Environment Configuration