you can find a good DIY here :
http://www.bimmerfest.com/wiki/index.php/BMW_E46
and if you have a FL e46 here's how to reset the service indicator
hold down the left instrument button,
- turn the ignition key to position 1 (radio)
- test screen appears,
- keep holding the left instrument button
- after 10 seconds or so, the word 'reset' will appear with oil service / inspection
- let go of the button and press & hold again
- 'reset' will start flashing
- release & press the left instrument button once more while 'reset' is flashing