We have business units and sub-business units. To represent these in Workfront I am using parent tasks for the business units and child tasks for the sub-BUs. This is all within one project to represent my collection of BUs and sub-BUs.
In the child (sub BU) tasks, I make every task description the name of the parent (business unit). So if I have a parent task/business unit called "Fruit", and child/sub-BUs of "Apple", "Orange", and "Lemon", all these tasks have "Fruit" in their description. Not the only answer -- just what I decided was easiest for me to do.
So a BU external lookup field might look like:
$$HOST/attask/api/v17.0/task/search?projectID=____________&numberOfChildren=0&numberOfChildren_Mod=gt&status=NEW&status_Mod=in&taskNumber_Sort=asc
0. Search for tasks in a project with ID ____
1. the "number of children" phrases are what identifies my parent tasks -- you would have to do something different since you have three levels. So this is just an example with two levels, basically
2. I'm including only "new" tasks. If I have to retire a BU, I just mark it as "cancelled" and it drops off the list
3. I'm sorting it by task number (so the order I have it in the project is how I want it to show up
And then a sub BU external lookup field might look like:
$$HOST/attask/api/v17.0/task/search?projectID=_______________&description={DE:My Business Unit Fieldname}&status=NEW&status_Mod=in&taskNumber_Sort=asc
0. Search for tasks in project ID___
1. You see here I'm searching on the task descriptions now. So no need to call out "number of children"
2. The description is equal to whatever you selected in the BU field.
3. Again, ordered in a particular way
As long as you only pick one of each BU and sub BU, this would work (the last field can be multi select). I haven't gotten it working to a point where you would be able to pick multiple BUs or sub BUs.