Just had a problem with a 147 1.9 JTD which refused to start this morning. Has a new battery and cranking was just fine; engine turned rapidly but refused to run - not even a hint of wanting to start. Fuel level was fine. Temperature was about +5C. A few days ago started and ran with no problems after being out all night at -5C.
Pre-startup light sequence on dash was completely normal; glow plugs all working; glow plug light went on and off as normal. No warnings.
Hookup to a diagnostics box and laptop (Alfadiag) showed "RPM Sensor" voltage not detected. After diagnostic run the engine control system warning light came on. Faults were erased and a restart attempted, with same result - no start.
Note that internet checks, including this forum, suggested that RPM sensor failure does NOT prevent the engine from starting, but can cause engine to stop running after a while.
Bought a replacement RPM sensor [also known as crankshaft position sensor] (Bosch Part 0 281 002 603). Price was £ 23.00 incl VAT. Part can be obtained from good motor factors; I didn't even bother checking price from an Alfa Dealer.
In my opinion this replacement would be impossible without a pit or a vehicle lift. Luckily a friend nearby has a pit, and we were able to push the car from my place to his.
Sensor removal and replacement not too difficult but access was a pig - even from a pit; the sensor is on the lower rear skirt of the crank-case, under the starter motor.
Sensor is held in place by a single socket screw with a 5mm hex. Removing the sensor after the screw was out was also tricky, as the access was restricted by the exhaust pipe, the drive shaft, etc. and the sensor is a bit out of the way. Sensor has an o ring oil seal on the body which makes it a fairly tight fit. Sensor needed to be "persuaded" out of place with a set of needle-nosed mole grips clamped on the body of the sensor. and a long screwdriver as a lever.
New sensor was fitted in 15 minutes (still a bit fiddly), and connected; engine started and ran immediately.
Another diagnostics run was done to remove the fault code and re-set the engine control system warning light.
I hope this helps someone.