---
title: "Système d'Import Multi-Fournisseurs de Donnees Produits"
description: "Moteur d'import critique de la marketplace B2B European Sourcing - 254+ fournisseurs, 120+ tables en base, 8 types d'import CSV, 5 langues, 7 ans de développement (2009-2016)."
locale: "fr"
canonical: "https://portfolio.josedacosta.info/fr/realisations/import-european-sourcing"
source: "https://portfolio.josedacosta.info/fr/realisations/import-european-sourcing.md"
html_source: "https://portfolio.josedacosta.info/fr/realisations/import-european-sourcing"
author: "José DA COSTA"
date: "2007"
type: "achievement"
slug: "import-european-sourcing"
tags: ["PHP 5.x", "MySQL", "Symfony 2.x", "Smarty", "jQuery", "Bootstrap", "Docker", "Vagrant", "Apache", "Memcached", "ProxySQL", "FTP", "CSV", "XML"]
generated_at: "2026-04-23T15:44:10.521Z"
---

# Système d'Import Multi-Fournisseurs de Donnees Produits

Moteur d'import critique de la marketplace B2B European Sourcing - 254+ fournisseurs, 120+ tables en base, 8 types d'import CSV, 5 langues, 7 ans de développement (2009-2016).

**Date:** 2009 - 2016  
**Duration:** ~7 ans  
**Role:** Software Engineer puis Senior Software Engineer  
**Technologies:** PHP 5.x, MySQL, Symfony 2.x, Smarty, jQuery, Bootstrap, Docker, Vagrant, Apache, Memcached, ProxySQL, FTP, CSV, XML

### Key Metrics

- Lignes de code: **-** - Code PHP applicatif (hors tiers)
- Fournisseurs: **-** - 254+ dossiers d'import identifiés
- Tables en base: **-** - 120+ tables MySQL
- Langues: **-** - FR, EN, DE, ES, IT

## Présentation et définition

_Un moteur d'import centralisé pour le marche européen de l'objet promotionnel_

### Domain

Objet publicitaire et promotionnel B2B - un secteur connectant les fabricants européens d'objets marques (stylos, textiles, accessoires de bureau, cadeaux d'entreprise) aux revendeurs qui les personnalisent et les commercialisent.

### Scope

Import massif de catalogues fournisseurs (docs, données produits, variantes, marquages, options tarifaires, stocks), mise a jour automatique via flux FTP/XML/CSV, gestion des profils fournisseurs, génération de catalogues PDF et gestion des abonnements.

**Content:** Le projet **Import European Sourcing** constitue le système d'importation et de gestion des données produits de la plateforme **European Sourcing**, un acteur majeur du secteur de l'objet publicitaire et promotionnel en Europe. European Sourcing est une place de marche B2B qui met en relation des **fournisseurs** d'objets publicitaires (fabricants, importateurs) avec des **distributeurs/revendeurs** a travers l'Europe.

Le système ingere et normalise les catalogues de **254+ fournisseurs** dans des formats hétérogènes (CSV, XML, flux FTP), les traite via des pipelines de validation et de transformation, et les ecrit dans une base MySQL centralisée alimentant un moteur de recherche multilingue en 5 langues européennes.

Le système d'import a évolué en deux generations majeures :
- **Legacy (2007-2016)** : Application PHP monolithique construite sur un framework MVC custom (SQLI), avec scripts batch pour l'import de catalogues et mise a jour automatique par FTP
- **Moderne (2016-2019)** : Extranet Symfony (v2) introduisant des files d'attente d'import asynchrones, des schémas CSV structures pour 8 types d'import, et un suivi de progression en temps reel

**Domain:** Domaine métier

**Scope:** Périmètre fonctionnel

## Objectifs, contexte, enjeux et risques

_Comprendre les leviers business derriere le defi technique_

### Contexte

Le projet a été initialement développé par **SQLI** (ESN française) sur un framework PHP custom avec SQL Server, puis migré vers MySQL. L'architecture initiale (vers 2007-2010) repose sur un pattern MVC custom avec Smarty pour le templating.

Le projet est porte par **Medialeads** (société éditrice d'European Sourcing), dont le dépôt GitHub est `github.com/medialeads`. Entre 2016 et 2019, une version modernisee de l'extranet (v2) a été développée sur Symfony avec Bootstrap, Docker/Vagrant, et un système d'import asynchrone avec file d'attente.

L'infrastructure repose sur une **architecture front/back MySQL** avec load balancing : un MySQL front (192.168.0.103) pour le site public et un MySQL back (192.168.0.102) pour l'extranet d'administration, avec synchronisation par batch.

## Les étapes - Ce que j'ai fait

_Un parcours de 12 ans, de la reprise du legacy aux imports asynchrones modernes_

**Phase1 Title:** Développement initial et migration

**Phase1 Period:** 2007-2010

**Phase2 Title:** Enrichissement fonctionnel

**Phase2 Period:** 2010-2016

**Phase3 Title:** Automatisation des imports (FTP/XML)

**Phase3 Period:** 2015-2018

**Phase4 Title:** Extranet v2 et import moderne

**Phase4 Period:** 2016-2019

## Les acteurs et interactions

_Une équipe multi-generationnelle de 20+ contributeurs sur 12 ans_

**Content:** **20 contributeurs identifiés** dans les fichiers PHP (@author), les metadonnees SVN, les logs Git, les captures d'écran et les fichiers de configuration.

Le projet a évolué en deux phases d'équipe distinctes :
- **Phase SQLI (2007-2010)** : 3 développeurs principaux (jebanquey, bvermeulen, lhuangoc) ont produit 79,8% du code originel
- **Phase Medialeads (2013-2019)** : José DA COSTA a pris le relais comme développeur principal (99,8% des commits SVN), rejoint ensuite par Thomas C., fancyweb, amandine, bastien pour la modernisation

**Les acteurs non-techniques** incluent les operateurs d'import (Rahnia Sadaoui, Anthony Brifouillere, Paul Meyer), les managers commerciaux, et 250+ fournisseurs externes avec flux automatisés.

Le développement suivait un modèle de livraison incrémentale (pas de méthodologie Agile identifiée), avec des livraisons thematiques organisees dans un dossier `livraisons/`.

## Les résultats

_Impact pour moi et pour l'entreprise_

## Les lendemains du projet

_Que s'est-il passe après le déploiement final_

**Content:** **Suite immediate** (2019) : Les backups exhaustifs de mars et aout 2019 (incluant bash_history, clés SSH, captures d'écran et multiples dumps SQL) suggèrent une phase de transition - probablement liée a un départ ou un archivage. Le backup d'aout 2019 comprend 441 captures d'écran documentant systematiquement l'ensemble de l'écosystème.

**A moyen terme** : Le dernier fichier modifié dans le backup date de novembre 2019. L'exhaustivité de la documentation (pages wiki, documents de processus, scripts de déploiement) indique un effort conscient d'assurer le transfert de connaissances.

**État actuel** : Le projet est archive. La plateforme European Sourcing a continue a fonctionner de manière independante, mais le codebase original tel que documenté dans ces backups représente un instantane d'un système mature de 12 ans a son état final. Les choix techniques (Symfony v2, Docker, files d'attente asynchrones) ont démontré la conscience de l'équipe quant a la nécessite de modernisation.

La longévité de l'architecture initiale (12 ans de production) valide nombre de choix de conception originaux, en particulier la séparation front/back MySQL et la stratégie de denormalisation pour les performances de recherche multilingue.

## Mon regard critique

_Rétrospective honnete sur 12 ans d'ingénierie_
