Skip to Content

Westfalia.de

German e-commerce website

Website / online store Germany www.westfalia.de
  • Move from Plentymarkets to Odoo, catalogue and warehouse
  • Forty storefronts on one instance, one deploy
  • Catalogue search from eight seconds to one

What they came with

A German retailer ran on Plentymarkets and decided to move the whole business to Odoo: about 110,000 products, the warehouse, and forty storefronts that had to live in a single instance.

It is not a project with an end date. I have been on it from the first import and still work on it.

What was done

The migration came first: products, stock and the warehouse processes. Warehouse logic was largely rewritten to the way this company picks and ships, barcode scanning included - the standard flow did not fit.

The storefront started from a theme and ended far from it: a custom reviews module written from scratch, delivery options, banners and the rest of what forty shops need while sharing one catalogue and one deploy.

Catalogue search moved to Elasticsearch behind a small Go service, while Odoo stayed the source of truth. Around it grew separate services: delivery statistics, an orchestration service, and feed generation for Google Merchant Center. The Amazon integration was simplified rather than grown. APIs were opened for automation tools - n8n and Windmill.

Query optimisation never really stops here: forty shops on one instance sit close to the memory limit, and every heavy report is a decision about the whole system, not about one page.

How it turned out

Search answers in about a second on the same hardware, and forty storefronts run as one deploy: a new shop is a domain and a theme, not a new server.

The business runs on Odoo instead of a rented platform, and the parts that are specific to it - warehouse, reviews, feeds - are its own code.

Stack

Odoo 18 Odoo eCommerce OWL FastAPI PostgreSQL Redis Elasticsearch Traefik Nginx Cloudflare Grafana

Same kind of task?

Half an hour on a call, and you leave knowing what I would do first.