---
title: "B2B Product Data Export Platform"
description: "Internal B2B web application automating the export of promotional product catalogs - CSV generation with docs and direct synchronization via PrestaShop WebService API for resellers."
locale: "en"
canonical: "https://portfolio.josedacosta.info/en/achievements/export-donnees-produits-b2b"
source: "https://portfolio.josedacosta.info/en/achievements/export-donnees-produits-b2b.md"
html_source: "https://portfolio.josedacosta.info/en/achievements/export-donnees-produits-b2b"
author: "José DA COSTA"
date: "2013"
type: "achievement"
slug: "export-donnees-produits-b2b"
tags: ["PHP", "MySQL", "PrestaShop WebService API", "Bootstrap 2", "jQuery", "Zend_Mail", "Apache", "Linux (cron/PID)"]
generated_at: "2026-04-23T15:46:46.902Z"
---

# B2B Product Data Export Platform

Internal B2B web application automating the export of promotional product catalogs - CSV generation with docs and direct synchronization via PrestaShop WebService API for resellers.

**Date:** 2013 - 2016  
**Duration:** ~3 years (active development 2013-2015, maintenance until 2016)  
**Role:** Senior Software Engineer (~93% of application code)  
**Technologies:** PHP, MySQL, PrestaShop WebService API, Bootstrap 2, jQuery, Zend_Mail, Apache, Linux (cron/PID)

### Key Metrics

- Lines of Code: **-** - PHP, JavaScript, CSS
- Source Files: **-** - Application files (excl. framework)
- Database Tables: **-** - 30 read + 6 read/write
- Supported Languages: **-** - FR, EN, DE, IT, ES

## Presentation

_Project definition and scope_

### Domain

Promotional products & textiles - sourcing, distribution, B2B e-commerce

### Target Users

B2B resellers (promotional product distributors) subscribed to European Sourcing, and the EuropeanTool commercial & technical team (administrators)

**Content:** The **B2B Product Data Export Platform** (internal name: `europeansourcing_export`) is an internal web application developed for **European Sourcing** (trade name: **EuropeanTool**), a major player in the **promotional products** industry based in Agen and Bordeaux, France.

This application is the **product data export module** of the European Sourcing platform. It enables **resellers** (promotional product distributors) to export supplier product catalogs to their own systems - either as **CSV files** (with images) or through **direct synchronization via the PrestaShop WebService API**.

The system manages the complete lifecycle from export request to delivery: authentication, validation, billing, batch execution, progress monitoring, and automatic email notification at every step.

**Domain:** Domain

**Target Users:** Target Users

**Functional Scope:** Functional Scope

**Scope Csv Export:** CSV Export with ZIP & Images

**Scope Ws Sync:** PrestaShop WebService Sync

**Scope Quotas:** Reseller Quota Management

**Scope Workflow:** Billing & Validation Workflow

**Scope Concurrency:** Parallel Export Processing

**Scope Monitoring:** Real-Time Process Monitoring

**Scope Category Mapping:** Category Mapping (ES ↔ PrestaShop)

**Scope Notifications:** Multi-Step Email Notifications

**Scope Multi Lang:** Multi-Language Product Data (5 languages)

## Objectives, Context, Stakes & Risks

_Strategic vision and operational constraints_

### Context

The project is part of a larger European Sourcing ecosystem comprising **15+ interconnected applications**: the main platform, extranet, reseller front-end, translation module, supplier back-office, API, and many others.

The application relies on a **custom PHP MVC framework** (mynd-framework) and uses the shared `europeansourcing` MySQL database hosted on OVH dedicated servers. The architecture follows a classic monolithic PHP pattern with **CLI scripts for background batch processing**.

An internal **DokuWiki** hosted on `wikidev.es-recette.com` served as shared technical documentation. The `es_export` page specifically documents this module, signed by José DA COSTA on 2016/11/03.

- Enable subscribed resellers to export product data (data + docs) from selected suppliers as CSV or via PrestaShop WebService
- Automate catalog synchronization between the European Sourcing database and reseller PrestaShop shops
- Manage a quota system to control export volumes per reseller
- Provide a complete validation workflow: request → confirmation → billing → execution → email delivery
- Support parallel execution of up to 6 simultaneous exports with robust process management (PID, kill, zombie detection)

**Objectives:** Objectives

**Context:** Context

**Stakes:** Stakes

**Stakes Revenue:** Revenue generation - exports are a billed service. The workflow explicitly includes invoice sending before triggering execution

**Stakes B2 B Satisfaction:** B2B client satisfaction - export quality and reliability directly impacts resellers' ability to populate their online shops

**Stakes Data Volume:** Data volume - the system handles up to 500,000 product references with docs

**Stakes Multi Lang:** Multi-language support - exports manage 5 languages (FR, EN, DE, IT, ES)

**Risks:** Risks

**Risk1 Title:** Performance

**Risk1 Desc:** Exports manipulate large data volumes (docs + CSV). Memory limit set to unlimited (-1) with explicit memory error handling

**Risk2 Title:** Concurrency & Deadlocks

**Risk2 Desc:** Maximum 6 parallel exports, 3 per IP server, 1 per PrestaShop URL - designed to prevent MySQL deadlocks

**Risk3 Title:** Zombie Processes

**Risk3 Desc:** Detection mechanism via /proc/PID automatically resets stuck exports to "asked" status with "zombie" label

**Risk4 Title:** Security

**Risk4 Desc:** Authentication using MD5 (without salt), shell command execution (exec) from PHP code for process management

## Implementation Phases

_Concrete actions and personal contributions_

- Phase 1 - CSV Export
- Phase 2 - CSV PrestaShop Format
- Phase 3 - PrestaShop WebService Integration
- Phase 4 - Administration Tools
- Phase 5 - Notifications & Quotas

**Phase1 Period:** ~2013

**Phase2 Period:** ~2013-2014

**Phase3 Period:** ~2014

**Phase4 Period:** ~2014

**Phase5 Period:** ~Q3 2014

## Team & Interactions

_Collaboration and stakeholder ecosystem_

### External

B2B resellers using the module to populate their PrestaShop shops, promotional product suppliers (Anda, ELASTO FORM, KARL KNAUER, PAUL STRICKER, PORTIA, Troika, etc.), OVH (production hosting), Systonic (historical infrastructure, SVN server).

**Content:** The team was compact: **3 developers + 2 commercial/admin staff**, operating without formal Agile methodology but using a **bugtracker** for issue tracking (reference #0000919 found in code).

**Team Dev:** Development Team

**Jose Role:** Lead Developer - ~93% of application code (~11,800 / 12,632 lines). Designed the architecture, built all controllers, models, views, CLI scripts, and the PrestaShop integration. Authored the internal wiki documentation.

**Guillaume Role:** Framework Author & Developer - Created the mynd-framework (MVC framework, ~5,663 lines) shared across the ecosystem. Set up the initial project structure and contributed ~6% of application code.

**Dominique Role:** Developer (punctual interventions) - 7 identified contributions (~100-150 lines): email notification additions, bugtracker #919 fixes, duplicate content error handling.

**Commercial:** Commercial & Admin Team

**Carine Role:** Commercial contact - Email recipient for all export notifications (requests, confirmations, errors)

**Celine Role:** Administrative support - Email recipient for export notifications across all environments

**External:** External Stakeholders

## Results & Impact

_Measurable outcomes for the project and the business_

**For Project:** Delivered Features

**For Business:** Business Impact

**Business Revenue:** Direct revenue generation - each export is a billed service with integrated invoicing workflow

**Business Capacity:** Catalog capacity - system dimensioned for up to 500,000 product references

**Business Automation:** Replaced a costly manual process - automated the integration of supplier catalogs into reseller shops

**Business B2 B:** B2B client enablement - resellers could automatically populate their PrestaShop e-commerce sites with up-to-date product data and docs

**For Me:** Personal Growth

## Project Aftermath

_What happened after delivery_

**Content:** **Immediate aftermath**: The platform was actively used by European Sourcing resellers for catalog synchronization. The notification system added in September 2014 shows the platform was generating real commercial activity with the sales team being notified of every export request.

**Medium term**: The last wiki update (November 2016) indicates the platform remained operational for at least 2 years after the main development phase. The codebase was maintained but no major features were added after Q4 2014.

**Current state**: The project is archived (NAS backup dated February 2015). European Sourcing has since evolved its technology stack. The export module served its purpose during a critical growth phase of the company, enabling dozens of resellers to integrate promotional product catalogs into their e-commerce platforms.

**Legacy**: The patterns developed for this project - concurrent batch processing, zombie detection, workflow state machines, cross-platform category mapping - proved to be reusable concepts in later projects. The experience of building a revenue-generating B2B tool shaped a product-oriented mindset that proved valuable in subsequent roles.

## Critical Reflection

_Retrospective analysis and lessons learned_

**Strengths:** Strengths

**Improvements:** Areas for Improvement

**Would Change:** What I Would Do Differently

**Lessons:** Lasting Lessons
