Recently, I explained the benefits of having a diagnostic run on your BMW, (under certain circumstances), as needed. You want to avoid having “parts changed out”, and not really getting to the problem. That really is not going to save you either, time or money. One thing to remember about the newer cars, (due to those computer controls), is that they can “compensate” for a problem and sometimes you can keep driving about town. But, one thing leads to another and pretty soon you have multiple fault codes, (or trouble codes), that need to be tracked down. So, now your diagnostic “tree” will be more involved.
Be wary of places that offer “free stuff”, when it comes to fault codes and check engine light diagnostics. Telling someone what a printout reads, and actually getting to the heart of the matter are two entirely different processes. It is the “interpretation” of the data that is important and will give you the best value over the years and miles of enjoying your BMW.