Back to projects

Industrial integration · In production

PlanetTogether

Industrial integration pipeline connecting SAP and SQL Server to automate production scheduling via PlanetTogether — built during my apprenticeship at Orange Business.

PlanetTogether
Python SQL Server SQLAlchemy GitLab CI Pytest PlanetTogether

The Project

PlanetTogether is the core of a Python monorepo built during my apprenticeship at Orange Business within a three-developer team. The goal: automate the production scheduling chain for industrial clients by connecting their SAP systems to the PlanetTogether scheduling tool.

Confidential project — deployed and running in production.

The Integration Chain

The architecture relies on a critical dependency between three links:

PythonTemplateExtraction → PlanetTogether → PythonPublishToSAP → SAP

Each link is independent, but a failure in the first one blocks the entire production chain.

PythonTemplateExtraction — Upstream ETL

An ETL pipeline that reads data from Excel files and SQL Server staging tables, transforms it according to business constraints, then writes it to the destination database that PlanetTogether consumes to generate its schedule.

  • Multi-source reading: Excel (operators, resources) + SQL Server (manufacturing orders)
  • Typed domain models (Machine, HumanResources, Routings, ManufacturingOrders…)
  • Business data validation with ErrorCodes (code, message, display in PT)
  • Configurable rotating logging (RotatingFileHandler)

PythonPublishToSAP — Downstream Publication

Once PlanetTogether has generated the optimized schedule, this module writes the results back into SAP manufacturing orders — closing the loop between the scheduling tool and the ERP system.

Technical Architecture

  • Dataclasses with slots=True for memory performance
  • Each model exposes read(df) and write(writer, ...) — consistent interface across the entire domain
  • DataWriter abstracts SQLAlchemy writes — single change point if the ORM evolves
  • Safe Pandas access via get_val(row, key, cast_type, default) — no silent KeyErrors

Deployment

  • Windows Task Scheduler — scheduled Python script execution aligned with production cycles
  • SQL Server Agent — stored procedures triggered database-side
  • GitLab CI — automated test pipeline on every Merge Request (python:3.12-slim)

What I Learned

This project exposed me to challenges that web development doesn't cover: industrial business logic, constraints from heterogeneous data sources (field Excel ↔ SQL Server ↔ ERP), and the criticality of a system where a regression can halt an entire production chain.

Working on a tool like PlanetTogether, deployed at major industrial groups, taught me to truly measure the real-world impact of a technical decision.