Sign In to Follow Application
View All Documents & Correspondence

Dynamically Configuring, Allocating And Deploying Computing Systems

Abstract: ABSTRACT DYNAMICALLY CONFIGURING. ALLOCATING. AND DEPLOYING COMPUTING SYSTEMS Computing systems can be dynamically configured, allocated, and deployed based on user requirements. For example, a user can request a number of servers lor dynamic conliguration, aiiocation. and deployment. Embodiments provide a quick and efficeint way lor users to test code and programs, debug code and programs, and/or perform other conliguration and testing operations using one or more computing systems, such as a cluster of servers. Reserved systems are dynamically configured with necessary code and/or content according to user requirements. The reserved cluster of systems can be returned to an available pool once a reservation expires, allowing the returned systems to be used for a subsequent reservation.

Get Free WhatsApp Updates!
Notices, Deadlines & Correspondence

Patent Information

Application #
Filing Date
26 February 2009
Publication Number
24/2009
Publication Type
INA
Invention Field
COMPUTER SCIENCE
Status
Email
Parent Application
Patent Number
Legal Status
Grant Date
2018-11-29
Renewal Date

Applicants

MICROSOFT CORPORATION
ONE MICROSOFT WAY, REDMOND,WASHINGTON 98052-6399

Inventors

1. LIN,CHI-MING,
ONE MICROSOFT WAY, REDMOND,WASHINGTON 98052-6399
2. ZHOU,SHENG
ONE MICROSOFT WAY, REDMOND,WASHINGTON 98052-6399
3. NANDAN,DURGESH
ONE MICROSOFT WAY, REDMOND,WASHINGTON 98052-6399
4. ALBERTSON,JEFFREY,LEE
ONE MICROSOFT WAY, REDMOND,WASHINGTON 98052-6399

Specification

|000l| 'I'cchiioiogy has become an integral part in the day-to-day operations of many,
if not most, business models. Some business models reiy on a targe number of computing systems in the day-lo-day operations; often referred to as an enterprise setting. Currently, a number of administrators and associated support are tasked with the difllculi and often lengthy undertaking to configure and deploy each computing system. For example, an administrator and support staff may spend many hours and days setting up and configuring a server farm for an organization. Moreover, in certain circumstances, a previously configured computing system may need to be reconfigured for a particular purpose, Ihe reconfiguration can take just as long or longer as compared with the original deployment. Ihis is an inefficient and costly process.
|0002] An example serves to illustrate the inefficient, costly, and in many cases,
cumbersome process of configuring and deploying several computing systems. In this
example, a tester needs to replicate a server cluster to perform content testing. 1 he tester
first needs to call-in or e-mail the replication request. After receiving the request, a system
engineer searches for available servers to satisfy the request. If the requested number of
servers are available, the system engineer rebuilds the servers in accordance with the
configuration request and sends status e-mails (or makes calls) to relevant parlies.
[0003] Next, the system engineer has to manually create a new machine.xml file
including adding new server names. The system engineer then pulls the shipment file for the particular cluster. A shipment file can be described as a file or program that includes code and content jobs which have deployed to certain a particular cluster and/or environment. Ihe system engineer then uses a deployment too! (e.g. command line dispatch) to deploy relevant bits on the servers,
6
[0004] Once each server has been successfully eonl'igured and deployed, the system
engineer sends an acknowledging e-mail or makes a call to the relevant parlies, including a request to inform the engineer once the servers are no longer required. Adding lurther difficulty to the problem, the system engineer has no easy way to track all of the information associated with the particular configuration and deployment. I'hus. the current .state of configuring and deploying multiple computing systems typically requires many man hours and can be a costly and error prone process.

1
SUMMARY
|()()05| This summary is provided to introduce a selection of concepis in a simplified
lorm thai are i'unhcr described below in the Detailed Description. This summary is not intended to idcntily key features or essential features of the claimed subject matler. nor is it intended as an aid in determining the scope of the claimed subject matter. |0006| Embodiments are provided to dynamically configure, allocate, and/or deploy one or more computing systems based on user requirements and/or input- deserved systems can be dynamically configured with necessary code and/or content according lo user requirements. For example, a number of servers can be dynamically conligurcd. allocated, and deployed according to a user request. I'he dynamically deployed servers can be used to quickly and efficiently test code and programs, debug code and programs, and/or perform other conliguration and testing operations.
(UH071 A reserved cluster of systems can be returned to an available pool once a reservation expires, allowing the returned systems to be reconfigured, reallocated, and/or redeployed for a subsequent reservation. Vox example, servers may be reconfigured from one configuration to a different configuration. Servers also may be reallocated from one service type to a different service type. In various embodiments, a computing system, such as a server for example, can be reserved for particular usage requirements and/or for specified amounts of time. Based on the reservation requirements, the computing system can be dynamically configured to maintain a particular configuration through a reservation period.
|00U8| 'I'hesc and other features and advantages will be apparent j'rom a reading of ihe
following detailed description and a review of the associated drawings. It is u^ be understood that both the foregoing genera! description and the Ibllovving detailed description are explanatory only and are not restrictive of the invention as claimed.
BRIHK DESCRIPTION OF THE DRAWINGS
(tXtO^I ITGIJRE 1 depicts a block diagram of a computing network.
|()01((| FlCiURIv 2 is a diagram illustrating a number of tables.
HJ(U\| ITGUR-HS 3A-:^B depict a flow chart of the configuration, allocation, and
deployment of one or more serving computers.

|0(H2| I'lGLJRIiS 4A-4I depict functional block diagrams of a network and the
configuration, allocation, and deployment of one or more serving computers.
[0013| FIGURES 5A-5C depict various instances of a user interface.
|0()14| FIGURE 6 is a diagram illustrating a number of tables.
[OOlSj FKiURIi 7 is a block diagram illustrating a computing environment for
implementation of various embodiments described herein.
DHTAiLHO Dl-SCRIFI'ION
[0(H6j FJnbodiments are provided to dynamically configure, alloeale. and/or deploy
one or more computing systems in a network. In an embodiment, a user can reserve a
cluster of servers, wherein the cluster is dynamically configured, allocated, and deployed
according to the user's requirements. Embodiments provide a quick and eftleiem way for
users to test code and programs, debug code and programs, and/or perform other
contiguration and testing operations using one or more computing systems, such as a
cluster of servers. For example, a number of servers can be reserved or requested with
particular deployment details according to a desired implementaiion. fhe number of
servers can then be allocated from a common pool. Once allocated, the number of servers
can be configured by installing an operating systems (OS), middleware, and/or test bits in
accordance with the requested deployment details. The configured scr^'crs can ihen be
deployed in time to coincide with the start of the reservation. Any necessary nolilkations
and status information can be automatically provided to one or more users to successfulK
interact (e.g. for testing purposes, debugging purposes, etc.) with a reserved cluster,
|IK)17I FIGURE I is a diagram of a computing network 100, according to an
embodiment. As described below, components of the computing network 100 are conligured and can operate to dynamically configure, allocate, and/or deploy one or more computing systems in the network 100 or another network. For example, components oj' ihe computing network iOO are configured and can operate to dynamicalK conllgurc, allocate, and/or deploy one or more systems of a system pool (e.g. system pool 102, system pool !04) in the neiwork 100. Additionally, the components can be used lo reser\c one or more computing systems for one or more tasks and for a desired amount of lime, (0018) The components of the computing network 100 are further conliguied and can operate to dynamically reconfigure, reallocate, and/or redeploy one or more computing systems in the network 100 or another network. As used herein, computing system refers

to any computing device or system, including servers, desktops, handhelds. laptops, and other computing devices and systems. As used herein, the term "network" encompasses any conllguralion of computing devices which are transferring and manipulating information and can be implemented as a wired network, a wireless network, and/or a combination of a wired and a wireless network. While FIGURE 1 depicts a networked conllguration, other configurations are available.
)0019| As show^n in I-IOURE 1, Ihe network 100 includes a network A and a network
B. As described below, one or more web components and other components are
associated with the network 100. including network A and network li. Network A and
network B include a number of components which are configured to provide the dynamic
configuration, aliocalion. and/or deployment of a number of computing systems IVom one
or more system pools 102 and 104. such as one or more servers from a server pool. While
various components are shown to be included in the network 100, the various components
can be otherwise located and/or shared between one or more networks. Moreover, the
network 100 can include a greater or smaller number of components,
[00201 In an embodiment. Network A and Network B are in communication via a
storage area network (SAN), The SAN is configured to keep software librar; shares in sync. SAN is configured so that data and other informational storage can be uncoupled Imm computing systems (e.g. servers) and attached directly to the network KM), B> sharing storage on the network 100, the SAN enables highly scalable and fiexible storage resource allocation, high efficiency backup solutions, and better storage utilization, |002II Network A and Network B each include a software library 106 and 108. respectively. In an embodiment, the software libraries 106 and 108 includes files, packages, versions, and/or other dala/information that can be accessed and used to configure a computing system. That is, the software libraries arc configured as central repositories or refei-enee.s that can be accessed to configure a computing sy,stem, but are not so limited. Network A and Network B each also include an operating system ser\ice 110 and 112, respectively, fhe operating system services 110 and 112 arc configured to perform various tasks at various times, as described below. For example, the operating system services 110 and 112 are configured to execute deployment steps, pcribrm svsteni maintenance, track reservations status, return servers to the server pools, start and continue configuration steps, send notifications, etc.

|iK122| In one embodiment, the operating system services 110 and i 12 arc conligured
lo execute one or more deployment steps (described below) as required. The operating s\stem services 110 and 112 make calls to stored procedures in databases 122 and 126 lor a first number of deployment steps, 'fhe operating system services 110 and 112 include functionality to implement the remaining deployment steps (e.g. Dispatch and Add Users), fhe operating system services 110 and 112 also make proxy calls to manage Keservaiion Status. Deployment Status. Availability Status, and to track state changes (c-g. rescr\ations expire, new reservations made, deployment steps fmish, etc.) in ihe database 114. The operating system services !I0 and 112 are further configured to .send notilkalions including, but not limited to: beginning of a reservation: 24 hours to or expiration of a reservation; deployment lo a reservation begins, completes, or encounters an error: push new build releases (e.g. Ol-'FICE build releases) to the software library 108; maintain entries for the builds in the database 114; and, clean up aeeumulations of machinc.xml and shipment files associated whh file shares.
11)0231 'he operating system services 110 and 112 arc further configured to dclerminc
whether any tasks are to be performed by periodically querying a database, such as database 1 14. fhe operating system services 110 and 112 perform these queries via a web service 116. using a proxy class for example, [he operating system ser\iccs 110 and 112 can also modify data and other information in the database 114 via the web service 116. The web service is configured to handle communicauons between the various eomponenis of the network 100, such as between the operating system services 110 and 1 i 2 and ihc database 114. While the web service 116 is shown Vo be in communication vvilh Nct\vorl< A and Network B, it is not so limited.
|0()2-li In an embodiment, the web service 116 includes the ibllowjng functions, but is
not so limited:
[0(I25| OoDeploymcntStcps{int iResvlD, int iFlcploymentStepl-lags ) - Calls
pre do dept steps lo set reservation's pending deployment steps and set its Reservation Status to Deploying.
|0()2(i] Schedulel.-A'ent( string slrTeslServerName, string strliventName ) - Schedules
an I'A'cnt by calling sp_ins event schedule IPO.
|(I027| CreateResv( ... ) - Creates a new reservafion by calling pre create resv.
Inputs correspond to parameters of pre create_resv. Returns the ID of the newly-made reservation.

10»28| lsClusierAvailNow( int ResvlD > - Returns a boolean indicating whclhcv
deployment lor ihe reservation in question can begin immediately b\ calling
pre is cluster avail nov\. Inputs are the ID of the reservation in question.
|0((29] CancelResv( int ResvID ) - Cancels a reservation by calling pre cancel resv.
Inputs arc the ID of the reservation to be cancelled.
|((fl30] GctResvlnfo( int ResvID ) - Returns info about a reservation by calling
pre get resv info. Fields in the returned recordset correspond to the columns in iblResvs.
Inputs are Ihe ID of the reservation in question.
|(K)31| (JpdaieResvinfo( intResvID, ... ) - Updates information about a reservation in
tbIResvs by calling pre_update resv_info. Inputs are the ID of the reservation in question.
and then correspond to the columns in tbIResvs.
|0032j (ietServerAvaiiCount{ int iDomainlD, DateTime dtStart, DatcTime dilind ) -
Returns the number of server pool servers available in a domain for a dale range by calling
pre gel server avail _count_info. Inputs are the domain ID for the domain in queslion,
the start of the date range, the end of the date range.
|0()33] CietShipmentfileListO - Returns a recordset of available shipment tiles for use
by dispatch.exe by querying the CMDB.
|()034| GetOfliceBuildsO - Returns a list of available public OFFICI- Builds fo:
deployment to a reserved cluster by calling prc_get_officc builds.
[0035| GetExpiredResvsO - Gets a list of expired reservation IDs by calling
pre get expiredresvs.
|0036! GetNewRcsvsO - Gets a list of new reservation IDs by calling
pre get ncw_rcs\'s.
jlM)371 With continuing reference to PIGIJRF. 1, the web service 116 includes a user
interface I 18. The user interface 118 can be used to interact with the components of
network 100. For example, a user can use the user interface 118 and the web ser\ ice I 16
to access various procedures stored in database 114 to create and manage rescr\ations. and
to view reservation and availability status. In an embodiment, the user interface 118
consists of three pages: the Mome Page, the New Reservalion/lidit Reservation Page, and
the My Reservations/Administration Page (see FIGURES 5A-5C). fhe user interface I 18
is conllgurcd to query and modify data via calls to the web service 116. Data submiltcd ba user using the user interface 118 is stored in the database 114.

|0()3S| 'Ihc database 114 includes information required to complete the eonfiguralion.
allocation, and/or deployment of one or more computing systems, such as the eonliguralion. allocation, and deployment of a number of test servers for example, fhe daiabasc 114 can include reservation details and status, deployment details and status, availability details and status, etc.. described further below. For example, the database 114 ean include information such as the number of servers in the server pools, server names, server types, server roles, server reserve start/end times, past reservations, server deployment options, and other associated information. While the database 1 14 is shown to be included as part of Network A. in allemative embodiments. Network B can also include a similar database.
jOOJOl With continuing reference to t*'IGURIi, i. Network A includes a number iil'
scripts 120 and an associated database 122. Network B also includes a number of scripls
124 and an associated database 126. Each server in the s>stem pools 102 and 104 can also
include a number of scripts, described below. The scripts include batch seripis lor
performing one or more deployment procedures or steps, as dcseribed below, for
example, each script can be associated with an event. The associations, and other e\en[
data, ean be stored in the databases 122 and 126. When a seheduled time of an event
occurs, a script can be executed that is associated with the event.
|(K)40] In an embodiment, ihe scripts include, but are not limited lo:
[00411 f^S Installation Script (InslallOS.bat) - Installs an OS and joins a server lo a
domain. Code can be shared from INETNUKEl.bat and rNETNUKE2,bat.
|0()42j Debugging Tools Installation Script (InstallDebugging'fools.bat) - Installs
debugging tools for a reservation.
|0043| Type Scripts include:
i. IIS,bat - Installs sotfware, sets configuration settings to create a
Web server, ii. SQ!..bat - Installs software, sets configuration settings lo create a
SQL server, iii, SEA.bat - Installs software, sets configuration sellings lo create a
Search server, iv. CDS.bat - Installs software, sets configuration sellings to create a
Content server.
|0044| Role Scripts include:

i. ilS-AWSl.bat - installs sottwarc, sets conijguration settings on ihc
lis box for the AWS web service with anonymous access, ii. IIS-AWS2.bat - Installs software, sets configuratiDn settings on the
lis serv-er Ibr the AWS service with Passport aulhentication, iii. IlS-Redir.bat - Installs sollware, sets configuration settings on the IIS server for the OFFICH redirect service and clicnl/ser\er redirect scr\ice. iv. ItS-R&R.bat - Installs software, sets eonliguvalioii seVVii^gs on the
US server (or the OFFICE Research & Reference service. V. SQL-AWS.bal - Installs software, sets configuration sellings on the
SQL server for the AWS service, vi. Cl^S-R&R.bat' Installs software, sets configuration settings on the
COS server for R&R service, vii, CDS-Search.bat - Installs software, sets configuration settings on
the ('OS server for the AWS service, viii. IlS-lPO'fool.bal - Installs software, sets configuration settings on the US server for the IPO tools front-end. ix. lIS-IPOservice.bat - Installs software, sets configuration settings on
the lis server for the IPO tools service.
\. SQL-IPOTools.bat - Installs software, sets configuration .settings on
the SQL server for IPO tools.
(00451 ^^ is '^^^ uncommon for computing systems (e.g. data ccmcv servii^g
computers) to have dilferent hardware configurations based on a type. I'or example, SQL servers typically have bigger hard drives as compared to web servers. Ihc dilferent hardware configurations can require different configurations during setup, such as partition settings for example. Due in part to these hardware differences, it can be difficult to use a system with one type of hardware configuration, as another type of system. Thus, in aa embodiment, systems having similar hardware configurations are distinguished and aggregated in the system pools 102 and 104.
|(((I46| In an embodimijnt, the systems can be configured according to a rcc|ueslcd
l>pc. For example, common server types include SQL servers. Comenl servers, and web servers. During the setup process, systems of the same type may have different middle tier software installed due in part to a service to be hosted. For instance, one type AWS web

Huiii-enu nas rassport installed while another AWS web server does aol require ['assporu Thus, dynamic server ailoeation and the setup process (e.g. NNP process) can apply dilTcreni middle tier eomponents lo the same type of system according m the hosted service Ibr an associated reservation.
[0047] As used herein, "'type'" refers to a kind of platform software that can be
inslaiied on a computing system. "Role" refers to a function for the associated computing
system, Hxcmplary roles include, but are not limited to: l~E-AWSl which vefcrs to IVunl-
cnd server for AWS web service with anonymous access; l-'E-AWS2 which refers lo Iroiit-
cnd server for AWS service with Passport authentication; FE-Redir which refers lo front-
end server for OFFICE redirect service and client/server redirect service; Fl-'-R&R which
refers to front-end server for OFFICE Research & Reference service; SQI.-AWS vvhieh
refers to back-end SQL server for AWS service; CDS-R&R which refers to content server
for R&R service; COS-Search which refers to search server for AWS service; FF-lPO 1 ool
which refers lo web server for IRQ tools; FE-IFOservice which refers to a server for IPC)
tools; and, SQI.-IFOTools which refers to the SQL server for IPO tools,
|(M)481 The first part (before the hyphen) of the roie is the type and the second pan
(al'ter the hyphen) indicates the service it can host. NNP scripts can be modulated for each server type and role, fhus, each role ean be associated with a type (e.g. IIS (Web), SQL (Database), CDS (Conlent), SKA (Search)). Moreover, a computing system can assume more than one role, but in certain cases, each such role can be of the same type. For example, a test computing system may assume the SQL-AWSI and SQI.--AWS2 roles, hut not both the llS-AWSl andSQl.-AWSl roles,
|0049| Dynamic configuration and allocation can also refer to a situation wherein a
similar type of computing system can be used to install different services, such as OI'FICf: services for example. Moreover, the role of a computing system can change from time to time for different reservations and can depend on its dynamic conliguration and allocation. Take for example, a front-end server that can host an AWS service in one rcscr\ation, while acting as an R&R server in another reservation, A machine,xml lile can be modilied to support such a deployment, fhc machine.xmi lile can be described as an XML formal lile defining which machines receive which packages and particular service configurations. As described below, the machine.xmi file ean be used by a dispatch componcni to perform a deployment according to a desired implementation, fhe dispatch component is conligured to control the installation of packages, services, and the

configuring ol" runtime parameters on remote computing systems, such as one or more
remote servers. Thus, role can be used to indicate a configuration and the code (e.g.
OMICI'^) needed to apply to a type of computing system according to a reservation.
[005()| In accordance with an embodiment, and using the concepts of type and role,
there drc seven steps in deploying to a compuling system, which include, but are not limited to: I. OS Installation; 2. Debugging Tools Installation: 3. "fypc Applieation; 4, Kole Application; 5. 1 loifix Application; 6. Dispatch; and, 7. Add User.-i- h.ach of deployment .steps has a corresponding deployment stage, including additional depIo\mcni stages, which include, but are not limited to: 0. Not Yet Started; I. OS In^ilallation: 2, Debugging lools Installation: 3. Type Application; 4. Role Application; 5, Ilotlix Application; 6. Dispatch: 7. Add Users; and, 8. I'ini.shed.
HMtSl) The deployment steps can be tracked with a number of deployment Hags, hi
an embodiment, the deployment flag values correspond with the first seven powers of two. The I'abic below illustrates deployment tlag values and the corresponding depioymeni step,

|(|052| As described above, each computing system may not nccessin*il\ undergo all
^even deployment steps, rhe deployment flags can be used to indicate in a single value all
deployment steps that apply to the computing systems in a reservation. l-"or instance, all
se\en deployment steps can be indicated by adding the flags corresponding to all seven
deployment steps: 1 ^-2^-4 < 8+16 1-32+64 -= 127. If the Debugging 'fools installation step is
not required, this can be indicated with the value l+4i8+l6i 32-t 64 125.
|0053| In an embodiment, there are various kinds of scripts which correspond to the
deployment steps, these include, but are not limited to; I. The OS Installation script is used

U) execute code on eacli computing system in a reservation; 2. I'he Debugging Tools Installation script is used to execute code on each computing system in a reservation; 3. The Type Application script corresponds to a script to execute dil'lerent code according to each type; 4. The Role Applieaiion script corresponds to a script to execute different code according to each role; and, 5. a Hotfix Application script is used to execute code on each computing system in a reservation.
|UI(54| Additionally, as described above, each script can be associated with an event
in the databases 122 and 126. Events can be scheduled for a particular compming system
by the operating system service 110 or 112. The operating system service 1 1(1 or I 12 is
conllgured to call stored procedures in the respective databases 122 and 126 to schedule an
associated event. When the scheduled evenrs time arrives, the script associated with the
event is pushed onto the larget computing system by the operating system service 110 or
112. and executed, fhat is, each script is configured to run locally on a computing system
to which the script is deployed. As the script associated with a scheduled event executes.
the script execution start time, end time, success/lailure status, error codes, cic. can be
written to an associated database 122 or 126. Script execution data is then pushed to the
database 114 by the operating system service 110 or 112, by proxy of the web service 116,
HK155] As described above, the database U4 serves as a repository for infoniiation
associated with the configuration, allocation, and/or deployment of one or moa* compuiing systems. In an embodiment, the database 114 stores the reservation inlormalion that is required lo provide the dynamic deployment of a test server cluster. As described bclou. the database 114 also maintains a number of status identifiers, such as: reservation status for an entire reservation, deployment status lor each computing system in a reservation, and availability status for each computing system in a system pool, but is not so limited. |()056| Reservafion information includes, but is not limited to: reservation start and end dates; reservation type (e.g. Basic, OFFICE Build. Private Release, Duplicate Cluster): the number of systems in a cluster reservation; the role and type of each svstein in a reservation; the location of any machine.xml and shipment files associated with a reservation; and, a reservation's friendly name and purpose. In an embodiment, the reservation inlbrniation is stored in a reservation table of the database 114. KKJURE 2 is a diagram illustrating a number of tables, including a reservation table structure ol' an embodimenl. As described above, the deployment steps can vary by deployment type and can be stored in the DeplSteps field, 'fhc DepiSteps field value is the combination of

depio}'menl step Hags which represent the necessary deployment .steps lor a particular reservation.
f0057| With continuing reference to FKJURE 2. the status ol' a reservation or
Reservation Status is stored in the RcsvStaiuslD field. The ResvSlatusID Held is joined lo the KesvSlatuslD RescrvationStatusName (able. The Reservation Statuses include: Not Yet Begun, Deploying, Ready. Expiring, and Archived. When a new reservation is created, the Reservation Status is set to Not Yet Begun. The Reservation Status is set to Deploying when: a reservation's begin date arrives, a user redeploys a reservation, and/or an Administrator or ORM takes action against a reservation. The Reservation Status is set to Ready when a Sinai deployment step for a reservation linishcs. I'hc Reservation Stains is set to Ivxpiring when a reservation's time has expired, or when the user expires a reservation (e.g. signs off). Once a reservation expires, any reserved computing systems are released, and the Reservation Status is set to Archived.
[(I058| The status of a deployment or Deployment Status is stored in the ResvsScrvers table. I'he Resvs Servers tabic includes three fields: a Deployment Stage HcW (DcplStagelD); a field (DeplStaVusValuelD) containing one a'i three values: Running, lirror, or Done: and, an Error Code field (DeplStatusError). If the DeplStalusValuelD is not Error, this value will be 0. When a new reservation is created, the values of the Deployment Status fields for each computing system iit the reservation arc set lo Not Yet Started. Done, and 0. When a deployment step begins, the DeplStagelD. DeplStatusValuelD, and DeplStatusIirr values are set to the Deployment Stage 11) coiTcsponding to the deployment step. Running, and 0. respectively. If there is an error in a deployment step, ihc DeplStatusValuelD and DeplStatusHrr values are set to I'rror and the error code. respecti\ ely. If the deployment step completes without error, the DeplStatusValuelD value is set to Done. When the last deployment step linishcs. the Deployment Status field values are set to Ready. Done, and 0. (Also, as described abo\c, when the last deployment step for a reservation finishes, the Reservation Status is sci to Ready),
100591 fhe availability of a computing system {e.g. server availability) or A\ailabilitStatus is stored in the SrvAvail Status ID field of the Servers table oi' ITGURf: 2. The SrvAvail StatuslD field is joined to the SrvAvailSlatuslD_SrvAvailSlatusNamc table. Ihis table defines three Availability Statuses: Unreserved, Reserved, and In Use. During iniliai system setup, the Availability Status for all computing systems is set to LJnrcser\ed,

When a nc\\ lescvvation is made, the Availability Status Ibr the eompming systems in the
rescr\alion is set to Reserved. When a reservation begins, the Availabiliiy Status tbr the
computing systems in the reservation is set to In Use. A reservation also ean be Archived
in certain circumstances. Il'a computing system has been allocated to another reser\alioii
whose Reservation Status is Not Yet Started, then the Availability Status is set to
Reserved; otherwise, the Availability Status is set to Unreserved.
((Ut60| As described above, there are a number of stored procedures that are
associated with the tables shown in FIGURK 2. In an embodiment, manipulation of
intormation in the tables is accomplished through the stored procedures, riie stored
procedures include, but are not limited lo: creating new reservations; get/set reservation
data (^Bcgin Date. End Date, Reservation Type. Deployment Steps, etc.): gevsci
Reservation Status; get/set which systems are associated with a reservation; gct;sei ihc
type and role of a system of a reservation; get/set the deployment steps to be executed ou
systems within a reservation; get list of systems for which a next deployment step must be
executed (e.g. reservations for which the Begin Date has just arrived); get the next
deployment step for system: get list of reservations which have expired: get/set
Deployment Status; and. get/set Availability Status.
(00611 In an embodiment, a number of stored procedures in the database 114 include.
but are not limited:
|0062| prc_crcale_resv( ... ) - Creates a new reservation based on user input to the
New Reservation / Edit Reservation page by creating a new row in tbIResvs, Inputs
correspond lo the columns in tblResvs. Returns the ID of the newly-made reservation.
10063) prc_is_cluster avail_now( RcsvlD ) - Returns a boolean indicating whether
deployment for the reservation in question can begin immediateK. Inputs are the II) of the
reservation in question.
j0064| pre do depl_steps( ResvID, DeplStepl-lags ) - Sets reservation's DeplStcps
value to DeplStcpl-lags. then sets its Reservation Status to Deploying. When the operating
system service wakes up. it will start execution of the Deployment Steps.
10065) preset dcplsiepst ResvID, DcplStepHlags ) - Sets reservation's DeplStcps
value to DcplSlcpFlags.
)006b| pre cancel resv( ResviD ) - Cancels a reservation by marking it as archived in
the Reservations table. Inputs are the ID of the reservation to be cancelled.

|()067I pre gctrcsv info( iResvlD ) - Returns info about a reservation; lields in
returned recordset correspond to the columns in the Reservations tabic. Inputs arc the 10
of the reservation in question.
|II068| prc_update rcsv_ info( ResvlO. ... ) - Updates information about a reservation
in the Reservations table. Inputs are the ID of the reservation in question, and then
correspond to the columns in tblResvs.
[00691 pre add_user( UserName, ResvlD ) - Associates a new user with a reservation
b\ adding lo the Users field in the Reservations table. Inputs are the ID of the user to be
added, and the ID of the rcscrvalion.
1110701 pre get servers_by RcsvlD( ResvlD ) - Returns the servers associated uilh a
reservation by querying Resvs_Servcrs. Inputs are the ID of the reservation in question,
[00711 pre gct_expircd_resvs( Date ) - Returns the IDs of the reservations ihal
expired at the end of a date by querying the Reservations table. Inputs arc the date in
question.
|0l)721 pre get new resvsf l^ate ) - Returns the IDs of the reservations that start liic
beginning of a date by querying the Reservations table. Inputs arc the date in question.
[00731 pre release servers( ResvlD ) - For use at the end of a reservation. Resets the
availability status in the Servers table of servers associated with a reservation ID. Inputs
are the ID of the reservation in question.
[00741 pre gel dispatch info( ResvlD ) - Returns information needed for dispaich
execution by querying the Reservations table. Inputs are the ID of the reservation in
question,
[00751 pi"^ &^^ usersby RcsvlD( ResvlD ) - Returns the names of Uic users
associated with a reservation by querying the Reservations tabic. Inputs arc the ID of the
reservation in question.
|0076| pre gct_ server avail count_info( iDomainlD, iSlart, il-;nd ) -- Returns the
number of servers available in a domain for a date range. Inputs are the domain ID for the
domain in question, the start of the dale range, the end of the date range.
|()077| pre get offiee buildsO - Returns a list of available public OMdC'li iiuiids for
deploymen! to a reserved cluster from the OfficeBuilds table.
|0078| fhe databases 122 and 126 also contain a number of stored procedure
including, but not limited to:
100791 C;RliAl"li procedure sp ins_event schedule_IPC)

|l)t)80] '«)event id int.
|OOSl| fajname \archar(64},
|()0X2| :(/)next_task seq itil - 0,
|()083| ft/}dcfcr mins im - 1
j0084| as
|()085| declare :i:/)scJieduie id int
|0l»86j declare ;'a;scheduic .id2 ini
j()087| declare '^tycompuler id int
[008H| select ;'((;cofnpulcr_id = computer_id
|0(l89j I'rom computer
[0(1901 where name -"- @name
2
|0091| exec rt^scheduleid -= sp_get_next_system_id 'KVEN1 SCIH-DUl.l; ID'
[0092J exec (aischcdule_id2 = sp_de 1 event_ schedule eomp event (S-icompulcr id.
:'i/'C\eni id
|0((93| begin iransaclion
10094| insert into e\cnt schedule
[00951 (schedule id, computer id. evcnt_id, start time, next ta^k scq.
delev mills)
[00961 values
\W)'il\ { i'tijscheduieid. ^compuier id, @event_id, (ici,Oale(), ftfinext Uisk seq.
■ a^dci'cr niins )
10098] ir('i/;/a;crror'=0)
[00991 begin
[OOlOOj rollback transaction
lOOIOl] return !
[O0IO2I end
|00I()3j commit transaction
[00104[ select Vtscheduleid as schedule_id
|00105| GO
[001061 '" accordance with an embodiment, a reservation algorithm is configured to
reserve one or more computing systems of the system pools 102 and 104 based on user
input using the user interlace 118. In one embodiment, the reservation algorithm first
assigns a computing system if the computing system does not have an\- current

reservations. 11'the reservation algorithm has to assign a computing system which already has a reservation, a computing system is selected based on the largest time gap between the existing reservation and the new reservation. The reservation data can be ordered or otherwise structured (e.g. a table or view formal) allowing the reservation algorithm to be simpliiicd and streamlined. The reservation algorithm uses a reservation's start and end dates to ereate a table described below. The data can be generated each lime a new reservation is requested.
j()((l()7j hi one embodiment, the table has three fields: ComputerName refers lo u computing system name; Latestl.aslEnd: refers to the end date ol" the reservation most immediately preceding the start date of the requested reservation; and, liarliestNextSlart refers to a start date of a reservation most immediately following the end date of the requested reservation. It is possible that LalestLastEnd and EarliestNextStan might he null. In such a situation they can be set to an arbitrary date. The data for the table are available by joining all non-Archived reservations in the Reservalions lable lo the Resvs Servers table. In certain circumstances, the resulting join might have more than one entry per server, since some servers might be reserved to more than one reservation. |00]08| One embodiment of the reservation algorithm is as follows: n is the number of servers needed for the reservation Rcsvlj) is a unique reservation id for the new reservation
StarlDate and EndDate are the start dale and end date of the requested reservaiion return whether it was able to allocate enough servers for the reservation boolean Al!oeateServers( n, StarlDate, EndDate, ResvID ) declare SlackResvServers
// allocated Unreserved servers tlrs.! (trivial function)
nAllocatedUnreservedServers = AItocatcUnreservcdScrvers(n.
SlackResvServers )
nNeededServcrs n - nAllocatedUnreservedServers: while nNeededServcrs is greater than 0
if exist nNeededServcrs servers whore ( (SlarlDaie Latcstl.astfjid >0)
&& (EarliestNextStan - EndDale > 0) }
select CompulerName with max StarlDate LateslEndDate:
push CompulerName onto SlackOfAllocaledServers;

extensibilit\'

decrement nNeededServers;
// should modify algorithm slightly lo allow greater forward
// of newly created reservations

else
return J'alse;
// can't allocated enough servers
// might instead call AllocatcServcrs recursi\'cl\ v\iih alternate reservation dates.
// then offer user alternate reservation end if end while while StackResvScrvcrs is not empty
pop ComputerName from StackResvServers
create entry in Resvs Servers table with Resvll) and ComputerName end while return true Imd Function |OOI09| Referring now to MGURJZS 3A-3B, a tlow diagram illu^,trates the conllguration. allocation, and deployment of one or more serving computers or servers in accordance with an embodiment. At 300, a user, using a web client or browser, accesses the user interface 118 to request a reservation. At 302, the user uses the user interface ! 18 to select a time slot associated with the reservation. At 304. the user can select a type of deployment. If the user selects a server setup only, the tlow proceeds to 30(S. If the user selects a shipment file installation, the tlow proceeds to 308. Otherwise, the How proceeds to }]() to accommodate an OFl-'lCT. build/PR installation. At 312, if the user selected the shipment file installation option or the OFFICE build/PR installation option, the user can select a file template associated with the installation, such as an XML file template for e.\ ample.
lOOUUl At 314. the user can select the server types and roles. At 316. the user can then select the number of servers associated with each server type. At 318. it is determined whether the requested servers are available in one or more server pools. If the

servers arc not available, at 320. the user has the option to select a dilTereni time slot and/or rcqucsl a different number of servers. If the requested servers are available, at 322, a inachine.xml liic is generated and the flow proceeds to 324.
UKUUI Referring to i-IGUK.\-l 3B, aV 324. Ihe informaiion associated with the eurrcnl reservation is saved to the database 114. At 326, the depioymeiit begins, including ihe conHguralion of the servers in accordance with the user reciucst (e.g. lypc/role). At 32J^. ii is determined whether the requested deployment was successful. If the deployment did not succeed, at 330. it is determined ii" the machine.xml tile caused the unsuccessful deployment. If the machine.xml file was not the cause of the unsuccessful deploymenl, at 332, a notification is sent to the SH and to users associated with the reservation. At 334, iraubleshooting procedures are implemented and. once the troubleshooting procedures are complete, the Ilow returns lo 326.
|00n2| However, if the machine.xml file was the cause of the unsuccessful deployment, at 336. a notification is sent to the user and/or the OI*M. At 338, the machine.xml file is corrected and the flow returns to 326. On the other hand, if the deploymenl was successful at 328. the flow proceeds to 340, and a notiiication oi' the successful deployment is sent to the user, including any access information (e.g. uscrname. password, etc.). At 342. the deployed servers can now be used by the user and any other iiiilhony,cd it,sers for tcsling and other purposes. At 342, the user has a number of oplion.s. such as extending the test period at 344 or asking for a redeployment of the cluster at 346. |((()113| If the user requests an extended test period, at 348 it is determined whether there arc available servers to satisfy the request. If there are no available servers to satisf\ the request, the ilow proceeds lo 350 where the user and any other users may finish testing and sign out. Thereafter, the flow proceeds to 354 and the servers arc then released back to the server pool(s), if there are servers available at 348, the reservation information is updated at 352 and the How proceeds to 342. If the user has requested a redcploymeni of ihe requested servers, at 356, the machine.xml Hie is changed or updated and ihc How returns lo 326. Otherwise, the flow proceeds lo 354 and the servers arc released hack to the server pool(s).
[00114] ITGURJiS 4A-4I depict functional block diagrams oi' a network 4i)l) and \arious components for configuring, allocating, and deploying one or more computing s\slems. such as one or more test servers of one or more server pools 402 and 404, l;iemcnts of FIGURE 2 are referred to in the following description. As shown in I'lCiliRli

41i. at I.a. the operating system service 406 wakes up and calls the web service 4()K b\ prox> to obtain a list of test servers and the next deployment step required on each test ser\cr. At l.b, the web service 408 queries the database 410 for reservations which have a Reservation Status of Deploying or Expiring.
jOOllSI The web service 40X also finds test servers in the reservations whose DepiStatusValueiD in the Rcsvs Servers table corresponds with Done, i'or these ser\crs. the web service 408 gels the reservation DeplSteps vaiue from Reservations tabic and parses the value for deplojmcnt steps flags. The deployment step Hags are then compared uith test server's DeplStatusStagelD value to determine a next deployment step. At I.e. the web service 408 returns test server/next deployment step pairs lo the operating system scr\icc 406,
]()()l I6| Referring now to FIGURE 4C, at I.d, the operating system service 406 iterates through the returned test server/next deployment step pairs. If the next dcpio)-mcnt step is deployment step 1 through 5. at 1.1-5, the operating system service 406 makes a call lo a stored procedure to schedule an Event corresponding to the step. At i.f. the operating s\stem service 406 calls Update Deployment Status by proxy to update the deployment statiLS. At l.g.. the web service 408 uses a stored procedure to set the test server's DeplSlagelD to the Deployment Stage corresponding to the deployment step, and DcplSlaLusValuclD to Running.
[00117] Referring to FIGURE 4D, if the next deployment step is Dispatch, at l.e.i.6. the operating system service 406 calls web service 408 by proxy to query for machine and shipment file locations. If the next deployment step is Add Users, at I.e,i,7. the operating s\slem service 406 calls the web service 408 by proxy to query for reservation users. At I.e.ii. the web service 408 queries the database 410 for information. If the ne.\t deployment step is Dispatch, at I,e.iii,6. the operating system service 406 creates a process, and kicks off Dispatch on the reservation. If the next deployment step is .Add Ijsers. ai l.e.iii.y. the operating system service 406 creates a process, and kicks off Adding Esers to the test server. At l,f. the operating system service 406 calls the web service 408 to update the deployment status (Update Deployment Status). At l.g. the web service 4t)8 uses stored procedures in the database 410 to set the test server's DeplStagcID to the Deployment Stage corresponding lo the deployment step, and DepiStatusValueiD to Running.

j(t(U18| Referring to FlGURii 4H, al !La.\.l-5, as the associated scripts execute, senpt cxeeuiion status is wriuen to the database 412. At ll.a.ii.1-5. the operating system ser\icc 406 wakes up and gels the status of executing Events from the database 412. At N-a.iii.l-X the operating system service 406 calls the web service 408 by proxy to push the slalus to the database 410. At Il.a.6-7. as Dispatch or Add Users deployment steps execute, the operating system service 406 calls the web service 408 by proxy to update the Deployment Status. If a deployment step finishes or encounters an error, at 11.b. the operating system service 406 calls a stored procedure and resets DeplStatusVaiuelD value iVom Running to either Done or Hrror.
1001191 If the DeplStatusVaiuelD is Done, but the DeplSlagclD does not represent the last deployment step indicated in the reservation's DeplSteps. then the operating s\slem ser\ice 406 will kick off the next deployment when it wakes up next, as described above. If the DeplStatusVaiuelD is Done, and the DepJStagelD docs represent the last deployment step indicated in the reservation's DeplSteps. and if the reservation's Reservation Status is Deploying, the Reservation Status is reset to Ready. I f the reservation's Reservation Status is Expiring, then the Reservation Status is reset to Archived, and the Availability Status of all servers in the reservation is reset from In IJse to cither Reserved or Unreserved.
j0012(tj Referring to HIGURB 4F, a user creates a new reservation. At iU-a, if Reservation 'fype is Private Release (PR), the user saves the PR to the software library 414. Al lU.b. the user submits new reservation information using the user interface 416. Al lll.e. the database 410 uses stored procedures and the web service 408 to writ^' submitted reservation data to the database 410. These procedures result in; setting the Reservation Status set to Not Yet Begun; setting the Deployment Stattis fields for each test server in reservation to Not Yet Started. Done, and 0: setting Server Availabilitx Status for each test server in the reservation to Reserved; and, setting the DeplSteps value for the reservation to contain a Deployment Step Flag for each deployment step required lor the Reservation Type (e.g. if the Reservation Type is Basic, then the Role Application step is not needed).
|1I0121| Referring to FIGURE 4G, the new reservation begins. At [V.a. the operating svsteni service 406 wakes up and uses the web service 408 proxy class to qucrv the database 410 for new reservations for which deployment should begin. At IV.b. the web service 408 uses the stored procedures in the database 410 to query for these reservations

and the stored procedures return a Reservation ID that corresponds with eaeii reservation. (\)nlinuing with the new reservation and referring to flGURH 411, at IV.e. ihe web ser\ice 408 queries the database 410 by Reservation ID for reservation details. If the Rescrvalioi^ Type is Duplieate Cluster, at IV.d. the web service 408 queries the CMDB web service 418 ibr a shipment file, and copies the shipment fde to the File Share. |00122| If the user has not uploaded a machinc.xml fdc. at IV.e, the web ser\ ice 408 generates a machine.xml file based on a machine.xml template, and copies the machine.xml Hie to Ihc file Share, At IV.f, the deployment of the ncu reservation is ready to begin. Using Ihc Reservation ID and the stored procedures in the database 410. the web service 408 resets the reservation's Reservation Status from Not Yet iicgun to Deploying and resets Server Availability Status for each lest server in reservation Irom Reserved to In Use. Since the Reservation Status is now Deploying, and ihe Deployment Status values for each test server in the reservation are Not Yet Started. Done, and 0. ihe operating system service 406 begins kicking off deployment steps for the reservalion when il next waives up, as described above.
|()0i23| Referring to l-'KilJRH 41. at V.a, the user signs off using the "My Reserxalion" I'age of the user interface 410 which expires the reservation. At V.b., the web service 408: sets the reservation's DeplSteps value to contain only the OS Installation deployment step Hag; sets the Deployment Status tlelds for every test server in the reservation to Not Yet Started, Done, and 0; and. sets the Reservalion Status to Expiring. When the operating system service 406 next wakes up, it will kick off the OS installation deployment step on all lest servers in the reservalion, as described above. Since OS Installation is the only step indicated in the DeplSteps value, when the OS Installation step is linished on all test servers in the reservation, the last deployment step is complete. As described above, the operating system service 406 now resets the Reservation Status, Since the Reservalion Status is Ivxpiving, the operating system service 406 will reset the ReservativMi Stains to Archi\ed. and resel the .Availability Status of all test servers in the reservation. i(M)]24| J-'KiURl'-S 5A-5C depict various instances of a user interface 500 which enables a user lo make a new reservation and/or manage an existing reservalion, but is nol so limited. As an example, a user can use the user interface 500 to reserve a number of servers Ibr a specific testing purpose. The user interface 500 then renders server availability inlbrmation for a server pool in a given domain. Once a request has been submitted, the components described above operate to dynamically configure, allocate.

and/or deploy the number o!" servers according to the user request. As described above. \hc iisci receives a nolii'ication (e.g. e-mail) once the request has been luinilcd and llie ser\ers arc configured, allocated, and deployed. As shown in FIGIJR1-: 5A. the u.scr interlace 500 includes an announcement area 502 for displaying various information which serves to alert and inform the user, fhc user interface 500 includes a navigation area 504 where a number ol'options arc presented for interaction by the user.
[00125) fhe user interface 500 also includes a calendar area 506 where a user can \iew server availahilily for a certain time period (e.g. daily, weekly, etc.). lor example, suppose a user would like to rnake a new reservation which requires 2 servers for a certain testing purpose, fhc user can use the user interface 500 to see Ihat the Redmond location has 54 servers in a server pool, while an Off-Redmond location has 26 servers in a ser\er pool. The user can also see reservations of other users using the user interface 500, for example, the user can see that 9 servers arc reserved from 1/27/2004-1/28/2004. 5 servers are reserved from 1/28/2004-1/29/2004. and that 3 servers arc reserved from 1/2S/2004-1/31/2004.
|0012(>| ReJ'erring to MGURE 5B. a user has selected New Reservation Irom tlie navigation area 504. The New Reservation information includes a General info area 508, The Cicneral Info area 508 includes the Current user, Additional Users, a reser\ation purpose, an 0PM. a server designation, and a debugging tool query. The New Reservation information includes a Reser\'ation time area 510. fhe user can select start and end dates using the drop-down calendar or by typing in dates, fhe Reservation lime area 510 includes a notification of the number of servers available for a time period once the user has entered preferred start and end dates. The New Reservation information also includes a Deployment Info area 512. fhc Deployment Info area 512 includes a Deployment type. Build Number. Services. Ship or Debug build options, machinc.xml template option, custom machine.xml option, and type/role options. As shown in ITGURli 5B. the user has requested 2 IT>AWSI servers. 1 SQI.-AWS server, and 1 CDS-AWS server. As described above, the user input is used by the various components to configure, allocate, and deploy the requested items.
|00I27| I'lGLIRl-: 5C depicts the user interface 500 after the user has selected M> reservations from the navigalion area 504. As shown in FlGURti 5C, the user is able to review all of the pertinent details associated with the various reservations. The user has a number ol"available options such as: editing reservations, canceling reservations, returning

scr\ers !o the server pool, extending reservations, and re-running a particular dcploymcnl. The user interlace 500 described herein can be configured according to a desired preference and the invention is not intended to be limited to any particular examples and/or embodiments described herein.
|0U12H| As shown in figure 5C, the user interface 500 includes a "'current status'" lictd. in one embodiment, the "current status" field can include a number of values, such as: ""Not started yet" (the deployment has not started on reserved machines); "Deploving" (in the process of deployment); ""Complete" (the deployment has completed successfully and the User can use the machines now); "'XML file error" (Error in the machine xml file used. Need user or 0PM to correct the machine xml file); and, ""System error" (problem with the deployment process).
|()0129| An example oia tester using the user interface is as follows, fhe tester needs to verify one feature in the OFFICH AWS web site before the developer can check in the code and add the MSI package to the Sff/S T cluster. The tester uses a web browser lo load the u.scr interface 500. Using the user interface 500, the tester books an AWS t\pe of cluster for the following day. 'fhe tester also edits the machine.xml file using the user interface 500 to add (he new package and specify the path for the PR drop. 1 he tcsier receives an e-mail notification the next morning which lists the servers in the booked cluster and indicates that deployment is complete per the inputted information, fhe tester can then run any tests against that cluster, while also locally logging into the servers to check various functions. After verifying everything is okay, the tester sends an e-mail to the developer to check in the code. The tester can sign out of My Reservations, which expires the reservation,
|00I30| A debugging example follows. A developer is part of the AWS team. One feature mysteriously fails on an integration cluster. The developer cannot debug directly in the integration environment as it can impact the whole cluster and other services. 1 h^; developer uses the user interface 500 to book an AWS type cluster and selects the lalesi shipment file from integration. Based on the input, the exact content and code is installed as described herein to the booked cluster according to the selected shipment file, fhe developer now has a similar environment i'oT debugging without impacting the original integration cluster.
(0(H3I| ITGURl-; 6 depicts a number of event and script tables which are associated with various scripts and corresponding events, in accordance with an embodiment. I^ach

script can have a corresponding event entry in the event tables, and each event can be linked lo the corresponding script by an entry in the scripttask table as shown in ITGURl: 6. When an event is scheduled Ibr a computing system, such as a icsl server for example, a new entry is created in the evenl_schedule table which includes a reference lo ihc computing systems and the event. When the scheduled lime of a scheduled event arri\es. the execution status of the script is written on the computing system to other Helds in the event schedule table: start_time, end_time, status. status_ code (e.g. for error codes). cic. |00I32| A variety of deployment configurations arc available using the \arious components described above. A number of deployment possibilities arc presented below. |00133| The released OFFICE' build installation is to set up a cluster of servers b_\ using an official OFFIClv build. Fhe user can decide the build first and then sclecl the machine.xml file template to use. As described above, a user can also use a custom maehine.xml file template, which needs to be uploaded and checked. A list of machine types are listed ibr the installation according to the server role defined in the lemplale. |()()134| The user can also determine the number of servers required for each ser\er role. Ihc requested number of servers is automatically selected from the server pooHs) and ihc maehine.xml Tile is generated using server names from the selected servers of the server pooUs). Ihc user can review the maehine.xml file, including manual updates, if necessary. The updated version can be submitted and saved so it can be used Ibr dcpioyment. fhe syntax and tags arc aulomatically verified in the updated machine,xmi lllc before being saved.
|(i0t35| The installatiun can support a number of services including, but noi limited to: Shared component: ULS; AWS; Redirect service; R&R; Watson: IPO lools: Visio. Included in the user interface arc a number of pre-defmed xml templates, grouped by .services. I here are multiple templates for each service which dellnc the common installation scenario for each service (e.g. compact installation with installing all possible components on a shared server, build with content or without content, etc.) There are also templates which have all the services currently installed for certain environments (cg. TC'5. integration, etc.).
|00t36| The shipment llle installation is to include all the jobs (e.g. code and content) currently deployed to a cluster or environment. An existing cluster can be quickly duplicated using the shipment file installation. This installation is useful for debugging or tests which need lo simulate certain environments. Deployment based on shipment llle is

also an elTicicni way lo inslall ihe code with corresponding conient. Some shipmeiU liles include Sclihost, SeJflesl. integration, etc. Kvery lime a job gels deployed (o ihcse clusters, the shipment tiles for the specific clusters are updated and saved lo CMDB service. The previous shipment file is then marked as archived. The latest build of code is also included in the shipmeni file.
|00137| After a user selects the shipment file, the user can also seleei the machine xml file lemplale to use. By using a different machine.xml file, the user can cuslomi/.e ihe deployed eonlenl. i'or example, the user may choose to install English instead of all the languages. Ihe necessary server roles are aulomalieally determined based on the information included in the machine,xml file. The user can then decide ihc number of servers for each server role, and the reserved server names are automatically added lo generate liie correct machine.xml file.
100138} "Ihc I'R installation is similar lo the released OM-lCl-: build inslallalion, I lowever. instead of using an Official OFFICH build, a user requests a PR build of cxisiing service or new service, 'fhe user can install the PR bits by giving designating the I'R location. Other changes may also be required, such as for a new service (e.g, adding a new jukebox property, etc.).
|l)0139| The basic server setup installation will not apply Ol'l'lCfl code during the setup, A user can select the server type and then decide the number of servers. The basic server setup installation will inslall the OS plus the common configuration items lo the reserved servers, fhe basic ser\'er setup installation can be used for an OITK'I' server setup, by quickly selling up a number of clean servers. Other steps can be added lo install other server components.
|(t0140| For example, server clusters can be dynamically configured, allocated, and/or deployed to test a service before the service is hosted, integrated, and eventually released. As further example, users can directly reserve a cluster of servers at a desired time (e.g. on a daily basis). The reserved cluster of servers can be dynamically configured v\ith necessary code and/or content according to the user's request. Additionally, users can be designated with access permission based on the reservation content. Thereafter, one or more users can perfonn tests and other performance and configuration scenarios on ihe allocated cluster of servers. The cluster of servers can be returned to an available pool of servers once the reservation expires, and the freed servers can be used for a subsequent reservation. Fmbodiments are also configured to configure a special cluster for an

uncommon purpose. 1-or example, a large cluster is typically required Tor a perl'ormance test. The iargc cluster can be configured, allocated, and/or deployed by grouping all available servers into one large cluster. Ij\emplary Operating l£n\ironment
1001411 Referring now to FIGURE 7, the following discussion is intended to provide a brief, general description of a suitable computing environmenl in which embodiments of the invention may be implemented. While the invention will be described in the general context of program modules that execute in conjunction with program modules that run on an operating system on a personal computer, those skilled in the art will recogni/e that the invention may also be implemented in combination with other types of computer s\ stems and program modules.
|0OI42| Generally, program modules include routines, programs, eomponenls. data structures, and other types of structures thai perform particular tasks or implement particular abslract data types. Moreover, those skilled in the art will appreciate thai the invention may be practiced with other computer system configurations, including hand¬held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and the like, "fhe invention may also be practiced in distributed computing environments where tasks are performed by remote pvo\:e^s\i\g devices \ha\ BTS Uuked through a commviwcauon?. uetwoik. \Y, A d\sH\buwd computing environment, program modules may be located in both local and remote memory storage de\'iccs.
|00143| Referring now to FIGURE 7, an illustrative operating environment for embodiments of the invention will be described. As shown in FIGURF 7. computer 2 comprises a general purpose desktop, laptop, handheld, or other type of computer capable of executing one or more application programs. The computer 2 includes ai least one central processing unit 8 ("CPU"), a system memory 12, including a random access memory 18 ("RAM") and a read-only memory ("ROM") 20, and a system bus 10 that couples the memory to the CPU 8. A basic input/output system containing the basic routines that help to transfer information between elements within the computer, such as during startup, is stored in the ROM 20. The computer 2 further includes a mass storage device 14 for storing an operating system 32, application programs, and other program modules.

|00I44| The mass storage device 14 is connected to the CPU 8 through a mass storage controller (not shown) connected to the bus 10. I'he mass storage device 14 and iis associated computer-readable media provide non-volatile storage ibr the computer 2. Although the description of computer-readable media contained herein refers to a mass storage device, such as a hard disk or CD-ROM drive, it should be appreciated by those skilled in the art that computer-readable media can be any available media that can be accessed or utilized by the computer 2.
|0()145I By way of example, and not limitation, computer-readable media ma\ comprise computer storage media and communication media. Computer storage media inckides volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of infonnation such as compuler-readable instructions, data structures, program modules or other data. Computer sioragc media includes, hut is not Umhed to. RAM, ROM, HPROM, EEPROM. Hash memory or other solid stale memory technology, CD-ROM, digital versatile disks ("DVD"), or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired inlbrmalion and which can be accessed by the computer 2.
(00146] According to various embodiments of the invention, the computer 2 ma\' operate in a networked environment lising logical connections to remote computers through a network 4. such as a local network, the Internet, etc. for example, fhe computer 2 may connect to the network 4 through a network interface unit 16 connected lo the bus 10. It should be appreciated that the network interface unit 16 may also be utilized to connect lo other types of networks and remote computing systems. The computer 2 may also include an input/output controller 22 for receiving and processing input from a number of other devices, including a keyboard, mouse, etc. (not shown). Similarly, an input/output controller 22 may provide output to a display screen, a printer, or other type of output device.
[00147| As mentioned briefly above, a number of program modules and data hies ma\ be stored in the mass storage device 14 and RAM 18 of the computer 2, including an operating system 32 suitable for controlling the operation of a networked personal computer, such as the WINDOWS XP operating system from MlCROSOIf CORPORAflON of Redmond, Washington. The mass storage device 14 and RAM \H may also store one or more program modules. In particular, the mass storage device 14

and the RAM 18 may store application programs, such as a word processing application 28. a spreadsheet application 30. e-mail application 34, drawing application, etc. [00148] It should be appreciated that various embodiments of the present invention can be implemented (1) as a sequence of computer implemenled acts or program modules running on a computing system and/or (2) as interconnected machine logic circuits or circuit modules within the computing system, The implemcnlation is a niaUcr of choice dependent on the performance requirements of the computing system implementing the invention. Accordingly, logical operations including related algorithms can be rcfened Ui \arioLisly as operations, struciurat devices, acts or modules. It will be recognized by one skilled in the art that these operations, structural devices, acts and modules may be implemented in software, firmware, special purpose digital logic, and any combination thereof without deviating from the spirit and scope of the present invention as recited within the claims set forth herein.
[001491 Although the invention has been described in connection uith various exemplary embodiments, those of ordinary skill in the art will understand that many modifications can be made thereto within the scope of the claims that follow. Accordingly, it is not intended that the scope of the invention in any way be limited by the above description, but instead be determined entirely by reference to the claims thai follow.
[OOISOJ Appendices A and 13, which follow, illustrate representative schema lllcs for use in dynamically configuring, allocating, and deploying a number of computing systems under an embodiment.
Annendix A
-
\\tk2offdsl201\Serviceteams\DNR\nacks\bug262ll8\Accountlncludcs.x
ml
- ^-.Ccrtincale>myl702.pfx <\Vire .->
-
-'Property NamC' "D0MAIN">F1RST LOCAT10N

Documents

Orders

Section Controller Decision Date

Application Documents

# Name Date
1 1097-CHENP-2009-RELEVANT DOCUMENTS [18-09-2023(online)].pdf 2023-09-18
1 PCT Others_As Filed_26-02-2009.pdf 2009-02-26
2 1097-CHENP-2009-RELEVANT DOCUMENTS [26-09-2022(online)].pdf 2022-09-26
2 Form5_As Filed_26-02-2009.pdf 2009-02-26
3 Form3_As Filed_26-02-2009.pdf 2009-02-26
3 1097-CHENP-2009-RELEVANT DOCUMENTS [23-09-2021(online)].pdf 2021-09-23
4 Form26_General Power of Attorney_26-02-2009.pdf 2009-02-26
4 1097-CHENP-2009-RELEVANT DOCUMENTS [27-03-2020(online)].pdf 2020-03-27
5 Form2 Title Page_Complete_26-02-2009.pdf 2009-02-26
5 1097-CHENP-2009-RELEVANT DOCUMENTS [29-05-2019(online)].pdf 2019-05-29
6 Form1_As Filed_26-02-2009.pdf 2009-02-26
6 1097-CHENP-2009-RELEVANT DOCUMENTS [28-05-2019(online)].pdf 2019-05-28
7 Drawing_As Filed_26-02-2009.pdf 2009-02-26
7 1097-CHENP-2009-RELEVANT DOCUMENTS [28-03-2019(online)].pdf 2019-03-28
8 Description Complete_As Filed_26-02-2009.pdf 2009-02-26
8 1097-CHENP-2009-RELEVANT DOCUMENTS [21-03-2019(online)].pdf 2019-03-21
9 1097-CHENP-2009-IntimationOfGrant29-11-2018.pdf 2018-11-29
9 Corresspondence By Agent_As Filed_26-02-2009.pdf 2009-02-26
10 1097-CHENP-2009-PatentCertificate29-11-2018.pdf 2018-11-29
10 Claims_As Filed_26-02-2009.pdf 2009-02-26
11 Abstract_As Filed_26-02-2009.pdf 2009-02-26
11 Abstract_Granted 303752_29-11-2018.pdf 2018-11-29
12 Claims_Granted 303752_29-11-2018.pdf 2018-11-29
12 Form3_After Filing_07-08-2009.pdf 2009-08-07
13 Corresspondence By Agent_Form3_07-08-2009.pdf 2009-08-07
13 Description_Granted 303752_29-11-2018.pdf 2018-11-29
14 Drawings_Granted 303752_29-11-2018.pdf 2018-11-29
14 Form18_Normal Request_09-07-2010.pdf 2010-07-09
15 Corresspondence By Agent_Form18_09-07-2010.pdf 2010-07-09
15 Marked Up Claims_Granted 303752_29-11-2018.pdf 2018-11-29
16 1097-CHENP-2009-Annexure (Optional) [30-10-2018(online)].pdf 2018-10-30
16 Form6_Applicant change in Name_28-02-2015.pdf 2015-02-28
17 Form26_General Power of Attorney_28-02-2015.pdf 2015-02-28
17 1097-CHENP-2009-Response to office action (Mandatory) [30-10-2018(online)].pdf 2018-10-30
18 1097-CHENP-2009-Written submissions and relevant documents (MANDATORY) [01-10-2018(online)].pdf 2018-10-01
18 Assignment_Form6_28-02-2015.pdf 2015-02-28
19 1097-CHENP-2009-Correspondence to notify the Controller (Mandatory) [05-09-2018(online)].pdf 2018-09-05
19 Form3_After Filing_29-12-2015.pdf 2015-12-29
20 1097-CHENP-2009-HearingNoticeLetter.pdf 2018-08-28
20 Corresspondence By Agent_Form3_29-12-2015.pdf 2015-12-29
21 Corresspondence By Office_FER Issued_24-11-2016.pdf 2016-11-24
21 Other Patent Document [17-02-2017(online)].pdf 2017-02-17
22 Abstract [16-02-2017(online)].pdf 2017-02-16
22 Other Document [16-02-2017(online)].pdf 2017-02-16
23 Claims [16-02-2017(online)].pdf 2017-02-16
23 Examination Report Reply Recieved [16-02-2017(online)].pdf 2017-02-16
24 Description(Complete) [16-02-2017(online)].pdf_100.pdf 2017-02-16
24 Correspondence [16-02-2017(online)].pdf 2017-02-16
25 Description(Complete) [16-02-2017(online)].pdf 2017-02-16
26 Correspondence [16-02-2017(online)].pdf 2017-02-16
26 Description(Complete) [16-02-2017(online)].pdf_100.pdf 2017-02-16
27 Claims [16-02-2017(online)].pdf 2017-02-16
27 Examination Report Reply Recieved [16-02-2017(online)].pdf 2017-02-16
28 Abstract [16-02-2017(online)].pdf 2017-02-16
28 Other Document [16-02-2017(online)].pdf 2017-02-16
29 Corresspondence By Office_FER Issued_24-11-2016.pdf 2016-11-24
29 Other Patent Document [17-02-2017(online)].pdf 2017-02-17
30 1097-CHENP-2009-HearingNoticeLetter.pdf 2018-08-28
30 Corresspondence By Agent_Form3_29-12-2015.pdf 2015-12-29
31 1097-CHENP-2009-Correspondence to notify the Controller (Mandatory) [05-09-2018(online)].pdf 2018-09-05
31 Form3_After Filing_29-12-2015.pdf 2015-12-29
32 1097-CHENP-2009-Written submissions and relevant documents (MANDATORY) [01-10-2018(online)].pdf 2018-10-01
32 Assignment_Form6_28-02-2015.pdf 2015-02-28
33 1097-CHENP-2009-Response to office action (Mandatory) [30-10-2018(online)].pdf 2018-10-30
33 Form26_General Power of Attorney_28-02-2015.pdf 2015-02-28
34 1097-CHENP-2009-Annexure (Optional) [30-10-2018(online)].pdf 2018-10-30
34 Form6_Applicant change in Name_28-02-2015.pdf 2015-02-28
35 Marked Up Claims_Granted 303752_29-11-2018.pdf 2018-11-29
35 Corresspondence By Agent_Form18_09-07-2010.pdf 2010-07-09
36 Form18_Normal Request_09-07-2010.pdf 2010-07-09
36 Drawings_Granted 303752_29-11-2018.pdf 2018-11-29
37 Corresspondence By Agent_Form3_07-08-2009.pdf 2009-08-07
37 Description_Granted 303752_29-11-2018.pdf 2018-11-29
38 Claims_Granted 303752_29-11-2018.pdf 2018-11-29
38 Form3_After Filing_07-08-2009.pdf 2009-08-07
39 Abstract_As Filed_26-02-2009.pdf 2009-02-26
39 Abstract_Granted 303752_29-11-2018.pdf 2018-11-29
40 1097-CHENP-2009-PatentCertificate29-11-2018.pdf 2018-11-29
40 Claims_As Filed_26-02-2009.pdf 2009-02-26
41 1097-CHENP-2009-IntimationOfGrant29-11-2018.pdf 2018-11-29
41 Corresspondence By Agent_As Filed_26-02-2009.pdf 2009-02-26
42 1097-CHENP-2009-RELEVANT DOCUMENTS [21-03-2019(online)].pdf 2019-03-21
42 Description Complete_As Filed_26-02-2009.pdf 2009-02-26
43 1097-CHENP-2009-RELEVANT DOCUMENTS [28-03-2019(online)].pdf 2019-03-28
43 Drawing_As Filed_26-02-2009.pdf 2009-02-26
44 1097-CHENP-2009-RELEVANT DOCUMENTS [28-05-2019(online)].pdf 2019-05-28
44 Form1_As Filed_26-02-2009.pdf 2009-02-26
45 1097-CHENP-2009-RELEVANT DOCUMENTS [29-05-2019(online)].pdf 2019-05-29
45 Form2 Title Page_Complete_26-02-2009.pdf 2009-02-26
46 Form26_General Power of Attorney_26-02-2009.pdf 2009-02-26
46 1097-CHENP-2009-RELEVANT DOCUMENTS [27-03-2020(online)].pdf 2020-03-27
47 Form3_As Filed_26-02-2009.pdf 2009-02-26
47 1097-CHENP-2009-RELEVANT DOCUMENTS [23-09-2021(online)].pdf 2021-09-23
48 Form5_As Filed_26-02-2009.pdf 2009-02-26
48 1097-CHENP-2009-RELEVANT DOCUMENTS [26-09-2022(online)].pdf 2022-09-26
49 PCT Others_As Filed_26-02-2009.pdf 2009-02-26
49 1097-CHENP-2009-RELEVANT DOCUMENTS [18-09-2023(online)].pdf 2023-09-18

Search Strategy

1 SearchPatents_24-10-2016.pdf

ERegister / Renewals

3rd: 01 Feb 2019

From 30/08/2009 - To 30/08/2010

4th: 01 Feb 2019

From 30/08/2010 - To 30/08/2011

5th: 01 Feb 2019

From 30/08/2011 - To 30/08/2012

6th: 01 Feb 2019

From 30/08/2012 - To 30/08/2013

7th: 01 Feb 2019

From 30/08/2013 - To 30/08/2014

8th: 01 Feb 2019

From 30/08/2014 - To 30/08/2015

9th: 01 Feb 2019

From 30/08/2015 - To 30/08/2016

10th: 01 Feb 2019

From 30/08/2016 - To 30/08/2017

11th: 01 Feb 2019

From 30/08/2017 - To 30/08/2018

12th: 01 Feb 2019

From 30/08/2018 - To 30/08/2019

13th: 01 Feb 2019

From 30/08/2019 - To 30/08/2020

14th: 14 Jul 2020

From 30/08/2020 - To 30/08/2021

15th: 08 Jul 2021

From 30/08/2021 - To 30/08/2022