CMS provides a fairly straightforward and useful workflow process "out of the box." However, if you want to enhance the native capabilities, you'll need to add some custom workflow code. In this chapter we'll discuss how you can extend the standard workflow by developing business-specific logic within the workflow event model. We'll begin by examining each of the events in the workflow model. Then, we'll look at building a simple logging routine that will illustrate how the events fire in "real life" by placing event handlers in Global.ASAX. Finally, we'll show you how to build custom HTTP modules, and we'll provide some best practices for implementing workflow extensions.