`Christiano
`
`USOO5671412A
`[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.
`
`[21] Appl. No.: 508,829
`[22] Filed:
`Jnl.28,1995
`
`[51] rm, Cl.6 .................................................... .. G06F 17/30
`[52] US. Cl.
`395/615
`[58] Field Of Search .................................... .. 395/615, 186
`
`[56]
`
`References Cited
`
`U.S. PATENT DOCUMENTS
`
`4,791,565 12/1988 Dunham et a1. ...................... .. 395/186
`4,924,378 5/1990 Hersey et a1.
`395/187
`5,014,234
`5/1991 Edwards, Jr. .... ..
`395/186
`
`5,438,508
`8/1995 Wyman . . . . . . . . . .
`. . . .. 395/208
`5,553,143‘ 9/1996 Ross et a1. .............................. .. 380/25
`
`Primary Examiner—Wayne Amsbury
`Attorney, Agent, or Fimz-—Hickman Beyer & Weaver, LLP
`
`ABSTRACT
`[57]
`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 component license 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 product in a
`package. A license is granted to the client when the client is
`allowed to receive the license according to a 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 ?nder and a diagnostic
`process can be implemented at the client computer system to
`?nd the license server over a network and provide a tool to
`diagnose failures in the license management system.
`
`70 Claims, 15 Drawing Sheets
`
`12
`
`16
`
`19 \
`
`PACKAGE P
`
`COMPONENT X
`COMPONENT Y
`COMPONENT Z
`
`IPR2017-01291
`Ubisoft EX1009 Page 1
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 1 of 15
`
`5,671,412
`
`16
`
`CLIENT
`COMPUTER
`
`CLIENT
`COMPUTER
`
`19 \
`
`,20
`PACKAGE P 4/
`
`COMPONENT x ‘ j 20
`COMPONENT Y4‘
`COMPONENT z
`
`?gure 2a
`
`IPR2017-01291
`Ubisoft EX1009 Page 2
`
`
`
`' US. Patent
`
`Sep.23, 1997
`
`Sheet 2 of 15
`
`5,671,412
`
`PACKAGE CERTIFICATE
`
`PACKAGE DESCRIPTION
`1) PACKAGE NAME/24
`2) LIST OF COMPONENTS/25
`FOR EACH COMPONENTr'T’ZB
`a) COMPONENT NAME/34
`b) COMPONENT VERSION/36
`0) LICENSE MULTIPLIEFI/37
`3) PACKAGE VERSION/30
`4) SUITE INDICATOR-#32
`5) KEY/33
`
`PACKAGE LICENSE ITEM
`
`1) NUMBER OF PACKAGE LICENSES/4O
`2) OTHER LICENSE INFORMATION/42
`44
`3) OVERDRAFT, FAILSAFE, MINIMU ,
`CAPACITY VALUES/INDICATORS
`
`figure 26
`
`IPR2017-01291
`Ubisoft EX1009 Page 3
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 3 of 15
`
`5,671,412
`
`/ 5O
`
`52
`
`INITIALIZE
`LICENSE
`DATABASE
`
`WAIT FOR
`NEXT LICENSE
`REQUEST
`
`PROCESS
`LICENSE
`REQUEST
`
`SEND STATUS
`TO CLIENT
`
`f?z'qure 3
`
`IPR2017-01291
`Ubisoft EX1009 Page 4
`
`
`
`U.S. Patent
`
`Sep. 23, 1997
`
`Sheet 4 of 15
`
`5,671,412
`
`64
`
`[54
`
`READ ALL PACKAGE
`DESCRIPTIONS AND /65
`STORE IN DATABASE
`
`Tl
`READ NEXT
`66
`\ LICENSE ITEM
`
`,‘Fi are 4
`5
`
`68
`
`ALL
`LICENSE ITEMS
`
`THERE A PACKAGE
`DESCRIPTION HAVING
`THE LICENSE vERSION
`AND NAME?
`
`78
`/
`
`PACKAGE A
`SUITE?
`
`LICENSE RECORD
`FOR SURE
`
`YES
`
`IS NEXT
`COMPONENT A
`PACKAGE?
`
`77
`
`/
`EXT
`FO T
`COMPOEEANT IN
`PACKAGE, CREATE
`A LICENSE RECORD
`
`I
`
`MORE
`COMPONENTS
`I=OR CURRENT
`PACKAGE ‘AT CUR_
`RENT LEVEL?
`
`NO
`
`82
`
`ENTER LICENSE
`ITEM IN LICENSE
`RECORD AND
`ENTER RECORD
`IN INTERNAL
`LICENSE
`DATABASE
`
`/
`74
`
`85
`\
`
`APPROPRIATE
`LEVEL OR
`PACKAGE
`
`83
`
`ANY REMAIN
`ING UNPROCESSED
`COMPONENTS AT
`HIGHER LEVELS
`OR OTHER
`PACKAGES?
`
`NO
`
`IPR2017-01291
`Ubisoft EX1009 Page 5
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 5 of 15
`
`5,671,412
`
`[80
`
`USE NUMBER
`OF PACKAGE
`LICENSES AS
`NUMBER OF
`LICENSES
`
`/90
`
`96
`/
`USE PACKAGE
`VERSION AS
`VERSION
`NUMBER IN
`LICENSE
`RECORD
`
`?gure 5
`
`/104
`
`ISA
`LICENSE MULTIPLIER
`SPECIFIED IN
`COMPONENT?
`
`MULTIPLY NUMBER OF
`PACKAGE LICENSES BY
`MULTIPLIER TO CREATE
`NUMBER OF COMPONENT
`LICENSES
`
`/92
`
`94
`
`IS AN
`OPTIONAL VERSION
`SPECIFIED IN
`COMPONENT?
`
`USE OPTIONAL
`VERSION IN
`LICENSE RECORD
`
`I4
`
`MAKE LINK TO SUITE
`LICENSE, IF
`100\
`APPLICABLE, AND
`ENTER LINK IN
`LICENSE RECORD
`I
`SYNTHESIZE A
`102\ LICENSE KEY AND
`PLACE IN LICENSE
`RECORD
`I
`ENTER LICENSE DATA INTO
`LICENSE RECORD AND ENTER
`RECORD IN INTERNAL LICENSE
`DATABASE
`
`108
`
`IPR2017-01291
`Ubisoft EX1009 Page 6
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 6 of 15
`
`5,671,412
`
`/ 78
`
`110
`
`USE NUMBER OF
`PACKAGE LICENSES AS /112
`NUMBER OF LICENSES
`
`__l__
`
`USE PACKAGE
`VERSION AS VERSION
`NUMBER IN LICENSE
`RECORD
`
`MAKE LINK TO SUITE
`LICENSE, IF
`APPLICABLE, AND
`ENTER LINK IN
`LICENSE RECORD
`
`SYNTHESIZE A
`LICENSE KEY AND
`PLACE IN LICENSE
`RECORD
`
`?gure 6
`
`114
`
`116
`
`118
`
`ENTER LICENSE DATA INTO
`LICENSE RECORD AND ENTER
`RECORD IN INTERNAL LICENSE
`DATABASE
`
`120
`
`IPR2017-01291
`Ubisoft EX1009 Page 7
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 7 of 15
`
`5,671,412
`
`74, 104, 120
`
`124
`
`?gure 7
`
`ENTER OTHER
`LICENSE
`INFORMATION IN
`LICENSE RECORD
`
`126
`
`I
`
`ENTER OVERDRAFT
`QUANTITY IN
`LICENSE RECORD
`
`/ 128
`
`I
`
`ENTER CAPACITY
`VALUE IN LICENSE
`RECORD
`
`I
`
`ENTER FAIL SAFE
`INDICATOR IN
`LICENSE RECORD
`
`130
`
`132
`
`ENTER MINIMUM
`QUANTITY IN
`LICENSE RECORD
`
`134
`
`TOTAL # OF LICENSES
`AVAILABLE = OVERDRAFT
`QUANTITY + AUTHORIZED
`LICENSE LIMIT QUANTITY
`
`/135
`
`I
`
`ENTER LICENSE
`136
`RECORD IN
`INTERNAL LICENSE '’
`DATABASE
`
`138
`
`IPR2017-01291
`Ubisoft EX1009 Page 8
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 8 of 15
`
`5,671,412
`
`/ 58
`
`‘__.___________>
`
`~
`
`144
`
`154
`
`IS A
`LICENSE AVAILABLE
`FOR REQUESTED PRODUCT
`USING RECEIVED NAME AND
`VERSION?
`
`'3
`L'CENSE
`ALIE'EINSSEE
`
`' 156
`/
`N0 SET STATUS
`TO "NOT
`AVAILABLE"
`
`FAILURE IN
`LICENSE
`SYSTEM?
`
`NO
`
`SET STATUS TO
`FAIL SAFE
`STATUS
`
`146
`
`IS
`AVAILABLE LICENSE
`A COMPONENT OF A
`SUITE?
`
`NO
`
`SET LICENSE REQUESTED
`TO SUITE LICENSE
`ASSOCIATED WITH
`REQUESTED PRoDuCT
`
`/148
`
`SET STATUS
`TO
`"AVAILABLE"
`
`152
`
`figure 8
`
`IPR2017-01291
`Ubisoft EX1009 Page 9
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 9 0f 15
`
`5,671,412
`
`160
`
`162
`
`IS A
`LICENSE RECORD OF
`THIS NAME AND VERSION
`AVAILABLE IN
`DATABASE?
`
`144 /
`?gure 9
`
`NO
`
`YES
`
`163
`
`164
`
`168
`
`IS LICENSE
`A CAPACITY
`LICENSE?
`
`IS THE
`MINIMUM
`LICENSE UNITS
`SPECIFIED?
`
`.
`
`170
`
`IS THE NUM
`BER OF LICENSE
`UNITS REQUESTED
`LESS THAN
`MINIMUM‘?
`
`SET NUMBER OF
`UNITS TO
`MINIMUM
`
`SUBTRACT THE NUMBER
`OF DUPLICATE UNITS IN
`USER LIST FROM THE
`NUMBER OF UNITS
`REQUESTED
`/
`172
`
`MULTIPLY # OF
`LICENSE UNITS
`REQUESTED BY
`RESOURCE
`CAPACITY
`\
`166
`
`181
`/
`SET
`REQUESTED
`RECORD TO
`NEXT RECORD
`
`NO
`
`IS THERE
`ANOTHER RECORD IN
`LICENSE DATABASE
`FOR REQUESTED
`PRODUCT?
`
`YES
`
`IS LICENSE
`A FAILSAFE
`LICENSE?
`
`180
`
`178
`
`174
`
`IS # OF UNITS
`REQUESTED PLUS #
`OF UNITS IN USE BY USERS
`IN LIST FOR THE REQUESTED
`PRODUCT 5 AVAIL. # OF
`UNITS IN DATABASE‘?
`
`ADD REQUESTOR
`TO USER LIST
`
`176
`
`IPR2017-01291
`Ubisoft EX1009 Page 10
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 10 of 15
`
`5,671,412
`
`182
`\
`
`188
`
`LOCATE LICENSE
`SERVER OR FILE
`
`186
`
`194\
`
`SEND REQUEST TO SERvER
`WITH PRODUCT NAME,
`VERSION; UNITS REQUESTED;
`ENVIRONMENTAL RESouRcE
`CAPACITY
`
`I
`
`RECEIVE STATUS
`MESSAGE FROM
`SERVER
`
`IMPLEMENT
`DIAGNOSTIC
`PROCESS
`
`192
`
`198
`
`LICENSE
`ACCESS GRANTED
`BY SERVER?
`
`SET LICENSE
`REQUEST STATUS
`TO "GRANTED"
`
`204\ SET LICENSE
`REQUEST STATUS
`TO "DENIED"
`
`figure 10
`
`IPR2017-01291
`Ubisoft EX1009 Page 11
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 11 of 15
`
`5,671,412
`
`I
`
`LOCATE LICENSE
`SERVER OR FILE
`
`192'
`
`182'
`
`188'
`
`206
`
`IS THERE
`A RECORD IN LICENSE
`DATABASE I=QR REQUESTED
`PRODUCT?
`
`IMPLEMENT
`DIAGNQSTIC
`PROCESS
`
`190
`
`SEND REQUEST TO SERVER WITH
`PRODUCT NAME, vERSIoN; UNITS ,194'
`REQUESTED; ENVIRONMENTAL
`RESOURCE CAPACITY
`
`196.
`RECEIVE STATUS
`MESSAGE FROM /
`SERVER
`
`200'
`
`198'
`
`LICENSE
`ACCESS GRANTED
`BY SERVER?
`
`YES SET STATUS
`TO
`"GRANTED"
`
`210
`/
`SET REQUESTED
`RECQRD TO NEXT
`RECORD
`
`YES
`
`IS THERE
`ANQTHER RECORD IN
`LICENSE DATABASE FOR
`- EQUESTED PRODUCT’?
`
`I
`202
`
`208
`
`SET LICENSE
`REQUEST
`_STATUS TO
`DENIED EUT
`OKAY
`/
`214
`
`ARE ANY 0
`THE LICENSES FDR
`THE REQUESTED
`PRQDUCT FAIL SAFE
`LICENSES?
`
`: ;218
`
`Y
`
`E
`STATUS To
`"DENIED"
`
`2\04'
`
`IPR2017-01291
`Ubisoft EX1009 Page 12
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 12 of 15
`
`5,671,412
`
`186,186’
`
`220
`
`DID USER
`SET ENVIRONMENT
`VARIABLE FOR
`SERVER OR FILE
`ADDRESS?
`
`224
`/
`222
`YES RETURN LICENSE
`ADDRESS OF
`ENVIRONMENT
`VARIABLE
`
`RETURN
`DEFAULT
`LICENSE
`ADDREss
`
`IS A LICENSE
`FINDER NODE 0R
`BACKUP FINDER NODE
`AVAILABLE?
`
`226
`,
`
`SEND USER NAME,
`HOST NAME, DISPLAY
`NAME, VENDOR NAME,
`AND PRODUCT NAME
`TO LICENSE FINDER AT
`FINDER NODE
`
`228
`
`READ LICENSE
`ADDRESS AND
`RETURN
`
`230
`
`[Figure 12
`
`IPR2017-01291
`Ubisoft EX1009 Page 13
`
`
`
`Sep. 23, 1997
`
`US. Patent
`236 \
`
`Sheet 13 of 15
`
`5,671,412
`
`238
`
`READ
`CONFIGURATION
`FILE
`
`240
`
`GET NEXT
`CLIENT
`REQUEST
`
`242
`
`' LOOK UP ADDRESS
`BASED ON
`USER/HOST/
`DISPLAYNENDOR/
`PRODUCT
`
`244
`
`RETURN ADDRESS
`TO CLIENT
`
`246
`
`{Figure 13
`
`IPR2017-01291
`Ubisoft EX1009 Page 14
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 14 of 15
`
`5,671,412
`
`190, 190'
`
`250
`
`ATTEMPT LICENSE
`CHECK OUT FOR
`DESIGNATED PRODUCT
`
`254
`
`YES
`
`252
`
`256
`/
`OUTPUT "OK"
`AND EXIT
`
`EXAMINE NEXT LICENSE
`RECORD FOR
`DESIGNATED PRODUCT
`
`260
`
`DONE WITH
`LICENSES FOR DESIGNATED
`PROGRAM?
`
`258
`
`/264
`
`266
`
`OUTPUT A DESCRIPTION
`OF LICENSE FOR
`EXAMINED RECORD
`I
`ATTEMPT CHECK OUT
`FOR DESIGNATED
`PRODUCT
`I
`OUTPUT STATUS
`
`?gure 14
`
`270
`
`272
`
`TATUS = "CAN
`CON NECT"?
`
`YES
`
`USER
`WISHES TO RUN
`CONNECTION
`DIAGNOSTICS?
`YES
`
`IMPLEMENT
`CONNECTION
`DIAGNOSTICS
`
`274
`
`IPR2017-01291
`Ubisoft EX1009 Page 15
`
`
`
`US. Patent
`
`Sep. 23, 1997
`
`Sheet 15 of 15
`
`5,671,412
`
`276
`
`274
`A/
`
`288
`
`286
`
`PAST END
`OF ADDRESS
`RANGE?
`
`284
`
`INCREMENT
`NETWORK
`ADDRESS
`
`————>
`
`2
`START AT FIRST
`NETwoRK ADDRESS / 7 8
`ON SERVER NODE
`
`_l___
`
`ATTEMPT
`CONNECTION AT
`THIS ADDRESS
`
`280
`
`282
`
`OUTPUT THAT
`UNKNOWN
`294\ PROCESS IS AT
`THIS ADDRESS
`
`SEND MESSAGE
`TO DETERMINE IF /290
`CORRECT
`LICENSE SERVER
`
`RESPONSE?
`
`292
`
`OUTPUT THAT
`WRONG SERVER IS AT
`THIS ADDRESS
`
`CORRECT
`LICENSE
`SERVER?
`
`296
`
`figure 15
`
`OUTPUT THE
`coRREcT ADDRESS
`FoR THE SERVER
`
`/300
`
`302
`
`IPR2017-01291
`Ubisoft EX1009 Page 16
`
`
`
`1
`LICENSE MANAGEMENT SYSTEM FOR
`SOFTWARE APPLICATIONS
`BACKGROUND OF THE INVENTION
`The present invention relates generally to a license man
`agement system suitable for licensing and managing the
`usage of software products.
`Software piracy has long been a problem that has plagued
`software developers. The unauthorized copying of software
`products by users often causes signi?cant losses of sales for
`software developers. Accordingly, a variety of protection
`schemes have been developed to protect software from
`unauthorized copying and which also allow a legitimate user
`to operate the software.
`A popular approach to protect software is to provide
`licenses to end users rather than selling the software directly
`to those users. A user is licensed by the software vendor to
`use the software under certain conditions that prevent'unlim
`ited use and/or copying of the software. Software vendors
`use different methods or “license policies” to license soft
`ware. Commonly used license policies include “node
`locked” licenses, “?oating” or “concurrent usage” licenses,
`“site” licenses, and “metered” licenses, each of which uti
`lizes a di?erent way of determining when or where a user
`can use a software program. The “node-locked” license
`allows a program to be used only on a speci?c computer
`node in a network (or by a speci?c user). One method of
`assigning a unique identi?er to a computer system is to use
`hardware means, such as a hardware key or other methods
`that are Well known. The “?oating” or “concurrent usage”
`license allows only a predetermined number of copies of the
`software to run simultaneously on the network, regardless of
`the node on which the software is running. The “site” license
`allows the licensed software to be used anywhere within a
`licensed company or other de?ned area or organization.
`Finally, the “metered” license allows a predetermined num
`ber of activations or uses of the program. or a predetermined
`amount of time which the program can be run on a central
`processing unit (CPU) of a computer.
`Software vendors can provide other features to a software
`license policy. For example, the level of enforcement of the
`license can vary in different licenses. A software vendor can
`provide a high level of enforcement, which might never
`allow the program to be used if the license is violated. A low
`level of enforcement can also be provided by the software
`vendor, so that, for example, a program can still be used
`when the license is violated and a warning is issued to the
`user.
`Many software vendors use a license management system
`to enforce a software policy. Such a system typically
`includes a computer network and a license server or “license
`manager” that is often provided at a server node or similar
`host location on the network which all computer nodes on
`the network can access. The license manager can receive
`requests from computer nodes for speci?c licenses and send
`out answers to those requests to the speci?c nodes. The
`license manager can keep track of all the various programs
`licenses that have been “checked out” by client computer
`systems and can determine when a request would violate a
`license. For example, the license manager can check the
`node identi?cation of a client computer that requests a
`license for a node-locked program. Or, the license manager
`can keep track of how many programs or licenses are being
`used at once under a concurrent use license, or how long a
`program has been used under a metered license.
`One problem that has been seen in conventional license
`management systems concerns the licensing of “packages”
`
`15
`
`20
`
`25
`
`30
`
`35
`
`45
`
`55
`
`65
`
`5,671,412
`
`2
`or “suites”. A package includes several component programs
`and license information for each component program. Suites
`are a type of package in which a combination of two or more
`software programs that were originally sold separately but
`have since been combined and sold as a single package for
`marketing purposes. For example, Microsoft O?ice® sold
`by Microsoft Corporation includes three component pro
`grams that were originally sold separately: Microsoft
`Word®, Microsoft Excel®, and Microsoft Power Point®.
`Using current license managers, no package license for the
`combined products is available to allow the suite to operate
`under the license manager. Also, current license managers
`do not have the capability to allow the degree of interaction
`of licenses necessary to implement such a package license.
`For example, the use of one component program of the suite
`should tie up the use of the other component programs in the
`suite for a single license available for the package. Thus,
`with a single package license, one user could not operate one
`program in the package while another user operated another
`program in the same package. Prior art license managers are
`not capable of delegating program usage for this type of
`program organization.
`Another problem that has been encountered with existing
`license management systems is the ability of a client com
`puter node to locate a license server to retrieve a license for
`a designated program. The problems of ?nding a server on
`a network are made more di?icult in a license managed
`network, since license management servers cannot be freely
`moved due to the nature and security of licenses. For the
`same reason, it is not desirable that license servers be
`duplicated on a network to assist in locating a server. The
`variety of existing methods for locating a license server each
`have their own problems. Some systems use a license ?le
`which contains the network address location of the license
`server. However, this license ?le system requires increased
`administration overhead at large sites when new nodes are
`added to the network. Other systems use a predetermined
`server location; however, this type of system can cause
`problems when two software vendors choose the same
`network address for the license server, resulting in a con?ict,
`or when the license server node is changed. Still other
`systems utilize a network broadcast to locate a license
`server. However, in large networks, such broadcasts are
`generally unacceptable due to a number of problems created
`by the broadcasts, such as excessive network tra?ic. Finally,
`still other systems utilize a general purpose location broker.
`However, such location brokers typically utilize network
`broadcasts, which are unacceptable in large networks, as
`Well as requiring large administrative overhead.
`Still another problem in prior license management sys
`tems involves a lack of ?exibility in distributing licenses to
`requesters. In many situations, a requester may not have
`access to a program due to a strict license policy but may
`have special need for such access due to emergencies or
`other needs. Or, a failure in the license management system
`may prevent a requester from using a program in prior
`systems, even when the requester has a special or emergency
`need for use of a program. Also, the platform of the client
`computer system may play a role in determining the amount
`of required licenses for a program used on that platform.
`Since some platforms can process data much quicker than
`other platforms, the faster platforms can be required to
`consume more licenses than a slower platform. The ability
`to distribute licenses when taking into account these factors
`does not exist in prior license management systems.
`Yet another problem found in existing license manage
`ment systems is that there is no ability to diagnose problems
`
`IPR2017-01291
`Ubisoft EX1009 Page 17
`
`
`
`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 e?’ect of this poor documentation is that
`failures in the system are di?icult 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.
`
`SUMlMARY OF THE INVENTION
`
`An improved software license management system in
`accordance with the present invention is disclosed. Alicense
`server of the present invention provides package and pro
`gram licenses and allows several license modi?ers to be
`stored in license records to provide a licensor with a variety
`of options and ?exibility. A server address ?nder and diag
`nostic function mitigate common license server network
`problems.
`The license management system includes a license server
`that initializes a license database by ?rst receiving one or
`more package license descriptions. each describing a pack
`age license associated with a software product including
`component license 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 component license record is created in
`the license database for each component license description
`in the matched package license description.
`Each of the license records includes a number of licenses
`available for the software product associated with the license
`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 package is a suite. When a
`package is a suite. a suite license record for the suite 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 times that 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 component license record is also automatically
`checked out. Thus. when a suite license is checked out by a
`client. no other client may use a component license linked
`with the suite license record unless another suite license is
`checked out.
`Each component license 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 components of higher level
`packages. The component license 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 modi?ers. An overdraft quantity
`indicates a number of licenses that can be provided to clients
`over the authorized amount of licenses stored in the license
`records. A fail safe indicator indicates that licenses can be
`
`20
`
`25
`
`35
`
`45
`
`55
`
`65
`
`5,671,412
`
`4
`provided over the amount of licenses stored in the license
`record to clients when a failure occurs in the license man
`agement system. A minimum quantity indicates a minimum
`amount of 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 of the 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
`according to 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 package license is granted. di?’erent 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 of licenses requested plus licenses in use by clients
`in the user list is less than or equal to the available number
`of licenses 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 ?nder located on the network to
`provide a license address for the license server. A license
`request is then sent by the client to 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 in the status message. The
`license policy may not allow the designated program to be
`used when the 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 ?nd the license server
`when the license server cannot normally be located.
`The ?nder is used for locating the license server on the
`network implementing a license management system. The
`?nder receives a request from a client computer system for
`a license address of the license server. Alicense 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 name of the client computer system.
`
`IPR2017-01291
`Ubisoft EX1009 Page 18
`
`
`
`5
`a terminal name of said client computer system, and/or
`vendor name of the client software.
`The present invention advantageously provides an
`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 modi?ers, including
`overdraft. minimum, fail safe, and capacity, allow the licen
`sor to provide a variety of options and ?exibility to clients.
`The server address ?nder and diagnostic function of the
`present invention allow common license server network
`problems to be e?iciently circumvented or alleviated
`These and other advantages of the present invention will
`become apparent to those skilled in the art after reading the
`following descriptions and studying the various ?gures of
`the drawings.
`BRlEF DESCRIPTION OF THE DRAWINGS
`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 certi?
`cate received by the license server;
`FIG. 3 is a ?ow diagram illustrating a method of imple
`menting the license server of FIG. 2;
`FIG. 4 is a ?ow diagram illustrating a method of initial
`izing the license database (step 54 of FIG. 3);
`’
`FIG. Sis a ?ow diagram illustrating a method of creating
`and entering a license record in the license database for a
`component in a package (step 80 of FIG. 4);
`FIG. 6 is a ?ow diagram illustrating a method of creating
`and entering a license record in the license database for a
`suite (step 78 of FIG. 4);
`FIG. 7 is a ?ow diagram illustrating a method of entering
`license data into a license record and entering the license
`record in the license database (step 74 of FIG. 4);
`FIG. 8 is a ?ow diagram illustrating a method of process
`ing a license request from a client (step 58 of FIG. 3);
`FIG. 9 is a ?ow diagram illustrating a method of deter
`mining if a license is available for a requested product (step
`144 of FIG. 8);
`FIG. 10 is a ?ow diagram illustrating a method of the
`present invention for requesting a license from a client
`computer system;
`FIG. 11 is a ?ow diagram illustrating an alternate method
`of the present invention for requesting a license from a client
`computer system;
`,
`FIG. 12 is a flow diagram illustrating a method of locating
`a license server using a ?nder of the present invention (step
`186 of FIG. 10);
`FIG. 13 is a ?ow diagram illustrating a method of
`implementing the license ?nder of the present invention;
`FIG. 14 is a ?ow diagram illustrating a method of
`implementing a diagnostic process of the present invention
`(step 190 of FIG. 10); and
`FIG. 15 is a ?ow diagram illustrating a method of
`implementing the connection diagnostics of the diagnostic
`process of FIG. 14.
`
`30
`
`35
`
`45
`
`55
`
`65
`
`5,671,412
`
`15
`
`25
`
`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 sldlled 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 license server 16 serves as a “license manager” for
`the computer systems 12 and for other servers (not shown)
`that may be included in system 10. License server 16 stores
`licenses for software programs available to computer sys
`tems 12 and assigns or “checks out” these licenses to client
`computer systems 12 that request a license. Herein, the term
`“license” is used to designate permission or authorization for
`a client computer system to use or “implemen ” (run) a
`single designated software product, such as a program, or to
`view data incorporated in the software product. The vendor,
`supplier, or manager (“licensor”) of the software typically
`provides the licenses for users on the network. For example,
`if a user Wishes to operate a designated computer program
`on a particular computer system 12 (i.e., run or execute the
`program on the central processing unit (CPU) of that com
`puter system), then the program (or a license program)
`instructs the computer system to send out a license request
`’ over license management system 10 to the license server 16.
`The license server 16 receives the license request and
`50
`determines if the requesting client computer system is
`allowed check out or be assigned a license for that program,
`i.e., allowed to run or use the program. Preferably, a license
`is checked out to a client computer system only if the
`requesting computer system is allowed to have the requested
`license according to a predetermined