Neu JTL → Shopify Connector: MappingTablesException / „Endpoint id is empty“ – betroffene Artikel aus Logs per SQL finden

Puma7

Sehr aktives Mitglied
4. Mai 2016
405
44
Hallo zusammen,

wir hatten beim JTL-WawiShopify-Abgleich wiederholt das Problem, dass einzelne Artikel den kompletten Abgleich blockieren.

Die Fehlermeldung sah ungefähr so aus:

Code:
Controller = Product | Action = push
There is a problem with the linking - Id's (Endpoint id is empty)
The problem was caused by "Jtl\Connector\Shopify\Connector\Database\ProductTable"

MappingTablesException Code 90

Auffällig war bei uns:

Wenn man den betroffenen Artikel für den Shopify- Shop deaktiviert, läuft der Abgleich zunächst weiter. Aktiviert man denselben Artikel später wieder, kommt der Fehler erneut.

Das spricht aus meiner Sicht dafür, dass nicht der Artikel selbst das eigentliche Problem ist, sondern ein defektes Mapping im Shopify- Connector, also eine Verknüpfung zwischen JTL-Wawi-Artikel und Shopify-Produkt/Variante, bei der die Endpoint-ID leer oder beschädigt ist.

Da bei uns mehrere Artikel betroffen waren, habe ich mir eine SQL-Abfrage gebaut, um historisch aus den JTL-Connector-Logs herauszufinden, welche Artikel bereits mit diesem Fehler aufgefallen sind.

Wichtig:

Die Abfrage ist nur lesend. Sie macht kein UPDATE, DELETE, INSERT oder sonstige Datenänderungen.

Trotzdem sollte man sie natürlich mit Bedacht auf produktiven Systemen ausführen, da Logtabellen je nach Größe viele Daten enthalten können.

Vorher bitte anpassen:

SQL:
DECLARE @kShop INT = 26;
DECLARE @Seit DATETIME = DATEADD(DAY, -60, GETDATE());


  • []@kShop muss auf die eigene Shopify-Shop-ID angepasst werden.
    [
    ]@Seit legt fest, wie weit historisch gesucht wird.
    []-60 bedeutet: letzte 60 Tage.
    [
    ]Für 360 Tage entsprechend -360 verwenden.

Die Abfrage sucht in Sync.tConnectorLogeintrag nach typischen Fragmenten des Fehlers:


  • []Endpoint id is empty
    [
    ]MappingTablesException
  • ProductTable

Danach versucht sie aus dem Logtext folgende Informationen herauszuziehen:


  • []JTL-Wawi PK / kArtikel
    [
    ]SKU
    []Artikelname
    [
    ]Vaterartikel, falls es sich um einen Kindartikel handelt
    []Vater-SKU
    [
    ]Zeitpunkt des letzten Fehlers
  • Anzahl der gefundenen Fehler

Hier die Abfrage:

SQL:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET LOCK_TIMEOUT 5000;

DECLARE @kShop INT = 26;
DECLARE @Seit DATETIME = DATEADD(DAY, -60, GETDATE());

WITH LogTexte AS
(
SELECT
l.kConnectorLogeintrag,
l.kSyncLogsitzung,
l.dZeitpunkt,
l.kShop,
CONVERT(NVARCHAR(MAX), ISNULL(l.cMeldung, ''))
+ CHAR(10) +
CONVERT(NVARCHAR(MAX), ISNULL(l.cExtendedMessage, '')) AS LogText
FROM Sync.tConnectorLogeintrag l
WHERE l.kShop = @kShop
AND l.dZeitpunkt >= @Seit
AND (
l.cMeldung LIKE '%Endpoint id is empty%'
OR l.cExtendedMessage LIKE '%Endpoint id is empty%'
OR l.cMeldung LIKE '%MappingTablesException%'
OR l.cExtendedMessage LIKE '%MappingTablesException%'
OR l.cMeldung LIKE '%ProductTable%'
OR l.cExtendedMessage LIKE '%ProductTable%'
)
),
Positionen AS
(
SELECT
lt.*,
p1.PosPK,
p2.PosSKU,
p3.PosName,
p4.PosProblem,
p4.PosLinebreak
FROM LogTexte lt
OUTER APPLY
(
SELECT
CHARINDEX('JTL-Wawi PK = ', lt.LogText) AS PosPK
) p1
OUTER APPLY
(
SELECT
CASE
WHEN p1.PosPK > 0
THEN CHARINDEX(' | SKU = ', lt.LogText, p1.PosPK)
ELSE 0
END AS PosSKU
) p2
OUTER APPLY
(
SELECT
CASE
WHEN p2.PosSKU > 0
THEN CHARINDEX(' | Name = ', lt.LogText, p2.PosSKU)
ELSE 0
END AS PosName
) p3
OUTER APPLY
(
SELECT
CASE
WHEN p3.PosName > 0
THEN CHARINDEX(' | There is a problem', lt.LogText, p3.PosName)
ELSE 0
END AS PosProblem,
CASE
WHEN p3.PosName > 0
THEN CHARINDEX(CHAR(10), lt.LogText, p3.PosName)
ELSE 0
END AS PosLinebreak
) p4
),
Extrakt AS
(
SELECT
kConnectorLogeintrag,
kSyncLogsitzung,
dZeitpunkt,
kShop,

    TRY_CONVERT
    (
        INT,
        CASE
            WHEN PosPK > 0
             AND PosSKU > PosPK + LEN('JTL-Wawi PK = ')
            THEN SUBSTRING
            (
                LogText,
                PosPK + LEN('JTL-Wawi PK = '),
                PosSKU - (PosPK + LEN('JTL-Wawi PK = '))
            )
            ELSE NULL
        END
    ) AS kArtikel,

    LTRIM(RTRIM(
        CASE
            WHEN PosSKU > 0
             AND PosName > PosSKU + LEN(' | SKU = ')
            THEN SUBSTRING
            (
                LogText,
                PosSKU + LEN(' | SKU = '),
                PosName - (PosSKU + LEN(' | SKU = '))
            )
            ELSE NULL
        END
    )) AS SKU,

    LTRIM(RTRIM(
        CASE
            WHEN PosName > 0
            THEN SUBSTRING
            (
                LogText,
                PosName + LEN(' | Name = '),
                CASE
                    WHEN PosProblem > PosName + LEN(' | Name = ')
                    THEN PosProblem - (PosName + LEN(' | Name = '))

                    WHEN PosLinebreak > PosName + LEN(' | Name = ')
                    THEN PosLinebreak - (PosName + LEN(' | Name = '))

                    ELSE 500
                END
            )
            ELSE NULL
        END
    )) AS Artikelname,

    LogText
FROM Positionen

)
SELECT
e.kShop,
e.kArtikel,
MAX(e.SKU) AS SKU,
MAX(e.Artikelname) AS Artikelname,
a.kVaterArtikel,
CASE
WHEN a.kVaterArtikel > 0 THEN a.kVaterArtikel
ELSE a.kArtikel
END AS kVaterOderEinzelartikel,
v.cArtNr AS VaterSKU,
MAX(e.dZeitpunkt) AS LetzterFehler,
COUNT(*) AS FehlerAnzahl
FROM Extrakt e
LEFT JOIN dbo.tArtikel a
ON a.kArtikel = e.kArtikel
LEFT JOIN dbo.tArtikel v
ON v.kArtikel = CASE
WHEN a.kVaterArtikel > 0 THEN a.kVaterArtikel
ELSE a.kArtikel
END
WHERE e.kArtikel IS NOT NULL
GROUP BY
e.kShop,
e.kArtikel,
a.kVaterArtikel,
CASE
WHEN a.kVaterArtikel > 0 THEN a.kVaterArtikel
ELSE a.kArtikel
END,
v.cArtNr
ORDER BY
LetzterFehler DESC,
MAX(e.SKU);

Was macht die Abfrage genau?


  • []Sie liest die Connector-Logeinträge aus Sync.tConnectorLogeintrag.
    [
    ]Sie filtert auf den angegebenen Shop über @kShop.
    []Sie berücksichtigt nur Logeinträge ab dem Datum @Seit.
    [
    ]Sie sucht nach typischen Fehlerbestandteilen wie Endpoint id is empty, MappingTablesException und ProductTable.
    []Sie verbindet cMeldung und cExtendedMessage zu einem auswertbaren Logtext.
    [
    ]Sie extrahiert aus dem Logtext die JTL-Wawi-PK, SKU und den Artikelnamen.
    []Sie verknüpft den Treffer mit dbo.tArtikel, um bei Kindartikeln den Vaterartikel zu ermitteln.
    [
    ]Sie gruppiert die Treffer nach Artikel und zeigt den letzten Fehlerzeitpunkt sowie die Fehleranzahl.

Das Ergebnis zeigt dann zum Beispiel:


  • []kArtikel des betroffenen Artikels
    [
    ]SKU
    []Artikelname
    [
    ]kVaterArtikel
    []Vater-SKU
    [
    ]letzter Fehlerzeitpunkt
  • Anzahl der gefundenen Fehler

Wichtig zur Einordnung:

Diese Abfrage findet nur Artikel, bei denen der Fehler bereits im Log protokolliert wurde. Sie erkennt also nicht automatisch alle potenziell defekten Mappings im Voraus. Wenn Logs gelöscht oder bereinigt wurden, können ältere Fälle natürlich fehlen.

Bei Variantenartikeln sollte man aus meiner Sicht nicht nur das einzelne Kind betrachten, sondern immer den Vaterartikel inklusive aller Kinder. In der Fehlermeldung wird ja ebenfalls sinngemäß empfohlen, bei Varianten Master und alle Kinder neu zu senden.

Meine bisherige Einschätzung:

Wenn ein Artikel nach Deaktivierung/Reaktivierung wieder mit Endpoint id is empty blockiert, scheint das reine Aktivieren/Deaktivieren in JTL-Wawi das Problem nicht zu beheben.

Es sieht dann eher nach einem defekten Product-/Variant-Mapping im Shopify-Connector aus.

In so einem Fall würde ich die betroffenen Artikel mit obiger Abfrage sammeln und damit gezielt ein Ticket bei JTL eröffnen, mit der Bitte, die ProductTable-/Variant-Mappings mit leerer Endpoint-ID zu prüfen bzw. zurückzusetzen.

Vielleicht hilft die Abfrage anderen, die plötzlich immer wieder einzelne Shopify-Artikel im Abgleich hängen haben und erst einmal herausfinden möchten, welche Artikel historisch betroffen waren.

----

@Laura O https://forum.jtl-software.de/threa...pify-connector-21-05-2025.235671/post-1280621
 

Puma7

Sehr aktives Mitglied
4. Mai 2016
405
44
Simple Lösung, 5 Artikel hatten anstatt regulärer UST verminderte im Dropdown. Wahrscheinlich weil ein Mitarbeiter mal über dem Dropdown Feld war und mit dem scroll Rad dien wert aus versehen geändert hatte.
 

dapole

Sehr aktives Mitglied
27. Oktober 2014
154
30
Simple Lösung, 5 Artikel hatten anstatt regulärer UST verminderte im Dropdown. Wahrscheinlich weil ein Mitarbeiter mal über dem Dropdown Feld war und mit dem scroll Rad dien wert aus versehen geändert hatte.
-> Das ist 'Der JTL Klassiker'


-> Ob Steuersatz / Warengruppe
.... einmal nicht 'hingesehen' -> ZACK: schleicht sich ein 'unerkannter' Fehler ins system
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Shop 5.7.2 - JTL PayPal Checkout legt alles lahm JTL-Shop - Fehler und Bugs 4
JTL-Ameise 2.04 - Export Rechnungen csv - unvollständig JTL-Wawi 2.0 12
Neu Belege aus JTL Wawi zu Lexoffice Schnittstellen Import / Export 5
Neu Varianten die nicht online in JTL geschaltet sind werden trotzdem zu Shopify geladen Shopify-Connector 2
Neu Gesucht: JTL-Systempartner/Freelancer mit Erfahrung in Personalisierungs-/Gravur-Fulfillment Dienstleistung, Jobs und Ähnliches 2
Neu JTL Stammtisch Stuttgart Messen, Stammtische und interessante Events 0
Neu Copy/Paste Abstürze seit JTL-Wawi 2.0.5 User helfen Usern - Fragen zu JTL-Wawi 4
Gelöst: Störung bei LInk11 - JTL- Shops teilweise nicht erreichbar Störungsmeldungen 1
JTL Update auf 1.9 , danach Import Kundenspezifrische Preise velerhaft JTL-Wawi 1.9 0
Wie übernehme ich Artikelnamen von JTL in den neuen Kaufland Niederlande-Verkaufskanal? JTL-Wawi 1.11 1
Neu Wie stelle ich Retouren in JTL für DPD ein? JTL-ShippingLabels - Ideen, Lob und Kritik 1
Neu JTL Wawi 1.11.11 - Zahlungsabgleich bei FYRST Bank verlangt immer Passwort User helfen Usern - Fragen zu JTL-Wawi 0
Neu JTL Shop Plugin - BD Automatisierter Widerruf (Von Händler für Händler - Schluss mit Mail-Chaos & Spam-Sorgen!) Plugins für JTL-Shop 0
Neu Der wahrscheinlich östlichste JTL Servicepartner: Standortvorteil, faire Preise und vieles mehr Dienstleistung, Jobs und Ähnliches 16
Neu Welche JTL Shop Plugins oder kleinen Hilfstools würden euch im Alltag wirklich helfen? Plugins für JTL-Shop 0
Neu JTL ShippingLabels - Meldungen JTL-ShippingLabels - Fehler und Bugs 7
Neu Beta-Tester gesucht: Produktdaten aus Artikelfotos schneller für JTL/CSV vorbereiten Dienstleistung, Jobs und Ähnliches 0
Neu oAuth Credentials Login mit JTL .. WO? User helfen Usern 1
Neu Installationsdatei für JTL‑Wawi 1.9.6.5 Installation von JTL-Wawi 2
Neu kostenlos: DHL Sendungsverfolgung für JTL-Wawi – Web-Dashboard mit Frühwarnsystem Schnittstellen Import / Export 0
Neu JTL Wawi 2.0 oder höher WooCommerce-Connector 0
Changelog jtl Wawi 2.0.5 JTL-Wawi 2.0 10
Neu Ist es ohne Probleme möglich Cloudflare in der Free Version mit JTL zu nutzen? Allgemeine Fragen zu JTL-Shop 7
JTL 5.7.1 Widerrufsformular massiver SPAM Einrichtung JTL-Shop5 3
JTL Wawi 1.11.xx langsam unbenutzbar! JTL-Wawi 1.11 4
Neu Plugin: JTL Exportformat Google Shopping gibt <g:google_product_category> unter Shop 5.7.1 und Wawi 2.0.4 nicht aus Plugins für JTL-Shop 1
Neu Widerrufsbutton für JTL-Shop 4 Allgemeine Fragen zu JTL-Shop 17
Neu Rabatte aus dem JTL-Shop werden in der Wawi nur als Netto-Preis übernommen, Rabatt % gehen verloren Onlineshop-Anbindung 0
JTL Anmeldung letzter Benutzer JTL-Wawi 1.11 3
Test-Kunden als solche in JTL markieren, um die Auswertungen sauber zu halten? JTL-Wawi 1.11 1
Neu Ab Wawi 1.10 - JTL.Wawi.Pos.exe direkt ohne JTL-Administrator starten? Allgemeine Fragen zu JTL-POS 2
Neu JTL-Shop - Wechsel von Test zum Livebetrieb - was beachten ? Installation / Updates von JTL-Shop 2
JTL APP - Fehlermeldung nach Update auf Wawi 1.11. JTL-Wawi App 6
Eigener Drittshop-Connector (jtl/connector 5.3): valide Variationskombinationen werden mit „besitzt keine Variationen" nicht gesendet JTL-Wawi 1.11 1
JTL Wawi 1.11. - Fenstergröße - Artikel auf Einkaufsliste setzen JTL-Wawi 1.11 13
Neu Problem mit dem JTL-Connector – Invalid Shopify connection credentials. Shopify-Connector 3
Neu JTL Artikelanlage mit KI beschleunigen User helfen Usern - Fragen zu JTL-Wawi 2
Neu JTL-Wawi Shopabgleich per E-Mail überwachen (Warnungen & Fehler) Onlineshop-Anbindung 1
Neu Helfen Lösungen wie Unicorn wirklich, um die teuren Preise bei JTL zu vermeiden? Amazon-Anbindung - Ideen, Lob und Kritik 1
Neu Meta Shop seit September 2025: JTL-Lösung für neue Checkout-URL gesucht Allgemeine Fragen zu JTL-Shop 0
Neu Bug? Führende Nullen bei Sendungsnummern verschwinden in JTL-Wawi 2.0.3 JTL-ShippingLabels - Fehler und Bugs 1
DPD Cloud Labeldruck auf Zebra LP 2844-Z seit Update auf JTL-Wawi 1.11.x fehlerhaft JTL-Wawi 1.11 3
JTL nach Update auf 2.0.3 im Bereich „Kunden“ extrem langsam JTL-Wawi 2.0 1
Neu DHL 4.0 mit JTL-ShippingLabels funktioniert nicht JTL-ShippingLabels - Fehler und Bugs 2
JTL-Wawi sucht falschen ShopType nach Gambio-Update JTL-Wawi 1.7 2
Neu JTL Lizensserver ist nicht erreichbar eBay-Anbindung - Fehler und Bugs 0
Nach update 1.8>1.11 Kein Mandant in JTL-Wawi gefunden JTL-Wawi 1.11 5
Angebliche externe Aufträge "für Rechnungserstellung freigeben" und Rechnungen erstellen. Gibt es dazu eine akzeptable Erklärung von JTL? JTL-Wawi 1.11 1
Rabatt Coupons in Verbindung mit Staffelpreisen - JTL 1.11.9, JTL Shop JTL-Wawi 1.11 0
Neu Abschaltung DHL versenden 3.0 vs JTL Shipping JTL-ShippingLabels - Ideen, Lob und Kritik 4

Ähnliche Themen