If you want to build a business application, let's say a real estate application, you typically will need a number of building blocks to construct your application architecture. You need UI components, service interfaces, security support, communications, data store/services etc etc. I bet if you ask most of the developers and architects out there about how to do this, they would start from the scratch and use core technologies like .NET and SQL to build their custom business app. Look at the wealth of custom business applications that exist in today's enterprises. But, I believe, there is a valid and superior alternative to that approach that will save you huge sums of money and significant amount of time.
Microsoft CRM has already built majority of the building blocks that you need to build your business application. These blocks are built in a way that they can easily be extended with much less effort compared to building the blocks from the scratch. Your application does not need to be a CRM application in order to benefit from Microsoft CRM platform. Your business application could be of a banking, finance, HR, real estate, health club, educational, legal or etc etc type application. What I am really trying to say here is that you can use our platform as a business application platform and almost forget about the CRM part in the product name. I am increasingly seeing this trend happening where our partners use our platform to build a non-CRM application. Nothing seem to be stopping them from reaping the benefits of such approach.
To better articulate my point, I use a standard application architecture view that I borrowed from Microsoft Patterns and practices web site. This diagram simply depicts typical components that you see in a business application. I have added numbers to each major component so I can add comments about how those components are made available through CRM platform:
1)Targeted users: A business application has a variety of users ranging from business managers and CEOs to administrators who maintain and customize the application to developers who develop rich extensions. CRM platform provides an extensive range of tools, APIs and UIs to satisfy the need of different users who interact with the system. Depending on what persona uses your application most, you can invest in enhancing and customizing the experience of that persona using our tools.
2)User Interface components: You need a rich and flexible presentation layer for your app. CRM UI, including the main application and forms are customizable. You can use simple tools to customize the navigation structure and form layouts as well as the ability to include client side business logic(e.g. validation) through scripting languages and client events. Look under client side programmability and customization sections of CRM SDK docs to see the full extent to which you can save yourself a bunch of time by using what is provided by the CRM platform as part of the presentation layer of your application. BTW, I am not saying that you don't need any custom controls of you own but i am saying that our UI extensiblity take you more than half way towards your fanciest UI dream. Alternatively, if you want to create attractive smart client or composite apps, nothing will stop you from using other technologies (e.g Windows Presentation Foundation) to build those richer UIs on top of our platform.
3)Security: CRM provides a rich security model based on roles and privileges that allows you to easily customize and control the access to your data and process assets, based on your need. The security controls access to various types of the business entity data as well as instances of that data. Customization of security roles and privileges are accessible through UI tools or APIs.
4)Operation Management: administration tools and APIs allows you fully maintain and manage the lifecycle of your business application that is built on top of CRM platform
5)Communication: CRM platform is designed based on a message oriented communication architecture(see my earlier blogs). Any custom application built on top of our platform will use this approach to communicate with the platform and your custom business logic that you may have embeded in the platform. All the additional components that are added to the platform are responsible to manage their communications between themselves but can easily follow the same pattern as what is used inside of the platform.
6)Service Interfaces and business components: this is where you get the most value. CRM platform has a set of customizable and dynamic web services APIs that allows your application to easily work with the platform operations and business entity data. The services are fully plug-able and extendable through code. The Workflow engine provides the ability to easily define custom business processes and hook them into various platform events. The Business Entity model is flexible and fully customizable through web service APIs or the UI components and tools. The saving you get as a result of using our business entity and process model vs creating your own is going to be significant.
7 & 8) Data storage and access: The data access provides multiple choices to access and manage data ranging from UI based query building and execution model for non-technical users to direct read from SQL format to strongly typed query building using IntelliSense in Visual Studio. The range of data access options means that depending on what query model you are more comfortable with, you can use the appropriate query approach. All these means that you don't need to worry about managing your query access and focus on making your application smarter and richer.