Finally Microsoft Teams is supporting multi tenant activity in the windows app.
What’s New in Microsoft Teams at Enterprise Connect 2023 - Microsoft Community Hub
TECHNICAL TOPICS: MICROSOFT DYNAMICS AX & DYNAMICS 365 FOR FINANCE AND OPERATIONS - ENTERPRISE EDITION
Finally Microsoft Teams is supporting multi tenant activity in the windows app.
What’s New in Microsoft Teams at Enterprise Connect 2023 - Microsoft Community Hub
If you have to download a large database backup from LCS asset library this might be a real pain. It is slow and unstable if you just download it with your browser.
You should always use azcopy: Copy or move data to Azure Storage by using AzCopy v10 | Microsoft Learn
In LCS just click on the "Generate SAS link" this will copy the download link into the clipboard. Open a command prompt and run
azcopy "SASlink" t:\yourLocalFolder
Lately I was forced to call a Dynamics AX2012 webservice from Postman. The service is deployed as an HTTP service inbound port in AX on the IIS instance.
First of all I had to authenticate against AX to get around "IIS 8.5 Detailed Error - 401.1 - Unauthorized" - there are some posts in the WWW suggesting to use Fiddler as a supporting tool for the authentication. In my case I was able to use NTLM authentication from postman:
Even though this is still beta it is working quite well for me.
After that I did some tests with GET and POST. In the header it is important to set
Content-Type = text/xml; charset=UTF-8
SOAPAction = http://tempuri.org/AXService/ProcessWhatever
In the POST scenario I was facing "400 Bad request". This is quite chalanging cause it just means that there is something wrong within the Body. In my case I finally wrote a working XMLwhich looks something like this:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Header>
<h:CallContext xmlns:h="http://schemas.microsoft.com/dynamics/2010/01/datacontracts"
xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<h:Company>ABC</h:Company>
<h:Language i:nil="true"/>
<h:LogonAsUser i:nil="true"/>
<h:MessageId i:nil="true"/>
<h:PartitionKey i:nil="true"/>
<h:PropertyBag i:nil="true"
xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays"/> </h:CallContext>
</s:Header>
<s:Body>
<ABCServiceRequest xmlns="http://tempuri.org">
<data>123</data>
</ABCServiceRequest >
</s:Body>
</s:Envelope>
The last error I saw was "500 internal server error" - Unexpected character encountered while parsing value. This was due to a wrong value within the body of the XML.
After all that was solved I now can try the AX interface through postman and I'm happy to see "200 Ok" and the response from the service
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<ABCServiceRequest xmlns="http://tempuri.org">
<response>processed :) </response>
</ABCServiceRequest >
</s:Body>
</s:Envelope>
| exceptionMessage | ID1014: The signature is not valid. The data may have been tampered with. |
| exceptionSource | System.IdentityModel |
| exceptionStackTrace | at System.IdentityModel.RsaSignatureCookieTransform.Decode(Byte[] encoded) at System.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(Byte[] cookie, Boolean outbound) at System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver) at System.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(Byte[] token, SecurityTokenResolver tokenResolver) at System.IdentityModel.Services.SessionAuthenticationModule.ReadSessionTokenFromCookie(Byte[] sessionCookie) at System.IdentityModel.Services.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken) at System.IdentityModel.Services.SessionAuthenticationModule.OnAuthenticateRequest(Object sender, EventArgs eventArgs) at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step) at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) |
| url | / |
| Method | GET |
| httpStatusCode | 500 |
| userGuid | {00000000-0000-0000-0000-000000000000} |