In CRM 3.0 callouts was the business extension and in 4.0 its name changed to Plugins. Still it's the entry point for doing business extensions extending the product or customizing it for your needs. The product group has done a great work on re-engineered the event architecture. Please look at UK CRM blog where Simon Hutson explains this very well. There is also good information in the so far published information in the SDK for CTP3.
My Plugin example is a simple logger. I created a new entity called "logger" with some basic field attributes. I also associated N-1 to systemusers table for keeping track of data been "logged" by current user. The logic to fill this entity/table is inside the plugin assembly and I have attached the Visual Studio project for you to play around with. Please note this is an example!
Possible areas where improvement could be done are:
For simplicity I use build events (see previous post http://blogs.msdn.com/jonasd/archive/2007/03/28/use-build-events-to-recycle-application-pool-instead-of-iisreset.aspx) in my Visual Studio project since you are required to IISRESET (I recycle CRMAppPool) before you could publish a new version of your plugin. I also don’t use the database as storage during development because I would like to debug my plugins. But! If your plugins should be runned in Outlook offline mode you should publish to database else it won't work.
If your CRM server is not on port 5555 you should change my webservice url. Customizations and Visual Studio project as attachments, Have fun!
This posting is provided "AS IS" with no warranties, and confers no rights.