Translation Manager – BadCredentialException in Tridion

Wow, this one is quiet a master. Recently one of my friend had to migrate her CMS box from an existing Data Center to an On-Premises Server due to some outdated software used and hence that had to be phased out. I know migrating Tridion is always a bit of a tedious task and it needs a good amount of attention on-what and with-what you want to proceed. It is always advisable to cross check the system prerequisites on SDL Live Doc before you start your installation. Now what I am going to discuss here is not a solution to any particular issue but is more about the experience of fixing “BadCredentialException” Error, which occurred while trying to retrieve translations in CME.

Now as per the docs, SDL recommends the following set of Content Manager Server prerequisites for SDL Tridion 2011:

Prerequisite Recommended product release
Operating system Microsoft Windows Server 2008 R2 SP1
Web and Application server Microsoft IIS 7.5
.NET Framework Microsoft .NET Framework 4.0
Java Java SE 6.0
Oracle Database client (if using Oracle) ODAC 11.2.0.2

Now while migrating, They had the choice of using Windows Server 2012, But with their existing SQL Server 2005, unfortunately that is not possible as –

Microsoft SQL Server 2005 (the release version and service packs) and earlier versions of SQL Server are not supported on Windows Server 2012 or Windows 8More..

So they had to settle down with the Microsoft Windows Server 2008. And this is the one part of story.

Now they were almost done with their migration and She had Tridion 2011 SP1 installed on the new server from scratch so that all the required set up that were their works as they were.

The real problem started when they saw the error while trying to access the the “Translations Jobs” in CME. See the below screenshots:

BadCredentioal-notification

While checking the logs on CMS in Event Viewer, Below exception were thrown:

The translation configuration for the item tcm:0-6-1 could not be loaded.
The Item with id "tcm:0-6-1" has an invalid translation configuration.
com.idiominc.ws.security.BadCredentialException (covers com.idiominc.ws.session.InvalidSessionException: invalid client)

BadCredentioal-notification-1

Now when we googled (You know, mighty google knows almost everything ;)), We got to know that there is this HotFix 80837, which needs to be applied for this particular behavior.

Now this Hotfix, updates below files in GAC

  • Tridion.TranslationManager.DomainModel.dll (version 3.0.0.166)
  • Tridion.TranslationManager.Service.exe (version 3.0.0.165)
  • Microsoft.Web.Services2.dll (file version 2.0.5050.0)
  • WSWebServices.dll (version 9.0.4503.21315)

Wondering what is GAC? 

The Global Assembly Cache (GAC) is a folder in Windows directory to store the .NET assemblies that are specifically designated to be shared by all applications executed on a system. Learn more Here.

Now with the Hotfix, you get a readme file which tells you how to apply the hotfix and update above mentioned dll.

It is obvious for many on how to register a new dll in Gac, but many might face problem if they have not came across it or doing it first time.

So here is how you should approach it. And if you don’t then your dlls do not get registered and you might see below error: For Ex; if WSWebServices is not registered properly below error will be thrown in Event Viewer or in your logs:

Could not load file or assembly 'WSWebServices, Version=9.0.4503.21315, 
Culture=neutral, PublicKeyToken=c28cdb26c445c888' or one of its dependencies. 
The located assembly's manifest definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040)

Gac is mostly here – C:\Windows\Microsoft.NET\assembly \ and the dlls referenced are mostly from C:\Windows\Microsoft.NET\assembly\GAC_MSIL\. Take the back up of your existing dlls and keep it in safe place.

The dlls managed in Gac can not simply be removed or added. First of all you need to have the Administrator right on the server and then you need GuiUtil tool.

If you have Visual Studio Installed, you will find that it in  C:\Program Files (x86)\Microsoft SDKsWindows\v7.0A\Bin\

You need to copy the “gacutil.exe” from above location and copy to your server somewhere in safe place. Make sure that you add this location to the Environment Variable to run the gacutil command from command prompt.

Now since you have already taken the backup of your dlls, copy your new dlls to the same location you have taken the back up and run below command to register your dlls to .net framework on server.

I will take the example “WSWebServices.dll (version 9.0.4503.21315)” and register it, rest can be done in a similar way.

Note: before running this command, make sure you have stopped below in server:

  • Translation Manager Service
  • Tridion Services
  • COM+ Applications
  • App Pool
  • IIS Site

I know all of them are not needed to be stopped but its safe to do this way so that you don’t have matter of doubt and you can fix it in single shot.

gacutil /if "C:\Windows\Microsoft.NET\assembly\GAC_MSIL\WSWebServices.dll"

Now the above command with option /if will forcefully reinstall your dll and register it to your assembly information.

To know more about command options, Click Here.

once this is updated, you can see the dll versions in  Gac at C:\Windows\Microsoft.NET\assembly\.

Once all the above is successfully done, you need to restart all these:

  • Translation Manager Service
  • Tridion Services
  • COM+ Applications
  • App Pool Recycle
  • IIS Site Reset

And that’s it, you are good to go. 🙂

If you still need help, Please post your question on Tridion Stack Exchange (Trex)

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s