For me it was not a little pain to find out how to deal with this problem.
I just installed 2008r2 x64 as a primary server and of course agent wasn't able to register (as the server doesn't have 2008r2 signature). OK, lets try to update the server. I downloaded 10.2.2 patch and ran deploymnet job, but once again, it failed to update the server, because server updates itself thru agent, and agent unable to register: never ending circle.
After some research, and digging in DB, I found a way to literally import the definitions of 2008r2 to the DB and that way register server itself and perform all the other actions. So here are my steps:
1. We need an access to the DB (assuming we are working with build in DB)
From command prompt run "zman dgc", it looks like this:
E:\>zman dgc


Database User Name : zenadmin
Database Password : **************

This way you can access the DB.
2. In my case the file is in : C:\Program Files (x86)\Novell\ZENworks\share\ASA\win32
Run dbisql.exe, and use the credentials we got earlier.
We only need to type in username and password, in DATABASE click find and find our DB.
3. Next step is to import our custom OS definitions.
First we need to build the csv file. I use something like this:

ID,name,ProductName,Platform,Architecture,Vendor,V ersion,SupportPack,PackageManager,PrimaryRole,User Defined,Enabled,Ordering,Detect
0x123456789012345678901234567890,win2008r2-ee-x64,Windows Server 2008 R2 Enterprise x64 Edition,Windows,x86_64,Microsoft,6.1,,msi,Server,, 0,222,"<OSVersion substring=""Server 4.0, Enterprise Edition (Build 7600)"" />"

In db utility click on Data -> import...find our svc file.
Chose "Separated by commas...", next, "Use an existing table", click browse - find table named "zOStarget", next, make sure "Comma" is selected.Next, finish.
In error prompt "Continue". Close DB utility.
4. Restart services,
5. Clear cash: "zac cc"
6 Try to register again.