Introduction

Against the background of how Google is trying to become Everything for us, it's nice to see that other companies are not giving up and continue to develop new services and technologies ...
Having been at Microsoft last week, I enjoyed listening to the story of the
Microsoft Customer Care Framework . Moreover, it was possible to talk with one of the leading architects of this system.
')
About System
Briefly about what the system is and what it is eaten with.
Microsoft itself describes its system as follows.
Microsoft Customer Care 2009 (CCF) is an end-to-end software infrastructure for delivering composite applications. It (the system) includes both application development components and runtime components. CCF-based applications provide unified access to customer information distributed across multiple enterprise applications, aggregating various modes of interaction with the customer. ©
Free translation from MSDN .
To make it easier to understand what is at stake, I will try to explain "on the fingers."
Typical scenario
Imagine yourself as an employee of a huge bank. You sit in headphones with a microphone and wait for a call from an angry customer to the telephone service. Theoretically, the client can call for any kind of problem. A plastic card can be blocked from him, he wants to know how much more he has to pay on the loan, to clarify the details of the terms of the new deposit, etc. As a rule, banks for a service or a group of services are responsible for different applications, with different UIs, which may have different accounts of authorized users.
Now let's imagine a picture ... The customer is calling on one of the above questions (and, maybe, on several issues). He is answered by a support staff member. Asks to wait a minute until he finds and launches the desired application. Then another minute, because He needs to login under his account in this particular system. Then another minute, because The employee was wrong with the selected application. And here comes the long-awaited moment ... A support staff member suddenly realized that he could not answer this question and need to redirect the call to another department ... In general, it is not surprising that in such a situation the client may simply not hold back and hang up on the floor in a fit of rage . Well, who wants to hang on the phone for 10 minutes and explain the same problem 3 times to completely different people? By the way, it is quite possible that some of you have already appeared in a similar situation on the client side. Didn't have the feeling that the bank didn’t give a damn about you and he didn’t
care about his clients?
We care about customers
To solve a number of problems arising in the scenario described above, Microsoft developed a concept that allows you to combine in one user window, called
Agent Desktop , all the many internal corporate applications that a customer support representative needs to work with a client.

At the same time, both the System itself and the platform possess a number of very useful features and capabilities. The most important ones, in my opinion, are listed below:
- SSO support
- UI of all applications required by the operator are displayed in one window on different tabs
- Since integration occurs at the UI level, the development of an integration application occurs very quickly.
- The most important parts of the platform come with open source.
- Client context is available to various integrated applications.
- The system combines various means of communication.
- System easily scaled
And now more on each item.
Single sign on
Due to the fact that the operator enters only one login and password for access, the time required to log in to many heterogeneous applications is significantly saved.
Unified UI
By combining the UI, the operator does not need to switch between applications. All information is conveniently located in one window, including general contextual information: client, problem, etc. There may be a small “ambush”. If the application is designed for high resolution, scroll bars may appear when placed on the Agent Desktop tabs. This may cause inconvenience to the operator.
Fast integration
The integration of applications occurs primarily at the UI level, so there is no need to work out the integration mechanisms in detail. In the basic version, there is no need to program anything at all. Programming is required when it is necessary to ensure the exchange of information between applications and the context. In this case, .Net-adapters come into play, which are able to interact with the
user interface of applications, extracting and placing information in them.
Open source
Yes, Microsoft is ready to meet its partners and provides the source code of some parts of the platform, which allows you to implement the most sophisticated integration methods. As I understand it, we are talking about the source codes of Agent Desktop. Perhaps something else.
Client context
The context of the client is the most common information that integrated applications can exchange with each other.
Typically, the context is displayed in a separate Agent Desktop frame located in the upper part of the main window, above the frame combining the tabs of the integrated applications. The composition of the information and its type is determined by the developers.
Multi-channel communication
The system is also able to consolidate the different channels through which requests from customers come. This e-mail, instant messaging,
IVR , SMS, etc.
This approach allows you to store all information flows in one place and get quick and easy access to them.
Scaling
CCF is built on the basis of standard Microsoft Composite Application Blocks, taking into account modern requirements for multithreading. Both the database level and the application server level are easily clustered, which allows the System to ensure uninterrupted operation in the “24 * 7” mode and to withstand high loads when working with a large number of users.
Some technical details
In fact, I just can’t tell you a lot of technical details, since I don’t have any practical experience. But there are some elements that I caught in the process of a conversation with the Architect. First of all, we must clearly understand that the CCF is the Framework, and not just an application / system. That is, it is a set of tools that allow you to create a system. There are many ready-made modules, mechanisms, extensions, etc. Microsoft also took care of the developers, having thought out quite a lot of details and created as many ready-made tools as possible to integrate with already existing applications.

The application, created on the basis of MS CCF, will be built taking into account modern multi-level approaches.
Database
As expected, it is proposed to use Microsoft SQL Server as a database. Already at this stage, Microsoft recommends thinking about the cluster.
The database stores information about the audit of the actions of users of the System and the configuration, which is updated by the administrators of the System. In addition, the user context is saved in the database if it is necessary to redirect the incoming call to another operator.
Application Server Level
At the application server level, data access methods are performed (I assume that a certain
DAL ), as well as business logic, which can be described in terms of
WWF using, by the way, visual development tools.
User interface
The UI is a classic Windows .Net application that can draw (in tabs, Tab Strip Control) the main windows of other applications like the Windows UI and the Web UI. The trick of the solution is that Agent Desktop wraps up calling other applications in such a way that they do not draw themselves on the Desktop (as it does by default), but in the bookmarks of Agent Desktop itself.
Data exchange takes place directly through window controls (in the case of Windows applications) or via HTTP-GET, HTTP-POST, SOAP (in the case of Web applications). Thanks to this approach, no coordination of the interfaces between the aggregating application and its aggregates is required.
Once again, I note that applications may be unaware of the existence of the parent window (Agent Desktop) and other applications with which integration takes place. They do not have to be written according to some strict standards or with the support of some strict protocols. It can be the most common windows, web applications, or even console terminal machines that have been used in the company for many years. There is no need to adapt or rewrite them. Everything happens transparently for themselves.
Conclusion
As can be seen from the description, the System, built on the basis of MS CCF, can significantly save time and reduce the number of errors in the process of servicing customer requests. That, in turn, means a reduction in the cost of service and an increase in the level of customer satisfaction. In general, this thing seemed to me quite interesting. First of all, interesting in its, in my opinion, original idea - integration at the UI level. In fact, here I described only the tip of the iceberg. I did not touch at all the possibilities of CCF related to integration with BizTalk, with SOA infrastructure, etc. Total and not cover in this article. I hope, it will be possible to “touch” it somewhere in a more realistic application and then share with you the details of the application. Thank you for reading to the end.
PS: More closely with the above platform can be found
here .
Technical articles
here .