Mule mel getting data from sfdc status - mule

Payload is in this format:
[[UpsertResult created='true'
errors='{[1][Error fields='{[1]Payroll_Type__c,}'
message='This payroll type is not associated to WSE's account. Please select another.'
statusCode='FIELD_CUSTOM_VALIDATION_EXCEPTION'
]
,}'
id='null'
success='false'
]
]
I am able to get the success key as:
message.payload.get(0).success=='false'
I want to get the value of message, errors, statusCode. tried with message.payload.message, message.payload.get(0).errors, and many cases,but nothing helped.

According to the API doc, success is a boolean field.
So you need to use:
message.payload[0].success == false
or even better if it's in a condition:
!message.payload[0].success
To access the values of the first Error object, use:
message.payload[0].errors[0].message
message.payload[0].errors[0].fields
message.payload[0].errors[0].statusCode

Related

OpenNMS events varbinds decode always showing the raw value between (parentheses)

Is there a way to hide the raw value from a varbind that was decoded?
What I'm getting is:
deviceNotification trap received deviceRuleCode=browserOffline(7) notifObjType=trigger(1) notifObjSeverity=critical(6)
What i want is:
deviceNotification trap received deviceRuleCode=browserOffline notifObjType=trigger notifObjSeverity=critical
Obviously I'm passing the decoded varbinds parm[#] to the log message and/or description.
Any clue? Is it even supported?
After check the code, I've concluded that this is not supported.
The proof is here:
https://github.com/OpenNMS/opennms/blob/develop/features/events/daemon/src/main/java/org/opennms/netmgt/eventd/processor/expandable/ExpandableParameter.java#L75-L77
The token having the decoded value is always appended with the original value:
(...)
ret.append(decode.get(token).get(value));
ret.append("(");
ret.append(value);
ret.append(")");
(...)
.. and this happens for all the expanded values.

UI5 Odata batch update - Connect return messages to single operation

I perform a batch update on an OData v2 model, that contains several operations.
The update is performed in a single changeset, so that a single failed operation fails the whole update.
If one operation fails (due to business logic) and a message returns. Is there a way to know which operation triggered the message? The response I get contains the message text and nothing else that seems useful.
The error function is triggered for every failed operation, and contains the same message every time.
Maybe there is a specific way the message should be issued on the SAP backend?
The ABAP method /iwbep/if_message_container->ADD_MESSAGE has a parameter IV_KEY_TAB, but it does not seem to affect anything.
Edit:
Clarification following conversation.
My service does not return a list of messages, it performs updates. If one of the update operations fails with a message, I want to connect the message to the specific update that failed, preferably without modifying the message text.
An example of the error response I'm getting:
{
"error":{
"code":"SY/530",
"message":{
"lang":"en",
"value":"<My message text>"
},
"innererror":{
"application":{
"component_id":"",
"service_namespace":"/SAP/",
"service_id":"<My service>",
"service_version":"0001"
},
"transactionid":"",
"timestamp":"20181231084555.1576790",
"Error_Resolution":{
// Sap standard message here
},
"errordetails":[
{
"code":"<My message class>",
"message":"<My message text>",
"propertyref":"",
"severity":"error",
"target":""
},
{
"code":"/IWBEP/CX_MGW_BUSI_EXCEPTION",
"message":"An exception was raised.",
"propertyref":"",
"severity":"error",
"target":""
}
]
}
}
}
If you want to keep the same exact message for all operations the simplest way to be able to determine the message origin would be to add a specific 'tag' to it in the backend.
For example, you can fill the PARAMETER field of the message structure with a specific value for each operation. This way you can easily determine the origin in gateway or frontend.
If I understand your question correctly, you could try the following.
override the following DPC methods:
changeset_begin: set cv_defer_mode to abap_true
changeset_end: just redefine it, with nothing inside
changeset_process:
here you get a list of your requests in a table, which has the operation number (thats what you seek), and the key value structure (iwbep.blablabla) for the call.
loop over the table, and call the method for each of the entries.
put the result of each of the operations in the CT_CHANGESET_RESPONSE.
in case of one operation failing, you can raise the busi_exception in there and there you can access the actual operation number.
for further information about batch processing you can check out this link:
https://blogs.sap.com/2018/05/06/batch-request-in-sap-gateway/
is that what you meant?

Amazon Marketplace Web Service create inbound shipment NOT_ELIGIBLE_FC_FOR_ITEM, what wrong?

step 1:
request create inbound shipment plan api.
http://docs.developer.amazonservices.com/en_US/fba_inbound/FBAInbound_CreateInboundShipmentPlan.html
response:
[
//usualy 1-5 plan has been reply,no any one plan contain full of my items.
//the plan 1
{
"ShipToAddress": {
... ignore address detail
},
"ShipmentId": "FBA15CQQTFFM",
"DestinationFulfillmentCenterId": "PHX3",
"LabelPrepType": "NO_LABEL",
"Items": [
//item list, it is alway not full of my provide items.
{}
]
},
//the plan2, and more plan
{},{},...
]
step 2:
choose max count items of plan for create inbound shipment.
i cant edit item in this step.
http://docs.developer.amazonservices.com/en_US/fba_inbound/FBAInbound_CreateInboundShipment.html
step 3:
update inbound shipment plan for add all of item to this plan.
http://docs.developer.amazonservices.com/en_US/fba_inbound/FBAInbound_UpdateInboundShipment.html
request url: https://mws.amazonservices.com/FulfillmentInboundShipment/2010-10-01
request params:
SellerId=xxxxxxxxxxxxxxxxxx
AWSAccessKeyId=xxxxxxxxxxxxxxxxxxx
SignatureVersion=2
SignatureMethod=HmacSHA256
Version=2010-10-01
InboundShipmentHeader.ShipmentStatus=WORKING
ShipmentId=FBA15CR0QLLR
InboundShipmentHeader.ShipmentName=2018-05-16-AAA
InboundShipmentHeader.ShipFromAddress.Name=Wang%20Jingang
InboundShipmentHeader.ShipFromAddress.AddressLine1=396haozhiyihao
InboundShipmentHeader.ShipFromAddress.AddressLine2=
InboundShipmentHeader.ShipFromAddress.City=Guangzhou
InboundShipmentHeader.ShipFromAddress.DistrictOrCounty=
InboundShipmentHeader.ShipFromAddress.StateOrProvinceCode=Guangdong
InboundShipmentHeader.ShipFromAddress.CountryCode=CN
InboundShipmentHeader.ShipFromAddress.PostalCode=510080
InboundShipmentItems.member.1.SellerSKU=A71231811510311-
InboundShipmentItems.member.1.QuantityShipped=20
InboundShipmentItems.member.2.SellerSKU=A5W3E3112HE0
InboundShipmentItems.member.2.QuantityShipped=80
InboundShipmentItems.member.3.SellerSKU=A71231811540010-
InboundShipmentItems.member.3.QuantityShipped=20
InboundShipmentItems.member.4.SellerSKU=A71231811540011-
InboundShipmentItems.member.4.QuantityShipped=30
InboundShipmentItems.member.5.SellerSKU=A71231811515411-
InboundShipmentItems.member.5.QuantityShipped=20
InboundShipmentItems.member.6.SellerSKU=J8S109225HE90
InboundShipmentItems.member.6.QuantityShipped=10
InboundShipmentItems.member.7.SellerSKU=J8S109225HE92
InboundShipmentItems.member.7.QuantityShipped=33
InboundShipmentItems.member.8.SellerSKU=J8S109225HE93
InboundShipmentItems.member.8.QuantityShipped=10
InboundShipmentItems.member.9.SellerSKU=J8S109225ND90
InboundShipmentItems.member.9.QuantityShipped=8
InboundShipmentItems.member.10.SellerSKU=J8S109225ND91
InboundShipmentItems.member.10.QuantityShipped=12
InboundShipmentItems.member.11.SellerSKU=J8S109225ND92
InboundShipmentItems.member.11.QuantityShipped=17
InboundShipmentItems.member.12.SellerSKU=J8S109225ND93
InboundShipmentItems.member.12.QuantityShipped=14
InboundShipmentItems.member.13.SellerSKU=J8S109225ND94
InboundShipmentItems.member.13.QuantityShipped=5
InboundShipmentItems.member.14.SellerSKU=J8S109225QC90
InboundShipmentItems.member.14.QuantityShipped=10
InboundShipmentItems.member.15.SellerSKU=J8S109225QC91
InboundShipmentItems.member.15.QuantityShipped=5
InboundShipmentItems.member.16.SellerSKU=J8S109225QC92
InboundShipmentItems.member.16.QuantityShipped=9
InboundShipmentHeader.AreCasesRequired=false
Action=UpdateInboundShipment
Timestamp=2018-05-18T13%3A08%3A04%2B08%3A00
Signature=LCFu1NoX1QnENH1oCFEbwsXy1JVh7QNjpe2enGj258Q%3D
sometime success.
sometime fail, and tell me [skuType=MSKU, sku=..., reason=NOT_ELIGIBLE_FC_FOR_ITEM.]
do not change anything.
replicated 1-3.
sometime success.
sometime fail, and tell me [skuType=MSKU, sku=..., reason=NOT_ELIGIBLE_FC_FOR_ITEM.]
imcomprehensible it is, sku maybe not equal with last time. it is random, maybe one, mabe two.
can you tell me waht wrong?
HOW CAN I TO DO, MAKE ALL ITEMS IN ONE PLAN?
I got the sam error before, I found a ref.:
https://help.scanpower.com/support/solutions/articles/11000037578-what-does-the-not-eligible-fc-for-item-error-mean-
FYI, sure, I have a SKU, when creating inbound shipment, to old account, it's OK, but to new account, API will reponse the error you said.
Unfortunately, this error is coming directly from Amazon. There is a product in your shipment that is causing a conflict with the inbound shipping and/or the fulfillment center, but Amazon does not give us any indication as to the specific issue.
We have contacted Amazon and they suggest each seller experiencing this issue contact Seller Support for more information on the error. Please let them know that you are listing said item(s) via their MWS API and are receiving the following message: (insert the text of YOUR SPECIFIC ERROR MSG HERE what you see below is an example)
Invalid Items found - ShipmentId [FBA53HXYFX] MerchantCustomerId [A2WOJIKNACJWE4] InvalidItems[ (skuType=MSKU, sku=2016-11-30-B0006SGYS8-1099, reason=NOT_ELIGIBLE_FC_FOR_ITEM)]Shipment Id: FBA53HXYFXRequest Id: fb04a1f9-721f-4be3-a9c7-ba4063c13f69

WSO2 API Manager returning RunTime Error

I have an API in WSO2. When I try to test it in the store with valid parameters via GET, it returns the following error message:
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code>101504</am:code>
<am:type>Status report</am:type>
<am:message>Runtime Error</am:message>
<am:description>Send timeout</am:description>
</am:fault>
I have already searched and tried a lot, but with no success, always returning the same error. Don't know if helps, but the api that I try to access is a PHP file.
Any ideas?
EDIT:
I have identical apis to this one, changing only the response, that are working properly. Even if I erase the php file that the API is pointing, the error keep coming.
EDIT:
I changed the code in Management Console, in Metadata>List>APIs:
{"production_endpoints":
{"url":"http://site/myapi.php","config":
{"format":"leave-as-is","optimize":"leave-as-
is","actionSelect":"fault","actionDuration":30000}},
"sandbox_endpoints":
{"url":"http://site/myapi.php","config":
{"format":"leave-as-is","optimize":"leave-as-
is","actionSelect":"fault","actionDuration":30000}},
"implementation_status":"managed","endpoint_type":"http"}
to this:
{"production_endpoints":
{"url":"http://10.20.40.189/ConsultaAutorizacaoCadPos.php","config":null},
"sandbox_endpoints":{"url":"http://10.20.40.189/ConsultaAutorizacaoCadPos.php","config":null},
"implementation_status":"managed","endpoint_type":"http"}
And this error message vanishes. But this new one appears:
<am:fault xmlns:am="http://wso2.org/apimanager">
<am:code>303001</am:code>
<am:type>Status report</am:type>
<am:message>Runtime Error</am:message>
<am:description>Currently , Address endpoint : [ Name : admin--myapi_APIproductionEndpoint_0 ] [ State : SUSPENDED ]</am:description>
EDIT: this error message is appearing just sometimes. Most of the time the request takes long time to run and then returns nothing( no content )
Any ideas how to solve it?

Yodlee executeUserSearchRequest error

I try to get information from Yodlee API.
I have a test user where I've implemented adding an account and I got refresh OK from the site:
{ siteRefreshStatus: {
siteRefreshStatusId: 8
siteRefreshStatus: "REFRESH_COMPLETED_WITH_UNCERTAIN_ACCOUNT"
}
- siteRefreshMode: {
refreshModeId: 2
refreshMode: "NORMAL"
}
- updateInitTime: 0
nextUpdate: 1391603301
code: 403
noOfRetry: 0
}
}
Now when I try to perform search and get the actual transactions I get this error:
{
errorOccured: "true"
exceptionType: "com.yodlee.core.IllegalArgumentValueException"
refrenceCode: "_57c250a9-71e8-4d4b-830d-0f51a4811516"
message: "Invalid argument value: Container type cannot be null"
}
The problem is that I have container type!
Check out the parameters I send:
cobSessionToken=08062013_2%3Ad02590d4474591e507129bf6baaa58e81cd9eaacb5753e9441cd0b1ca3b8bd00a3e6b6a943956e947458307c1bb94b505e2eb4398f890040a3db8c98606c0392&userSessionToken=08062013_0%3A8e8ef9dd4f294e0f16dedf98c1794b96bf33f2e1f2686eda2f35dfe4901dd3a871eed6d08ce52c99a74deb004c025ebf4bf94c7b17baf8ba18aacb331588f5f5&transactionSearchRequest.containerType=bank&transactionSearchRequest.higherFetchLimit=1000&transactionSearchRequest.lowerFetchLimit=1&transactionSearchRequest.resultRange.endNumber=500&transactionSearchRequest.resultRange.startNumber=1&transactionSearchRequest.searchClients.clientId=1&transactionSearchRequest.searchClients.clientName=DataSearchService&transactionSearchRequest.ignoreUserInput=true&transactionSearchRequest.searchFilter.currencyCode=USD&transactionSearchRequest.searchFilter.postDateRange.fromDate=01-01-2014&transactionSearchRequest.searchFilter.postDateRange.toDate=01-31-2014&transactionSearchRequest.searchFilter+.transactionSplitType=ALL_TRANSACTION&transactionSearchRequest.searchFilter.itemAccountId+.identifier=10008425&transactionSearchRequest.searchClients=DEFAULT_SERVICE_CLIENT
There is an error occurred while adding the account, which can be interpreted by this parameter code: 403 and hence you will not be seeing that account when you call the getItemSummary API. An account is successfully linked if the code has zero as value. E.g.code:0 . 403 is an error which is show if Yodlee's data agent has encountered an unhandled use case. Hence for any such error you should file a service request using Yodlee customer care tool.
To know more about error codes please visit -
https://developer.yodlee.com/FAQs/Error_Codes
The status is show as completedsiteRefreshStatus: "REFRESH_COMPLETED_WITH_UNCERTAIN_ACCOUNT"because addition of any account is followed by a refresh in which Yodlee's data agent logs into the websites of FIs and try scraping data. Hence completion of this activity is denoted as REFRESH_COMPLETED even when there is an error occurred.
TranasctionSearch issue -
I can see two of the parameters with a "+" sign. Since transactionSlipttype and containerType are dependent on each other the error is thrown.
&transactionSearchRequest.searchFilter+.transactionSplitType=ALL_TRANSACTION
&transactionSearchRequest.searchFilter.itemAccountId+.identifier=10008425
The right parameters are -
&transactionSearchRequest.searchFilter.transactionSplitType=ALL_TRANSACTION
&transactionSearchRequest.searchFilter.itemAccountId.identifier=10008425