Patent Description:
<CIT> discloses a method of providing context aware dynamic composition of migration plans. The method comprises receiving a request for application or image migration. The target environment and associated configuration are identified and one or more contextual actions comprising a sequence of migration steps are defined. Resources associated with the source environment and a schedule for triggering the one or more contextual actions are allocated. One or more migration techniques to implement the one or more contextual actions based on the current context are selected. The method further comprises, responsive to detecting one or more exceptions in the execution of migration, regenerating a migration plan. A learning component may be embedded into the generating process to capture migration patterns and generate migration templates. Migration templates are patterns which capture one or more steps that apply in a given context, which can be reused during migration reconfiguration.

<CIT> discloses a cloud migration tool that manages and monitors a cloud migration project that migrates data from a legacy environment to a target data center environment. The cloud migration tool includes an analytics engine that applies data regression models to generate a delay risk prediction for activities that are scheduled during the cloud migration project.

Migration context and flow graph based migration control apparatuses, methods for migration context and flow graph based migration control, and non-transitory computer readable media having stored thereon machine readable instructions to provide migration context and flow graph based migration control are disclosed herein. The apparatuses, methods, and non-transitory computer readable media disclosed herein provide for utilization of migration context and process flow information to identify accurate resolutions. In this regard, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide for the precise estimation of semantic proximity between issues by utilizing a migration graph and a historical issue database. Higher accuracy is obtained by contextualizing a sub-process and utilizing the sub-process to determine which issue among all likely historical issues is more likely to be semantically closer to a currently raised issue under a current migration context. In this regard, the apparatuses, methods, and non-transitory computer readable media disclosed herein implement a computational agent (e.g., migration advisor as disclosed herein) to efficiently determine a semantically optimum resolution for a (cloud) migration issue. The computational agent may include the capabilities of modifying its computational processing of data and information by updating its parameters.

According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein provide technical benefits such as reduction of computational resource utilization (e.g., processor time, network bandwidth, and energy) by making an overall migration process computationally efficient. For example, the apparatuses, methods, and non-transitory computer readable media disclosed herein minimize execution of those computational steps that do not contribute in an overall migration (e.g., minimizing redundant computations during issue resolution process).

According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein resolve migration issues more efficiently by identifying correct resolutions at an early stage.

According to examples disclosed herein, absent to utilization of the apparatuses, methods, and non-transitory computer readable media disclosed herein, downstream migration processes may utilize higher levels of computational resources during issue resolution by identifying potentially incorrect resolutions during early stages, and in turn wasting computational resources in executing many potentially incorrect resolutions before arriving at a correct one.

According to examples disclosed herein, the apparatuses, methods, and non-transitory computer readable media disclosed herein may operate by interacting with downstream computational agents of a migration process. For example, the apparatuses, methods, and non-transitory computer readable media disclosed herein may estimate flow proximities among issues that cannot be performed by non-computational agents (e.g., human beings) since information is exchanged among the computational agents and not visible to external environments. In this regard, the migration process itself may represent a computational process that is executed by computational systems.

According to examples disclosed herein, with respect to the apparatuses, methods, and non-transitory computer readable media disclosed herein, the techniques disclosed herein may be utilized for a wide array of migration scenarios that include cloud migration (primary domain), migration of applications across different operating environments, migration of applications across different versions of backend software, and process migration (e.g., human resource system migration from one information system to another).

For the apparatuses, methods, and non-transitory computer readable media disclosed herein, the elements of the apparatuses, methods, and non-transitory computer readable media disclosed herein may be any combination of hardware and programming to implement the functionalities of the respective elements. In some examples described herein, the combinations of hardware and programming may be implemented in a number of different ways. For example, the programming for the elements may be processor executable instructions stored on a non-transitory machine-readable storage medium and the hardware for the elements may include a processing resource to execute those instructions. In these examples, a computing device implementing such elements may include the machine-readable storage medium storing the instructions and the processing resource to execute the instructions, or the machine-readable storage medium may be separately stored and accessible by the computing device and the processing resource. In some examples, some elements may be implemented in circuitry.

<FIG> illustrates a layout of an example migration context and flow graph based migration control apparatus (hereinafter also referred to as "apparatus <NUM>").

Referring to <FIG>, the apparatus <NUM> may include a migration controller <NUM> that is executed by at least one hardware processor (e.g., the hardware processor <NUM> of <FIG>, and/or the hardware processor <NUM> of <FIG>) to ascertain an application <NUM> that is to be migrated from a physical environment <NUM> to a cloud environment <NUM> (or between two different environments, such as two different cloud environments). The migration controller <NUM> may determine a migration issue <NUM> associated with the migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

A migration advisor <NUM> that is executed by at least one hardware processor (e.g., the hardware processor <NUM> of <FIG>, and/or the hardware processor <NUM> of <FIG>) identifies, from a historical issue database <NUM>, a plurality of historical issues <NUM>. The migration advisor <NUM> determines, for the migration issue <NUM> and the plurality of historical issues <NUM>, unified proximities <NUM>. The migration advisor <NUM> sorts, based on the determined unified proximities <NUM>, the historical issues <NUM>. The migration advisor <NUM> selects, from the sorted historical issues, a topmost historical issue. The migration advisor <NUM> determines, from the topmost historical issue, a resolution <NUM> associated with the topmost historical issue. The migration advisor <NUM> forwards the resolution <NUM> to the migration controller <NUM>. The migration controller <NUM> executes the resolution <NUM> to resolve the migration issue <NUM>. Further, the migration controller <NUM> performs, based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

According to examples disclosed herein, the migration advisor <NUM> selects, from the sorted historical issues, the topmost historical issue by selecting, from the sorted historical issues, the topmost historical issue that includes the resolution <NUM> that is executable.

According to examples disclosed herein, the migration controller <NUM> executes the resolution <NUM> to resolve the migration issue <NUM>, and performs, based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM> by determining, based on the execution of the resolution <NUM> to resolve the migration issue <NUM>, whether the resolution <NUM> is valid. Further, the migration controller <NUM> may perform, based on a determination that the resolution <NUM> is valid and based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

According to examples disclosed herein, the migration controller <NUM> may receive, based on a determination that the resolution <NUM> is invalid, from the migration advisor <NUM>, a further resolution corresponding to a next topmost historical issue. The migration controller <NUM> may execute the further resolution to resolve the migration issue <NUM>. Further, the migration controller <NUM> may perform, based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

According to examples disclosed herein, the migration controller <NUM> may provide, based on a valid resolution to the migration issue <NUM>, feedback <NUM> to the migration advisor <NUM> to associate the resolution <NUM> with the migration issue <NUM>.

According to examples disclosed herein, the migration advisor <NUM> determines, for the migration issue <NUM> and the plurality of historical issues <NUM>, the unified proximities <NUM> by receiving, from a descriptive proximity estimator <NUM> that is executed by the at least one hardware processor (e.g., the hardware processor <NUM> of <FIG>, and/or the hardware processor <NUM> of <FIG>), descriptive proximities included in the unified proximities <NUM>. The descriptive proximity is based on issue description between two issues.

According to examples disclosed herein, the migration advisor <NUM> determines, for the migration issue <NUM> and the plurality of historical issues <NUM>, the unified proximities <NUM> by receiving, from a contextual proximity estimator <NUM> that is executed by the at least one hardware processor (e.g., the hardware processor <NUM> of <FIG>, and/or the hardware processor <NUM> of <FIG>), contextual proximities included in the unified proximities <NUM>. The contextual proximity is based on issue context between the two issues.

According to examples disclosed herein, the migration advisor <NUM> determines, for the migration issue <NUM> and the plurality of historical issues <NUM>, the unified proximities <NUM> by receiving, from a flow proximity estimator <NUM> that is executed by the at least one hardware processor (e.g., the hardware processor <NUM> of <FIG>, and/or the hardware processor <NUM> of <FIG>), flow proximities included in the unified proximities <NUM>. The flow proximity is based on a pairwise proximity between sub-processes of flows associated with the two issues.

<FIG> illustrates a logical flow to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, at <NUM>, the migration controller <NUM> may be invoked for migration of a new application <NUM> to the cloud environment <NUM> (e.g., operative environment (OPENV)).

At <NUM>, the migration controller <NUM> may encounter a migration issue <NUM>.

At <NUM>, the migration advisor <NUM> may generate a recommendation of a resolution <NUM> for the migration issue <NUM>.

At <NUM>, the migration controller <NUM> may generate feedback <NUM> on the resolution <NUM>.

At <NUM>, the migration controller <NUM> may complete migration of the application <NUM>.

<FIG> illustrates a logical flow to illustrate operation of a migration advisor <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG> and <FIG>, the migration advisor <NUM> may include a descriptive proximity estimator <NUM> to determine descriptive proximity. With respect to estimating descriptive proximity, for issue details, an issue description may include the fields of description, impact level, and environment. Description (d), may include a text format, including natural language text describing issue occurred during migration. Impact level (i), may include an ordinal format, including estimates of criticality of the issue, and measured as high, medium, low, critical, severe, normal, etc. Environment (c), may include a categorical format, including environment in which the issue was raised (e.g., development environment, user acceptance testing, production environment,. , and may also be referred to as cutover).

With respect to descriptive proximity, issue description may be represented as follows: <MAT>.

Descriptive proximity between two issues issue_a and issue_b may be determined as follows: <MAT>.

For Equation (<NUM>), αd, αi, and αc ∈ [<NUM>,<NUM>] measure relative weights of different fields, and by default, αd = <NUM>; αi = <NUM>; αc = <NUM>.

For Equation (<NUM>), m(da, db) = cos(da, db), where da and db are neural embeddings for descriptions of issues, and cos(. ) is the cosine function. Further, m(ia, ib) = rankDiff(ia, ib), where rankDiff() returns as number difference between ranks of arguments. For example, rankDiff(High, Medium) = <NUM>; rankDiff(High, Low) = <NUM>. Further, m(ca, cb) = match(ca, cb), where: <MAT> if x and y are equivalent otherwise.

Next, the migration advisor <NUM> may include a contextual proximity estimator <NUM> to determine contextual proximity. With respect to estimating contextual proximity, for issue context, context of an issue raised for resolution advisory to the migration advisor <NUM> may include the following field that includes project context that includes business domain (bd) (e.g., string format) that describes the business segment to which the application caters to in the real world, such as finance, media, healthcare etc. Further, the project context may include technical domain (td) (e.g., string format) that describes the predominant technology of the application, such as web application, custom application, legacy application, etc..

Context of an issue raised for resolution advisory to the migration advisor <NUM> may further include the following field that includes migration context that includes migration strategy type (m) (e.g., categorical format) that refers to one of 'R's of migration such as re-host, re-platform, re-factor/re-architecture, re-purchase, source operating system (so) (e.g., categorical format) that refers to the operating system of source system to be migrated, such as Windows™, Linux™, etc., and target operating system (to) (e.g., categorical format) that refers to an operating system of a target such as Windows™, Linux™, etc. Migration context may further include source database (sd) (e.g., categorical format) that includes database engine of source system such as SQL™, Oracle™, SAP HANA™, IBM DB2™, etc., target database (td) (e.g., categorical format) that includes database engine of destination system such as SQL™, Oracle™, SAP HANA™, IBM DB2™, etc., and with upgrade (wu) (e.g., Boolean format) that includes whether it involves any database engine upgrade/change.

Context of an issue raised for resolution advisory to the migration advisor <NUM> may further include the following field that includes architectural context that includes number of servers (ns) (e.g., integer format) that include a count of source system identifications (IDs) to be migrated, volume of data (TB) (vd) (e.g., numeric format) that includes amount of database and flat files to be migrated in terabytes, and number of applications (na) (e.g., integer format) that includes a number of discrete applications in source system as grouped by business. Further, architectural context may further include source hardware (sh) (e.g., string format) that includes the physical hardware technology on which the source application runs, such as IBM Z Mainframe™, HP <NUM>™, Unisys ClearPath™, etc., CI/CD Pipeline (cc) (e.g., Boolean format) that includes whether any continuous integration or continuous delivery pipelines are deployed in source system that need to be migrated, cloud provider (cp) (e.g., string format) that includes target cloud provider such as AWS™, Azure™, GCP™ etc., and type of cloud (tc) (e.g., categorical format) that includes target cloud type such as public, private, hybrid, sovereign, etc..

Context of an issue raised for resolution advisory to the migration advisor <NUM> may further include the following field that includes sub-process/activity issue that is related to (sp) (e.g., string format).

A context for an issue may be characterized as follows: <MAT> where: <MAT> <MAT> <MAT>.

Contextual proximity between two issues may be determined by the contextual proximity estimator <NUM> as follows: <MAT> where <MAT> <MAT> <MAT> <MAT> αpc, αmc, αac, and αmfc measure relative weights of proximities of different context types
By default, αmfc > αmc > αac > αpc <MAT> <MAT> <MAT> <MAT> <MAT>
<IMG>
<IMG>.

An example of migration context driven advisory may include an issue that includes missing foreign keys and secondary indexes.

For the example of the migration context driven advisory, the context may include any objects that are not required are skipped to efficiently migrate the data from the source system. This may be discovered as an issue post migration on the destination system. Having the context of migration strategy employed may facilitate providing a more accurate resolution in such a scenario.

For the example of the migration context driven advisory, with respect to rehosting, there may be no change in database engine. Data format may remain the same. Hence, the resolution may be to use the native tools of the database for creating missing objects.

For the example of the migration context driven advisory, refactoring may generally involve migrating to a different database engine. In such a scenario, the resolution may include using a schema conversion tool for migrating the objects.

<FIG> illustrates a sequence of processes to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, <FIG>, and <FIG>, the migration advisor <NUM> may include a flow proximity estimator <NUM> to determine flow proximity. With respect to flow proximity, as shown in <FIG> at <NUM>, for sub process flow, starting with the migration's initiation process, the migration controller <NUM> (or operating environment) may record process flow until the sub-process in which an issue has occurred. This process flow may be formulated as a sequence of processes (with optional details). In cases when sub-process flow details for an issue are not known, the sub-process may be associated with initial process p<NUM>.

With respect to process proximity, the flow proximity estimator <NUM> may specify sub-process flows associated with two issues to be: <MAT> <MAT>.

For each pair of sub-processes in these flows, their pairwise proximity may be determined as follows: <MAT>.

Equation (<NUM>) represents proximity between sub-process pi and qj for all (i ∈ <NUM>. n; j ∈ <NUM>.

Function processProximity(pi, qj) may be defined by the design environment, for example as: <MAT>.

Next, with respect to flow proximity determination by the flow proximity estimator <NUM>, with respect to pairwise process proximities, flow proximity ffp between these issues may be determined as follows: <MAT> <MAT> <MAT> <MAT> <MAT>.

Referring to <FIG> and <FIG>, the migration advisor <NUM> may include a unified proximity estimator <NUM> to determine unified proximity. With respect to unified proximity, for an issue resolution driven feedback loop, unified proximity may be determined as a function of descriptive proximity measured by fdp(. ), contextual proximity measured by fcp(. ), and flow proximity measured by ffp(. Unified proximity between two issues may be determined as fup(. ) as follows: <MAT>.

For Equation (<NUM>), wdp, wcp, wfp ∈ [<NUM>,. ] may represent weights, which correspond to relative significances of different proximities between issues. By default, wfp=<NUM>, wdp = <NUM>, wcp = <NUM>. With availability of statistically significant data, these weights may be learnt by applying regression techniques.

Next, with respect to issue advisory, the migration advisor <NUM> may specify historical database of issues to be: <MAT>.

In this regard, each issue ij may include one or more of the details presented before (description, context, sub-process flow), and t may represent a current time point.

For a new issue inew, the migration advisor <NUM> may determine unified proximities of the new issue with all historical issues in ΔhisI(t) as follows: <MAT>.

Next, the migration advisor <NUM> may sort historical issues in order of their unified proximities with new issue inew in a non-increasing order. In this regard, if elements are ordered in this manner, then when the elements are traced as per the order, their values do not increase (e.g., <NUM>, <NUM>, <NUM>, <NUM> is a non-increasing order).

Next, the migration advisor <NUM> may select the topmost issue having executable resolution steps (sequence of instructions/APIs/programs), and transfer these resolution steps to the migration controller <NUM>. In this regard, the migration controller <NUM> may set flag variable RESOLVED=FALSE. Further, the migration controller <NUM> may remove all issues from the sorted list until the currently selected issue.

Next, the migration controller <NUM> may execute these resolution steps towards resolving the current issue, and signals to the operating environment for executing an issue resolution validation procedure.

With respect to feedback driven proximity updates, the migration controller <NUM> may set flag variable RESOLVED=TRUE when the validation procedure succeeds (e.g., resolution steps on their execution correctly resolve the issue and the migration controller <NUM> proceeds to execute next sub-process/task). Further, the migration controller <NUM> may terminate the process of communication with migration advisor <NUM>, and continues with next sub-process/task in the migration path.

Otherwise, if the resolution process fails to resolve the issue (e.g., error recurs during validation process), the migration controller <NUM> may set flag variable RESOLVED=FALSE. The migration controller <NUM> may signal to the migration advisor <NUM> to execute selection of next available resolution (e.g., as discussed above, the migration advisor <NUM> may select the topmost issue having executable resolution steps (sequence of instructions/APIs/programs), and transfer these resolution steps to the migration controller <NUM>).

The aforementioned steps related to setting of flag variable RESOLVED=TRUE, and flag variable RESOLVED=FALSE may be repeated until either the validation procedure succeeds or there are no more resolutions to execute as per the historical database.

Next, at the conclusion of the step related to setting of flag variable RESOLVED=TRUE, the migration advisor <NUM> may identify the historical issue for feedback driven proximity updating. As a first case (Case <NUM>), migration advisor <NUM> may specify il E ΔhisI(t) be issue, resolution of which is accepted by the operating environment, and set irel = il. For a second case (Case <NUM>), this case may represent that the migration advisor <NUM> did not consider any of the historical issues as relevant for resolving current issue (i.e., validation procedure failed for all resolutions). In this regard, the migration advisor <NUM> may set irel = ix such that unified proximity of ix with inew is the least among all historical issues.

Next, the migration advisor <NUM> may generate three lists of historical issues. The first list may include case [description based], where <MAT> may be specified to be the list of historical issues sorted in decreasing order as per their descriptive proximities fdp(inew,. ) with new issue inew. The second list may include case [context based], where <MAT> may be specified to be list of historical issues sorted in decreasing order as per their contextual proximities fcp(inew,. ) with new issue inew. Finally, the third list may be case [sub-process flow based], where <MAT> may be specified be the list of historical issues sorted in decreasing order as per their flow proximities ffp(inew,. ) with new issue inew.

Next, the migration advisor <NUM> may identify the ranks of irel in all of these three lists. In this regard, the migration advisor <NUM> may specify rankd(irel),rankc(irel), and rankf(irel) to be ranks of irel in the lists <MAT>, and <MAT> respectively. Further, the migration advisor <NUM> may order rankd(irel),rankc(irel), and rankf(irel) in decreasing order.

Lastly, the migration advisor <NUM> may minimally update weights for different proximities (e.g., wdp, wcp, wfp) so that using updated weights, proximities of historical issues with new issue inew render rank of issue irel in the same order as above.

<FIG> illustrates an example of historical resolutions (e.g., associated with the historical issues <NUM>) to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, for example, issue ID <NUM> may represent an intermittent connectivity issue, including a resolution to "restart application to pickup new resource adapter name".

<FIG> illustrates an example of new issues to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, for example, issue ID X (e.g., migration issue <NUM>) may represent a database intermittent connector errors, including a resolution that matches issue <NUM> of <FIG>.

<FIG> illustrates examples of historical resolutions to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, details of resolutions <NUM>-<NUM> associated with issues <NUM>-<NUM> are shown.

<FIG> illustrates examples of new issues to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, details of new issues X and Y of <FIG> are shown.

<FIG> illustrates examples of unified proximity estimation to illustrate operation of the apparatus <NUM>, in accordance with an example of the present disclosure.

Referring to <FIG>, for X, even though resolution #<NUM> (<NUM>) had a higher descriptive proximity, the unified proximity score brings out resolution #<NUM> (<NUM>) as a better match due to its similarity in migration context and sub-process where the issue has occurred. Further, for Y, resolution #<NUM> and #<NUM> are equal matches based on descriptive proximity. However, due to the different migration strategies and relevant parameters, issue #<NUM> is shown as a better match. With regard to the values <NUM> and <NUM>, the significance of these values may be ascertained when considered in comparison with other unified scores in the same issue context (e.g., when unified proximity score <NUM> for historical issue#<NUM> (in context of issue X) is compared with unified proximity scores for other historical issues). In this example, <NUM> is the maximum score, which means, among all existing historical issues (numbered <NUM> to <NUM>), issue #<NUM> has a maximum overall significance for new issue X. Similar is the case of unified proximity score <NUM> for historical issue#<NUM> in context of issue Y.

<FIG> respectively illustrate an example block diagram <NUM>, a flowchart of an example method <NUM>, and a further example block diagram <NUM> for migration context and flow graph based migration control, according to examples. The block diagram <NUM>, the method <NUM>, and the block diagram <NUM> may be implemented on the apparatus <NUM> described above with reference to <FIG> by way of example and not of limitation. The block diagram <NUM>, the method <NUM>, and the block diagram <NUM> may be practiced in other apparatus. In addition to showing the block diagram <NUM>, <FIG> shows hardware of the apparatus <NUM> that may execute the instructions of the block diagram <NUM>. The hardware may include a processor <NUM>, and a memory <NUM> storing machine readable instructions that when executed by the processor cause the processor to perform the instructions of the block diagram <NUM>. The memory <NUM> may represent a non-transitory computer readable medium. <FIG> may represent an example method for migration context and flow graph based migration control, and the steps of the method. <FIG> may represent a non-transitory computer readable medium <NUM> having stored thereon machine readable instructions to provide migration context and flow graph based migration control according to an example. The machine readable instructions, when executed, cause a processor <NUM> to perform the instructions of the block diagram <NUM> also shown in <FIG>.

The processor <NUM> of <FIG> and/or the processor <NUM> of <FIG> may include a single or multiple processors or other hardware processing circuit, to execute the methods, functions and other processes described herein. These methods, functions and other processes may be embodied as machine readable instructions stored on a computer readable medium, which may be non-transitory (e.g., the non-transitory computer readable medium <NUM> of <FIG>), such as hardware storage devices (e.g., RAM (random access memory), ROM (read only memory), EPROM (erasable, programmable ROM), EEPROM (electrically erasable, programmable ROM), hard drives, and flash memory). The memory <NUM> may include a RAM, where the machine readable instructions and data for a processor may reside during runtime.

Referring to <FIG>, and particularly to the block diagram <NUM> shown in <FIG>, the memory <NUM> includes instructions <NUM> to ascertain an application <NUM> that is to be migrated from a physical environment <NUM> to a cloud environment <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to determine a migration issue <NUM> associated with the migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to identify, from a historical issue database <NUM>, a plurality of historical issues <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to determine, for the migration issue <NUM> and the plurality of historical issues <NUM>, unified proximities <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to sort, based on the determined unified proximities <NUM>, the historical issues <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to select, from the sorted historical issues, a topmost historical issue.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to determine, from the topmost historical issue, a resolution <NUM> associated with the topmost historical issue.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to forward the resolution <NUM> to the migration controller <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to execute the resolution <NUM> to resolve the migration issue <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to perform, based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

Referring to <FIG> and <FIG>, and particularly <FIG>, for the method <NUM>, at block <NUM>, the method includes ascertaining an application <NUM> that is to be migrated from a physical environment <NUM> to a cloud environment <NUM>.

At block <NUM>, the method includes determining a migration issue <NUM> associated with the migration of the application <NUM> from the physical environment 106to the cloud environment <NUM>.

At block <NUM>, the method includes identifying from a historical issue database <NUM>, a plurality of historical issues <NUM>.

At block <NUM>, the method includes comparing the migration issue <NUM> to the plurality of historical issues <NUM>.

At block <NUM>, the method includes selecting, based on the comparison, a resolution <NUM>.

At block <NUM>, the method includes executing the resolution <NUM> to resolve the migration issue <NUM>.

At block <NUM>, the method includes performing, based on the resolved migration issue, migration of the application <NUM> from the physical environment <NUM> to the cloud environment <NUM>.

Referring to <FIG> and <FIG>, and particularly <FIG>, for the block diagram <NUM>, the non-transitory computer readable medium <NUM> includes instructions <NUM> to determine a migration issue <NUM> associated with migration of an application <NUM> to a cloud environment <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to compare the migration issue <NUM> to a plurality of historical issues <NUM>.

The processor <NUM> fetches, decodes, and executes the instructions <NUM> to select, based on the comparison, a resolution <NUM>.

Claim 1:
A migration context and flow graph based migration control apparatus (<NUM>) comprising:
a migration controller (<NUM>), executed by at least one hardware processor (<NUM>, <NUM>), to
ascertain an application (<NUM>) that is to be migrated from a physical environment (<NUM>) to a cloud environment (<NUM>), and
determine a migration issue (<NUM>) associated with migration of the application from the physical environment to the cloud environment; and
a migration advisor (<NUM>), executed by the at least one hardware processor (<NUM>, <NUM>), to
identify, from a historical issue database (<NUM>), a plurality of historical issues (<NUM>),
determine, for the migration issue and the plurality of historical issues, unified proximities (<NUM>), wherein a unified proximity between the migration issue and a historical issue is a function of a descriptive proximity, a contextual proximity and a flow proximity, wherein a descriptive proximity is based on issue description between two issues, wherein a contextual proximity is based on issue context between two issues, and wherein a flow proximity is based on a pairwise proximity between sub-processes of flows associated with two issues,
sort, based on the determined unified proximities, the historical issues,
select, from the sorted historical issues, a topmost historical issue,
determine, from the topmost historical issue, a resolution (<NUM>) associated with the topmost historical issue, and
forward the resolution to the migration controller,
wherein the migration controller is further executed by the at least one hardware processor to
execute the resolution to resolve the migration issue, and
perform, based on the resolved migration issue, migration of the application from the physical environment to the cloud environment.