Hello Matt and Paul,
The difference between the approaches used in versions 6 and 7 is that the latest version uses Name Mapping automatically when you are recording a test.
Depending on your application's specific, the recognition parameters of the tested objects may change from one application run to another, while TestComplete can't predict such changes. So, TestComplete may use the mapping criteria that are not reliable. However, Name Mapping is a good mechanism to get consistent object recognition by altering the default mapping criteria and using wildcards when needed. At that, even if some recognition parameters change, you do not have to change any of your tests - modify the Name Mapping scheme and you'll get all your scripts working again.
Please note: when you run a test in TestComplete 7, and the script cannot find an object, TestComplete posts the mapped name of the missing object in the Remarks section of the "Object not found" error. So, you just go to your Name Mapping scheme and check the mapping parameters of the missing object against their actual values you see in the Object Browser panel. So, you can easily find out why exactly the object was not found, and map the object using some different criteria that do not change from run to run. If you need some assistance with this, send us your project suite and the results of the failed execution, and we will see what we can do to help you:
http://www.automatedqa.com/support/message/