So that's most like exactly what is causing you're issue here.
What's happening is something your app is changing a property that is being used by your name mapping to identify the object. Most likely some kind of ID or Index. By having automatic name mapping turned on Test Complete made its best guess at properties to use for identification, which as tristaanogre mentioned is a good start, but should always be manually adjusted no only from an identification standpoint, but also from an organization standpoint.
Can you post screen shots of the name mapping properties for the original Aliases.abcd.xyz.window and Aliases.abcd.xyz.window2 so we can compare what changed? Then we can determine what needs to change on your end to account for changes to your application.
Thinks about this way, say your object is mapped with a class of myWindow and an Index of 1. You get a new version of your application and and that window has the same class, but is now not the first window in your application so it's Index changed to 2. Well now your tests are failing because it's looking for Index 1 still. So in that situation you would probably just want to remove Index as one of your identification properties and just look for the window's class. Not saying this is exactly what's going on, as without the screenshots list above I'm shooting in the dark here. But I bet it's something very similar.
Besides that I highly recommend reading every last word in this section: http://support.smartbear.com/testcomplete/docs/testing-with/object-identification/name-mapping/index.html
A good understanding of what name mapping is, aliases are and how they are used to find objects is paramount to creating solid and stable automated test. Otherwise you're just playing a guessing game with your application.