Patent Publication Number: US-9886715-B2

Title: Associating interdependent subscriptions

Description:
TECHNICAL FIELD 
     The present disclosure relates to associating interdependent subscriptions, and more specifically to a method and system for associating stackable subscriptions with varying attribute coverage. 
     BACKGROUND 
     A software provider can sell a number of different software and/or service products. As used throughout this disclosure, the term “software” refers to computer readable instructions and other operating information used by a computing system or processing device. For example, a software provider can sell product subscriptions to customers for the software and service products. An entity that has purchased a subscription to a product is an owner of the product subscription. An owner&#39;s use of a product subscription can be represented, for example, as an “entitlement.” For example, a customer, such as ACME Company, purchases ten 3-year product subscriptions to Enterprise Software ABC and thus, ACME Company is an owner of the ten product subscriptions. Ten entitlements represent the ten product subscriptions. An owner can then assign the ten entitlements, for example, to various systems. When the owner installs the Enterprise Software ABC on a computing system, the computing system is granted one of the ten entitlements. 
     Once a computing system has been granted an entitlement, the computing system is registered and subscribed to receive software content from the software provider for the duration of the product subscription. For example, a computing system granted an entitlement by ACME Company receives software content from Enterprise Software ABC for 3 years if ACME Company purchased ten 3-year product subscriptions to Enterprise Software ABC. Once the product subscription expires, the entitlement also expires and will no longer be valid, and the computing system will no longer receive software content from the software provider. A user of the computing system will no longer be able to use the software or service once the entitlement has expired, and a break in coverage may be experienced. 
     Software providers can sell product subscriptions based on product business models. For example, the product business model for Enterprise Software ABC may be to sell product subscriptions to the Enterprise Software ABC on a per-CPU-socket-pair basis. Each of ACME Company&#39;s ten entitlements are valid for systems that each have two populated CPU sockets. Thus, ACME Company should assign two entitlements to a system that has four populated CPU sockets. For this example, a compliant system would have the correct number of product, subscriptions in view of the number of entitlements and CPU sockets on the system. 
     Typically, the enforcement of a software provider&#39;s product business model for a particular product is hard-coded in the product source code itself. For example, the product source code for Enterprise Software ABC is hard-coded to enforce the entitlements for the Enterprise Software ABC on a “per-CPU-socket-pair” basis. 
     Conventional solutions can require a system administrator to determine which computing systems have entitlements. The system administrator should then manually select product subscriptions (if available) to use to grant an entitlement for each computing system with an expired entitlement. Once a product subscription has been selected by the system administrator, it can be used as an entitlement for the computing system in order to provide access to the software for the computing system. Using this manual process, a break in coverage can be experienced by a user of the computing system while the system administrator obtains a new entitlement for the computing system. Moreover, having a system administrator manually select product subscriptions may be feasible when there are a small number of computing systems. However, the manual selection can be difficult when there are a large number of product subscriptions with varying attributes and with different fulfillment requirements. As the number of available product subscriptions increases, the complexity of the selection increases exponentially to the extent that the time needed to determine and select the appropriate product subscriptions to attach to a computer system grows by a factor of 2 n , which increases the time required to produce a set of product subscriptions for a client computer system. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Aspects and implementations of the present disclosure will be understood more fully from the detailed description given below and from the accompanying drawings of various aspects and implementations of the disclosure, which, however, should not be taken to limit the disclosure to the specific aspects or implementations, but are for explanation and understanding only. 
         FIG. 1  depicts a block diagram of a network architecture for associating interdependent subscriptions in which implementations of the present disclosure can operate. 
         FIG. 2  illustrates a block diagram of a subscription association system in accordance with some implementations of the present disclosure. 
         FIG. 3  shows a flow diagram illustrating an example for associating interdependent subscriptions in accordance with some implementations of the present disclosure. 
         FIG. 4  shows a diagrammatic representation of a machine in the form of a computer system, in accordance with one example. 
     
    
    
     DETAILED DESCRIPTION 
     Implementations of the disclosure provide for associating interdependent product subscriptions. The increasing number of available product subscriptions exponentially increases the complexity of the determining and selecting an appropriate product subscription, thereby increasing the workload of the selection process. The ability to mitigate this workload and to quickly select the appropriate product subscription is critical to maintaining an efficient computing system. 
     In one implementation a subscription association system is provided to receive a fulfillment requirement associated with a computing system, select a product subscription from a data store and determine whether the selected product subscription partially satisfies the fulfillment requirement. When the fulfillment requirement is partially satisfied, the subscription association system can select another product subscription from the data store and determine whether this additional product subscription satisfies the fulfillment requirement. If so, the product subscriptions are associated with the computing system. The subscription association system provides for faster and more accurate deployment of subscriptions. 
       FIG. 1  depicts a block diagram of a network architecture  100  for associating independent product, subscriptions in which implementations of the present disclosure can operate. The network architecture  100  includes a subscription association system  120  communicably coupled to a data store  130 . The subscription association system  120  can also be and communicably coupled to a client device  110  via network  102 . Network  102  may be a private network (e.g., a local area network (LAN), a wide area network (WAN), intranet, or other similar private networks) or a public network (e.g., the Internet). 
     Software providers can develop and/or sell one or more software products and/or service products. A software provider can be a large software company that develops and sells operating system platforms, an independent software vendor that develops and sells specialized software to run on an operating system platform, and/or an independent service provider that does not develop, but sells software products and/or service products. 
     Customers can purchase product subscriptions to the software and service products. An entity that has purchased a subscription to a product is an owner of the product subscription. A purchase of a product subscription is an owner&#39;s right to use the product for the period of the subscription. An owner&#39;s use of a product subscription can be represented, for example, as an “entitlement.” Software may or may not already be installed on an entity. Software that is already installed on an entity can be somewhat usable, even if the entity is not granted an entitlement for the installed software. When an entity is granted an entitlement for the software, the entity can access a product repository to allow the entity to receive software updates. For example, suppose that an independent software vendor develops and sells a software product called Enterprise Software ABC. A customer, ACME Company, purchases ten 3-year subscriptions to Enterprise Software ABC, which is represented by ten entitlements. ACME Company may already have the Enterprise Software ABC already installed in one or more systems. When the one or more systems are granted entitlements for the Enterprise Software ABC, the systems can receive updates for the Enterprise Software ABC. 
     A product subscription can be an independent product subscription or an interdependent product subscription. As used herein, the term “independent subscriptions” is interpreted as a product subscription that does not rely on or does not need to interact with another product subscription in order to function properly. As used herein, the term “interdependent subscriptions” is interpreted as a product subscription that relies on, inter-relates with, or interacts with another product subscription in order to function properly. 
     An entity can be a potential consumer or an existing consumer of an entitlement. A consumer is an entity that has been granted an entitlement to allow the entity to consume (use) one or more products and to grant the entity access to one or more product repositories for receiving product updates. For example, when an entity is granted an entitlement for the Enterprise Software ABC, the entity is a consumer of the Enterprise Software ABC. Examples of entities include, and are not limited to, a person, a client computing system, a server computing system, a domain, etc. 
     The subscription association system  120  may include one or more machines such as server computers, desktop computers, or any other computing device. In an example, the subscription association system  120  can track which product subscriptions have been purchased and which of the purchased subscriptions have been consumed. The tracking of purchased and consumed products is hereinafter referred to as “product asset management.” The subscription association system  120  can include a server which can be hosted by any type of computing device including server computers, gateway computers, desktop computers, laptop computers, hand-held computers or similar computing device. An example computing device is described in greater detail below in conjunction with  FIG. 4 . The server can host a product asset management module for tracking what products an owner has purchased and which of the products an owner has consumed (e.g., make use of a product subscription). 
     In one example, the subscription association system  120  is a web application hosted by a server and accessible via a client device  110 . For example, ACME Company may be a small customer, and its environment can include one or more client devices  110  that can communicate to the subscription association system  120  via network  102 . In an example, the subscription association system  120  can include, and is not limited to, a web application based on a REST (Representational State Transfer) client-server architecture. 
     The client device  110  can be hosted by any type of computing device including server computers, gateway computers, desktop computers, laptop computers, mobile communications devices, cell phones, smart phones, hand-held computers, or similar computing device. In one example, a client device  110  includes a programmatic REST interface to communicate with the subscription association system  120 . In other examples, the client device  110  can include, and is not limited to, a web interface, web browser, or other client software. 
     The subscription association system  120  can store data of the products which a customer has purchased and consumed in data repository or a data store  130  that is coupled to the server  150 . The data store  130  may be part of the subscription association system  120  or may be coupled to the subscription association system  120  directly or via the network  102 . The data store  130  can be a persistent storage unit that stores product subscriptions and their associated rules. A persistent storage unit can be a local storage unit or a remote storage unit. Persistent storage units can be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage units can be a monolithic device or a distributed set of devices. A “set,” as used herein, refers to any positive whole number of items. 
       FIG. 2  illustrates a block diagram of a subscription association system  120  in accordance with some implementations of the present disclosure. In  FIG. 2 , the subscription association system  120 , of examples of the disclosure, can include a receiving unit  222 , a rules management unit  224 , a selection unit  226 , and a product subscription asset management unit  228 . 
     The receiving unit  222  can receive a fulfillment requirement from the client device  110 . An example of a fulfillment requirement is a metric-based component of the client device. The metric can represent a service level of support of the computing system (e.g., entitled to on-site support, telephone support, e-mail support, access to an instructional web-site etc.), an architecture of the client device  110  (e.g., x86_64, i686, x390x, etc.), a set of product subscription entitlements of the client device  110 , a number of populated CPU sockets in the computing system, the number of cores per CPU in the client device  110 , or an amount of random access memory of the client device  110 . 
     The rules management unit  224  may examine subscription data associated with the client device  110  to determine whether the owner or client (e.g., ACME Company) has purchased subscriptions for certain product subscriptions. In an example, the subscription data associated with the client device  110  may reside in the data store  130 . The subscription data can include, but is not limited to, rules to enforce product subscription models such as rules and data representing the product subscriptions that one or more clients have purchased, the quantity of the purchased products, the time period the purchase is valid for, and the like. For example, the subscription data can indicate that Owner_A (e.g., ACME Company) has purchased one hundred 3-year subscriptions to Enterprise Software ABC and fifty 1-year subscriptions to Enterprise Virtualization Software. Examples of subscription data can include, and are not limited to, an owner or client identifier, product subscriptions identifiers, entitlement identifiers, validation identifiers, etc. The subscription data can be existing internal data, for example, that is maintained by a software provider sales and/or accounting departments or can be a copy of the existing data. 
     The rules management unit  224  can also examine the rules and requirements of the product subscriptions in the data store  130 . The rules management unit  224  can remove product subscriptions from consideration when they do not match the service level override or service level of the client device  110 . The rules management unit  224  can also remove product subscriptions from consideration, for example, when the product subscription requires an architecture that does not match that of the client device  110 , or when the subscription data associated with the client computer indicates that the quantity of a certain product subscription is zero or when the product subscription has a date that is not valid. 
     The selection unit  226  may select one or more product subscriptions from a plurality of product subscriptions in the data store  130 . The selection unit  226  can construe the fulfillment requirement from the client device  110  and select the product subscriptions can be made in view of its understanding of the fulfillment requirement. For example, the fulfillment requirement can include a list of installed product subscriptions on the client device  110  and other metrics as discussed above. In an example, the selection unit  226  can select the latest and updated entitled product subscriptions associated with the list of installed product subscriptions on the client device  110 . The selection of the product subscriptions can then be validated by the rules management unit  224 , for example, to confirm that the client device  110  has sufficient resources such as memory or CPU sockets to host the selected product subscription. 
     The product subscription asset management unit  228  can maintain and store the fulfillment requirement from the client device  110  so that the subscription association system  120  has a record of the attributes (e.g., a service level of support of the computing system, an architecture of the computing system, a set of product subscription entitlements of the computing system, a number of CPU cores in the computing system, a number of CPU sockets of the computing system, or an amount of random access memory of the computing system, etc.) of the client device  110 . The product subscription asset management unit  228  can also maintain the selected product subscriptions from the selection unit  226 . 
       FIG. 3  shows a flow diagram illustrating a method  300  for associating interdependent subscriptions in accordance with some implementations of the present disclosure. Method  300  may be performed by processing logic that may comprise hardware (e.g., circuitry, dedicated logic, programmable logic, microcode, etc.), software (such as instructions run on a processing device), firmware, or a combination thereof. In one implementation, method  300  is performed by the subscription association system  120  described with respect to  FIG. 1 . 
     Method  300  begins at block  310 , where the subscription association system  120  receives a fulfillment requirement associated with a computing system. An example of the fulfillment requirement can be a metric of a component of the computing system, such as a service level of support of the computing system, an architecture of the computing system, a set of product subscription entitlements of the computing system, a number of CPU cores in the computing system, a number of CPU sockets of the computing system, or an amount of random access memory of the computing system. 
     Subsequently, at block  320 , the subscription association system  120  can select, using the received fulfillment requirement, a first product subscription from a plurality of product subscriptions in a data store. Each product subscription in the data store can include metadata associated with the respective product subscription. The metadata includes, for example, rules and specific information about the product subscription such as whether the product subscription is an independent or an interdependent product subscription, an architecture of the computing system that can execute the first product subscription, a number of CPU cores or an amount of random access memory on the client computer system that is needed for the product subscription, and the like. 
     The metadata for a respective product subscription can also include an identifier that indicates a range of dates in which the product subscription is valid. The subscription association system  120  can select the first product subscription when a present date is within the first range of dates as indicated in the metadata of the first product subscription. 
     The metadata for a respective product subscription can also include an identifier that indicates a level of support service for the product subscription. As discussed above, a service level of support can be, for example, on-site support, telephone support, e-mail support, and access to an instructional web-site, etc. The subscription association system  120  can select the first product subscription when the service level of support associated with the product subscription is consistent with the service level of support associated with the client computer system. For example, in a hypothetical instance where the service level of support associated with the first product subscription is “access to the instructional web-site” and the service level of support associated with the client computer system is “on-site support,” the subscription association system  120  can determine that the product subscription is not suitable for the client computer system, and therefore this product subscription will not be selected. 
     In an example, the subscription association system  120  can select an independent product subscription. As discussed above, an independent product subscription does not rely on or does not need to interact with another product subscription in order to function properly, while an interdependent product subscription relies on, inter-relates with, or interacts with another product subscription in order to function properly. 
     In an example, two completely different and independent product subscriptions can be stacked or associated with each other so that they can be grouped together to satisfy the fulfillment requirement of the client computer device. For example, each product subscription has a respective stacking identifier that indicates whether the independent product subscription can be stacked with another independent product subscription. In an example, when the stacking identifiers of the respective independent product subscriptions are the same, the subscription association system  120  can stack or group the independent product subscriptions to be attached to the client computer system. 
     The selection of the first product subscription can be based on the information from the received fulfillment requirement as discussed above with reference to block  310 . For example, when the information from the fulfillment requirement indicates a set of product subscription entitlements of the computing system, the subscription association system  120  can consider one of the entitlements to be selected. In another example, when the fulfillment requirement information indicates a number of CPU cores in the computing system, a number of CPU sockets of the computing system, or an amount of random access memory of the computing system, the subscription association system  120  can compare the fulfillment requirement information with the rules from the metadata of the product subscription to determine whether the selection is warranted. 
     Next, at block  330 , the subscription association system  120  can determine whether the first product subscription partially satisfies the fulfillment requirement. In a hypothetical example for descriptive purposes, suppose the fulfillment requirement information regarding a client computer system indicates that the client computer system has 8 CPU cores. Furthermore, suppose that the subscription association system  120  determines that the selected first product subscription has a rules restriction such that it is approved for execution in only 2 CPU cores. In this hypothetical case, the fulfillment requirement is partially satisfied because the client computer system has 6 CPU cores that can be fulfilled with additional product subscriptions. 
     At block  340 , the subscription association system  120  can select a second product subscription from the plurality of product subscriptions when the first product subscription partially satisfies the fulfillment requirement. For example, the subscription association system  120  can select an interdependent product subscription as the second product subscription. The second interdependent product subscription can be selected in view of the stacking identifier for each respective product subscription. For example, the subscription association system  120  can select a second product subscription when its associated stacking identifier is the same as the stacking identifier associated with the first product subscription. The subscription association system  120  can also select the second product subscription in view of the metadata of the second product subscription including its rules and requirement, similar to the process used for selecting the first product subscription as discussed above. 
     At block  350 , the subscription association system  120  can determine whether an addition of the second product subscription to the first product subscription satisfies the fulfillment requirement. The subscription association system  120  can combine the information from the metadata associated with the respective first and second product subscriptions. In view of the fulfillment requirement associated with the client computer system, the subscription association system  120  can determine whether the combination of the first and second product subscriptions satisfies the fulfillment requirement. For example, suppose the fulfillment requirement information regarding the client computer system indicates that the client computer system has 8 CPU cores. Furthermore, suppose that the subscription association system  120  determines that the selected first product subscription has a rules restriction such that it is approved for execution in only 2 CPU cores, and that the selected second product subscription is approved in 6 CPU cores. In this hypothetical case, the fulfillment requirement is satisfied with respect to the number of CPU cores because the combined first and second product subscriptions fulfill the 8 CPU cores of the client computer system. The subscription association system  120  can proceed with a similar analysis with respect to the additional aspects of the fulfillment requirement of the client computer system and the first and second product subscriptions. 
     Lastly, at block  360 , the subscription association system  120  associates the first and second product subscriptions with the computing system when the addition of the second product subscription to the first product subscription satisfies the fulfillment requirement associated with the client computer system. In an example, prior to associating the first and second product subscriptions with the computing system, the subscription association system  120  can validate the first and second product subscription by referencing data in a repository that includes contract information with respect to the client computer system. For example, if the data indicates that the client has not paid his or her bill or if the number of entitlements from the fulfillment requirement associated with the computer system is inconsistent with the number of entitlements as set forth in the contract, then the subscription association system  120  can determine that the first and second product subscriptions are not valid for the client computer system. 
     In another example, when the addition of the second product subscription to the first product subscription does not satisfy the fulfillment requirement associated with the client computer system, the subscription association system  120  can select a third product subscription from the plurality of product subscriptions in view of metadata associated with the third product subscription and in view of the fulfillment requirement associated with the client computer system. The subscription association system  120  can determine whether the addition of the third product subscription to the first and second product subscriptions satisfies the fulfillment requirement, and can associate the first, second, and third product subscriptions with the client computing system when the addition of the third product subscription to the first and second product subscriptions satisfies the fulfillment requirement. 
       FIG. 4  depicts a diagrammatic representation of a machine in the form of a computer system  400  within which a set of memory instructions, for causing the machine to perform any one or more of the methodologies discussed herein, may be executed. In alternative examples, the machine may be connected (e.g., networked) to other machines in a Local Area Network (LAN), an intranet, an extranet, or the Internet. The machine may operate in the capacity of a server or a client machine in a client-server network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine may be a personal computer (PC), a tablet PC, a set-top box (STB), a Personal Digital Assistant (PDA), a cellular telephone, a web appliance, a server, a network router, switch or bridge, or any machine capable of executing a set of instructions (sequential or otherwise) that specify actions to be taken by that machine. Further, while only a single machine is illustrated, the term “machine” shall also be taken to include any collection of machines (e.g., computers) that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein. 
     The computer system  400  includes a processing device  402  (e.g., a processor), a main memory  404  (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) such as synchronous DRAM (SDRAM), etc.), a static memory  406  (e.g., flash memory, static random access memory (SRAM), etc.), and a secondary memory  416  (e.g., a data storage device), which communicate with each other via a bus  408 . 
     The processing device  402  represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device  402  may be a complex instruction set computing (CISC) microprocessor, reduced instruction set computing (RISC) microprocessor, very long instruction word (VLIW) microprocessor, processor implementing other instruction sets, or processors implementing a combination of instruction sets. The processing device  402  may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. The processing device  402  is configured to execute the operations for the subscription association system  120  for performing steps discussed herein. 
     The computer system  400  may further include a network interface device  422 . The network interface device may be in communication with a network  102 . The computer system  400  also may include a video display unit  410  (e.g., a liquid crystal display (LCD), a touch screen, or a cathode ray tube (CRT)), an alphanumeric input device  412  (e.g., a keyboard), a cursor control device  414  (e.g., a mouse), and a signal generation device  420  (e.g., a speaker). 
     The secondary memory  416  may include a computer-readable storage medium (or more specifically a non-transitory computer-readable storage medium)  424  on which is stored one or more sets of instructions  426  (e.g., instructions executed by the subscription association system  120 ) for the computer system  400  representing any one or more of the methodologies or functions described herein. The instructions  426  for the computer system  400  may also reside, completely or at least partially, within the main memory  404  and/or within the processing device  402  during execution thereof by the computer system  400 , the main memory  404  and the processing device  402  also constituting computer-readable storage media. The instructions  426  for the computer system  400  may further be transmitted or received over a network via the network interface device  422 . 
     While the computer-readable storage medium  424  is shown in an example to be a single medium, the term “computer-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions  426 . The term “computer-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instructions for execution by the machine that cause the machine to perform any one or more of the methodologies of the disclosure. The term “computer-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media. 
     Some portions of the detailed descriptions above are presented in terms of symbolic representations of operations on data bits within a computer memory. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like. 
     It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise, as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “configuring,” “associating,” “executing,” “adjusting,” “sending,” “receiving,” “determining,” “transmitting,” “identifying,” “specifying,” “granting,” “accessing,” “assigning,” “detecting,” and “requesting,” or the like, refer to the action and processes of a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (electronic) quantities within the computer system&#39;s registers and memories into other data similarly represented as physical quantities within the computer system memories or registers or other such information storage, transmission or display devices. 
     The disclosure also relates to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may be a general purpose computer system selectively programmed by a computer program stored in the computer system. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including optical disks, CD-ROMs, and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic disk storage media, optical storage media, flash memory devices, other type of machine-accessible storage media, or any type of media suitable for storing electronic instructions, each coupled to a computer system bus. 
     The descriptions and displays presented herein are not inherently related to any particular computer or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein, or it may prove convenient to construct a more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will appear as set forth in the description below. In addition, the disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein. 
     It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other examples will be apparent to those of skill in the art upon reading and understanding the above description. Although the disclosure has been described with reference to specific examples, it will be recognized that the disclosure is not limited to the examples described, but can be practiced with modification and alteration within the spirit and scope of the appended claims. Accordingly, the specification and drawings are to be regarded in an illustrative sense rather than a restrictive sense. The scope of the disclosure should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.