Managing Metadata Switches And Platform Licenses In A Distributed System

System and methods are presented for configuring and managing metadata switches and platform licenses in a distributed system. Using metadata switches, a platform license can be developed for a software product without the need for an engineer to develop the platform license by hand. A software application depot can be used to configure metadata switches that provide configuration information for a particular aspect of the software product and, when associated to a platform license that utilizes metadata switches, generate an accessible platform license for use by tenant organizations.

BACKGROUND

Platform licenses are an integral aspect of software products that provide contractual agreements between managing and tenant organizations. A platform license often includes a large number of features and is complex because it controls the functionality of a software product. Current platform licensing methods rely on developers to configure features of a software product by hand to comply with a platform license. Engineers must also be able to implement all additions, deletions, and updates of features in a software product while developing a new platform license. This current process may take several months to complete and even more time for review and finalization of the product.

Because of the time and labor associated with platform license development, platform licenses are challenging to develop on a large scale to accommodate the individual needs of every tenant organization. Therefore, approaches are needed to efficiently allow an organization to craft its own platform licenses with little to no assistance from developers.

DETAILED DESCRIPTION

Provided herein are system, apparatus, device, method, computer program product embodiments, and/or combinations thereof, for configuring and managing metadata switches and platform licenses in a distributed system. In the detailed description that follows, references to “one aspect”, “an aspect”, “an example aspect”, etc., indicate that the aspect described may include a particular feature, structure, or characteristic, but every aspect may not necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same aspect. Further, when a particular feature, structure, or characteristic is described in connection with an aspect, it is submitted that it is within the knowledge of one skilled in the art to effect such feature, structure, or characteristic in connection with other aspects whether or not explicitly described.

As used in describing embodiments disclosed herein, licenses may include contractual agreements between a managing organization and a tenant organization, which includes a metadata description of the functionality for the associated software product that is available to the tenant organization. Platform licenses include licenses used by managing organizations of a software product to control functionality of said software product for a tenant organization. Using metadata switches, a platform license can be developed for a software product without the need for an engineer to develop the platform license by hand. A software application depot can be used to configure metadata switches that provide configuration information for a particular aspect of the software product and, when associated to a platform license that utilizes metadata switches, generate an accessible platform license for use by tenant organizations. These and other technological advantages are described herein.

FIG.1shows a system100, according to some aspects. For example, system100can be used for managing metadata switches and platform licenses in a cloud based computing environment. In one example, system100comprises a cloud service provider (CSP)102and a host cloud service provider (host CSP)106. In one example, CSP102comprises a software application depot104. In one example, host CSP106comprises a managing database system108. In one example, managing database system108comprises a metadata switch depot110, a platform license depot112, and a stock keeping unit (SKU) depot114.

In some embodiments, CSP102can be an entity that provides components of cloud computing, e.g., infrastructure, software, storage, platform, or the like as a service.

In some embodiments, software application depot104can be a code repository that centralizes, stores, and manages code for a software application or plurality of software applications. In one example, metadata switches can be configured and managed in software application depot104by a backend engineer. Software application depot104can also associate metadata switches to platform licenses.

In some embodiments, host CSP106can be an entity that provides components of cloud computing, e.g., infrastructure, software, storage, platform, or the like as a service.

In some aspects, software application depot104is hosted by CSP102. In some aspects, CSP102can be a different cloud service provider than host CSP106. CSP102is configured to securely communicate with host CSP106.

In some embodiments, managing database system108can be database system that includes databases that store application code, object data, tables, datasets, and database records. Managing database system108may be a relational or a non-relational database system. Managing database system108can include a plurality of hardware, software, and logic elements that facilitate database system functionality and code execution.

In some embodiments, metadata switch depot110is a repository that stores a record of a metadata switch or a plurality of metadata switches provided by software application depot104. Metadata switch depot110may be a relational or a non-relational database.

In some embodiments, platform license depot112is a repository that stores a record of a platform license or a plurality of platform licenses. Platform license depot112may be a relational or a non-relational database. The record of the platform license stored in platform license depot112may be associated to metadata switches in metadata switch depot110.

In some embodiments, SKU depot114is a repository that stores SKUs that may be assigned to a record to make the record available for purchase. SKU depot112may be a relational or a non-relational database. In one example, SKUs stored in SKU depot114may be assigned to a record of a platform license stored in platform license depot112to make the platform license available for purchase.

It is to be appreciated that system100is merely an example of one suitable system environment and is not intended to suggest any limitations as to the scope of use or functionality of aspects described herein. Neither should system100be interpreted as having any dependency or requirement related to any single module/component or combination of modules/components described therein.

FIG.2is a flowchart200illustrating steps for configuring and managing platform licenses and metadata switches using a software application depot104in a computing device.

At step202, a metadata switch can be configured in software application depot104. In one aspect, the metadata switch may be developed and managed by a backend engineer. The metadata switch provides configuration information for a software product function. In some aspects, software application depot104can configure a plurality of metadata switches for one software product. In some aspects, software application depot104can configure a plurality of metadata switches for a plurality of software products.

The metadata switch can provide configuration information for a plurality of aspects and functionalities of a software product. The metadata switch can include a name, description, type, and owner. The type can include configuration information for an organization's permissions, preferences, values, or access to the software product. The metadata switch may provide configuration information for a tenant organization's access to a software product, preferences in a software product, limits to a software product, or store their configuration data for a software product. For example, an organization's permissions control access to features and certain aspects of security. An organization's preferences define settings that a tenant organization can configure, such as time zones or password options. An organization's values control limits to features, such as a maximum number of outbound emails per day.

At step204, software application depot104provides the metadata switch in response to a request to compile a platform license that will control the software product function. In some aspects, the platform license controls software product function by providing configuration information to a metadata switch associated with the software product. In one example, the platform license can control the software product function by providing configuration information for access to a feature, behavior of a feature, or the limits of a feature by enabling, disabling, or providing a value to the feature. A feature may include any function of the software product that is configured in a metadata switch. In some aspects, the platform license provides configuration information to a plurality of metadata switches that are associated with the software product.

At step206, software application depot104can associate the metadata switch to the platform license. A final platform license is generated in software application depot104by associating the metadata switch in software application depot104to the metadata switch provided in the platform license. In some embodiments, the platform license is associated to a plurality of metadata switches.

FIG.3depicts an example of a platform license300configured with metadata switches in the software application depot. In this example, the platform license enables a plurality of features by using the metadata switches. In platform license300, lines9-36configure a tenant organization's permissions. Lines10and11configure permissions that allow the tenant organization to use social login. Lines16and17configure permissions that allow the tenant organization to use the quick setup panel. Lines22and23configure permissions that allow the tenant organization to use in-app live chat. Lines28and29configure permissions that allow the tenant organization to use data import v2. Lines34and35configure permissions that allow the tenant organization to use the easified home page. In platform license300, these permissions are allowed by being set to “true” on lines11,17,23,29, and35respectively. For example, if line11is set to “false”, the tenant organization does not have permission to use the social login feature. When the backend engineer makes updates to the permissions metadata switch, aspects of the platform license will not need to be updated or changed since each item in the platform license is a reference to the permissions metadata switch.

The final platform license allows a backend engineer to add, delete, or update a software product function without the need to edit every platform license that is associated with the software product function by hand. Instead, the backend engineer can add, delete, or update a metadata switch, which will effectively apply the changes to all platform licenses associated with the metadata switch.

FIG.4is a flowchart400illustrating steps for managing metadata switches and platform licenses in a managing database system108.

At step402, a metadata switch finder (MSF) configured in managing database system108can retrieve a metadata switch from software application depot104. In some aspects, the metadata switch is provided through the communication between CSP102and host CSP106.

At step404, a metadata switch manager (MSM) can generate a record for the metadata switch. In some aspects, software application depot104can provide the metadata switch to a request from the MSF and the MSM generates a record for the provided metadata switch. In another aspect, software application depot104can provide the record of the metadata switch. The record, for example, may publish a reference to the metadata switch's corresponding software product function, an owner of the software product, a metadata description of the software product function, a dependency between the software product function and the metadata switch, a categorization of the software product function, or a reference to a platform license that is associated to the software product function via the metadata switch. MSM will publish the metadata switch record to metadata switch depot110.

At step406, MSF will continuously check for additions, deletions, or updates made in software application depot104. If a metadata switch is added to software application depot104, MSF will retrieve the metadata switch and MSM will create a new record for the metadata switch to be published. If a metadata switch is deleted from software application depot104, MSM will remove the record for the metadata switch from metadata switch depot110. If a metadata switch is updated in software application depot104, MSF will retrieve the updated metadata switch and MSF will update the record for the metadata switch in metadata switch depot110.

When the record is published, the metadata switch can be used to generate a platform license.

Platform licenses are used by a managing organization to configure and control functionality of a software product for a tenant organization. The platform license, for example, can control feature access, feature behavior, or feature limits that are provided to the tenant organization. The platform licenses may be created using the record of metadata switches stored in metadata switch depot110.

At step408, managing database system108generates a draft record of a platform license for a software product. The draft platform license record may store, for example, the license name, status, revisions, a cloud service provider, a managing service provider, and a license owner. The status of the platform license record may be set to indicate that the platform license record is a draft.

In some aspects, a user from the managing organization can input a request to generate the draft platform license record. The user input can also provide configuration information for each metadata switch used in the draft platform license record. The user may input the user input with a user device (e.g., a computing device, a smart device, a mobile device, a laptop, a tablet, a set-top box, a display device, etc.). The user device may generate and/or display a page (e.g., web pages, application pages, links and/or linked data, documentation, etc.) of a user interface (e.g., website, application, data/content source, etc.).

Flowchart400is further described with reference toFIGS.5A-C.FIGS.5A-Cdepict example user interfaces500A,500B, and500C that are usable to retrieve user input for a platform license. The user interface can allow users to input configuration information for a metadata switch that will be used in a final platform license. In one aspect, the user interface can be such that a person with little to no skill in creating platform licenses can initiate the creation of a platform license with no help from an engineer. The user interface can have a page for each metadata switch that corresponds to the software product. The user interface uses the record of the metadata switch published in metadata switch depot110to prompt the user for configuration information for the metadata switch.

FIG.5Adepicts an example of user interface500A that receives user input for a tenant organization's permissions to a software product function. Navigation bar502allows a user to choose which metadata switch configuration to edit. Details subsection504allows the user to edit the values for the metadata switch configuration. Current setting subsection506displays the current permissions and preferences for the platform license being created by the user. Current setting subsection508displays the current values for the platform license being created by the user. History subsection510displays the history of the metadata switch configurations for the platform license being created. In the depicted embodiment, the user input relates to permissions for the tenant organization to use a tool that allows a user to interact with Service Cloud providers for support.

FIG.5Bdepicts an example of a user interface500B that receives user input for a tenant organization's preferences for a software product function. In the depicted embodiment, the user input relates to the tenant organization's preference for enabling a mobile browser app.

FIG.5Cdepicts an example of a user interface500C that receives user input for a tenant organization's values. In the depicted embodiment, the user input relates to specifically how many email addresses can be connected to the software product.

After user input is received, the draft of the platform license record is generated and stored in platform license depot112, as shown at step408.

At step410, managing organization database108can assign and link the draft platform license record to a metadata switch record that is associated with the software product. The assigned metadata switch and platform license can be linked in license switch map422. In some aspects, a plurality of metadata switches can be assigned to the draft platform license record.

In some aspects, the managing organization will create platform licenses to be sold to tenant organizations. In some aspects, managing database system108can include a method to make the platform licenses accessible and marketable to tenant organizations.

At step412, the draft platform license record may be retrieved from platform license depot112.

At step414, the draft platform license record is sent to a user or group of users to be reviewed. The status of the platform license may be set to indicate that the platform license record is under review. When the platform license is approved by the user or group of users, the status of the platform license record may be set to indicate that the draft platform license record is final.

At step416, the final platform license record is provided to the software application depot104. The platform license is associated, by software application depot104, to the metadata switches it is assigned to in managing database system108.

At step418, a stock keeping unit (SKU) is generated and stored in SKU depot114.

At step420, the SKU stored in SKU depot114is assigned to the final platform license record and linked in SKU License Map424. The platform licenses can be accessed and purchased when linked to an SKU.

FIG.6depicts an example of a user interface600that displays final platform license records and corresponding SKUs. Product column602displays which software products currently have platform licenses created for the software product. License Definition column604displays what the platform licenses configure in the software product. A user may select a platform license record to sell or purchase.

Various embodiments may be implemented, for example, using one or more well-known computer systems, such as computer system700shown inFIG.7. One or more computer systems700may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.

Computer system700may include one or more processors (also called central processing units, or CPUs), such as a processor704. Processor704may be connected to a communication infrastructure or bus706.

Computer system700may also include customer input/output device(s)703, such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure706through customer input/output interface(s)702.

Computer system700may also include a main or primary memory708, such as random access memory (RAM). Main memory708may include one or more levels of cache. Main memory708may have stored therein control logic (i.e., computer software) and/or data.

Computer system700may also include one or more secondary storage devices or memory710. Secondary memory710may include, for example, a hard disk drive712and/or a removable storage device or drive714. Removable storage drive714may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, and/or any other storage device/drive.

Removable storage drive714may interact with a removable storage unit718. Removable storage unit718may include a computer usable or readable storage device having stored thereon computer software (control logic) and/or data. Removable storage unit718may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, and/any other computer data storage device. Removable storage drive714may read from and/or write to removable storage unit718.

Secondary memory710may include other means, devices, components, instrumentalities or other approaches for allowing computer programs and/or other instructions and/or data to be accessed by computer system700. Such means, devices, components, instrumentalities or other approaches may include, for example, a removable storage unit722and an interface720. Examples of the removable storage unit722and the interface720may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, and/or any other removable storage unit and associated interface.

Computer system700may further include a communication or network interface724. Communication interface724may enable computer system700to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number728). For example, communication interface724may allow computer system700to communicate with external or remote devices728over communications path726, which may be wired and/or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic and/or data may be transmitted to and from computer system700via communication path726.

In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to, computer system700, main memory708, secondary memory710, and removable storage units718and722, as well as tangible articles of manufacture embodying any combination of the foregoing. Such control logic, when executed by one or more data processing devices (such as computer system700), may cause such data processing devices to operate as described herein.