Yes, it uses SOAP.
@Jonathan Our testing is setup with this URL and we are still getting an error. I have opened a support ticket with Avalara.
As long as the error is about authentication it means the call is reaching Avalara correctly but failing due to the credentials, otherwise the error would be different.
So does that mean the test worked? And yes, the error is about authentication.
Yes, it is using TLS 1.2 if it is able to connect and check the credentials. You get below error
Anyone else dealing with broken integrations today?
Iām trying to help a customer with a custom .NET app they wrote which uses an AvaTax RestClient NuGet Gallery | Avalara.AvaTax 22.3.0
Getting errors like this at runtime:
Unhandled Exception: System.Net.Http.HttpRequestException: An error occurred while sending the request. ā> System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a send. ā> System.IO.IOException: Authentication failed because the remote party has closed the transport stream.
Pretty sure itās a TLS issue given the error syntax and timing, but not sure how to solve yetā¦
I tried going into Visual Studio and updating these packages:
But that did not help.
Going to try working with someone at Avalara, but hoping someone here might have advice in the meantime⦠@Jonathan @Mark_Wonsil @Olga @josecgomez
Avalara has published that anyone using TLS 1.x on their REST API would lose access do some poking on the forum thereās some info out here.
View this email in your browser Safelist Avalara
AVALARA UPDATE
Upcoming changes to Avalara security infrastructure
Hi Greta,
With our commitment to the security of our customersā information, Avalara will discontinue support for Transport Layer Security (TLS) version 1.0 and 1.1.
Disabling support of TLS version 1.0 and 1.1 is an ongoing, industry-wide effort to replace obsolete protocol configurations, emphatically recommended by the National Security Agency. See here for more information.
What this means for you:
Avalara will be disabling TLS version 1.0 and 1.1 on the following schedule in 2022:
⢠February 1, the TLS 1.0 and TLS 1.1 protocols will be disabled on Sandbox environment ā TLS 1.2 only for all integrations
⢠March 31, the TLS 1.0 and TLS 1.1 protocols will be disabled on Production environment ā TLS 1.2 only for RESTv2 API end points
⢠December 31: Production environment ā TLS 1.2 only SOAP and REST v1 endpoints
What needs to be done?
You will need to test your Avalara AvaTax integration using your sandbox account and appropriate sandbox URL. If you need a universal sandbox account to test your AvaTax account after the TLS 1.2 upgrade, click here for information. If your system is successful at calculating tax or a test connection succeeds, then your system is secure, and no changes are needed.
Steps to test your AvaTax integration using a sandbox account and the appropriate sandbox URL can be found here.
What happens on March 31, 2022?
Avalara will discontinue support for TLS version 1.0 and 1.1 on our Production RESTv2 API endpoint. If any of your client software is still using these versions to connect to this endpoint, you will need to update to 1.2 or your connection will fail.
Thanks,
Avalara Product Support
Thanks Jose.
I guess what Iām really asking is how do I make this app use TLS 1.2ā¦
I didnāt write it, but in looking through the code and config files I see zero reference to TLSā¦
Edit: It appears this may do the trick:
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
Can you post the part of the code that sets up the initial connection? Is it using Josh and Joseās Nuget package (doesnāt appear in your list of libraries thoughā¦doesnāt appear to use RestSharp either⦠)
Seems very straightforward⦠Iām wondering if the root issue is some weird registry or certificate thing on the machine itās running on. But that ServicePointManager.SecurityProtocol bit seems to make it work now.
Cool. Avalara must use HttpClient under the hood since this is how one would do the same:
HttpClient httpClient = new HttpClient();
System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
The default TLS used is I believe a mix of OS and .Net, not sure why any recent .Net project would not default to TLS 1.2 already.
This is not recommended because in the future once 1.2 is deprecated and the default is 1.3 you would need to change this line of code, so it is a maintenance issue, although who knows how long it will take for this to happen.
Agreed, although making sure every machine running this app has all the right OS, .NET, registry, etc. settings and whatnot is also a maintenance issueā¦
what ERP version is this?
Itās a custom app, completely separate from Epicor (apart from the fact that there is a client side customization on a screen that allows a user to run the app on demand).
But theyāre on 10.2.700 to answer the question.
I see. Then in {appname}.exe.config there must be a record to setup .NET Framework:
something like what we have in Epicor.exe.config:
<startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.8" /> </startup>
make sure it contains v4.8 there, that must set Tls to 1.2 by default
Ah ha! I think that was it. Mine shows 4.5.
Thanks Olga!
Thanks for chiming in Olga!