The brief
This 320i had to be towed in because the automatic gearbox wouldn't engage, with a transmission fault code on the dash. A box that won't engage is one to take seriously, so it gets read properly rather than driven on or guessed at. The automatic gearbox relies on sensors to know what it's doing, where the gears are, what speed the shafts are turning, and the control unit acts on what those sensors tell it. When a transmission sensor fails, the control unit loses a signal it needs, so it can't engage the gears properly and sets a fault code as a protection. A failed sensor doesn't recover, so it gets replaced, and because the box has to be opened to reach it, the fluid and filter get done at the same time.
The diagnosis
The transmission fault code and the live data pointed at a failed transmission sensor, which is why the box wouldn't engage. The gearbox internals were sound, this was the sensor and its signal, not worn hardware. That's a transmission sensor replacement, with fresh fluid and a new filter while it's open, rather than tearing into a gearbox that didn't need it.
The work
The transmission pan came off, the failed sensor removed and a new genuine BMW-spec sensor fitted, the transmission filter renewed and the box refilled with the correct BMW fluid to the right level at the right temperature, the way it wants it. The fault was cleared and the box's adaptations relearned. A road test confirmed the gears engaging properly, shifting cleanly up and down, no fault code, and the box behaving as it should.
The outcome
The gearbox engaging first time, shifting cleanly, no transmission fault code, fresh fluid and a clean filter, all sorted the same day. The 320i went home with the gearbox fixed. Reading the fault properly meant we replaced the sensor that had actually failed rather than guessing at the box, and doing the fluid and filter in the same go kept it to one visit.