Account List Frozen or Unresponsive resulting in having to terminate Backoffice manually.
Generally, this issue is encountered when upgrading to 4.6.X.X,
This is caused by an Account that is a Parent of itself.
The most common cause is an old import of accounts prior to 4.6 where errors could be made in the Account import process resulting in bugged accounts within Backoffice.

Diagnosis:
There is normally two tell signs that there is an account that does not conform to the rules of accounts.
Backoffice is extremely slow on startup and navigation and when checking Task Manager you should notice that Backoffice is using double or triple the amount of memory.
When viewing a full list of 'Sub Accounts' of the Base Account Group or Hide List or Account Profile and the results never show after a period of time. There is an endless loop happening because an Account is a Parent of itself.
This can also be seen by profiling the SQL Database. when doing the account group selection as you will see the SQL Profiler will loop the same AccountID over and over until Backoffice is forced to quit.
Solution/resolution:
The easiest way to fix this issue is to identify the ParentID that is not being listed / Show in Backoffice under the account view
You can do this by running the following query via SSMS
'Select distinct parentid from Account'
This should generate a list of ParentID's that you can then compare against the account groups displayed in Backoffice.
Camden Account Groups |
Parent ID |
|
select distinct parentid from Account |
|||
Christmas 2019 |
58 |
|
2 |
|
|
|
Christmas 2020 |
1269 |
|
3 |
|
|
|
Clubs & Sponsorship |
33 |
|
5 |
|
|
|
Delivery/Pickup |
5 |
|
8 |
|
|
|
Deposit |
3 |
|
16 |
|
|
|
Hump Club |
29 |
|
29 |
|
|
|
internal Accounts |
8 |
|
33 |
|
|
|
Members |
130 |
|
58 |
|
|
|
Senior Management |
16 |
|
99 |
|
|
|
Staff |
2 |
|
130 |
|
|
|
Staff Food Accounts |
99 |
|
766 |
|
|
|
Your order Guests |
766 |
|
776 |
|
|
|
|
|
|
1269 |
|
|
|
Once you identify the affected ParentID / Account you can simply make a new account group called 'Errored Accounts' and move all the affected accounts to the newly created group
update Account
set ParentID = 'NewAccountGroupID'
where parentid = 'ErrorredAccountGroupID (Example 776)'