Posts

Showing posts from January, 2010

Upgrading AX 3.0 to 2009

Before doing the upgrade read my other posts on upgrading. I also recommend reading Microsofts white paper called "AXUpgradeGuide". For the upgrade i recommend using this two part guide that can be found here and here . Clarifications: PART 1 (Code Upgrade) When doing this I recommend by starting with the tables, use compare and check all tables. MS have added new deleteactions that will be shadowed by the std deleteactions, these need to be added manually. The same thing goes for base enums. Use the compare tool in AX 3 to identify the new baseenum elements, delete the modded enum in ax 2009 and add the new elements that you identified in AX 3. All the menues need to be recreated to get the new AX 2009 icons, used the same method here as for base enums. Forms are also added as whole objects i recommend deleting them in AX 2009 and looking the AX 3 what modifications have been done here. PART 2 (Data upgrade), STEP 2 Importing and running of these two project are done in th

Code and technical differences between AX 3.0 and 2009

During a upgrade from AX 3.0 and 2009 i discovered that many of the classes no longer exists in AX 2009 or have been divided into several subclasses. Here are some things that are good to know. - The Forms are considerd as a whole object by ax which replaces all functionallity in 2009 by 3.0 functions and looks if you dont implement the changes manually. - The new method in AX 3.0 have been replaced with static functions that are called "construct" in 2009. - (3.0 Class)Specification is replaced by (2009 Class)SpecTransManager - LedgerJournal.newJournalNum(true); is done with a call to the static function NumberSeq::newGetNum(LedgerParameters::numRefJournalNum(), true).num(); - NumberSeq::newGetVoucherFromCode(voucherSequence) is a new way of getting the voucher instead of using LedjerJournal. NumberSeq also contains other static functions for this with different paramters. - LedgerJournal.usedVoucher(); is done with a call to NumberSeq::newGetVoucherFromCode(voucherSeque

AOS does not start after upgrade to AX 2009

After doing a code upgrade and trying to make a dataupgrade this error might occure when starting the AOS. Problem: Object Server 05: The database reported (session 1 (-AOS-)): [Microsoft][SQL Native Client][SQL Server]Invalid object name ‘SYSSERVERSESSIONS’.. The SQL statement was: “SELECT A.SERVERID,A.AOSID,A.INSTANCE_NAME,A.VERSION,A.LOGINDATETIME,A.LOGINDATETIMETZID,A.STATUS,A.LOADBALANCE,A.WORKLOAD,A.LASTUPDATEDATETIME,A.LASTUPDATEDATETIMETZID,A.RECVERSION,A.RECID FROM SYSSERVERSESSIONS A WHERE (STATUS=?)” Object Server 05: SQL diagnostics: [Main Microsoft Dynamics Application Object Server Session]Unable to report problem. Attempted to open message 310. Object Server 05: Dialog issued for client-less session 1: Cannot select a record in Current AOS instances (SysServerSessions). ServerId: 0, . The SQL database has issued an error. Object Server 05: The database reported (session 1 (-AOS-)): [Microsoft][SQL Native Client][SQL Server]Invalid object name ‘SYSCLIENTSESSIONS’.. TheSQ

SHRINKER.ERR

Problem: When installing a fresh copy of Dynamics AX 3.0 SP5 and compiling the installation for the first time i got a "SHRINKER.ERR" error. Solution: Download the latest version of GridEX20.ocx from here and replace the current in "Client/Bin" folder. This will make the error go away.

Good to know about AxDBUpgrade.exe

IMPORTANT! AxDBUpgrade.exe MUST BE RUNED! on the computer that hosts the AX 3.0 and AX 2009 database. The reason is that the program retrives information from the AX 3.0 database, stores it in the temp folder and does a bulk insert into the AX 2009 database. This also means that the user running the application will require permissions on the sql server to do bulk insertion. Problem: When trying run the AxDBUpgrade the following error can occure, "Cannot read the list of columns to be upgraded" Solution: You have to start the AX 3.0 environment, import the PrivateProject_UpgradeColumnList.xpo from the Dynamics AX 2009 dvd. When the form is imported, run it and press the generate button. This will fill the table UpgradeColumns with information about which fields that should be upgraded to 64-bit by the AxDBUpgrade tool. Problem: When trying to start AxDBUpgrade.exe on a operating system with 64-bit architecture you might encounter the following error "The application fail

The Dynamics AX Object Server 5.0 service terminated with service-specific error 80 (0x50)

When attempting to start the AOS Service after changing the Log on, the following error appeared: Windows could not start the Dynamics AX Object Server 5.0$01-[Application] on [Server]. For more information, review the System Event Log. If this is a non-Microsoft service, contact the service vendor, and refer to service-specific error code 80. System Event Log: The Dynamics AX Object Server 5.0$01-[Application] service terminated with service-specific error 80 (0x50). This occurred regardless of any database permissions. The workaround was to apply the following permissions to the following folders: * %ProgramFiles%\Microsoft Dynamics AX\50\Application\Appl\[Application] o Modify, Read & execute o List folder contents o Read o Write * %ProgramFiles%\Microsoft Dynamics AX\50\Server\[Application]\Log o Read o Write If you still receive login error (code 100) after applying this fix, make sure you have created login

User login problem after restoring DB in MSSQL 2005

After doing a restore of a DB from file it can happened that the database users are no longer linked with the servers login users. This problem will result in a db user being able to log in but not to access the databases. To check for problem use the following code, change TargetDB to the target database and username with the user. use master go select name as sqllogin,sid as serversid from sys.syslogins where [name] = ' username ' use TargetDB go select name as databaseid, sid as databasesid from sysusers where [name] = ' username ' go use TargetDB go sp_change_users_login @Action='Report' go Compare serversid and databaseid, if not equal then run use TargetDB go sp_change_users_login @Action='update_one', @UserNamePattern=' username ', @LoginName=' username ' go Read more here