I'm not sure I understood this correctly, but I'll try to reply anyway.
For the customer, there is an attribute set up which looks to the customer object. Then I have a shortcut where I pull in a customer ID from that. The project name is just a text box that gets a name typed into it.
Was this supposed to say "For the PROJECT, there is an attribute set up..."?
So the customer refers to the project through a reference, e.g. Customer.Project and the Inspection refers to the Customer, e.g. Inspection.Customer and CorrectiveAction refers to Inspection, e.g. CorrectiveAction.Inspection. Is that right?
You need to get to the Project from, say, CorrectiveAction in order to display project name for the results of some query. Is that right?
If this is indeed the problem, then you can define a shortcut in CorrectiveAction with the following shortcut path (specify this path when definining a shortcut attribute in CorrectiveAction):
Inspection.Customer.Project.ProjectName
Then show this shortcut in query results. Note that you do not need to define shortcut to shortcut - instead, you define a complex path to the attribute you want.
For all other objects this is similar.
Hope this answers your question.
Best Regards