ABW version 1.6 - messages sent to ingressqueue rejected

%3CLINGO-SUB%20id%3D%22lingo-sub-319415%22%20slang%3D%22en-US%22%3EABW%20version%201.6%20-%20messages%20sent%20to%20ingressqueue%20rejected%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-319415%22%20slang%3D%22en-US%22%3E%3CP%3EHi%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EWe've%20deployed%2C%20and%26nbsp%3Badapted%20our%20solidity%20contracts%20for%20the%20changes%20required%20in%20v1.6%2C%20and%20our%20contracts%20work%20fine%20when%20tested%20under%20the%20ABW%20Web%20UI.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EHowever%2C%26nbsp%3Bwhen%20we%20send%20Json%20serialized%20CreateContract%20messages%20(in%20the%20same%20format%20as%201.5)%20to%20the%20Service%20Bus%20%60ingressqueue%60%2C%20the%20contract%20isn't%20created%2C%20and%20a%20correlated%20error%20response%20is%20returned%20on%20the%20%60egresstopic%60%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%22ErrorCode%22%3A4000%2C%22ErrorMessage%22%3A%22CreateContractRequest%20deserialization%20failed%22%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3ESince%20the%20error%20does%20reference%20the%20RequestId%20specified%20on%20the%20CreateContract%2C%20we%20believe%20it%20may%20that%20the%20CreateContract%20schema%20has%20changed%20somehow%20in%201.6%2C%20as%20it%20seems%20ABW%20is%20still%20able%20to%20parse%20the%20Json.%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EThe%20message%20format%20we've%20used%20is%20compliant%20with%3C%2FP%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fblockchain%2Fworkbench%2Fmessages-overview%23create-contract%22%20target%3D%22_blank%22%20rel%3D%22noopener%20noreferrer%22%3Ehttps%3A%2F%2Fdocs.microsoft.com%2Fen-us%2Fazure%2Fblockchain%2Fworkbench%2Fmessages-overview%23create-contract%3C%2FA%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3Ee.g.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3E%3CSPAN%3E%7B%3CBR%20%2F%3E%22requestId%22%3A%20%224cafbbe3-996d-4619-8276-8fba39ffa673%22%2C%3CBR%20%2F%3E%22userChainIdentifier%22%3A%20%220x567c401f34dcfdb877548bd38528c199dd35507a%22%2C%3CBR%20%2F%3E%22applicationName%22%3A%20%22MyAppName%22%2C%3CBR%20%2F%3E%22workflowName%22%3A%20%22MyWorkflowName%22%2C%3CBR%20%2F%3E%22parameters%22%3A%20%5B%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%22name%22%3A%20%22param1%22%2C%3CBR%20%2F%3E%22value%22%3A%20%22value1%22%3CBR%20%2F%3E%7D%2C%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%22name%22%3A%20%22param2%22%2C%3CBR%20%2F%3E%22value%22%3A%20%22value2%22%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%5D%2C%3CBR%20%2F%3E%22connectionId%22%3A%201%2C%3CBR%20%2F%3E%22messageSchemaVersion%22%3A%20%221.0.0%22%2C%3CBR%20%2F%3E%22messageName%22%3A%20%22CreateContractRequest%22%3CBR%20%2F%3E%7D%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3E%3CSPAN%3EWith%20the%20error%20response%20received%20on%20the%20egress%20Topic%3A%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22sBrace%20structure-1%22%3E%7B%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22ContractId%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3Enull%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22ContractLedgerIdentifier%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3Enull%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22RequestId%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E%22%3CSPAN%3E4cafbbe3-996d-4619-8276-8fba39ffa673%3C%2FSPAN%3E%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22ConnectionId%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E1%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22Status%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E%22Error%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22AdditionalInformation%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sBrace%20structure-2%22%3E%7B%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22ErrorCode%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E4000%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22ErrorMessage%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E%22CreateContractRequest%26nbsp%3Bdeserialization%26nbsp%3Bfailed%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sBrace%20structure-2%22%3E%7D%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22MessageSchemaVersion%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E%221.0.0%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sComma%22%3E%2C%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectK%22%3E%22MessageName%22%3C%2FSPAN%3E%3CSPAN%20class%3D%22sColon%22%3E%3A%3C%2FSPAN%3E%3CSPAN%20class%3D%22sObjectV%22%3E%22CreateContractUpdate%22%3C%2FSPAN%3E%3CBR%20%2F%3E%3CSPAN%20class%3D%22sBrace%20structure-1%22%3E%7D%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%3CEM%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3E%3CSPAN%3E(Also%2C%20noted%20that%20the%20response%20capitalization%20is%20PascalCase%2C%20rather%20than%20the%20camelCase%20suggested%20on%20the%20website)%3C%2FSPAN%3E%3C%2FFONT%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3EAny%20ideas%20around%20this%20would%20be%20seriously%20appreciated%3C%2FFONT%3E%3CEM%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3E%3CBR%20%2F%3E%3C%2FFONT%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3EThanks%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CFONT%20face%3D%22Menlo%2C%20Monaco%2C%20Consolas%2C%20Courier%20New%2C%20monospace%22%20color%3D%22%23c7254e%22%3EStuart%3C%2FFONT%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-389713%22%20slang%3D%22en-US%22%3ERe%3A%20ABW%20version%201.6%20-%20messages%20sent%20to%20ingressqueue%20rejected%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-389713%22%20slang%3D%22en-US%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F159741%22%20target%3D%22_blank%22%3E%40Stuart%20Corrans%3C%2FA%3E%26nbsp%3BThanks%20Stuart.%20We've%20made%20some%20updates%20to%20our%20documentation%20to%20make%20things%20more%20clear.%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-319491%22%20slang%3D%22en-US%22%3ERe%3A%20ABW%20version%201.6%20-%20messages%20sent%20to%20ingressqueue%20rejected%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-319491%22%20slang%3D%22en-US%22%3EOk%2C%20found%20the%20breaking%20change.%20There's%20a%20new%20mandatory%2C%20undocumented%20property%20called%20%60Version%60%20which%20must%20match%20the%20new%20column%20added%20on%20table%20%60Application%60.%3CBR%20%2F%3EPity%20that%20the%20MessageSchemaVersion%20wasn't%20bumped%20up.%3CBR%20%2F%3EThe%20Docs%20and%20Messaging%20samples%20need%20to%20be%20updated.%3C%2FLINGO-BODY%3E
Occasional Contributor

Hi

 

We've deployed, and adapted our solidity contracts for the changes required in v1.6, and our contracts work fine when tested under the ABW Web UI.

 

However, when we send Json serialized CreateContract messages (in the same format as 1.5) to the Service Bus `ingressqueue`, the contract isn't created, and a correlated error response is returned on the `egresstopic`

 

"ErrorCode":4000,"ErrorMessage":"CreateContractRequest deserialization failed"

 

Since the error does reference the RequestId specified on the CreateContract, we believe it may that the CreateContract schema has changed somehow in 1.6, as it seems ABW is still able to parse the Json.


The message format we've used is compliant with

https://docs.microsoft.com/en-us/azure/blockchain/workbench/messages-overview#create-contract

 

e.g.

 

{
"requestId": "4cafbbe3-996d-4619-8276-8fba39ffa673",
"userChainIdentifier": "0x567c401f34dcfdb877548bd38528c199dd35507a",
"applicationName": "MyAppName",
"workflowName": "MyWorkflowName",
"parameters": [
{
"name": "param1",
"value": "value1"
},
{
"name": "param2",
"value": "value2"
}
],
"connectionId": 1,
"messageSchemaVersion": "1.0.0",
"messageName": "CreateContractRequest"
}

 

With the error response received on the egress Topic:

 

 

{  
   "ContractId":null,
   "ContractLedgerIdentifier":null,
   "RequestId":"4cafbbe3-996d-4619-8276-8fba39ffa673",
   "ConnectionId":1,
   "Status":"Error",
   "AdditionalInformation":{  
      "ErrorCode":4000,
      "ErrorMessage":"CreateContractRequest deserialization failed"
   },
   "MessageSchemaVersion":"1.0.0",
   "MessageName":"CreateContractUpdate"
}

(Also, noted that the response capitalization is PascalCase, rather than the camelCase suggested on the website)

 

Any ideas around this would be seriously appreciated

 

Thanks

 

Stuart

 

2 Replies
Ok, found the breaking change. There's a new mandatory, undocumented property called `Version` which must match the new column added on table `Application`.
Pity that the MessageSchemaVersion wasn't bumped up.
The Docs and Messaging samples need to be updated.

@Stuart Corrans Thanks Stuart. We've made some updates to our documentation to make things more clear.