I lost an evening that I'll never get back over something so stupid I wish I had just stopped to think about this issue a little more.

The situation was this: I just upgraded a client from GP 2010 to GP 2015. I didn't upgrade the test companies, because it's a waste of time right? So I finished the upgrade and proceeded to create new test companies, take fresh backups of the new production companies and restore to the test companies. Pretty simple right?  I've done it millions of times it feels like…

The Issue

So I get an error when logging into the newly refreshed companies that is new.

"The selected company is not configured as a company of the current Microsoft Dynamics GP system database. You must resolve the database configuration to log in to the company.".
"The selected company is not configured as a company of the current Microsoft Dynamics GP system database. You must resolve the database configuration to log in to the company.".

Great.

Google the error. Get TONS of hits. Awesome! Everyone has the same info, in slightly different wording. There's a new table starting with GP 2013 because of the named system database feature, and it's called SY00100.

The issue for me was everyone seemed to have a slightly different "new" post-refresh script and none of the blogs that I read resolved my issue. If I had stopped to *read* the error and clued into the "system database" phrase it might have been more obvious…

Every post seemed to say "Go find the company ID from the SY01500 table in DYNAMICS and update the SY00100 table on each restored company db with it."  Sure, I did that, and it still didn't work. What the heck?

I was looking at the companies that I *could* log into at their SY00100 table but I just was tired and completely missed it: they all said "DYNAMICS" in the database name field. All the restored companies had their database names in that field. So when looking quickly, I am looking at database "XYZ" and I see database "XYZ" in the table, with the proper Company ID number, and I think, yeah, looks good, what the heck am I missing?

What I was missing

The new table is all about telling GP what system database name that company uses. DUH… *smacking my head*. Here's what the table *should* look like, if the system database is DYNAMICS, and the company ID is "12".

The result of a SQL statement "select * from SY00100" shows a company ID and the system database name.
The result of a SQL statement "select * from SY00100" shows a company ID and the system database name.

So, in summary… what one needs to do with this table if they are getting this error is this:

  1. CMPANYID must be the CMPANYID value from that company db in DYNAMICS.dbo.SY01500. After refreshing a test company, this will likely have the CMPANYID of the "copied" company, so it needs updating.
  2. DBNAME must be the SYSTEM database for this Dynamics instance. So, that means DYNAMICS for most customers, but if using the named system db feature, that means it will be whatever the appropriate named system db is!
  3. There should only be 1 record in each company in this table.

Ideally, find or create a proper new post-refresh script as this isn't the only place where the company ID or database name fields need updating. I'm not posting one of those here, and I'm still sorting out what the best one is, as the ones I used to use, don't update this table properly!

I hope this helps someone else banging their head against a wall!