# Patent

## Title
Self-service application for a service management system and method of operation thereof

## Abstract

A service management system and method. In one embodiment, the service management system includes: (1) a service description repository configured to contain service descriptions that define services in terms of a set of end points that assume roles in the services and (2) a self-service application configured to collect ones of the end points mapped into roles pertaining to one of the services from a corresponding one of the service descriptions, collect key/value pairs on the ones of the end points pertaining to an issue with respect to the one of the services, evaluate the key/value pairs using optimal values and, if a predefined condition regarding the issue is met, attempt to employ the key/value pairs to address the issue.

## Background
CROSS-REFERENCE TO RELATED APPLICATION
This application claims the benefit of U.S. Provisional Application Ser. No. 60/989,730, filed by Dholakia, et al., on Nov. 21, 2007, entitled “Method and System for Remote Device Management,” commonly assigned with this application and incorporated herein by reference. This application is also related to the following U.S. patent applications, which are filed on even date herewith, commonly assigned with this application and incorporated herein by reference:












Ser. No.
Inventors
Title







12/276,254
Dholakia,
“Service Management System and



et. al.
Method of Operation thereof”


12/276,256
Dholakia,
“System and Method for Identifying



et. al.
and Calling a Function of a Service




With Respect to a Subscriber And




Service Management System Employing




the Same”


12/276,260
Pelley,
“Normalization Engine and Method of



et. al.
Requesting a Key Or Performing an




Operation Pertaining to an End




Point”


12/276,262
Pelley,
“Service Management System and



et. al.
Method of Executing a Policy”


12/276,265
Pelley
“System and Method for Generating a




Visual Representation of a Service




and Service Management System




Employing the Same”


12/275,269
Pelley,
“System and Method for Remotely



et. al.
Activating a Service and Service




Management System Incorporating the




Same”


12/276,272
Pelley
“Application and Method for




Dynamically Presenting Data




Regarding an End Point or a Service




and Service Management System




Incorporating the Same”


12/276,273
Pelley,
“Service Diagnostic Engine and



et. al.
Method and Service Management System




Employing the Same”


12/276,278
Pelley
“Customer Service Representative




Support Application for a Service




Management System and Method of




Operation Thereof”


12/276,279
Pelley,
“System and Method for Remotely



et. al.
Repairing and Maintaining a




Telecommunication Service Using




Service Relationships and Service




Management System Employing the




Same”


12/276,281
Pelley,
“Application and Method for



et. al.
Generating Automated Offers of




Service and Service Management




System Incorporating the Same”


12/276,286
Dholakia,
“System and Method for Provisioning



et. al.
and Unprovisioning Multiple End




Points With Respect to a Subscriber




and Service Management System




Employing the Same”


12/276,286
Dholakia,
“System and Method for Identifying



et. al.
Functions and Data With Respect to a




Service and a Subscriber and Service




Management System Employing the




Same”


12/276,288
Dholakia,
“System and Method for Invoking a



et. al.
Function of a Service in Response to




an Event and Service Management




System Employing the Same”











TECHNICAL FIELD
This application relates to remote management of fixed-line and mobile devices, and, more particularly, to activation, provisioning, support, management and assurance of consumer and business services spanning one or more fixed-line devices and one or more mobile devices.
BACKGROUND
Network service providers are called upon to support a large variety of networked devices, including devices coupled to home networks (e.g., residential gateways, set-top boxes and voice-over-IP, or VoIP, adapters) and cellular networks (e.g. smart phones and pocket computers). Given the proliferation of such devices and the distributed nature of the networks involved, remote management of such devices is highly desirable.
For example, demand for smart phones and other advanced handsets is growing faster than anticipated as users look for new ways to increase their personal and professional productivity. In 2005, year-over-year growth in the smart phone market exceeded 70%, and the industry experts expect that trend to continue for the next several years. In fact by 2009, it is estimated that smart phones will represent almost 30% of all new handsets sold-up from less than three percent in 2004.
As smart phones and services for smart phones boom, so do the challenges. Today, the complexity often associated with smart phones is driving customer service costs up and serves as a potential inhibitor as mobile network operators strive to achieve mass-market adoption with these sophisticated devices. In fact, consumers are finding mobile services increasingly confusing and issues around ease-of-use are holding them back from buying and using third generation (3G) handsets and services.
Wireless service providers who sell and support smart phones and their associated data services face the prospect of rising customer support costs due to the complexity associated with these devices and services. In 2007, the support costs for smart phones will surpass that of feature phones. The following are few of the top reasons for this support cost.

    
    
        Multiple contacts are made to a helpdesk to solve a single problem.
        34% of users have never solved a problem with a single contact to the helpdesk.
        Calls last two to three times longer than calls from users of feature phones.
        It is common practice to escalate care from a helpdesk (Tier 1) to expensive technicians (Tier 2 and Tier 3).
        FMC (Fixed-Mobile Convergence) will add to the support burden. 89% of early adopters are more likely to go to CE vendors for support. Mainstream consumers are three times more likely to look to their service provider for support.
    
    


Similarly, network providers that are coupled to home networks (e.g., Digital Subscriber Link, or DSL, and cable) find those networks coupled to a variety of customer premises equipment (CPE) within the homes that are gradually becoming more and more sophisticated. Customer issues with such devices are no less taxing upon support staff and support infrastructure.
The Open Mobile Alliance (OMA) is currently defining a number of standards for managing functionality on mobile devices. These include protocols for device management (OMA-DM), client provisioning (OMA-CP), firmware updates, data synchronization (OMA-DS) and the like. Devices that support at least some of these protocols are becoming prevalent. A support solution that utilizes these protocols and provides a usable console for customer support is the only way network providers and mobile carriers can handle support for the increasing number of devices in the market.
It is therefore desirable to provide a support solution that allows centralized management and control of remotely networked devices such as smart phones and CPE using protocols established for device management, updates, data synchronization and the like.
SUMMARY
Various embodiments of a method and system for providing customer support with centralized management and control of mobile phones and customer premises equipment in order to aid users of such equipment with problems related to that equipment. In one embodiment, a user interface driven mechanism is provided to allow customer support representatives to manipulate remote devices in, for example, the following manners: access information about the remote devices and the users thereof, including history of issues with a particular device, device provisioning, access to diagnostics of a device, ability to upgrade firmware/software of a device, synchronization of data, enablement of security features, remote control of devices, service and application provisioning, defining and following policies related to service management for a variety of devices and resetting devices. Such functionality can be provided, for example, through the use of a device management server that uses a variety of appropriate protocols to communicate with the remote devices.
Another aspect provides a service management system. In one embodiment, the service management system includes: (1) a service description repository configured to contain service descriptions that define services in terms of a set of end points that assume roles in the services and (2) a self-service application configured to collect ones of the end points mapped into roles pertaining to one of the services from a corresponding one of the service descriptions, collect key/value pairs on the ones of the end points pertaining to an issue with respect to the one of the services, evaluate the key/value pairs using optimal values and, if a predefined condition regarding the issue is met, attempt to employ the key/value pairs to address the issue.
Yet another aspect provides a method of providing self-service. In one embodiment, the method includes: (1) collecting end points mapped into roles pertaining to a service from a corresponding service description, (2) collecting key/value pairs on the end points pertaining to an issue with respect to the service, (3) evaluating the key/value pairs using optimal values, (4) if a predefined condition regarding the issue is met, attempting to employ the key/value pairs to address the issue and (5) testing to determine whether the issue is addressed.



BRIEF DESCRIPTION
Reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which:
FIG. 1 is a block diagram illustrating a network environment in which commercial transaction processing according to embodiments of the invention may be practiced;
FIG. 2 is a block diagram illustrating a computer system suitable for implementing embodiments of the invention;
FIG. 3 is a block diagram illustrating the interconnection of the computer system of FIG. 2 to client and host systems;
FIG. 4 is a diagram illustrating relationships that may exist among a subscriber, a service and various devices and systems;
FIG. 5 is a diagram of one embodiment of a service description;
FIG. 6 is a diagram illustrating relationships that may exist among management operations, roles, capabilities and attributes;
FIG. 7 is a high-level block diagram of one embodiment of a service management system;
FIG. 8 is a block diagram of one embodiment of a service normalization block of FIG. 7; and
FIG. 9 is a flow diagram of one embodiment of a method of providing self-service carried out according to the principles of the invention.



DETAILED DESCRIPTION
The following is intended to provide a detailed description of an example of the invention and should not be taken to be limiting of the invention itself. Rather, any number of variations may fall within the scope of the invention which is defined in the claims following the description. The use of the same reference symbols in different drawings indicates similar or identical items.
Introduction
Described herein are various embodiments of a management system that allows users to create, define and maintain services by defining the roles of its constituent devices and systems. Certain embodiments have the ability to map a given set of device and systems into roles. The roles may then be used to select key/value pairs, alerts and management function from each device. Certain embodiments allow relationships to be specified between roles and between other services. Service-wide key/value pairs, alerts and management functions may be created using the roles and relationships.
In various embodiments to be described and illustrated herein, a method, apparatus and process are disclosed that allow for activation, provisioning, support (by call center, functions or self), management (by call center, functions or self) and assurance of consumer and business services spanning one or more fixed-line devices and one or more mobile devices, such as PCs, AAA servers, email servers, web servers and devices of every kind. Before describing the embodiments, an example computing and network environment within which the embodiments may operate will be described.
An Example Computing and Network Environment
FIG. 1 is a block diagram illustrating a network environment in which a system according to the invention may be practiced. As is illustrated in FIG. 1, network 100, such as a private wide area network (WAN) or the Internet, includes a number of networked servers 110(1)-(N) that are accessible by client computers 120(1)-(N).
Communication between the client computers 120(1)-(N) and the servers 110(1)-(N) typically occurs over a publicly accessible network, such as a public switched telephone network (PSTN), a DSL connection, a cable modem connection or large bandwidth trunks (e.g., communications channels providing T1 or OC3 service). The client computers 120(1)-(N) access the servers 110(1)-(N) through, for example, a service provider. This might be, for example, an Internet Service Provider (ISP) such as America On-LineTM, ProdigyTM, CompuServeTM or the like. Access is typically had by executing application specific software (e.g., network connection software and a browser) on the given one of the client computers 120(1)-(N).
One or more of the client computers 120(1)-(N) and/or one or more of the servers 110(1)-(N) may be, for example, a computer system of any appropriate design, in general, including a mainframe, a mini-computer or a personal computer system. Such a computer system typically includes a system unit having a system processor and associated volatile and non-volatile memory, one or more display monitors and keyboards, one or more diskette drives, one or more fixed disk storage devices and one or more printers. These computer systems are typically information handling systems which are designed to provide computing power to one or more users, either locally or remotely. Such a computer system may also include one or a plurality of I/O devices (i.e., peripheral devices) which are coupled to the system processor and which perform specialized functions. Examples of I/O devices include modems, sound and video devices and specialized communication devices. Mass storage devices such as hard disks, CD-ROM drives and magneto-optical drives may also be provided, either as an integrated or peripheral device. One such example computer system, discussed in terms of the client computers 120(1)-(N), is shown in detail in FIG. 2.
It will be noted that the variable identifier “N” is used in several instances in FIG. 1 to more simply designate the final element (e.g., the servers 110(1)-(N) and the client computers 120(1)-(N)) of a series of related or similar elements (e.g., servers and client computers). The repeated use of such variable identifiers is not meant to imply a correlation between the sizes of such series of elements, although such correlation may exist. The use of such variable identifiers does not require that each series of elements has the same number of elements as another series delimited by the same variable identifier. Rather, in each instance of use, the variable identified by “N” may hold the same or a different value than other instances of the same variable identifier.
FIG. 2 depicts a block diagram of a computer system 210 suitable for implementing the invention and example of one or more of the client computers 120(1)-(N). A computer system 210 includes a bus 212 which interconnects major subsystems of the computer system 210 such as a central processor 214, a system memory 216 (typically random-access memory, or RAM, but which may also include read-only memory, or ROM, flash RAM, or the like), an input/output controller 218, an external audio device such as a speaker system 220 via an audio output interface 222, an external device such as a display screen 224 via a display adapter 226, serial ports 228, 230, a keyboard 232 (interfaced with a keyboard controller 233), a storage interface 234, a floppy disk drive 236 operative to receive a floppy disk 238 and a CD-ROM drive 240 operative to receive a CD-ROM 242. Also included are a mouse 246 (or other point-and-click device, coupled to the bus 212 via the serial port 228), a modem 247 (coupled to the bus 212 via the serial port 230) and a network interface 248 (coupled directly to the bus 212).
The bus 212 allows data communication between a central processor 214 and a system memory 216, which may include RAM, ROM or flash memory, as previously noted. The RAM is generally the main memory into which the operating system and application programs are loaded and typically affords at least 16 megabytes of memory space. The ROM or flash memory may contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components. Applications resident with the computer system 210 are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e.g., fixed disk 244), an optical drive (e.g., CD-ROM drive 240), a floppy disk unit 236 or other storage medium. Additionally, applications may be in the form of electronic signals modulated in accordance with the application and data communication technology when accessed via a network modem 247 or an interface 248.
The storage interface 234, as with the other storage interfaces of the computer system 210, may connect to a standard computer readable medium for storage and/or retrieval of information, such as a fixed disk drive 244. The fixed disk drive 244 may be a part of computer system 210 or may be separate and accessed through other interface systems. Many other devices can be connected, such as a mouse 246 connected to the bus 212 via serial port 228, a modem 247 connected to the bus 212 via serial port 230 and a network interface 248 connected directly to the bus 212. The modem 247 may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP). The network interface 248 may provide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence). The network interface 248 may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like.
Many other devices or subsystems (not shown) may be connected in a similar manner (e.g., bar code readers, document scanners, digital cameras and so on).
Conversely, it is not necessary for all of the devices shown in FIG. 2 to be present to practice the invention. The devices and subsystems may be interconnected in different ways from that shown in FIG. 2. The operation of a computer system such as that shown in FIG. 2 is readily known in the art and is not discussed in detail in this application. Code to implement the invention may be stored in computer-readable storage media such as one or more of the system memory 216, the fixed disk 244, the CD-ROM 242 or the floppy disk 238. Additionally, the computer system 210 may be any kind of computing device and so includes personal data assistants (PDAs), network appliance, X-window terminal or other such computing device. The operating system provided on the computer system 210 may be MS-DOS@, MS-Windows®, OS/2®, UNIX®, Linux® or other known operating system. The computer system 210 may also support a number of Internet access tools, including, for example, a Hypertext Transfer Protocol (HTTP)-compliant web browser having a JavaScript interpreter, such as Netscape Navigator® 3.0, Microsoft Explorer® 3.0 and the like.
The foregoing described embodiment wherein the different components are contained within different other components (e.g., the various elements shown as components of the computer system 210). It is to be understood that such depicted architectures are merely examples, and that in fact many other architectures can be implemented which achieve the same functionality. In an abstract, but still definite sense, any arrangement of components to achieve the same functionality is effectively “associated” such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as “associated with” each other such that the desired functionality is achieved, irrespective of architectures or intermediate components. Likewise, any two components so associated can also be viewed as being “operably connected,” or “operably coupled,” to each other to achieve the desired functionality.
FIG. 3 is a block diagram depicting a network 300 in which the computer system 210 is coupled to an internetwork 310, which is coupled, in turn, to client systems 320, 330, as well as a server 340. An internetwork 310 (e.g., the Internet or a wide-area network, or WAN) is also capable of coupling the client systems 320, 330 and the server 340 to one another. With reference to the computer system 210, the modem 247, the network interface 248 or some other method can be used to provide connectivity from the computer system 210 to the internetwork 310. The computer system 210, the client system 320 and the client system 330 are able to access information on the server 340 using, for example, a web browser (not shown). Such a web browser allows the computer system 210, as well as the client systems 320, 330, to access data on the server 340 representing the pages of a website hosted on the server 340. Protocols for exchanging data via the Internet are well known to those skilled in the art. Although FIG. 3 depicts the use of the Internet for exchanging data, the invention is not limited to the Internet or any particular network-based environment.
Referring to FIGS. 1, 2 and 3, a browser running on the computer system 210 employs a TCP/IP connection to pass a request to the server 340, which can run an HTTP “service” (e.g., under the WINDOWS® operating system) or a “daemon” (e.g., under the UNIX® operating system), for example. Such a request can be processed, for example, by contacting an HTTP server employing a protocol that can be used to communicate between the HTTP server and the client computer. The HTTP server then responds to the protocol, typically by sending a “web page” formatted as an HTML file. The browser interprets the HTML file and may form a visual representation of the same using local resources (e.g., fonts and colors).
Example Embodiments of a Service Management System
The functions referred to herein may be modules or portions of modules (e.g., software, firmware or hardware modules). For example, although the described embodiment includes software modules and/or includes manually entered user commands, the various example modules may be application specific hardware modules. The software modules discussed herein may include script, batch or other executable files, or combinations and/or portions of such files. The software modules may include a computer program or subroutines thereof encoded on computer-readable media.
Additionally, those skilled in the art will recognize that the boundaries between modules are merely illustrative and alternative embodiments may merge modules or impose an alternative decomposition of functionality of modules. For example, the modules discussed herein may be decomposed into sub-modules to be executed as multiple computer processes and, optionally, on multiple computers. Moreover, alternative embodiments may combine multiple instances of a particular module or sub-module. Furthermore, those skilled in the art will recognize that the functions described in example embodiment are for illustration only. Operations may be combined or the functionality of the functions may be distributed in additional functions in accordance with the invention.
Alternatively, such actions may be embodied in the structure of circuitry that implements such functionality, such as the micro-code of a complex instruction set computer (CISC), firmware programmed into programmable or erasable/programmable devices, the configuration of a field-programmable gate array (FPGA), the design of a gate array or full-custom application-specific integrated circuit (ASIC), or the like.
Each of the blocks of the flow diagram may be executed by a module (e.g., a software module) or a portion of a module or a computer system user using, for example, a computer system such as the computer system 210. Thus, the above described method, the functions thereof and modules therefore may be executed on a computer system configured to execute the functions of the method and/or may be executed from computer-readable media. The method may be embodied in a machine-readable and/or computer-readable medium for configuring a computer system to execute the method. Thus, the software modules may be stored within and/or transmitted to a computer system memory to configure the computer system to perform the functions of the module.
Such a computer system normally processes information according to a program (a list of internally stored instructions such as a particular application program and/or an operating system) and produces resultant output information via I/O devices. A computer process typically includes an executing (running) program or portion of a program, current program values and state information and the resources used by the operating system to manage the execution of the process. A parent process may spawn other, child processes to help perform the overall functionality of the parent process. Because the parent process specifically spawns the child processes to perform a portion of the overall functionality of the parent process, the functions performed by child processes (and grandchild processes, etc.) may sometimes be described as being performed by the parent process.
Such a computer system typically includes multiple computer processes executing “concurrently.” Often, a computer system includes a single processing unit which is capable of supporting many active processes alternately. Although multiple processes may appear to be executing concurrently, at any given point in time only one process is actually executed by the single processing unit. By rapidly changing the process executing, a computer system gives the appearance of concurrent process execution. The ability of a computer system to multiplex the computer system's resources among multiple processes in various stages of execution is called multitasking. Systems with multiple processing units, which by definition can support true concurrent processing, are called multiprocessing systems. Active processes are often referred to as executing concurrently when such processes are executed in a multitasking and/or a multiprocessing environment.
The software modules described herein may be received by such a computer system, for example, from computer readable media. The computer readable media may be permanently, removably or remotely coupled to the computer system. The computer readable media may non-exclusively include, for example, any number of the following: magnetic storage media including disk and tape storage media. optical storage media such as compact disk media (e.g., CD-ROM, CD-R, etc.) and digital video disk storage media, nonvolatile memory storage memory including semiconductor-based memory units such as flash memory, EEPROM, EPROM, ROM or application-specific integrated circuits (ASICs), volatile storage media including registers, buffers or caches, main memory, RAM and the like, and data transmission media including computer network, point-to-point telecommunication and carrier wave transmission media. In a UNIX-based embodiment, the software modules may be embodied in a file which may be a device, a terminal, a local or remote file, a socket, a network connection, a signal, or other expedient of communication or state change. Other new and various types of computer-readable media may be used to store and/or transmit the software modules discussed herein.
Before describing various embodiments of management systems constructed according to the principles of the invention, some use cases or interactions will be described that provide a framework for understanding the management systems. Various of the embodiments of the management systems are directed to addressing the following categories of use cases or interactions: service activation, service management, service interruption and resumption and service offering. Service activation refers to all the use cases that involve creating (provisioning) and deleting (unprovisioning) a new service instance, or “subscription.” Service management refers to day-to-day management tasks involving a given service or subscription. Service interruption and resumption may be thought of as special types of service management that involve the loss and restoration of service. Service offering refers to new services that may be offered to a subscriber.
The categories of use cases that set forth above may be illustrated with reference to FIG. 4. FIG. 4 is a diagram illustrating relationships that may exist among a subscriber 410, a service 420 and various devices and systems 430. A service provider, such as a cellular phone company, an Internet service provider, a cable television company or a combination of these, offers one or more services to subscribers that involve devices and systems such as cell phones, set-top boxes, routers, cell towers, email servers, DSLAMs, landline phones and other mobile and customer premises equipment and network infrastructure. In the context of FIG. 4, the subscriber 410 takes out a subscription 440 to a service 420 offered by a service provider. The subscription contains state and other information that is both relative to the subscriber 410 and the service 420. The subscription calls for one or more associations 450 to be made between the subscriber 410 and various devices and systems 430. The subscriber 410 may own or lease one or more devices 430. The subscriber 410 may also be associated with one or more systems 430. Once the associations 450 are made, the devices and systems 430 assume roles 460 in delivering the service 420 to the subscriber 410. The roles describe to the service management system how the device should be managed.
FIG. 4 may be employed to illustrate two example use cases: activating a device for a subscriber and managing and provisioning a subscription.
To activate a device (one of the devices and systems 430) for a subscriber 410, the following steps may be taken. First, for a given device 410, the subscriber 410 associated with that device 430 is found. This is done by employing the associations 450. Once the associated subscriber 410 has been identified, a corresponding subscription 440 may then be used to determine the service or services 420 that should be provisioned on the device 430. For each service 420 that needs to be activated on the device 430, two alternative actions may be taken. Based upon the role the device 430 plays with respect to the service 420, settings on the device 430 may be set to provision the device. Alternatively or additionally, based on the roles of other devices and systems 430 relative to the service 420, settings on the other devices and systems may be set to provision them for the new device's presence.
Managing and provisioning a subscription involves either adding a new service to a subscriber or managing an existing service. To manage and provision a subscription 440 for a subscriber 410, the following steps may be taken. First, a service 420 is added to a subscriber 410, or an existing service 420 is modified. Devices and systems 430 associated with the subscriber are collected. Then, each device associated with the service 420 is mapped into the different roles 460 in the targeted service. This reveals what actions should be taken with respect to each device or system to provision the service 420.
Another use case that is a variant on the one above is a bulk change to an existing service for all subscribers. In this use case, existing subscriptions are retrieved to obtain a list of subscribers. Then, a list of devices and systems 430 is assembled for each subscriber. Using roles, changes are then applied to the devices and systems 430 to enable the bulk change.
Having described various use cases, one manner in which interaction may occur among roles, devices and systems, and the service level management interfaces will now be described. FIG. 5 is a diagram of one embodiment of a service description 500. FIG. 5 shows that the service description 500 includes service alerts 505, functions 510 and key/value pairs 515. Roles are associated with the service alerts 505, the functions 510 and the key/value pairs 515. The roles, designated Role A 520, Role B 525 and Role C 530 are associated as shown with the service alerts 505, the functions 510 and the key/value pairs 515 as various arrows show. Meta data 535 is also associated with the key/value pairs 515. Devices or systems 540, 545 are associated with the roles 520, 525, 535 as various arrows show.
FIG. 5 illustrates, in the context of the service description 500, how a set of roles (e.g., the roles 520, 525, 535) can be mapped onto a set of devices and systems (e.g., the devices or systems 540, 545). The roles define the functions, alerts and functions that are of interest from each device or system. In the illustrated embodiment, the meta data 535 contains both service-wide and subscriber/subscription data that is specific to the service description. Items like level of service and current state of activation would be a part of the meta data. The alerts, functions, and key/value pairs 505. 510, 515 together constitute services supported by the devices and systems 540, 545 exposed through the roles 520, 525, 530. The service description 500 is configured to contain arbitrary, named relationships that can be used to affect a service. The service description 500 may also be configured to contain one or more references to other service with which it has relationships or upon which it has dependencies. Accordingly, a further service description 550 is associated with the meta data 535 as an arrow shows. Similar to the relationships between roles, relationships between services are exposed to the logic in the service description and to external logic associated with the service description.
To make a role useful, the role is matched with a device. FIG. 6 is a diagram illustrating relationships that may exist among management functions (i.e., values, alerts and functions 505, 510, 515), roles (e.g., 460), capabilities and attributes 610 and devices and systems (e.g., 430). In the embodiment of FIG. 6, the mechanism for doing this is twofold. First, a role may be matched to a device or a system based on the known attributes of the device or system. Second, a role may be matched to a device or a system based upon the known capabilities of the device or system.
Device attributes are known aspects of the device, e.g., the type, serial number, MAC address, manufacture date, make, model, service tags, device ID or operating system of the device or system. Other attributes may include the firmware version, hardware version, embedded device, locale (language), and physical location. Device attributes, in the simplest form, could be a list of known key/value pairs associated to the device.
Capabilities are similar to device attributes. In this case, instead of a list of key/value pairs, these are a list of values (without the key) of known capabilities about the device, e.g., generic email client, Microsoft Outlook® email client, phone, router or IPTV device. Other examples include network attached storage, media server, media renderer, camera, MMS client, SMS client, wireless access provider, wireless access client, printer, GPS, vibrate, Bluetooth, USB, Wi-Fi, clock, browser, QVGA, flight mode, caller ID, touchscreen, or fax.
Both the capabilities and the attributes can be provided to or retrieved from an external system, deduced or derived from known attributes and capabilities, queried directly from the device or system or a combination of these. For example, prior knowledge may exist that any device that has a serial number from a given manufacture starting with the letter W-has built-in Wi-Fi capabilities, or that Windows® Mobile phone supports OMA-DM.
It can be determined whether a given device or system matches a role by matching its attributes and capabilities (derived, discovered, or known) against the required attributes and capabilities of a given role. Each role defines a set of key/value pairs, alerts, and functions that are relevant for devices of that role in the service description.
It should be noted that roles do not imply device type, model or brand. Direct mappings between devices and roles may occur in practice, but the mappings are flexible such that they may change as device attributes or capabilities change. For example, newer devices may support more roles than do older devices. One example of a role is a phone capable of functioning as an email client may play an “EmailClient” role in a service description associated with an email service. Other roles in an email service may include “SMTPServer,” “POPServer” and “IMAPServer.” Roles in a data connectivity service may include “Host,” “Router,” “Wireless Access Point,” “Head End,” “Border Gateway” and “Authentication, Authorization, Account Server.”
FIG. 7 is a high-level block diagram of one embodiment of a service management system. The service management system includes a service normalization block 705 that will be described in greater detail in conjunction with FIG. 8 below. The service normalization block interacts with an optimal settings block 710, a device (and/or system) normalization block 715, a diagnostic engine block 720 and a content repository block 725. A segmentation block 730 and a knowledge base 735 interact with the optimal settings block 710, the device normalization block 715, the diagnostic engine block 720 and the content repository block 725 as shown.
The service normalization block 705 employs an application programming interface (API), allowing it to exchange information with an interactive voice response (IVR) system 745, a console 750 for a customer service representative (CSR), a Self-Service Management (SSM) application module 755 and other applications 760, 765 as may be found advantageous in a particular environment.
The optimal settings block 710 is a repository of predefined known good values used for the purposes of comparing key/value pairs to determine diagnostic and state information. The key/value pairs are also used during provisioning to set up a system or a device. The optimal settings block 710 may be regarded as a configuration repository that contains meta data about the configuration so that applications and other systems can look up known good values for the purpose of configuring (provisioning), diagnostic, and repair. The illustrated embodiment of the optimal settings block 710 is configured to define optimal values for any given key/value pair based on the context of the device, subscriber, customer, or any other segmentation scheme that could be use to define different values for the same attribute (key). These values may be used by both the script engine 830 and directly by the service management engine 805 to determine whether or not a given key/value pair is “optimal.” Optimal values may fall into three categories: (1) values predefined in the context of the service as being correct, (2) values defined based by a call to an extrinsic system or by subscriber input as being correct and (3) absolute values (which is often built into the logic of the script or service description logic and not stored externally). An example of a predefined optimal value is a POP server. The subscriber is aware of its identity, and it is the same for all subscribers. An example of an absolute value is “connectivity good.” An example of a value defined by a subscriber as being correct is a password, something that the subscriber chooses and is not defined before the subscriber chooses it.
The device normalization block 715 is configured to map normalized key/value pairs to device-specific or system-specific key value pairs. Mapping may be performed by transformation, executing a script, or undertaking any other appropriate normalization mechanism.
The diagnostic engine 720 is configured to contain diagnostic rules and cause diagnostic rules to be executed in order to identify, characterize and present potential solutions to problems that may exist with devices or systems. The content repository is configured to provide a channel-independent mechanism for associating bearer (e.g., IVR voice flows, self-service portal web content and customer service articles) to diagnose a problem.
The segmentation block 730 and knowledge base 735 likewise employ a data sources abstraction layer 770, allowing it to communicate with systems 775, 790 and provisioning servers and device managers 780, 785.
Different subscribers subscribe to different levels of service and live in different locations and under different circumstances. The segmentation block 730 is configured to enable other portions of the service management system to tailor responses to a subscriber based on his level of service, location and/or circumstance.
The knowledge base 735 is configured to contain articles associated with known device, system and/or service problems. When the diagnostic engine 720 identifies a problem area or a specified problem, it may provide articles from the knowledge based 735 to an application to allow the application to provide the article in turn to a subscriber or other user for informational purposes.
The data sources abstraction layer 770 is configured to operate as a protocol implementation and adaptation layer, allowing generic logic to interact with specific devices and systems without having to employ a device-specific or system-specific protocol.
The systems 775, 790 are typically added by a particular service provider and interact with the service management system as needed. The provisioning servers and device managers 780, 785 support various devices 795 intended for use by subscribers. In the illustrated embodiment, the provisioning servers and device managers 780, 785 are management systems that manage large groups of devices that typically share the same protocol (e.g., a mobile device manager that manages 10 million phones using the OMA-DM protocol). The devices 795 are just CPE, such as phones and routers.
FIG. 8 is a block diagram of one embodiment of the service normalization block 705. The API 740 provides a mechanism by which the service normalization block 705 may be called from within and without the service management system. By means of the API 740, subscribers may have services added (provisioned), removed (unprovisioned), modified or otherwise managed. Devices of subscribers may also be managed in the context of a particular service. Management access to key/value pairs of constituent devices and systems may also be dynamically determined and managed based on their roles in providing particular services.
A service management engine 805 enables a service provider to implement and manage services by means of the service normalization block 705 according to the various use cases described above. The illustrated embodiment of the service management engine 805 functions in two primary ways. First, the service management engine 805 manages functions defined by service descriptions. Second, the service management engine 805 provides a dynamic view of a given service.
The management of functions allows service descriptions to define named functions that can be called with contextual data derived from analyzing constituent devices and systems in their associated roles of a service.
The provision of a dynamic view of a given service enables a service description to associate key/value pairs (data) with different roles and dynamically to gather data from the devices and systems so that data can be presented without the need for intrinsic knowledge of the data that is being collected. For example, a service-view dashboard capable of creating a map of devices with their associated data of interest (each categorized by their role in the service) may employ dynamic views of services. In the illustrated embodiment, the data itself is self-describing and typically presented in tabular form.
In an alternative embodiment, the service management engine 805 is also capable of providing a view of a given service, in which case the application does have prior intrinsic knowledge regarding the data that is being collected.
The first step in managing the service is to collect a list of the devices and systems that are associated to the subscriber of the service. A device repository 835 serves this purpose. In the illustrated embodiment, the device repository is external to the service normalization block 705.
The service management engine 805 employs a capabilities repository to obtain an expanded view on the capabilities of a device so that it may map it into a role. Often the only pieces of information obtained from extrinsic systems are the unique identifier of the device, e.g., its make and model. A device may be viewed as a list of attributes (e.g., further key/value pairs). From those attributes, the capabilities of the device may be extrapolated. Extrapolation may involve expanding the known attributes of a device by deriving new attributes of a device based on the original attributes. For example, once the make and model of a system or device is obtained by means of a query, built-in rules may then be able to determine whether or not it has Wi-Fi capability.
A service description repository contains service descriptions. As described above, a service description includes at least some of: functions, key/value pairs, alerts, roles (along with their associated key/value pairs, alerts and actions) and relationships. Functions, at the service description level, can be actions exposed by a device, a script that can be executed, or a process (a series of scripts executed in a state engine).
A script engine 830 is configured to execute service-level functions. As described previously, a service-level function could be a script, a process or action (a series of scripts) or any other type of computer program. In the illustrated embodiment, the service management engine 805 retrieves a named script from a service description based on an event or request from a consumer of the service and passes it, along with a set of parameters, to the script engine 805 for execution. In the illustrated embodiment, the set of parameters includes: references to the constituent devices (categorized by role) and the service description. The script, once started, has access to the optimal values, the devices and systems (abstracted by device normalization or directly) and the service management system in general.
The service normalization block 705 has access to a capabilities repository 820. The capabilities repository 820 is configured to derive new attributes and capabilities through rules based on existing, known attributes. For example, it is known that Windows® Mobile cell phones have Internet browsers.
The service normalization block 705 employs the device normalization engine 715 configured to create an abstraction that provides a normal view of extrinsic device and systems. This allows the service description to be defined generically for devices and systems of the same class without having to include logic and cases for each device. For example, if one device is managed by OMA-DM and has an email client while another device that also has an email client is managed by Digital Subscriber Line (DSL) Forum standard TR069, both devices will have a Simple Mail Transfer Protocol (SMTP) server. However, the manner in which values are obtained can differ by protocol (OMA-DM versus TR069) and by key (the name for the value).
At least some of the systems and devices 775, 795 have the capability to generate alerts or events. The alert/event engine 815 is configured to receive these alerts or events and apply them against each service description to determine whether the alert applies to that service description. If a particular alert or event does apply to a particular service, the service management system is configured to obtain a corresponding action, script or process from the service description that may be executed to respond to the alert or event.
Self-Service Applications and Methods
Described hereinafter are various embodiments of self-service applications for a service management system and methods of operation thereof. In general, the embodiments enable a subscriber to manage, diagnose and repair devices and systems they possess (e.g., cellphones, set-top boxes and PCs) using the service management system as a powerful resource for analyzing issues and presenting possible solutions. Alternative embodiments are configured to serve content locally (i.e., the application is installed on a computer located proximate a subscriber or other user) or remotely (e.g., a web server). Overall, various of the embodiments guide the subscriber or user (which may be an entity of any kind) to develop a fundamental understanding of an issue that may be structured such that the application presents the subscriber or user a logical set of steps required to diagnose and resolve an issue.
Conventional self-service applications either mine backend systems or a local computer system to collect data about a specific issue area, present a structured set of steps that takes a user through the repair sequence and then either confirm the issue has been resolved or escalate the issue to a customer service representative. In contrast, various embodiments of the self-service application described herein employ the resources of a service management system containing associations, subscriptions and roles that interrelate subscribers, services and the devices and systems that play roles to bring the services to the subscribers. These resources significantly enhance the self-service application, allowing it to respond to issues more comprehensively and accurately.
FIG. 9 is a flow diagram of one embodiment of a method of providing self-service carried out according to the principles of the invention. The method begins in a start step 905, in which a subscriber or other user seeks to obtain a potential solution to an issue with a service and invokes a self-service sequence. In a step 910, the self-service application makes a call into a service management system to collect devices and systems mapped into roles. In a step 915, the self-service application selects among the collected devices and systems only those devices and systems pertaining to roles in which the self-service application is interested. For example, if the issue involves email, only devices and systems playing email-related roles are selected; roles not related to email are not of interest. In a step 920, the self-service application then collects data associated with the service on the devices and systems that pertain to the issue. In the illustrated embodiment, the data is service-specific data defined in the service description and the roles for each device or system. In a step 925, the self-service application evaluates the data using predefined or computed optimal values and compares those values against key/value pairs collected from the devices and systems. In a step 930, if a predefined condition regarding the issue is met, the self-service application attempts to use the key/value pairs and functions obtained from the service management system to address (e.g., manage and/or repair) the identified issues. In a step 935, the self-service application tests the issue to determine whether the issue was managed or repaired. If not, the self-service application presents to the subscriber or other user alternative options, including an escalation to a customer service representative. The method ends in an end step 940.
It can be seen in the example method of FIG. 9 that the self-service application uses the service management system to: (1) map a service's constituent devices and systems into roles, (2) collect functions for the constituent devices and systems based on the service description and the roles that they have been assigned and (3) determine the relevant key/value pairs for a given device or system in the service based upon its role.
Two alternative embodiments are therefore possible, depending upon whether or not the self-service application has been coded to provide self-service for a particular service description or has been coded to provide self-service for more than one service description.
According to a first alternative embodiment, in which the self-service application has been coded to provide self-service for a particular service description, the self-service application may, for example, employ the service description for which it has been coded to impress order upon the dynamic set of devices and systems that compose the service. Through the service description, the self-service application is aware of the roles, the key/value pairs and one or more functions exposed by each device or system and can use those to perform management, diagnostic, provisioning and repair operations on the service. In this embodiment, the application has a fundamental understanding of the key/value pairs presented and may also include business logic to perform complex functions where the relationships between the key/value pairs and function is known.
For example, an ordered set of operations needed to perform an action may exist for a particular service. The ordering of the set constitutes the intrinsic knowledge with which the application is coded. A specific example of an ordered set of operations may be found in email provisioning, in which email service is activated for a particular subscriber. Upon being invoked, the self-service application employs the email service description to inspect devices and systems pertaining to the email service to determine what steps need to be performed with respect to each device or system to provision the service for the subscriber. For devices that fit the email client role, the self-service application sets up an email account to reference the appropriate email server. For the email server role, the self-service application creates an account on the email server and causes the server to allocate the appropriate resources to support the created account. After the self-service application sets up the email client and email server, it then causes a final test to be run to verify the correct provisioning of the email service for the subscriber. The final test cannot be run before the email client and one or more email servers are properly configured. Thus, provisioning an email service is an operation that should occur in a specific order.
According to the second alternative embodiment, the self-service application has not been coded to provide self-service for a particular service description and instead is operable with respect to multiple service descriptions. The self-service application then proceeds in a non service-specific way, using data in the service definition to perform management operations and/or diagnostics.
An example of a self-service application that has been coded to provide self-service for more than one service description is an application that provides a backup and restore function, where every constituent device and system that performs a role with respect to a service has its key/value pairs backed up or restored to a previous checkpoint. The subscriber or other user directs the self-service backup/restore application to perform its function with respect to a particular service. The self-service application then employs the corresponding service description to identify the key/value pairs in the devices and systems for which the backup/restore function is to be carried out and carries the function out as directed. The service description, with its roles, identifies the specific key/value pairs that are of interest for that service.
In various embodiments, the self-service application and method are configured to compare key/value pairs identified by a service management system against optimal values established by dynamically computing, predefined definitions, or user input for the purposes of activating, diagnosing, collecting status on, and repairing a service. Other embodiments are configured to use key/value pairs and functions identified by the service management system to perform configuration tasks on a given service's constituent devices and systems for the purposes of activating, diagnosing, collecting status on, and repairing a service. Still other embodiments are configured to take a “snapshot” of (i.e., checkpoint) key/value pairs identified by a service management system for the purposes of creating a backup of a services configuration. Yet other embodiments are configured to take a snapshot of key/value pairs identified by a service management system for the purposes of establishing a baseline set of values for future comparisons to determine what is changed.
Some embodiments are configured to use the key/value pairs and functions exposed by the service management system to create business logic that is both intrinsically and/or dynamically aware of the service definition for the purposes of activating, diagnosing, collecting status on, and repairing a service. Other embodiments are configured to use the key/value pairs and functions exposed by the service management system to create tests for the purposes of diagnostic and state determination. Still other embodiments are configured to present the functions collected from the service management system (directly or indirectly) as tasks to a service subscriber for the purposes of allowing the scriber to manage, activate, diagnose, collect status on and repair a service.
In various other embodiments, the self-service application and method are configured to provide service monitoring capabilities to a subscriber for their subscription by creating business logic that inspect the key/value pairs and functions exposed by the service management system for the purposes of proactively identifying potential errors, mis-configuration and/or a state of which the service subscriber wishes to be notified. Still other embodiments are configured to make branching decisions in both logic steps and user interface elements for the purposes of affecting the behavior of the application based upon the functions and key/value pairs exposed by the service management service for the purposes of allowing the scriber to manage, activate, diagnose, collect status on and/or repair a service.
Yet further embodiments are configured to present the subscriber with a visual representation of the state of service and its constituent devices and systems for the purposes of allowing the scriber to manage, activate, diagnose, collect status on, and repair a service.
Many of these and other embodiments are capable of presenting a user interface. As part of that function, the embodiments are configured to determine dynamic resolutions steps based on data coming from the service management system, dynamically determine what data is shown to a subscriber based on data coming from the service management system and present management actions to a subscriber in the context of a self service action using data coming from the service management system.
Those skilled in the art to which this application relates will appreciate that other and further additions, deletions, substitutions and modifications may be made to the described embodiments.

## Claims

1. A service management system, comprising:
a processor;
a service description repository configured to contain service descriptions that define services in terms of end points that assume roles in said services, wherein each of said roles define functions, alerts, and key-value pairs of interest for each of said end points; and
a self-service application configured to provide service monitoring capabilities to a subscriber of at least one of said services by:
mapping end points into at least one of said roles pertaining to one of said services from a corresponding one of said service descriptions;
determining relevant key-value pairs and relevant functions for end points in the said one of said services based upon its at least one of said roles;
collecting said relevant key-value pairs and said relevant functions on said end points pertaining to an issue with respect to said one of said services;
evaluating said relevant key-value pairs and said relevant functions using optimal values, wherein said optimal values are defined based on a context of an end point, a subscriber, and a customer segmentation scheme;
when a predefined condition regarding said issue is met, employing said relevant key-value pairs and said relevant functions to address said issue, said employing including presenting said relevant functions as steps for said subscriber to follow to address said issue; and
testing to determine whether said issue is addressed;

wherein said key-value pairs represent attributes of said end points, and said optimal values are predefined known values that are compared to said key-value pairs to determine diagnostic and state information for said end points.

2. The service management system as recited in claim 1 wherein said self-service application has been coded to provide self-service for said one of said service descriptions.

3. The service management system as recited in claim 2 wherein said self-service application is a provisioning application for said one of said service descriptions.

4. The service management system as recited in claim 1 wherein said self-service application has been coded to provide self-service for more than one service description.

5. The service management system as recited in claim 4 wherein said self-service application performs a backup or restore function for key-value pairs related to ones of said services.

6. The service management system as recited in claim 1 wherein said self-service application is further configured to select among said end points only end points pertaining to said roles and said services.

7. The service management system as recited in claim 1 wherein said end points are selected from the group consisting of:
devices, and
systems, and
said optimal values are selected from the group consisting of:
user-queried values,
predefined optimal values, and
computed optimal values.

8. The service management system as recited in claim 1 wherein said self-service application is further configured to compare said optimal values against key-value pairs collected from said end points.

9. The service management system as recited in claim 8 wherein said self-service application is further configured to compare said optimal values against said key-value pairs and functions collected from said end points.

10. The service management system as recited in claim 1 wherein said self-service application is further configured to present alternative options including an escalation to a customer service representative if said testing indicates that said issue remains unaddressed.

11. A method of providing self-service performed by a processor, comprising:
storing service descriptions that define services in terms of end points that assume roles in said services in a service description repository, wherein each of said roles define functions, alerts, and key-value pairs of interest for each of said end points; and
executing a self-service application configured to provide service monitoring capabilities to a subscriber of at least one of said services by:
mapping end points into at least one of said roles pertaining to one of said services from a corresponding one of said service descriptions;
determining relevant key-value pairs and relevant functions for end points in said one of said services based upon said at least one of said roles;
collecting data including said relevant key-value pairs and said relevant functions on said end points pertaining to an issue with respect to said one of said services;
evaluating said relevant key-value pairs and said relevant functions using optimal values, wherein said optimal values are defined based on a context of an end point, a subscriber, and a customer segmentation scheme;
when a predefined condition regarding said issue is met, employing said relevant key-value pairs and said relevant functions to address said issue, said employing including presenting said relevant functions as steps for said subscriber to follow to address said issue; and
testing to determine whether said issue is addressed;

wherein said key-value pairs represent attributes of said end points, and said optimal values are predefined known values that are compared to said key-value pairs to determine diagnostic and state information for said end points.

12. The method as recited in claim 11 wherein said mapping end points comprises making a call into a service management system.

13. The method as recited in claim 11 further comprising selecting among said end points only end points pertaining to said roles and said service.

14. The method as recited in claim 11 wherein said data comprises service-specific data defined in said service description.

15. The method as recited in claim 11 wherein said end points are selected from the group consisting of:
devices, and
systems.

16. The method as recited in claim 11 wherein said optimal values are selected from the group consisting of:
user-queried values,
predefined optimal values, and
computed optimal values.

17. The method as recited in claim 11 wherein said evaluating comprises comparing said optimal values against key-value pairs collected from said end points.

18. The method as recited in claim 17 wherein said comparing comprises comparing said optimal values against said key-value pairs and functions collected from said end points.

19. The method as recited in claim 11 further comprising presenting alternative options including an escalation to a customer service representative if said testing indicates that said issue remains unaddressed.