Yeah, i know, 2009 is an old one, but it still alive, despite not supported by Microsoft.
Well, we still have a customer, who run NAV 2009 R2, and colleague of mine came across interesting issue: customer reported they lost all records in Record Link table. After some investigation it turned out that they had intention to create a test company – which lead they to the problem.
So, what they did? They took a native NAV backup, then renamed existing company, then restored a backup to bring live company back. Boom! No Record Links anymore!
I am not surprised – Record Link table has ‘data per company = no’ and a primary key ‘Link ID’ . ‘Company’ field with relation to ‘company.name’ isn’t part of key…
When you made a backup and then rename company ‘A’ to company ‘B’ system will update only ‘company‘ field in the record link table. Then when you restore original company ‘A’ backup if you include data common to all companies – system will not overwrite Record Link table – it will just skip records with same ID (and PK isn’t changed, you see!) .
So, how to solve then? The answer is simple: just a line of code:
RecordLink.Modyfyall(Company, ‘A’)
assuming there was only one company before.
Yeah, this solve the problem, but what we can do to avoid the issue when we want a test company in old good NAV 2009 R2? My common sense tell me that there is a simple way to avoid that sort of issues.
1. Make a company A backup
2. Restore to clean DB
3. Rename restored to new name (B)
4. Take a backup
5. Restore taken backup to live DB, which will create exact copy of A company with name B.
Of course, test company B will not have a Record Links, as they had same ID, therefore not overwritten, but company still A in Record Link table.
Seems like design flaw in 2009 – but do we care about this? More interesting: it is the same Record Link table structure in latest versions. OK, we can’t copy company in NAV 2013, but can in NAV 2013 R2 and NAV 2015. I’ll investigate and report later how this behave in modern NAV.