The brief
The 316i had a parking assistance fault on the dash, the message reading along the lines of no parking assistance, please park unaided, have it checked by your service partner. He brought it in. The parking sensors are the small ultrasonic sensors set into the bumpers that measure the distance to obstacles when you're parking. When one fails, or its wiring goes, the system can't trust the array, so it shuts the whole parking assistance down and puts up that message. A house diagnostic scan reads which sensor and what's wrong, and here it pointed at the rear outer left sensor with its signal line reporting disconnected, meaning that sensor had failed or lost its connection. A failed parking sensor doesn't recover, so it needs replacing and coding in.
The diagnosis
A second-tier scan with the proper diagnostic tool pulled the fault precisely: the rear outer left ultrasonic sensor signal line disconnected, meaning that sensor had failed. The wiring back to the module was checked and was fine, so it was the sensor itself, and the other sensors and the module checked out. That's a sensor replacement, you don't repair a failed ultrasonic sensor, so the call was a new genuine sensor, fitted, coded to the car, and the system retested.
The work
The rear bumper trim was accessed, the failed rear outer left ultrasonic sensor removed, and a new genuine BMW-spec sensor fitted in its place, connected up and seated properly. The new sensor was coded to the car so the module recognised it, the stored fault cleared, and the parking assistance system run through to confirm all the sensors were reading correctly. A check confirmed the parking sensors working all round, the warning message gone, and the system detecting obstacles cleanly.
The outcome
Parking sensors working all round, no fault message, and the system detecting obstacles cleanly front and rear. The 316i went home with the parking assistance sorted. One failed ultrasonic sensor takes the whole system offline, so a precise diagnosis, the right sensor replaced and coded in, and a retest put it back exactly as it should be.