A customer had built a test server but didn’t want to migrate all of its production databases to it. It moved the needed company databases, migrated logins, ran all the appropriate migration scripts and then ran the script to clean up references to missing companies. However, several users received an error message similar to the one below when they tried to log in to the test instance of Dynamics GP:
The company specified in the error message was a company that was not migrated to the test environment, so GP was trying to log the users in to a nonexistent company. Further discussion revealed that these users had selected the “Remember this company” option on the GP login screen, but GP didn’t give them an option to pick a different company.
The users would then become orphaned in the activity table, and an additional series of errors would be dispalyed before GP finally gave up and closed.
Before revealing my solution, there are some more obvious ways to resolve this situation:
- Have users deselect the “Remember this company” option in the production environment and then perform the migration of just the databases they want in the test environment.
- Restore the Dynamics database and the missing company database to the test environment from production and have the users log in, deselect “Remember this company” and then remove the unnecessary database.
These are clean solutions, but I wasn’t going to be satisfied until I knew how GP actually managed the “Remember this company” function in SQL Server. They are also more time-consuming than the solution I discovered. Without “showing my work”—which I’m happy to do for anyone who asks—here’s what I learned.
The sparsely documented SY01402 table in the Dynamics database is only referenced with regard to a few Dynamics GP issues, but this cryptic table also stores information about users who have selected “Remember this company” and which company they’ve selected. GP parses this table when it launches and looks for a particular value to handle automatically selecting a company. When I re-created the issue in my own test environment, this is what the SY01402 table looked like for USERID ‘sa’:
I’ve highlighted the row that relates to this issue. A value of 70 in the syDefaultType refers to the “Remember this company” function, and the value of -1 in the SYUSERDFSTR indicates that company -1, which is the sample company (TWO), was the company selected by the user. The solution was to simply delete all rows from this table where syDefaultType = 70. This also can be done for selected users, if needed.
For more information, please contact our Microsoft Dynamics GP Support Center.