Source: Member : rustamabd's \ bimmerforums
Maybe this can be added to the FAQ section. It's basic info, but it has taken me a while to collect this knowledge, and I think it is important for understanding Progman/ISTA better.
The ECU's in a BMW are not meant to be updated individually, rather as a collection which BMW tested and knows all work fine together.
The collective version number of all programmed ECU's is called the I-level, or Integration level (German: I-stufe).
The term I-level was adopted by BMW around the year 2004 and applies only to lines which were in development/production in 2004 or after (E60, E70, E90, etc.).
The I-level is a set of numbers that looks like E89X-11-09-410. The first part represents the chassis group, which is followed by the year and month of the release and a build number for that release. So, E89X-11-09-410 would mean a E80/E90, 09/2011, version 410.
You will often see a set of two I-levels, something like E89X-05-10-026, E89X-11-09-410. In this case the first set is called the Factory I-level, or the level with which the car left the factory, and the second the Dealer Organization I-level, or the current version programmed by the dealer.
What you should realize is that neither Progman nor ISTA will be able to do anything if it contains an earlier data set than the I-level programmed in your car. That's normal when you think about it, as Progman doesn't know this version and has no idea what to do with it.
In order to see the maximum I-level supported by Progman, look in the file D:/Programme/IFS/SP/E89/daten/E89AEDOC.000 (open it with a text editor, I recommend Notepad++), scroll to the end, and look for a comment that looks like this:
That is the maximum I-level that this particular SP data set supports (other chassis may have a different format, look for the word "I-stufe").
For other chassis groups replace E89 with your appropriate chassis (E60, E46, etc.)
Another way to see which I-levels an SP data set supports is to look in the file kmmData/kmm_ZK.txt.
Note if there were no changes in a particular data set release, there will also be no changes in this file (and hence no new updates for your car).
Keep in mind that some modules like the DME can be updated a very limited number of times. This has to do with high reliability demands for the module. Therefore always think twice before re-flashing a module, if it works fine and there are no uber cool features in a new release that you just must have, leave it alone.
How is the I-level determined?
Progman polls all known modules for their identification, which contains among other things the UIF block (user info field). This contains the so-called ZB-number (zusammenbau, or assembly identification number), which is simply the part number of a particular programmed ECU (i.e. its a unique value assigned to a unique combination of ECU hardware and software). This number Progman maps, using internal tables, to an I-level to which this particular assembly corresponds.
Is I-level stored in the car?
In E-series the factory and actual I-level is stored in CAS and FRM.