Hi!
I have a web service to create sales order in NAV from Magento. All works fine but in some cases one of the items have no cross reference in NAV, then I get this error:
Fatal error: Uncaught SoapFault exception: [a:Microsoft.Dynamics.Nav.Types.Exceptions.NavNCLDialogException] There are no items with cross reference: SMARTSC in C:\wamp\www\soap\grid\pedanav.php:120 Stack trace: #0 C:\wamp\www\soap\grid\pedanav.php(120): SoapClient->__call('Update', Array) #1 C:\wamp\www\soap\grid\pedanav.php(120): NTLMSoapClient->Update(Object(stdClass)) #2 C:\wamp\www\soap\grid\crearpednav.php(112): crearpedidonav(Array, Array, 3, 'http://localhos...') #3 {main} thrown in C:\wamp\www\soap\grid\pedanav.php on line 120
I loose this new sales order in NAV, but this is not the problem, the real problem is that the nav web service become inaccesible. If I try to create another sales order (in this case with all cross references ok) I get the next error, like the service is blocked:
Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't find <definitions> in 'http://localhost:7047/DynamicsNAV/WS/Page/Sales_Order' in C:\wamp\www\soap\grid\pedanav.php:34 Stack trace: #0 C:\wamp\www\soap\grid\pedanav.php(34): SoapClient->SoapClient('http://localhos...') #1 C:\wamp\www\soap\grid\crearpednav.php(112): crearpedidonav(Array, Array, 2, 'http://localhos...') #2 {main} thrown in C:\wamp\www\soap\grid\pedanav.php on line 34
If I use Internet Explorer to navigate to the web service URL '
http://localhost:7047/DynamicsNAV/WS/Page/Sales_Order' I can see the web service definition and all become working again. I can use the web service to ceate new sales order without problem.
The quetions is... Why the service become unavalilable afther an error?... How can I solve or restart the service with code in php?
Note: In windows service configuration and services tab I have configured the service to restart in case of errors.
Resume:
All right creating sales order --> Error with not found cross reference in one new sales order --> web service become inavailable --> Cant create new sales order --> Navigate with browser to web service url --> All work right again.
Comments
I had similar experence with PHP. When I was making changes to page or codeunit, PHP was not getting the new changes and everytime i had to give the Service name in Web services a different name. Can you change the web service name and test if this solve your problem?
Did you check windows event viewer for the actual message?
Vasilis
Change the service name do not solve the problem.
All the code works fine, I can create orders in navision from my php code, but If I try to insert in to the order one item that is not in navision item list, the php crahs (normally). The problem is now the service become inaccesible; it returns something like "can see service <definitions>"....
If I want to run the service again, I have to navigate with internet explorer to the desciption service at (http://localhost:7053/DynamicsNAV/WS/Pa ... hase_Order)... and now I can use php to insert new order.
I have the windows service configure to restart on failure, also on stop with errors.
Thanks.
i also got the same issue but my architecture was 3-tier setup in nav 2009 R2.
i just create a spn without using port no for web-service, and now it is working fine .
If anyone knows/ applied the resolution kindly share that info.
The first error in your initial post is a proper SOAP message, sent to you from the NAV service because of the NAV error "There are no items with cross reference: SMARTSC". The rest of that message is generated by PHP.
I don't know what's the reason for the second error you get. The fact that you can retrieve the WSDL from a browser suggests, though, that NAV is working all right and PHP got too confused to recover.
The configuration to restart the service on error does not relate to the kind of error you got. This refers to errors that render the middle tier service handling the web service calls inoperable (crash or non-responding).
I don't know, why PHP processes the WSDL for a subsequent call. If it requests it from the server for each call, it is working very inefficiently indeed, otherwise, its local copy probably got corrupted.
What I can't get my head around is the fact, that retrieving the WSDL from a browser seems to get PHP working again. Is there some very badly broken caching going on?
You may want to try a repair of your middle tier installation.
At first time, I also think that it could be a PHP error or trash in cache, but If I try to work from diferents computer I got the same error.
In computer A I try to insert the SMARTSC cross reference that dont exist in NAV, then I get the "There are no items with cross reference: SMARTSC" error.
If I try to run the PHP code again I get the error "Parsing WSDL: Couldn't find <definitions>", in all the computers.
Now I create the cross reference SMARTSC in NAV.
If I run the PHP code again I get the error "Parsing WSDL: Couldn't find <definitions>", in all the computers.
Now I use the browser to navigate to Service Definition in Server, and I see all the service descriptions, all seems to be ok.
If I try now to run the PHP code from any computer the code runs well and I could perform the order with the recently created cross refence SMARTSC with out any problem.
It looks like the NAV web service turn to ERROR state with the "There are no items with cross reference: SMARTSC" error and become to be alive again when I browse to the service definition in the server... Like if some output buffer in web service turned
obfuscated on error and get restarted again when I navigate to service definition.
Maybe I could try to get webservice definition in PHP each time before run the code...
I would try to download the response and view it in an editor.
I'm working also with Magento (but I use REST and NAV is the consumer).
When the Magento-environment is in upgrade-process, I receive a response in HTML-format which my .NET JSON-parser can't handle.
Good luck
it is definitely not normal for NAV to go into some persistent error state an a simple C/AL execution error.
I second HannesHolst's suggestion to inspect the actual message exchange on an http-level.
Did you search Microsoft's platform update change log for changes related to your problem?