---
title: "Lupa textiles — Two legacy shops onto one Shopware 6 B2B platform"
description: "Migrating two grown legacy shops from Lupa textiles onto a single Shopware 6 B2B platform — including customer-group reconstruction, automated order handover, and the project-specific extension of the Credit Limit plugin. Delivered with the nuonic F.O.C.U.S. framework."
canonical_url: "https://nuonic.de/en/case-studies/lupa-focus"
---

<case-study-hero eyebrow="Case Study · F.O.C.U.S." image="/images/case-studies/lupa-hero.svg" imageAlt="Lupa textiles B2B trade on Shopware 6">

A plugin opened the door. <span>



</span>



<span className="mono-hl">

A system did the rest.

</span>



<template v-slot:lead="">

Migrating two grown legacy shops from Lupa textiles onto a single Shopware 6 B2B platform — with reconstructed customer groups, automated order handover, and a credit limit that enforces itself. Delivered with the nuonic F.O.C.U.S. framework. Because go-live is not a success. It is where responsibility begins.

</template>
</case-study-hero>

<case-study-focus-strip :phases="[{"letter":"F","name":"Facts","tagline":"Reality over assumptions"},{"letter":"O","name":"Objectives","tagline":"Clarity before speed"},{"letter":"C","name":"Constraints","tagline":"The truth about systems"},{"letter":"U","name":"Execution","tagline":"Build, don't discuss"},{"letter":"S","name":"Scaling","tagline":"Growth is a system"}]">



</case-study-focus-strip>

<case-study-facts :facts="[{"label":"Client","value":"Lupa textiles"},{"label":"Industry","value":"Textiles / B2B Trade"},{"label":"Platform","value":"Shopware 6"},{"label":"Starting point","value":"2 grown legacy shops"},{"label":"ERP","value":"XML order handover"},{"label":"Delivery","value":"Feb 2024 – go-live summer 2025"},{"label":"Maintenance","value":"Since Sept 2025 (ongoing)"},{"label":"Services","value":"Migration · B2B setup · Plugin development"}]" :tags="["Shopware 6","Data Migration","Customer Groups","AccessManager","Credit Limit Plugin","XML ERP Interface","UPS Labels","B2B Commerce"]" label="Project at a glance">



</case-study-facts>

<case-study-section letter="F" name="Facts" subtitle="Reality over assumptions">

Lupa textiles ran two shops that had grown side by side over the years — each with its own customers, its own terms, and separate maintenance. The [system audit](/en/services/consulting) revealed that the actual business knowledge wasn't in any documentation, but in the legacy data itself: the B2B customer groups, for instance, were nowhere cleanly modeled and could only be reconstructed from the salutation field. The project began via an unusual route: our own store plugin **Credit Limit for B2B & invoice purchase** was already in use and became the door-opener for the full migration.

</case-study-section>

<case-study-section letter="O" name="Objectives" subtitle="Clarity before speed">

Not "rebuild two shops", but clearly defined goals before the first line of code:

- **One platform instead of two building sites:** consolidate both legacy shops onto a shared [Shopware 6 base](/en/shopware-agency/migration).
- **Full data migration:** move products, customers, orders, and the established [SEO substance](/en/shopware-agency/seo) without any break.
- **Digitize B2B processes** that were previously safeguarded manually — from assortment control to order handover.
- **A credit limit that enforces itself:** invoice purchase without manual approval, hard-checked in the checkout.

</case-study-section>

<case-study-section letter="C" name="Constraints" subtitle="The truth about systems">

The critical conditions were named before implementation, not discovered during it:

- **Legacy data as the only source:** customer groups and terms existed only implicitly in the legacy data — migration here meant translating, not copying.
- **Two separate data sets** had to come together consistently in one platform.
- **Assortment separation per dealer:** each customer group may see only its approved assortment.
- **A fixed ERP:** orders must be handed over in a structured, automated way — no manual re-typing.

</case-study-section>

<case-study-callout title="The decision formula behind every work item">

**Impact** on revenue, **commitment** to the deadline, **ownership** of the outcome. Projects don't fail because of technology, but because of unclear facts, objectives, and constraints. The framework forces clarity — before the first line of code.

</case-study-callout>

<case-study-stats :stats="[{"value":"2 → 1","label":"Legacy shops onto one platform"},{"value":"legacy data","label":"Customer groups reconstructed"},{"value":"XML","label":"Order handover automated"},{"value":"per group","label":"Credit limit in checkout"}]">



</case-study-stats>

<case-study-heading eyebrow="Execution & Scaling">

We didn't copy. We translated.

</case-study-heading>

<case-study-section letter="U" name="Execution" subtitle="Build, don't discuss">

The migration wasn't pure data copying, but the translation of a grown business into a clean system — delivered to the standards of our [Shopware development](/en/shopware-agency/development):

- **Customer groups reconstructed from legacy data** — out of the salutation field of the legacy records as the foundation for the entire B2B logic.
- **Access control per customer group (AccessManager):** each dealer sees only its approved assortment.
- **XML order handover to the ERP** — automated instead of re-typed, including UPS label generation.
- **Credit Limit plugin extended for the project:** limits per customer group, automatic reset aligned to the payment term, available limit visible in the top bar, and a hard block in the checkout.
- **Data migration without breaks:** products, customers, orders, and SEO URLs of both shops moved into one platform.
- **Move to the client's hosting** ahead of go-live — cleanly separated from live operations.

Go-live in summer 2025 — both legacy shops have run on a shared base ever since.

</case-study-section>

<extension-showcase :extensions="[{"title":"Credit Limit for B2B & invoice purchase","description":"Credit limits per customer, customer group, or sales channel — with automatic checking of open invoice amounts in the checkout. Extended for the project at Lupa textiles; the extensions flow back into the store product.","icon":"/images/shopware/extensions/kreditlimit.png","url":"https://store.shopware.com/en/nuoni52437279746m/kreditlimit-fuer-b2b-rechnungskauf.html","status":"In use in the project"}]" background="navy" label="The plugin behind the case study" linkLabel="View in the Shopware Store" storeLabel="All nuonic extensions in the Shopware Store" storeUrl="https://store.shopware.com/en/extension-partners/nuonic-digital">
<template v-slot:heading="">

A store product that grows in the <span className="mono-hl">

project

</span>

.

</template>

<template v-slot:intro="">

What we built into the credit limit for Lupa textiles doesn't stay a one-off: limits per customer group, periodic reset, and the hard checkout block flow back into our certified store product. Every plugin customer benefits from this [B2B project](/en/shopware-agency/b2b).

</template>
</extension-showcase>

<case-study-section letter="S" name="Scaling" subtitle="Growth is a system">

And this is where a project separates from a partnership. Since September 2025, nuonic has owned [Shopware support & maintenance](/en/shopware-agency/support) and the continued development of the consolidated platform — with a fixed release rhythm instead of ad-hoc firefighting:

- **One maintained operation** instead of two legacy shops drifting apart.
- **Shopware 6.7** as an update epic in preparation — planned, not postponed.
- **B2B logic as a living system:** customer groups, assortment control, and credit limits grow with the business.
- **Plugin feedback loop:** project-specific extensions harden the store product for all customers.

</case-study-section>

<case-study-callout title="The system does the work — not the team.">

A B2B process is only truly digital when no one has to safeguard it manually anymore. At Lupa textiles, assortment control, order handover, and credit checking run **automatically — from the cart all the way into the ERP.**

</case-study-callout>

<case-study-facts :facts="[{"label":"Consolidation","value":"2 legacy shops → 1 platform"},{"label":"Customer groups","value":"reconstructed from legacy data"},{"label":"Assortment","value":"access per customer group (AccessManager)"},{"label":"Orders","value":"XML handover to the ERP"},{"label":"Payment","value":"credit limit per group, checkout block"},{"label":"Model","value":"Maintenance with a fixed release cycle"}]" :tags="["Credit Limit Plugin","AccessManager","Customer Groups","XML ERP Interface","UPS Labels","Shopware 6.7"]" label="B2B setup in numbers">



</case-study-facts>

<focus-roles :roles="[{"title":"Strategist","items":["Clarify facts, goals & constraints"]},{"title":"Architect","items":["B2B data model & integrations"]},{"title":"Builder","items":["Migration, plugins & quality"]},{"title":"Operator","items":["Operations & continued development"]}]" label="The roles in the project">
<template v-slot:heading="">

Four roles, from facts to scaling.

</template>

<template v-slot:intro="">

Responsibility across the full cycle — operationally tied to the phases, with no handoffs into the void.

</template>
</focus-roles>

<service-contact background="navy" ctaLabel="Let's talk impact →" ctaTo="/en/contact" label="Contact" phone="+49 8141 828197-0">
<template v-slot:heading="">

Are your B2B orders still running on phone calls and Excel? Let's talk about <span className="cta-hl">

impact

</span>

.

</template>

<template v-slot:body="">

nuonic Digital GmbH & Co. KG · Munich & Hamburg

</template>
</service-contact>
