throbber
United States Patent
`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

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket