`Christiano
`
`119
`
`US005671412A
`(11) Patent Number:
`[45] Date of Patent:
`
`5,671,412
`Sep. 23, 1997
`
`[54] LICENSE MANAGEMENT SYSTEM FOR
`SOFTWARE APPLICATIONS
`
`[75]
`
`Inventor: Matt Christiano, Saratoga, Calif.
`
`[73] Assignee: Globetrotter Software, Incorporated.
`Campbell, Calif.
`
`Appl. No.: 508.829
`21]
`Appl.
`[21]
`No
`;
`(22] Filed:
`Jul. 28, 1995
`6
`52] Ene Ch”
`veninsenenennrnnmennmnrinsinainnen,, GOK 17/30
`[52] U.S. CL. eersrrerrernene
`we 395/615
`[58] Field of Search o.....c.eccesscsscssscssssseeseees 395/615, 186
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`4,791,565 12/1988 Dunham et al.
`.mmnmmmine 395/186
`
`4,924,378
`5/1990 Hersey et al.
`...
`.. 395/187
`5/1991 Edwards, Jr.
`....
`w= 395/186
`5,014,234
`8/1995 Wyman ....
`a. 395/208
`5,438,508
`
`cecsssssessscsressreereseseeeee 80/25
`5,553,143°
`9/1996 Ross et al.
`
`Primary Examiner—Wayne Amsbury
`Attorney, Agent, or Firm—Hickman Beyer & Weaver, LLP
`
`ABSTRACT
`[S7]
`.
`.
`.
`An improved software license management system in accor-
`dance with the present invention is disclosed. A license
`server initializes a license database by receiving a package
`license description that includes componentlicense descrip-
`tions for component software products in a package.
`Licenses for software products are also received, and license
`records are created in the license database for components
`and suite packages, where each record includes a number of
`licenses available to be checked out. A client computer
`system can request a license for a component productin a
`package.A license is granted to the client whentheclientis
`allowed to receive thelicense according toa license policy.
`When a component license is checked out, a linked suite
`license is also automatically checked out. No other client
`thus may use a component license linked with the suite
`license record unless another suite license is checked out.
`The license management system also provides a number of
` MOdifiers to be included in license records, including an
`overdraft quantity, a fail safe indicator, a minimum license
`quantity, and a capacity indicator. A finder and a diagnostic
`process can be implementedat the client computer system to
`find the license server over a network and provide a tool to
`diagnose failures in the license management system.
`
`70 Claims, 15 Drawing Sheets
`
`16
`
`CLIENT
`
`12
`
`
`
`19
`
`PACKAGEP
`
`
`
`
`COMPONENTX
`
`
`COMPONENTY
`COMPONENTZ
`
`
`1
`
`GOOGLE 1011
`
`GOOGLE 1011
`
`1
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 1 of 15
`
`5,671,412
`
`16
`
`
`12
`
`
`
`CLIENT
`COMPUTER
`
`12
`
`CLIENT
`COMPUTER
`
`14
`
`
`
`CLIENT
`
`COMPUTER
`12
`
`Figure 1
`
`CLIENT
`
`Figure 2a
`
`19
`
`PACKAGE P
`
`
`
`
`
`COMPONENTX
`COMPONENT Y
`
`COMPONENTZ
`
`
`
`
`2
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 2 of 15
`
`5,671,412
`
`PACKAGE CERTIFICATE
`
`a8
`
`|
`|
`|
`|
`|
`|
`|
`.
`|
`|
`|
`
`20
`“—
`
`PACKAGE DESCRIPTION
`1) PACKAGE NAME——24
`2) LIST OF COMPONENTS—— 26
`FOR EACH COMPONENT——28
`a) COMPONENT NAME—34
`b) COMPONENT VERSION——36
`c) LICENSE MULTIPLIER—37
`3) PACKAGE VERSION—30
`4) SUITE INDICATOR—32
`5) KEY._—33
`
`|
`|
`:
`|
`|
`|
`|
`,
`:
`
`PACKAGE LICENSE ITEM
`
`wee
`
`1) NUMBER OF PACKAGE LICENSES— 72
`2) OTHER LICENSE INFORMATION-—42
`3) OVERDRAFT, FAILSAFE, MINIMUM,— 44
`CAPACITY VALUES/INDICATORS
`
`Figure 2b
`
`3
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 3 of 15
`
`5,671,412
`
` INITIALIZE
`
`
`
`
`
`LICENSE
`DATABASE
`
`
`
` WAIT FOR
`
`NEXT LICENSE
`
`
`REQUEST
`
`
`LICENSE
`REQUEST
`
` PROCESS
`
`
`
`
`
`SEND STATUS
`TO CLIENT
`
`4
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 4 of 15
`
`5,671,412
`
`Cy,
`
`READ ALL PACKAGE
`DESCRIPTIONS AND
`STORE IN DATABASE
`
`65
`
`LICENSE ITEM
`
`="
`
`
` ALL
`
`
`LICENSE ITEMS
`READ?
`
`
`ENTER LICENSE
`ITEM IN LICENSE
`NO
`iS
`RECORD AND
`
`
`72
`
`ENTER RECORDIno THERE A PACKAGE
`
`DESCRIPTION HAVING
`pittel
`
`
`
`THE LICENSE VERSION
`
`
`AND NAME?
`
`YES
`
`DATABASE
`
`74.
`
`
`
`76
`
`
`Is
`PACKAGE A
`
`
`SUITE?
`
`YES
`
`CREATE A
`LICENSE RECORD
`FOR SUITE
`
`NO
`
`77
`
`YES
`
`
`IS NEXT
`COMPONENT A
`
`
`PACKAGE?
`85
`
`
`
`YES
`:
`GO TO
`NO
`80
`
`
`APPROPRIATE
`
`
`
`MORE
`LEVEL OR
`
`
`
`FOR THE NEXT
`COMPONENTS
`PACKAGE
`
`
`
`
`COMPONENT IN
`
`FOR CURRENT
`
`
`PACKAGE, CREATE
`
`PACKAGE AT CUR-
`
`A LICENSE RECORD
`
` 83.
`RENT LEVEL?
`
`ANY REMAIN-
`82
`
`ING UNPROCESSED
`COMPONENTSAT
`
` NO
`HIGHER LEVELS
`OR OTHER
`
`
`PACKAGES?
`
`5
`
`
`
`USS. Patent
`
`Sep. 23, 1997
`(stant)
`86
`
`Sheet 5 of 15
`780
`
`5,671,412
`
`88
` ISA
`
`
`LICENSE MULTIPLIER
` PECIFI
`oneoy
`YES
`
`:
`
`NO
`
`MULTIPLY NUMBER OF
`PACKAGE LICENSES BY
`MULTIPLIER TO CREATE
`NUMBER OF COMPONENT
`
`92
`
`USE NUMBER
`OF PACKAGE
`LICENSES AS
`
`NUMBER OF
`
`LICENSES
`
`$92
`
`94
`
`
` IS AN
`
`
`
`
`OPTIONAL VERSION
`SPECIFIED IN
`COMPONENT?
`
`NO
`
`YES
`
`USE PACKAGE
`VERSION AS
`VERSION
`NUMBERIN
`LICENSE
`
`Figure 5
`
`LICENSES
`RECORD
`
`RECORD
`
`98
`
`100
`
`102~|
`
`USE OPTIONAL
`VERSIONIN
`LICENSE RECORD
`
`MAKELINK TO SUITE
`LICENSE,IF
`APPLICABLE, AND
`ENTER LINK IN
`LICENSE RECORD
`
`SYNTHESIZE A
`LICENSE KEY AND
`PLACE IN LICENSE
`
`
`
`ENTER LICENSE DATA INTO
`LICENSE RECORD AND ENTER
`RECORDIN INTERNAL LICENSE
`DATABASE
`
`{794
`
`On
`
`6
`
`
`
`USS. Patent
`
`Sep. 23, 1997
`
`Sheet 6 of 15
`
`5,671,412
`
`DATABASE
`
`we
`
`Figure 6
`
`120
`
`USE NUMBER OF
`PACKAGE LICENSES AS
`NUMBER OF LICENSES
`
`USE PACKAGE
`VERSION AS VERSION
`NUMBERIN LICENSE
`RECORD
`
`MAKE LINK TO SUITE
`LICENSE, IF
`APPLICABLE, AND
`ENTERLINKIN
`LICENSE RECORD
`
`SYNTHESIZE A
`LICENSE KEY AND
`PLACEIN LICENSE
`RECORD
`
`ENTER LICENSE DATA INTO
`LICENSE RECORD AND ENTER
`RECORDIN INTERNAL LICENSE
`
`7
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 7 of 15
`
`5,671,412
`
`74,
`
`4, 104, 120.
`
`104
`
`Figure /
`
`TOTAL # OF LICENSES
`AVAILABLE = OVERDRAFT|135
`QUANTITY + AUTHORIZED
`LICENSELIMIT QUANTITY
`
`ENTER LICENSE
`RECORDIN
`INTERNAL LICENSE
`
`126
`
`ENTER OVERDRAFT
`QUANTITY IN
`LICENSE RECORD
`
`ENTER CAPACITY
`VALUE IN LICENSE
`RECORD
`
`ENTER FAIL SAFE
`INDICATORIN
`LICENSE RECORD
`
`ENTER MINIMUM
`QUANTITY IN
`LICENSE RECORD
`
`ENTER OTHER
`LICENSE
`INFORMATIONIN
`LICENSE RECORD
`
`DATABASE
`
`8
`
`
`
`
`
`FAILUREIN
`LICENSE
`SYSTEM?
`
`
`
`146
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 8 of 15
`
`5,671,412
`
`(start)
`
`142
`
`ge
`
`154
`144
`
`
`
`
`
`ISA
`
`
`
`LICENSE AVAILABLE NO|SET STATUSIS
`
`
`
`
`
`
`FOR REQUESTED PRODUCT
`LICENSE
`TO "NOT
`
`
`USING RECEIVED NAME AND
`AVAILABLE"
`A FAIL SAFE
`
`
`
`LICENSE?
`VERSION?
`
`
`
`156
`
`SET STATUS TO
`FAIL SAFE
`STATUS
`
`
`IS
`AVAILABLE LICENSE
`
`A COMPONENTOF A
`SUITE?
`
`YES
`SET STATUS
`
`TO
`"AVAILABLE"
`
`SET LICENSE REQUESTED
`TO SUITE LICENSE
`ASSOCIATED WITH
`
`REQUESTED PRODUCT
`
`148
`
`
`
`152 (BONE)
`
`Figure 8
`
`9
`
`
`
`U.S. Patent
`Sep. 23, 1997
`Coy
`
`
`ISA
`LICENSE RECORD OF
`
`
`THIS NAME AND VERSION
`
`
`AVAILABLE IN
`
`
`
`DATABASE?
`
`5,671,412
`
`Sheet 9 of 15
`a
`
`No Ca
`
`e
`
`Figure 9
`
`
`
`MULTIPLY # OF
`
`127
`
`am
`REQUESTED
`RECORD TO
`
`NEXT RECORD
`
`aoe
`
`168
`
`170
`
`
`
`
`LICENSE UNITS
`beanie
`YES
`
`
`
`REQUESTED BY
`LICENSE?
`
`
`RESOURCE
`
`CAPACITY
`NO
`
`
`nfae
`
`
`LICENSE UNITS
`
`SPECIFIED?
`
`
`IS THERE
`:
`ANOTHER RECORDIN
`
`
`
`BEROFLICENSE
`LICENSE DATABASE
`
`
`UNITS REQUESTED FOR REQUESTED_fYES
`
`
`
`LESS THAN
`PRODUCT?
`
`
`
`
`180
`NO
`MINIMUM?
`
`
`
`IS LICENSE
`SET NUMBER OF
`A FAILSAFE
`
`UNITS TO
`LICENSE?
`MINIMUM
`
`171._|
`
`178
`
`
`
`
`
`IS # OF UNITS
`SUBTRACT THE NUMBER
`
`
`REQUESTED PLUS #
`OF DUPLICATE UNITS IN
`OF UNITS IN USE BY USERS
`
`
`USER LIST FROM THE
`
`IN LIST FOR THE REQUESTED
`NUMBER OF UNITS
`
`
`PRODUCT< AVAIL. # OF
`
`REQUESTED
`
`
`UNITS IN DATABASE?
`
`YES
`
`174
`
`172
`
`ADD REQUESTOR
`TO USER LIST
`
`176
`
`10
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 10 of 15
`
`5,671,412
`
`182
`
`Na
`
`(stant)
`
`184
`
`LOCATE LICENSE|796
`SERVER OR FILE
`
`188
`
`RUN
`DIAGNOSTIC?
`
`YES
`
`NO
`
`190
`
`IMPLEMENT
`DIAGNOSTIC
`PROCESS
`
`(one)
`
`192
`
`194
`
`SEND REQUEST TO SERVER
`
`VERSION; UNITS REQUESTED;
`ENVIRONMENTAL RESOURCE
`
`WITH PRODUCT NAME,
`
`CAPACITY
`
`196.|RECEIVE STATUS
`MESSAGE FROM
`SERVER
`
`198
`
`200
`
`
`LICENSE
`SET LICENSE
`
`
`
`
`ACCESS GRANTED
`REQUEST STATUS
`BY SERVER?
`
`
`TO "GRANTED" 204
`
`SET LICENSE
`REQUEST STATUS
`TO "DENIED"
`
`202 (BONE)
`
`Figure 10
`
`11
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 11 of 15
`
`5,671,412
`
`oa
`Figure 11
`
`
`LOCATE LICENSE|78° (one)
`
`SERVER OR FILE
`
`192"
`
`
`
`182.
`
`190°
`
`188’ YES|IMPLEMENT
`DIAGNOSTIC
`DIAGNOSTIC?
`BRODCGE
`NO
`
`IS THERE
`
`
`A RECORD IN LICENSE
`DATABASE FOR REQUESTED
`
`PRODUCT?
`
`206
`
`
`
`SEND REQUEST TO SERVER WITH
`PRODUCT NAME, VERSION; UNITS
`REQUESTED; ENVIRONMENTAL
`RESOURCE CAPACITY
`
`
`RECEIVE STATUS
`
`MESSAGE FROM
`SERVER
`
`
`
`YES|SET STATUS
`LICENSE
`
`TO
`ACCESS GRANTED
`"GRANTED"
`
`BY SERVER?
`
`
`
`
`
`
`IS THERE
`SET REQUESTED
`
`
`ANOTHER RECORD IN
`RECORD TO NEXT
`
`LICENSE DATABASE FOR
`RECORD
`
`
`REQUESTED PRODUCT2
`
`
`
`
`SET LICENSE
`
`
`
`SET LICENSE
`
`
`THE LICENSES FOR
`REQUEST
`STATUS TO
`THE REQUESTED
`Bleyys
`
`
`
`
`
`
`
`DENIED BUT
`PRODUCTFAIL SAFE
`"DENIED"
`
`
`
`OKAY"
`LICENSES?
`
`
`
`204'
`
`12
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 12 of 15
`
`5,671,412
`
`186, 186'
`
`220
`
`
`DID USER
`
`
`YES|RETURN LICENSE
`
`SET ENVIRONMENT
`ADDRESS OF
`
`VARIABLE FOR
`
`
`ENVIRONMENT
`
`SERVER ORFILE
`
`
`
`VARIABLE
`
`ADDRESS?
`
`
`224
`
`
`
`IS ALICENSE
`RETURN
`DEFAULT
`FINDER NODE OR
`
`
`LICENSE
`BACKUP FINDER NODE
`
`
`ADDRESS
`AVAILABLE?
`
`
`
`
`SEND USER NAME,
`
`
`HOST NAME, DISPLAY
`
`
`NAME, VENDOR NAME,
`AND PRODUCT NAME
`TO LICENSE FINDER AT
`
`FINDER NODE
`
`
` READ LICENSE
`
`
`
`
`ADDRESS AND
`RETURN
`
`Figure 12
`
`13
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 13 of 15
`
`5,671,412
`
`READ
`CONFIGURATION
`FILE
`
`240
`
`GET NEXT
`CLIENT
`REQUEST
`
`242
`
`244
`
`236Ne
`
`
`LOOK UP ADDRESS
`BASED ON
`USER/HOST/
`DISPLAY/VENDOR/
`PRODUCT
`
`RETURN ADDRESS
`TO CLIENT
`
`
`
`2a
`
`Figure 13
`
`14
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 14 of 15
`
`5,671,412
`
`190, 190°
`
`DESIGNATED PRODUCT
`
`252
`
`256
`
`254
`
`YES
`
`OUTPUT "OK"
`
`EXAMINE NEXT LICENSE
`RECORD FOR
`DESIGNATED PRODUCT
`
`
`
`
`oy
`ATTEMPT LICENSE CHECK OUT FOR
`AND EXIT
`
` 258
`
`DONE WITH
`
`
`LICENSES FOR DESIGNATED
`
`PROGRAM?
`<7
`262
`
`PRODUCT
`
`OUTPUT A DESCRIPTION
`OF LICENSE FOR
`EXAMINED RECORD
`
`ATTEMPT CHECK OUT
`FOR DESIGNATED
`
`264
`
`266
`
`OUTPUT STATUS
`
`}--268
`
`Figure 14
`
`270
`
`272
`
`274
`
`NO
`
`STATUS = "CAN
`CONNECT"?
`
`YES
`
`
`USER
`NO
`WISHES TO RUN
`
`
`CONNECTION
`
`
`DIAGNOSTICS?
`
`
`YES
` IMPLEMENT
`CONNECTION
`DIAGNOSTICS
`
`15
`
`15
`
`
`
`USS. Patent
`
`Sep. 23, 1997
`
`Sheet 15 of 15
`
`5,671,412
`
`276
`
`(start)
`
`274
`
`v
`
`288
`
`286
`
`284~|
`
`294
`
`
`
`START AT FIRST
`NETWORK ADDRESS
`ON SERVER NODE
`
`278
`
`NO
`
`ATTEMPT
`CONNECTION AT
`THIS ADDRESS
`
`280
`
`YES
`
`
`PAST END
`
`OF ADDRESS
`RANGE?
`
`INCREMENT
`NETWORK
`ADDRESS
`
`NO
`
`
`
`282
`
`YES
`
`
`SEND MESSAGE
`OUTPUT THAT
`
`
`TO DETERMINE IF
`UNKNOWN
`
`
`CORRECT
`
`
`PROCESSIS AT
`LICENSE SERVER
`THIS ADDRESS
`
`
`
`
`
`290
`
`OUTPUT THAT
`WRONG SERVER IS AT
`
`SERVER? THIS ADDRESS
`
`CORRECT
`LICENSE
`
`YES
`
`298
`
`Figure 15
`
`OUTPUT THE
`CORRECT ADDRESS
`FOR THE SERVER
`
`300
`
`16
`
`
`
`BACKGROUND OF THE INVENTION
`
`5,671,412
`
`30
`
`35
`
`40
`
`1
`LICENSE MANAGEMENT SYSTEM FOR
`SOFTWARE APPLICATIONS
`
`2
`or “suites”. A package includes several component programs
`andlicense information for each component program. Suites
`are a type of package in which a combinationof two or more
`software programs that were originally sold separately but
`The present invention relates generally to a license man-
`have since been combined and sold as a single package for
`agement system suitable for licensing and managing the
`marketing purposes. For example, Microsoft Office® sold
`usage of software products.
`by Microsoft Corporation includes three component pro-
`Software piracy has long been a problem that has plagued
`grams that were originally sold separately: Microsoft
`software developers. The unauthorized copying of software
`Word®, Microsoft Excel®, and Microsoft Power Point®.
`products by users often causes significant losses of sales for
`Using current license managers, no package license for the
`software developers. Accordingly, a variety of protection
`combined products is available to allow the suite to operate
`schemes have been developed to protect software from
`under the license manager. Also, current license managers
`unauthorized copying and whichalso allowalegitimate user
`do not have the capability to allow the degree of interaction
`to operate the software.
`of licenses necessary to implement such a package license.
`A popular approach to protect software is to provide
`For example, the use of one component program ofthe suite
`licenses to endusers rather than selling the software directly
`should tie up the use ofthe other component programs in the
`to those users. A user is licensed by the software vendor to
`suite for a single license available for the package. Thus,
`use the software under certain conditions that prevent unlim-
`with a single package license, one user could not operate one
`ited use and/or copying of the software. Software vendors
`program in the package while another user operated another
`use different methods or “license policies” to license soft-
`program in the same package. Prior art license managers are
`ware. Commonly used license policies include “node-
`not capable of delegating program usage for this type of
`locked”licenses, “floating” or “concurrent usage”licenses,
`program organization.
`“site” licenses, and “metered” licenses, each of which uti-
`Another problem that has been encountered with existing
`lizes a different way of determining when or where a user
`license management systems is the ability of a client com-
`can use a software program. The “node-locked” license
`puter node to locate a license server to retrieve a license for
`allows a program to be used only on a specific computer
`a designated program. The problemsoffinding a server on
`node in a network (or by a specific user). One method of
`a network are made more difficult in a license managed
`assigning a uniqueidentifier to a computer system is to use
`network, since license management servers cannotbe freely
`hardware means, such as a hardware key or other methods
`moved due to the nature and security of licenses. For the
`same reason, it is not desirable that license servers be
`that are well known. The “floating” or “concurrent usage”
`license allows only a predetermined number of copies of the
`duplicated on a network to assist in locating a server. The
`software to run simultaneously on the network, regardless of
`variety of existing methodsfor locating a license server each
`the node on which the software is running. The “site” license
`have their own problems. Some systems usea license file
`which contains the network address location of the license
`allows the licensed software to be used anywhere within a
`licensed company or other defined area or organization.
`server. However, this license file system requires increased
`Finally, the “met
`” license allows a predetermined num-
`administration overhead at large sites when new nodes are
`ber of activations or uses of the program, or a predetermined
`added to the network. Other systems use a predetermined
`amount of time which the program can be run onacentral
`server location; however,
`this type of system can cause
`processing unit (CPU) of a computer.
`problems when two software vendors choose the same
`Software vendors can provide other features to a software
`network address for the license server, resulting in a conflict,
`license policy. For example, the level of enforcement of the
`or when the license server node is changed. Still other
`license can vary in differentlicenses. A software vendor can
`systems utilize a network broadcast to locate a license
`provide a high level of enforcement, which might never
`server. However, in large networks, such broadcasts are
`generally unacceptable due to a number of problems created
`allow the program to be used if the license is violated. A low
`level of enforcement can also be provided by the software
`by the broadcasts, such as excessive networktraffic. Finally,
`vendor, so that, for example, a program can still be used
`still other systems utilize a general purpose location broker.
`whenthe license is violated and a warning is issued to the
`However, such location brokers typically utilize network
`user.
`broadcasts, which are unacceptable in large networks, as
`well as requiring large administrative overhead.
`Many software vendors use a license management system
`to enforce a software policy. Such a system typically
`Still another problem in prior license management sys-
`
`includes a computer network andalicense server or “license tems involves a lack of flexibility in distributing licenses to
`manager” that is often provided at a server node or similar
`requesters. In many situations, a requester may not have
`host location on the network which all computer nodes on
`access to a program duetoastrict license policy but may
`have special need for such access due to emergencies or
`the network can access. The license manager can receive
`requests from computer nodes for specific licenses and send
`other needs. Or, a failure in the license management system
`out answers to those requests to the specific nodes. The
`may prevent a requester from using a program in prior
`license manager can keep track of all the various programs
`systems, even when the requester has a special or emergency
`licenses that have been “checked out” by client computer
`need for use of a program. Also, the platform of the client
`computer system may play arole in determining the amount
`systems and can determine when a request would violate a
`of required licenses for a program used on that platform.
`license. For example, the license manager can check the
`node identification of a client computer that requests a
`Since some platforms can process data much quicker than
`license for a node-locked program. Or, the license manager
`other platforms, the faster platforms can be required to
`can keep track of how many programs or licenses are being
`consume more licenses than a slower platform. Theability
`used at once under a concurrent use license, or how long a
`to distribute licenses when taking into account these factors
`program has been used under a metered license.
`does not exist in prior license management systems.
`One problem that has been seen in conventional license
`Yet another problem found in existing license manage-
`management systems concerns the licensing of “packages”
`ment systems is that there is no ability to diagnose problems
`
`45
`
`55
`
`65
`
`17
`
`17
`
`
`
`5,671,412
`
`3
`in the system. Since a license management system is fre-
`quently used as a type of security system for the licensed
`software. many aspects of the operation of the system are
`poorly documented to prevent unauthorized use of licenses.
`However. a side effect of this poor documentation is that
`failures in the system are difficult to diagnose. If even a
`simple. minor function of the license management system
`fails. a network administrator has few tools to try to remedy
`the failures.
`
`SUMMARY OF THE INVENTION
`
`An improved software license management system in
`accordance with the present invention is disclosed. A license
`server of the present invention provides package and pro-
`gram licenses and allows several license modifiers to be
`stored in license records to provide a licensor with a variety
`of options and flexibility. A server address finder and diag-
`nostic function mitigate common license server network
`problems.
`The license management system includes a license server
`that initializes a license database by first receiving one or
`more packagelicense descriptions, each describing a pack-
`age license associated with a software product including
`componentlicense descriptions describing licenses for com-
`ponent products in the package. License items are then
`received for software products, where a license item can be
`a package license item or a standard license item. If the
`license item is a standard license item, a standard license
`record is entered in the license database. If the license item
`is a package license item that matches one of the package
`license descriptions, a componentlicense record is created in
`the license database for each componentlicense description
`in the matched package license description.
`Each ofthe license records includes a numberoflicenses
`available for the software product associated with thelicense
`record. The licenses are able to be checked out by a client
`requesting a license for the associated software product.
`Additionally, the package description can include a suite
`indicator for indicating when a packageis a suite. When a
`packageis a suite, a suite license record for thesuite license
`description is also created in the license database. The
`component license record preferably includes a link to the
`suite license record. Preferably,
`the component
`license
`record and the suite license record include a number of
`license units indicating a number of timesthat a license may
`be checked out from the license database by a client. When
`a license provided by the component
`license record is
`checked out. a license provided by the suite license record
`linked to said componentlicense recordis also automatically
`checked out. Thus, when a suite license is checked out by a
`client. no other client may use a componentlicense linked
`with the suite license record unless anothersuite license is
`checked out.
`
`Each componentlicense description preferably includes a
`name and a version number of the associated software
`product, where the software product is a software program.
`Alternatively. the component software product can be a
`package. so that packages can be componentsof higher level
`packages. The componentlicense description also includes
`a license multiplier for determining how many component
`licenses may be checked out by a client.
`The license records stored on the license database can
`each store a number of modifiers. An overdraft quantity
`indicates a numberof licenses that can be providedto clients
`over the authorized amountof licenses stored in the license
`records. A fail safe indicator indicates that licenses can be
`
`10
`
`15
`
`30
`
`35
`
`45
`
`50
`
`55
`
`60
`
`65
`
`4
`provided over the amountof licenses stored in the license
`record to clients when a failure occurs in the license man-
`agement system. A minimum quantity indicates a minimum
`amountof licenses required to be checked out to allow the
`designated program to be used by the client. A capacity
`indicator indicates that the license record provides a required
`number of licenses to a requesting client dependent on an
`environmental resource capacity of the requesting client
`computer system. The environmental resource capacity can
`be determined by processing speed ofthe client platform or
`other client environment characteristics.
`
`The license server provides licenses from the license
`database to client computer systems to allow the client
`computer systems to use licensed software products. A
`request is received from a client by the server. The request
`can be for a component license for a component product in
`a package. A package (suite) license is granted to the client
`when the client is allowed to receive the package license
`accordingto a license policy. The package license allows the
`client to use the requested component product. The compo-
`nent license and package license are denied to the client
`when the client is not allowed to receive the component
`license or the package license according to the license
`policy. The component license is not denied when the
`component license and the package license are fail safe
`licenses. When a packagelicense is granted,different clients
`are prevented from receiving a license for a component
`product included in the package. Preferably, when the pack-
`age license is granted to a client, the client is added to a user
`list for the requested product. To determine if a client is
`granted a license for the package, the server checks if the
`number oflicenses requested plus licenses in use by clients
`in the user list is less than or equal to the available number
`oflicenses for the requested product.
`A client computer system requesting a license for a
`designated software product locates a license server on a
`license management network. This can be accomplished by
`sending a request to a finder located on the network to
`provide a license address for the license server. A license
`request is then sent by the clientto the located license server.
`The request preferably includes the environmental resource
`capacity of the computer system that determines how many
`licenses are required by the computer system to use the
`designated product. A status message is received from the
`license server that provides information about whether the
`requested license has been granted or denied. A license
`policy associated with the designated product may be
`enforced based on the information inthe status message. The
`license policy may not allow the designated program to be
`used whenthe requested license has not been granted, or the
`license policy may provide a warning on the computer
`system and allow the designated product to be used. The
`program instructions for locating, sending and receiving can
`also be implemented as part of a diagnostic process on the
`computer system. The diagnostic process preferably can
`check addresses on the network to find the license server
`when the license server cannot normally be located.
`Thefinder is used for locating the license server on the
`network implementing a license management system. The
`finder receives a request from a client computer system for
`a license address of the license server. A license address for
`the license server is looked up in a table, where the license
`address is determined by client information in the request.
`Finally, the license address of the license server is provided
`to the client computer system. The client information can
`include parameters such as a name of a user on said client
`computer system. a host nameof the client computer system,
`
`18
`
`18
`
`
`
`5,671,412
`
`5
`a terminal name of said client computer system, and/or
`vendor nameofthe client software.
`
`invention advantageously provides an
`The present
`improved software license management system including a
`license server that provides program licenses and package
`licenses, allowing program licenses to be collected and
`organized by a licensor in a variety of ways. In addition,
`suite licenses prevent more than a single user from using any
`component of the suite. The license modifiers, including
`overdraft, minimum, fail safe, and capacity, allow the licen-
`sor to provide a variety of options and flexibility to clients.
`The server address finder and diagnostic function of the
`Present invention allow common license server network
`problems to be efficiently circumvented or alleviated.
`These and other advantages of the present invention will
`become apparentto thoseskilled in the art after reading the
`following descriptions and studying the various figures of
`the drawings.
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`10
`
`6
`DETAILED DESCRIPTION OF THE
`INVENTION
`
`The present invention relates to software license manage-
`ment systems. Referring initially to FIG. 1, a license man-
`agement system 10 suitable for incorporating the present
`invention will be described. As seen therein, individual
`client computer systems 12 are interconnected by network
`connections 14. Each computer system 12 serves as a node
`in the network having its own network address so that other
`computer systems 12 can send and receive data from any
`other computer system 12 in the network system 10. As is
`well known to those skilled in the art, a client computer
`system 12 typically includes a microprocessor and several
`components coupled to the microprocessor, such as memory
`(RAM, ROM), input components such as a keyboard, input
`tablet, etc., and output components such as a screen display,
`printer, etc.
`Also included in the network system 10 of the present
`invention is a license server 16, which is connected in
`network system 10 like computer systems 12. License server
`16 may typically include hardware components for imple-
`menting license management processes, such as a
`microprocessor(s) or central processing unit (CPU) and
`associated components coupled to the microprocessor by a
`main bus, such as random access memory (RAM), read-only
`memory (ROM), input/output components, storage devices,
`etc., as is well known to those skilled in the art. License
`server either includes or has access to a database imple-
`mented on in a storage medium such as memory, disk space,
`or the like.
`
`The invention may best be understood by reference to the
`following description taken in conjunction with the accom-
`panying drawings in which:
`FIG. 1 is a schematic diagram of a license management
`system incorporating a license server and client computer
`systems;
`FIG. 2a is a schematic diagram of the license server, a
`client computer system, and an internal license database;
`FIG. 2b is a diagrammatic illustration of a license certifi-
`cate received by the license server;
`FIG. 3 is a flow diagram illustrating a method of imple-
`The license server 16 serves as a “license manager” for
`menting the license server of FIG. 2;
`the computer systems 12 and for other servers (not shown)
`that may be included in system 10. License server 16 stores
`FIG. 4 is a flow diagram illustrating a method ofinitial-
`licenses for software programs available to computer sys-
`izing the license database (step 54 of FIG.3);
`tems 12 and assignsor “checks out” these licenses to client
`FIG. 5 is a flow diagram illustrating a method of creating
`computer systems 12 that requesta license. Herein, the term
`and entering a license record in the license database for a
`“license” is used to designate permission or authorization for
`component in a package (step 80 of FIG. 4);
`a client computer system to use or “implement” (run) a
`FIG. 6 is a flow diagram illustrating a methodofcreating
`single designated software product, such as a program, or to
`and entering a license record in the license database for a
`view data incorporated in the software product. The vendor,
`suite (step 78 of FIG. 4);
`supplier, or manager (“licensor”) of the software typically
`FIG.7 is a flow diagram illustrating a method of entering
`providesthe licenses for users on the network. For example,
`license data into a license record and entering the license
`if a user wishes to operate a designated computer program
`record in the license database (step 74 of FIG. 4);
`on a particular computer system 12 (i.¢., run or execute the
`FIG.8 is a flow diagram illustrating a method of process-
`program on the central processing unit (CPU) of that com-
`ing a license request from a client (step 58 of FIG. 3);
`puter system), then the program (or a license program)
`FIG. 9 is a flow diagram illustrating a method of deter-
`instructs the computer system to send out a license request
`mining if a license is available for a requested product (step
`over license managementsystem 10 to the license server 16.
`144 of FIG.8);
`The license server 16 receives the license request and
`FIG. 10 is a flow diagram illustrating a method of the
`determines if the requesting client computer system is
`present invention for requesting a license from a client
`allowed check out or be assigneda license for that program,
`computer system;
`i.e., allowed to mun or use the program. Preferably, a license
`FIG.11 is a flow diagram illustrating an alternate method
`is checked out to a client computer system only if the
`of the present invention for requesting a license fromaclient
`requesting computer system is allowed to have the requested
`computer system;
`.
`license according to a predetermined software license
`FIG. 12 is a flow diagram illustrating a method oflocating
`policy. To use multiple copies of the designated program, a
`a license server usingafinder of the present invention (step
`client would typically have to check out an equivalent
`number of licenses.
`186 of FIG. 10);
`FIG. 13 is a flow diagram illustrating a method of
`Many types of software license policies can be imple-
`implementing the license finder of the present invention;
`mented. For example, a “node-locked” policy allows only
`FIG. 14 is a flow diagram illustrating a method of
`one computer system at a specific node on the license
`implementing a diagnostic process of the present invention
`management system 10 to use a designated software prod-
`(step 190 of FIG. 10); and
`uct. Thus, under a node-lockedpolicy, a computer system 12
`FIG. 15 is a flow diagram illustrating a method of
`would be able to check out a license only if a license were
`implementing the connection diagnostics of the diagnostic
`available on the license server which matched that computer
`system’s node, address, serial number, user name, or other
`process of FIG. 14.
`
`30
`
`35
`
`60
`
`19
`
`19
`
`
`
`5,671,412
`
`7
`identifier. In a “floating” or “concurrent usage” type of
`license policy. a predetermined number of copies of a
`program are allowed to be run simultaneously on license
`management system 10. A computer system 12 is thus able
`to check out a concurrent usage license for a program only
`if the maximum allowed number of copies of that program
`are currently not in use by other computer systems, i.e., if
`one of a limited numb