Limit für PlentyGetCustomers / alle Benutzer abrufen?

Hallo Synesty,
im Zuge der Plenty7-Migration ist mir im Flow moveUsers_NoMail aufgefallen, dass hier ein Limit von 25 (default) für PlentyGetCustomers gesetzt wurde (Abruf für lastUpdateFrom = prop_lastruntime).

Nun bin ich nicht mehr 100% in meinen Gedankengängen die ich hatte als ich den Flow damals geschrieben hab. Aber wenn es seit dem letzten Flowrun mehr als 25 aktualisierte Datensätze gibt, dann gehen mir die doch verloren?

Ich hab also mal zu Debug-Zwecken lastUpdateFrom auf Anfang des Jahres gesetzt, und das Limit auf 2500 hoch. Damit läuft mir aber mein Flow nicht, sondern bricht mir mit "ERROR:org.apache.axis2.AxisFault: For input string: "-2876259600"" ab. Für ein Limit von 250 klappt es hingegen ohne Probleme.


Das könnte ausreichen bei wöchentlichem Flowrun, sicher ist das allerdings nicht ;) Ein deutlich höheres Limit wäre hier geschickt...

Was ist da los / was muss ich ändern?

Mit freundlichen Grüßen, Daniel Jackel / Samenhaus Müller

Exakt selbes Problem im Flow setCustomerClasses_fromRating:

Dort habe ich exakt nichts geändert, außer die Calls auf 115 gehoben und den Account hinterlegt. Das Limit war in diesem Flow schon immer auf 2000.


Früher ging das, jetzt wirft es mir ebenfalls den "input string: -2876259600"-Fehler wie oben.


Danke, Daniel

Hallo Herr Jackel,


der Fehler "org.apache.axis2.AxisFault: For input string: "-2876259600"" hat nur indirekt etwas mit dem eingestellten Limit zu tun. Bei einem der Kunden scheint eine Zahl "-2876259600" in einem Feld der Response von Plenty enthalten zu sein, was auf unserer Seite beim parsen der Response zu einer Überschreitung des Zahlenbereichs führt. Um herauszufinden welche Kunde den Fehler verursacht, können sie im Plenty Backend den SOAP API Log aktivieren und den Flow nochmal mit einem großen Limit starten. In der letzten GetCustomers Response des SOAP API Log sollten sie die Zahl -2876259600 und die Customer ID dazu finden und evtl. im Plenty Backend am entsprechenden Kunden korrigieren.


image


Hallo Synesty,
das hab ich gemacht, in der Response kommt eine lange Liste von Kunden, die alle Probleme mit dem Geburtsdatum zu haben scheinen:
<DateOfBirth xsi:type="xsd:int">-62169987600</DateOfBirth>

Wenn ich mir das im Backend anschaue, entspricht das dem Datum "05.05.1905". Keine Ahnung wie das zustande kam, die werden ja kaum alle zusammen so alt sein. Ich nehme an das Problem liegt hier bei Plenty, für den Response könnt ihr ja nix, wa?!


Ich werd mich mal da am Support versuchen. Aber da läuft halt alles arg zäh -.-

Bin ich der einzige Nutzer mit dem Problem?


Danke, Daniel

Da das nicht nur einen Kunden betrifft, ist es leider sehr mühsam das alles per CSV zu korrigieren (27 Exporte a 6000 Zeilen).


Könnt ihr von eurer Seite aus was für uns tun? Oder läuft die Zahl schon "bei Plenty" über?

Mit den Timestamps in Plenty 7 hatten wir schon einige Probleme über die SOAP. Wir vermuten das mit der Umstellung auf das W3C Datumsformat zu tun hat.


Wenn sie das Timestamps schnell korrigieren wollen, können sie sich einen kleinen Flow GetDynamicExport -> SpreadsheetFilter -> SetDynamicImport

Im Filter müsste dann die Filterbedingung

Birthday != "" && isNumber(Birthday?split("-")[0]) && (Birthday?split("-")[0]?number <= 1910)

rein.


Das Dyn. Export Format sollte so aussehen.

image

Im SetDynamicImport Mapping können sie die Spalte Birthday leer lassen (keine Quelle auswählen).


FYI, das hat Plenty selbst verbockt: https://forum.plentymarkets.com/t/hilfe-geburtstdatum-der-kunden-wird-nicht-mehr-gespeichert/54418

Danke für die Flow-Skizze! Von Hand wäre das sehr zäh geworden...

Hab den Flow wie besprochen gebastelt, der ist dann auch über die 42 betroffenen Nutzer drübergebügelt, bei denen ist das Geburtsdatum jetzt raus, prima!

Nur: es geht grade weiter :/

Jetzt bekommen wir analog dazu den Fehler
org.apache.axis2.AxisFault: For input string: "2279228400"

Die haben sich da wohl echt ihr Datenformat zerlegt, und/oder es mit dem Fix verschlimmbessert:
Wenn ich einen betroffenen Kunden im Plenty-Backend öffne, hat der dort Geburtsdatum 15.02.1906, wenn ich mir den aber per DynExport hole, kommt der Timestamp 2042-03-24 mit.


Passt alles wenig zusammen irgendwie O.o
Ich rühr da nix mehr an bis deren Support tätig wird, das bringt ja nix so. Oder habt ihr nen Lösungsvorschlag diesbezüglich?

Alle Daten aller Kunden löschen wollen wir ungern ;)

Hier das Thema "drüben": https://forum.plentymarkets.com/t/soap-call-getcustomers-scheitert-wegen-response-2876259600-im-geburtsdatum/54402/11



Und es geht grad so weiter, nächster "Problemkunde":


per SOAP:
<DateOfBirth xsi:type="xsd:int">2860095600</DateOfBirth>


per Backend:
13.07.1924


per DynExport:
2060-08-19


Ich lass die Finger von, bis es nen Fix vom Fix gibt.

Saftladen -.-

Plenty hat gebastelt =)
Folgendes fiel mir grade auf: Wenn ich das Geburtsdatum bei einem Kunden entferne, bekomme ich vom Synesty-Backend den Wert "-2147483648" zurück, im Response im Log steht aber korrekt
<DateOfBirth xsi:nil="true"/>

Das ist mir erstmal egal, weil es wird trotzdem kein Fehler wie bisher geworfen. Aber kann halt nur eines von beidem stimmen ;-)


Viel schlimmer grade: wenn ich den (Debug-)Filter customerID wegnehme, bekomme ich gar keine Kunden mehr zurück. Wenn ich ein lastOrderFrom setze, bleibt der Response leer (no_data). Wenn ich kein Datum angebe scheitern wir mit

Error during preview in step: PlentyGetCustomers112 (RuntimeException: Code: 800 Error: =Please enter at least one of the required request parameters. | )

Was den v112-Call referenziert? Hä?


Liegt das Problem hier bei Plenty oder bei euch?

Ich frag dort mal parallel!

Die no_data Response:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.samenhaus.de/plenty/api/soap/version115/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:GetCustomersResponse>
            <return xsi:type="ns1:PlentySoapResponse_GetCustomers">
                <Customers xsi:nil="true" />
                <Pages xsi:nil="true" />
                <Success xsi:type="xsd:boolean">true</Success>
                <ResponseMessages xsi:type="ns1:ArrayOfPlentysoapresponsemessage">
                    <item xsi:type="ns1:PlentySoapResponseMessage">
                        <Code xsi:type="xsd:int">110</Code>
                        <IdentificationKey xsi:nil="true" />
                        <IdentificationValue xsi:nil="true" />
                        <SuccessMessages xsi:nil="true" />
                        <ErrorMessages xsi:nil="true" />
                        <Warnings xsi:type="ns1:ArrayOfPlentysoapresponsesubmessage">
                            <item xsi:type="ns1:PlentySoapResponseSubMessage">
                                <Value xsi:type="xsd:string">Unused parameter</Value>
                                <Key xsi:type="xsd:string">Page</Key>
                            </item>
                            <item xsi:type="ns1:PlentySoapResponseSubMessage">
                                <Value xsi:type="xsd:string">No data</Value>
                                <Key xsi:nil="true" />
                            </item>
                        </Warnings>
                    </item>
                </ResponseMessages>
            </return>
        </ns1:GetCustomersResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Und die mit dem Fehler:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://www.samenhaus.de/plenty/api/soap/version115/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
    <SOAP-ENV:Body>
        <ns1:GetCustomersResponse>
            <return xsi:type="ns1:PlentySoapResponse_GetCustomers">
                <Customers xsi:nil="true" />
                <Pages xsi:nil="true" />
                <Success xsi:type="xsd:boolean">true</Success>
                <ResponseMessages xsi:type="ns1:ArrayOfPlentysoapresponsemessage">
                    <item xsi:type="ns1:PlentySoapResponseMessage">
                        <Code xsi:type="xsd:int">110</Code>
                        <IdentificationKey xsi:nil="true" />
                        <IdentificationValue xsi:nil="true" />
                        <SuccessMessages xsi:nil="true" />
                        <ErrorMessages xsi:nil="true" />
                        <Warnings xsi:type="ns1:ArrayOfPlentysoapresponsesubmessage">
                            <item xsi:type="ns1:PlentySoapResponseSubMessage">
                                <Value xsi:type="xsd:string">Unused parameter</Value>
                                <Key xsi:type="xsd:string">Page</Key>
                            </item>
                            <item xsi:type="ns1:PlentySoapResponseSubMessage">
                                <Value xsi:type="xsd:string">No data</Value>
                                <Key xsi:nil="true" />
                            </item>
                        </Warnings>
                    </item>
                </ResponseMessages>
            </return>
        </ns1:GetCustomersResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Wenn ich eine CustomerID angebe klappt alles.

Hallo Daniel

Das mit dem Geburtsdatum liegt bei uns. Der DateOfBirth Timestamp ist bei uns ein Datentyp int. Wenn das Element in der Repsonse nicht vorhanden ist, wird es auf die "-2147483648" gesetzt.


Ich habe seit gestern bei einem anderen Kunden von uns auch Probleme mit dem GetCustomers Call (https://forum.plentymarkets.com/t/soap-115-getcustomers-call-mit-store-id-parameter/55343).

Kannst du den customerType im Step auf z.B. Customer stellen und den Abruf ohne Datum nochmal testen. Ein Parameter muss bei diesem Call immer gesetzt sein.


Vielen Dank und viele Grüße

Torsten

Hallo Torsten,
mit CustomerType = Customer scheinen wieder Kunden raus zu kommen.
Ich bekomm nämlich schon wieder übergelaufene Timestamps raus O.o

Kunde 165877:

Backend
14.04.1965


SOAP
-55983402000


DynExport
0195-12-16 00:00:00


Solange die Jungs das bei Plenty nicht in den Griff bekommen, machts für mich wenig Sinn hier weiterzuarbeiten...

Ich hatte gestern erst alle Geburtsdaten vor 1920 und nach 2017 per CSV gelöscht, damit der Call wieder läuft. Heute bekomme ich übergelaufene Timestamps für 1965. Da die Zahl so auch im Response steht, würd ich mal vermuten euch trifft hier keine Schuld?

Ich meld mich dann wieder wenns Plenty im Griff hat.
Gruß Daniel

Ich bekomm aber weiterhin eine no_data-Response, wenn ich ein lastUpdateFrom angebe. Auch für große Zeitbereiche für die es definitiv Kunden geben muss.