The brief
The 216d came in for routine servicing, the owner wanting the whole car looked over. The battery was getting on too, and on a BMW that's not just a matter of dropping any battery in, it needs registering with IBS coding so the charging system manages it correctly, which is exactly the kind of thing a proper workshop handles. A proper service runs through the whole car: change the oil and filter, replace the air and cabin filters, check the fluids, look over the brakes, suspension and electrical side, test the battery under load, run a diagnostic scan, and eyeball the belts, hoses and underbody. A service is exactly when a tired battery gets caught, changed, and coded in before it leaves you stuck.
The diagnosis
The visual and diagnostic check went through the lot. The engine oil and filter were due, the air filter and cabin filter were at the end of their life, the brake fluid's water content was a touch high, and the battery's state of charge had dropped below spec on the load test, it was at the end. The brakes, belts, hoses and underbody checked out clean, no fault codes stored. So it was a full-service list plus a battery replacement: replace the wear items, freshen the fluids, and fit a fresh battery coded in properly.
The work
The engine oil was drained and refilled with the correct BMW-spec oil and a new oil filter fitted. The air and cabin filters were replaced, the brake fluid bled and refilled. The old battery was removed and a genuine BMW battery of the correct type fitted, then registered with IBS coding so the charging system recognised it as fresh. Coolant and washer fluid topped up, and a full diagnostic scan run. A quick run confirmed a clean crank, steady voltage, and everything running cleanly with nothing leaking.
The outcome
A full clean bill of health on the 216d, with a fresh battery coded in. No flags left, a clean start, and the car back on the road for another interval. A service is the cheapest insurance there is, and catching the tired battery during the inspection meant it got changed and coded in before the morning it didn't start.