You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

Template for ADR, leave at top of page

This page is only for recording decisions! Meeting minutes are to be recorded elsewhere and can linked here. AI created text and drawings will be deleted! Keep content short and concise.

  • Date - On what date was the decision made?
  • Title - What is the subject? A few words are enough.
  • Participants - who was part of the decision?
  • Status - What is the status, such as proposed, accepted, rejected, deprecated, superseded, etc.?
  • Context - One or two lines of text.
  • Decision - What have the architect forum decided? One line of text.
  • Consequences - What is the consequences for introducing the decision and not introducing the decision? One or two lines of text.
  • Attachment - If a subjects need more elaborating or details, break it out and create a separate page or document that describes the details. Add the link in the attachement field.

2025-11-20

Forum: Meeting - EG Flow - Branching strategy and Azure setup

Git Branching Strategy

Current State

  • Feature branches
  • Next branch
  • Live branch


Proposed New Structure (moving to industry standard)

  • development (renamed from "next") - for internal development and integration testing
  • staging - for final acceptance testing before production
  • main (renamed from "live") - production branch
  • Feature branches - short-lived, merge into Development

Deployment Flow

  • Feature → Development (integration testing)
  • Development → Staging (acceptance testing, internal only)
  • Staging → Main (production deployment)

Test Data Strategy 

Problem: Production will contain terabytes of data and GDPR-sensitive data that cannot be copied to staging.

Solution Agreed

  • NO copying of production data to staging (too costly, too large, GDPR issues) 
  • Staging must use only synthetic/mock data - no GDPR-sensitive information
  • Production data stays in production only

When production bugs occur

  • European team member analyzes issue (GDPR compliance - can't send personal data to India)
  • Create reproduction scenario with synthetic data in staging
  • Development team fixes issue in staging environment

2025-11-13

Forum: Meeting - EG Flow - Data _ Azure Blob, Queue and Tables _ Design Discussions 

Topics: Use Azure Blob Storage with hierarchical file structure instead of Table Storage for all data persistence.


Storage Structure

Containers:

Container NameDescription
{org-id}-documents-{year}Stores invoices and documents with multiple format versions (PDF, HTML, JSON)
{org-id}-batches-{year}Stores batch processing data and metadata
{org-id}-dataStores organization configuration and template files


Blob Storage Structure

ContainerBlob NameDescription
{org-id}-documents-{year}/invoices/{invoice-id}.pdfGenerated invoice in PDF format
{org-id}-documents-{year}/invoices/{invoice-id}.htmlGenerated invoice in HTML format
{org-id}-documents-{year}/invoices/{invoice-id}.jsonInvoice metadata and data in JSON
{org-id}-documents-{year}/documents/{document-id}.pdfDocument in PDF format
{org-id}-documents-{year}/documents/{document-id}.htmlDocument in HTML format
{org-id}-documents-{year}/documents/{document-id}.jsonDocument metadata and data in JSON
{org-id}-batches-{year}/batches/{batch-id}Batch processing information
{org-id}-dataorganization.jsonOrganization configuration and settings
{org-id}-data/templates/{template-name}.htmlDocument/invoice templates


Rationale
Eliminates Table Storage partition key complexity and cross-partition query costs
Enables year-based partitioning for lifecycle management


2025-11-11

Forum: Biweekly Flow Meeting  
Topics: Organization identifier, ID tools

Organization identifier & ID tools

We are not going to use the legal market identifier known as a "organizational number", we will use our own identifying unit - NOT auto incremental as with a relational database.

What was discussed was the probability of a `UUID` (Universally Unique Identifier) or `LUUID` (Lexical Universally Unique Identifier). The latter being easier to read and indexed.

Other

  • Print Partners - There will be more than one partner available, but EG will choose which one to use for the organization.
  • The `PUT`-method for the organization endpoint was thought to state that the organization has uploaded their data and that the service could trigger the batch process.

2025-10-27

Forum: Biweekly Flow Meeting
Topics: Logging tools, Introduce basic architecture from Axel, structure changes  

Project solution will change from _"EGU.EGFlow"_ to _"EGU.Flow"_.

And additionally we will be having console applications to process batch, naming conventions will follow from the above structure.

In regards to logging EG Flow will be using azure application insights for logging. Seri logs for structuring the logs.

EGU.Flow/
├── EGU.Flow.AppHost/                        # Aspire AppHost project
│   └── Program.cs                           # Configures serviceDefaults and service wiring
│
├── EGU.Flow.Core/                           # Shared contracts and types
│   ├── DTOs/
│   ├── Enums/
│   ├── Interfaces/
│   └── Common/
│
├── EGU.Flow.Domain/                         # Domain models and logic (used by API)
│   ├── Models/
│   └── DomainServices/
│
├── EGU.Flow.BusinessLogic /                 # Business logic
│   ├── Services/
│   └── Mappers/
│
├── EGU.Flow.CoreApiService/                 # ASP.NET Core Web API
│   ├── Controllers/
│   └── Program.cs
│
├── EGU.Flow.Web/                            # ASP.NET Core Web App (e.g.,Blazor)
│   ├── Pages/ or Components/
│   └── Program.cs
```


**Initial architecture from Axel**
```
┌─────────────────────────────────────────────────────────────────┐
│                         INGESTION LAYER                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌──────────────────┐              ┌──────────────────┐         │
│  │  SFTP Gateway    │              │   API Gateway    │         │
│  │  (Blob Storage)  │              │ (Container App)  │         │
│  └────────┬─────────┘              └────────┬─────────┘         │
│           │                                  │                  │
└───────────┼──────────────────────────────────┼──────────────────┘
            │                                  │
            ▼                                  ▼
┌─────────────────────────────────────────────────────────────────┐
│                      PROCESSING LAYER                           │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────────────┐       ┌──────────────────┐                 │
│  │ Priority Queue  │       │  Bulk Queue      │                 │
│  │ (Azure Queue)   │       │  (Azure Queue)   │                 │
│  └────────┬────────┘       └────────┬─────────┘                 │
│           │                         │                           │
│           ▼                         ▼                           │
│  ┌─────────────────┐       ┌──────────────────┐                 │
│  │ File Processor  │       │ File Processor   │                 │
│  │ (Single Docs)   │       │ (Bulk Files)     │                 │
│  └────────┬────────┘       └────────┬─────────┘                 │
│           │                         │                           │
│           └───────────┬─────────────┘                           │
│                       ▼                                         │
│           ┌──────────────────────┐                              │
│           │  Template Engine     │                              │
│           │  (Handlebars + PDF)  │                              │
│           └──────────┬───────────┘                              │
│                      ▼                                          │
│           ┌──────────────────────┐                              │
│           │   Channel Router     │                              │
│           └──────────┬───────────┘                              │
│                      │                                          │
└──────────────────────┼──────────────────────────────────────────┘
                       │
                       ▼
┌─────────────────────────────────────────────────────────────────┐
│                      DELIVERY LAYER                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  ┌─────────┐  ┌─────────┐  ┌─────────┐  ┌─────────┐             │
│  │ Postal  │  │  Email  │  │  Kivra  │  │E-faktura│  ...        │
│  │Exporter │  │ Sender  │  │ Client  │  │ Client  │             │
│  └─────────┘  └─────────┘  └─────────┘  └─────────┘             │
│                                                                 │
└─────────────────────────────────────────────────────────────────┘


  • No labels