EP3453155A1 - Providing automatic detection and optimization of user experience upgrades based on detected customization - Google Patents

Providing automatic detection and optimization of user experience upgrades based on detected customization

Info

Publication number
EP3453155A1
EP3453155A1 EP17723197.4A EP17723197A EP3453155A1 EP 3453155 A1 EP3453155 A1 EP 3453155A1 EP 17723197 A EP17723197 A EP 17723197A EP 3453155 A1 EP3453155 A1 EP 3453155A1
Authority
EP
European Patent Office
Prior art keywords
application
user experience
version
customizations
new version
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
EP17723197.4A
Other languages
German (de)
French (fr)
Other versions
EP3453155B1 (en
Inventor
John Lincoln Demaris
Jeremy Mazner
Zhenguang Chen
Constantin Dan STANCIU
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Technology Licensing LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Technology Licensing LLC filed Critical Microsoft Technology Licensing LLC
Publication of EP3453155A1 publication Critical patent/EP3453155A1/en
Application granted granted Critical
Publication of EP3453155B1 publication Critical patent/EP3453155B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication

Definitions

  • User experiences of hosted applications may be customized.
  • User experience elements such as menus, buttons, and application colors may be changed or extended through declarative means.
  • the user experience elements may be modified by deploying custom code.
  • Embodiments are directed to providing an automatic detection and an optimization of user experience upgrades based on detected customization.
  • a new version of an application may be executed on a computing device in conjunction with a detection service.
  • the new version of the application may include user experience changes.
  • Customizations associated with a user experience of a previous version of the application for users may be determined.
  • the user experience of the previous version of the application may be provided to the users.
  • the user experience of the new version of the application may be provided to the users.
  • FIG. 1 is a conceptual diagram illustrating an example computing
  • FIG. 2 is a conceptual diagram illustrating an example system configuration for providing an automatic detection and an optimization of user experience upgrades based on detected customization for a first tenant and based on detected customization for a second tenant, according to embodiments;
  • FIG. 3 is a conceptual diagram illustrating an example system configuration for performing a one-to-one comparison between each customized feature from a first list of customizations to each customized feature from a second list of customizations to determine if at least one customized feature of a previous version of an application is incompatible with a new version of the application, according to embodiments;
  • FIG. 4 is a conceptual diagram illustrating an example system configuration for utilizing a hosted service and a detection service to provide an automatic detection and an optimization of user experience upgrades based on detected customizations, according to embodiments;
  • FIG. 5 is a simplified networked environment, where a system according to embodiments may be implemented
  • FIG. 6 is a block diagram of an example computing device, which may be used for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments.
  • FIG. 7 is a logic flow diagram illustrating a process to provide an automatic detection and an optimization of user experience upgrades based on detected
  • a new version of an application may be executed on a computing device in conjunction with a detection service.
  • the new version of the application may include user experience changes.
  • Customizations associated with a user experience of a previous version of the application for users may be determined.
  • the user experience of the previous version of the application may be provided to the users.
  • the user experience of the new version of the application may be provided to the users.
  • the customizations associated with the user experience of the previous version of the application may include a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, a behavior customization, and a combination thereof.
  • the customizations may be at one of a user level, a group level, and an enterprise level.
  • the previous version of the application is a down-level version of the application.
  • program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types.
  • embodiments may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and comparable computing devices.
  • Embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network.
  • program modules may be located in both local and remote memory storage devices.
  • Some embodiments may be implemented as a computer-implemented process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media.
  • the computer program product may be a computer storage medium readable by a computer system and encoding a computer program that comprises instructions for causing a computer or computing system to perform example process(es).
  • the computer-readable storage medium is a computer- readable memory device.
  • the computer-readable storage medium can for example be implemented via one or more of a volatile computer memory, a non-volatile memory, a hard drive, a flash drive, a floppy disk, or a compact disk, and comparable hardware media.
  • platform may be a combination of software and hardware components for providing an automatic detection and an optimization of user experience upgrades based on detected customization.
  • platforms include, but are not limited to, a hosted service executed over a plurality of servers, an application executed on a single computing device, and comparable systems.
  • server generally refers to a computing device executing one or more software programs typically in a networked environment. More detail on these technologies and example operations is provided below.
  • a computing device refers to a device comprising at least a memory and one or more processors that includes a server, a desktop computer, a laptop computer, a tablet computer, a smart phone, a vehicle mount computer, or a wearable computer.
  • a memory may be a removable or non-removable component of a computing device configured to store one or more instructions to be executed by one or more processors.
  • a processor may be a component of a computing device coupled to a memory and configured to execute programs in conjunction with instructions stored by the memory. Actions or operations described herein may be executed on a single processor, on multiple processors (in a single machine or distributed over multiple machines), or on one or more cores of a multi-core processor.
  • An operating system is a system configured to manage hardware and software components of a computing device that provides common services and applications.
  • An integrated module is a component of an application or service that is integrated within the application or service such that the application or service is configured to execute the component.
  • a computer-readable memory device is a physical computer-readable storage medium implemented via one or more of a volatile computer memory, a non-volatile memory, a hard drive, a flash drive, a floppy disk, or a compact disk, and comparable hardware media that includes instructions thereon to automatically save content to a location.
  • a user experience - a visual display associated with an application or service through which a user interacts with the application or service.
  • a user action refers to an interaction between a user and a user experience of an application or a user experience provided by a service that includes one of touch input, gesture input, voice command, eye tracking, gyroscopic input, pen input, mouse input, and keyboards input.
  • An application programming interface may be a set of routines, protocols, and tools for an application or service that allow the application or service to interact or communicate with one or more other applications and services managed by separate entities.
  • a system for upgrading the user experience of applications or services.
  • the system additionally allows for an improvement of the user experience for the users and environments that are not customized, while leaving the business-critical functionality of customized environments intact.
  • Such a system may rely on the application / service being able to host a particular page or a screen, while using either the newest version of the user experience or a down-level version of the user experience.
  • the system may detect whether any customizations are present that rely on the down-level version of the user experience. If one of these customizations are detected, then the down-level user experience may be provided to the user. If none of these customizations are detected, then the newest version of the user experience may be provided.
  • the technical advantages of providing an automatic detection and an optimization of user experience upgrades based on detected customization may include improved user efficiency and user experience interaction by enabling users and enterprises to continue using custom functionality while upgrading other users to a newest version of an application or service.
  • Embodiments address a need that arises from very large scale operations created by networked computing and cloud based services that cannot be managed by humans.
  • the actions/operations described herein are not a mere use of a computer, but address results of a system that is a direct consequence of software used as a service such as hosted services and/or detection services offered in conjunction with user experience customizations.
  • FIG. 1 is a conceptual diagram illustrating an example computing
  • an example system may include a datacenter 108.
  • the datacenter 108 may host a detection service 114.
  • the detection service 114 may provide an automatic detection and optimization of user experience upgrades based on detected customizations.
  • the datacenter 108 may include processing servers 112. At least one of the processing servers 112 may execute an optimization engine 116 of the detection service 114, among other components.
  • the datacenter 108 may also include storage servers 118.
  • the storage servers 118 may be configured to manage one or more data stores.
  • the one or more data stores may comprise data associated with the optimization engine 116.
  • the optimization engine 116 may be implemented as software, hardware, or a combination thereof.
  • the detection service 114 may be configured to be integrated with numerous applications.
  • a user 104 may execute a thin version (e.g., a web browser) of an application 106 through a computing device 102.
  • the computing device 102 may include a desktop computer, a laptop computer, a tablet computer, a smart phone, a vehicle mount computer, or a wearable computer, among other devices.
  • the user 104 may execute a thick version (e.g., a locally-installed version) of the application 106 through the computing device 102.
  • the detection service 114 may be configured to interact with the application 106 over one or more networks, such as a network 110.
  • the network 110 may comprise any topology of servers, clients, Internet service providers, and communication media.
  • the application 106 may be a productivity application.
  • the productivity application may include a word-processing application, a spreadsheet application, a presentation application, or a notebook application, among other examples.
  • the application 106 may be hosted by the detection service 114.
  • a user experience 120 may facilitate communication over the network 110 and between the detection service 114 and the application 106.
  • the application 106 may be executed on a server.
  • the server may include a communication module, a memory, and a processor.
  • the communication module may be configured to facilitate communication between the detection service 114 and a plurality of client applications.
  • the memory may be configured to store instructions.
  • the processor may be coupled to the memory.
  • the processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service 114 and the optimization engine 116 integrated with the detection service 114.
  • the user experience 120 of the application 106 when the user experience 120 of the application 106 is updated or upgraded, many features of the application 106 may be incremental. For example, a new feature may be added or a feature may be changed, while leaving the surrounding application intact. For the incremental changes, the customizations of the user experience 120 may continue to function as they have previously. However, the user experience 120 of the application 106 may change significantly in some scenarios, changing the foundation upon which the customizations operate. In such scenarios, the customizations that were in place before the user experience 120 was updated / upgraded may no longer work; this may pose a substantial challenge for enterprises that run business-critical functionality on cloud services, which upgrade their user experience frequently in a way that is not controlled by an administrator of the consuming enterprise.
  • the optimization engine 116 may detect a deployment of a new version of the application 106 executed on the computing device 102 in conjunction with the detection service 114.
  • the new version of the application 106 may include user experience changes.
  • the computing device 102 may also include a repository 130.
  • the repository 130 may be configured to store a first list of customizations associated with the previous version of the application 106 and a second list of customizations associated with the new version of the application 106.
  • the optimization engine 116 may determine customizations associated with the user experience 120 of a previous version of the application 106 for the user 104.
  • the previous version of the application 106 may be a down-level version of the application.
  • the optimization engine 116 may determine if at least one customized feature of the previous version of the application 106 is incompatible with the new version of the application 106. In other examples, the optimization engine 116 may provide the user experience 120 of the previous version of the application 106 to the user 104 in response to a determination that the at least one customized feature of the previous version of the application 106 is incompatible with the new version of the application 106. In some examples, the optimization engine 116 may provide the user experience 120 of the new version of the application 106 to the user 104 in response to a determination that the customizations of the previous version of the application 106 are compatible with the new version of the application 106.
  • FIG. 1 While the example system in FIG. 1 has been described with specific components including the computing device 102, the application 106, the datacenter 108, the processing servers 112, the detection service 114, the optimization engine 116, the storage servers 118, and the user experience 120, embodiments are not limited to these components or system configurations and can be implemented with other system configuration employing fewer or additional components.
  • FIG. 2 is a conceptual diagram illustrating an example system configuration for providing an automatic detection and an optimization of user experience upgrades based on detected customization for a first tenant and based on detected customization for a second tenant, according to at least some embodiments disclosed herein.
  • the example system may include a hosted service 214 executed over a server 212.
  • the server 212 may include a communication module, a memory configured to store instructions, and a processor.
  • the processor may be coupled to the communication module and the memory.
  • the processor may be configured to execute, in conjunction with the instructions stored in the memory, the hosted service 214 and an optimization engine 216 integrated with the hosted service 214.
  • the communication module may be configured to facilitate an exchange of communication over one or more networks, such as a network 110, between the hosted service 214 (e.g., a detection service) and a plurality of client applications.
  • the hosted service 214 may be configured to interact with the application 206 over one or more networks, such as a network 110.
  • the application 206 may include a word-processing application, a spreadsheet application, a presentation application, or a notebook application, among other applications.
  • the network 110 may comprise any topology of servers, clients, Internet service providers, and communication media.
  • a first user experience 220 of a first computing device 209 may facilitate communication over the network 110 and between the hosted service 214 and the application 206.
  • the first computing device 209 may further include a first repository 240.
  • the first repository 240 is configured to store a first list of customizations associated with the previous version of the application 206 and a second list of customizations associated with the new version of the application 206.
  • a second user experience 221 of a second computing device 211 may facilitate communication over the network 210 and between the hosted service 214 and the application 206.
  • the second computing device 211 may include a second repository 241.
  • the second repository 241 is configured to store a first list of customizations associated with the previous version of the application 206 and a second list of customizations associated with the new version of the application 206.
  • the previous version of the application 206 may be a down-level version of the application 206.
  • a single instance of software may run on the server 212 and may serve multiple tenants; this may be referred to as software multi-tenancy.
  • a first tenant 204 (or a first group of users) and a second tenant 222 (or a second group of users) may share a common access to the server 212.
  • the first tenant 204 and the second tenant 222 may have specific access privileges to the software instance.
  • the application 206 may be designed to provide every tenant (e.g., the first tenant 204 and the second tenant 222) a dedicated share of the software instance, which may include data associated with the software instance, a configuration of the software instance, non-functional properties of the software instance, and tenant individual functionality of the software instance.
  • the first tenant 204 may execute a thin version (e.g., a web browser) of the application 206 through the first computing device 209.
  • the first tenant 204 may execute a thick version (e.g., a locally-installed version) of the application 206 through the first computing device 209.
  • the second tenant 222 (or the second group of users) may execute the thin version (e.g., a web browser) of the application 206 through the second computing device 211.
  • the second tenant 222 may execute a thick version (e.g., a locally-installed version) of the application 206 through the second computing device 211.
  • the first tenant 204 may include one or more users in a first department of a corporation (e.g., a legal department).
  • the second tenant 222 may include one or more users of a second department of the corporation (e.g., a human resources department).
  • the optimization engine 216 may determine a first set of customizations associated with a first user experience 220 of a previous version of the application 206 for the first tenant 204, which may include a theme customization and a color scheme customization.
  • the optimization engine 216 may also determine a second set of customizations associated with a second user experience 221 of the previous version of the application 206 for the second tenant 222, which may include a shading customization and a menu customization.
  • the first set of customizations and the second set of customizations may differ, as the legal department may require different user experience customizations than the human resources department may require to execute job-related tasks.
  • Additional customizations associated with the user experience of the previous version of the application may include a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, and a behavior customization, and a combination thereof. Further, the customizations may be at one of a user level, a group level, and an enterprise level.
  • the optimization engine 216 may distinguish the customizations by one or more schemes, such as a textual scheme, a graphical scheme, an audio scheme, an animation scheme, a coloring scheme, a highlighting scheme, and/or a shading scheme, among others.
  • the optimization engine 216 may then determine if at least one customized feature of the previous version of the application 206 for the first tenant 204 is incompatible with the new version of the application 206. In response to a determination that the at least one customized feature of the previous version of the application 206 for the first tenant 204 is incompatible with the new version of the application 206, the optimization engine 216 is further configured to provide the first user experience 220 of the previous version of the application 206 to the first tenant 204. In additional examples, the optimization engine 216 is further configured to determine if at least one customized feature of the previous version of the application 206 for the second tenant 222 is incompatible with the new version of the application 206.
  • the optimization engine 216 is also configured to detect no customized features associated with the previous version of the application 206 associated with the second tenant 222. In response, the optimization engine 216 is further configured to provide the second user experience 221 of the new version of the application 206 to the second tenant 222.
  • FIG. 3 is a conceptual diagram illustrating an example system configuration for performing a one-to-one comparison between each customized feature from a first list of customizations to each customized feature from a second list of customizations to determine if at least one customized feature of a previous version of an application is incompatible with a new version of the application, according to at least some
  • the example system may include a detection service 314 executed over a server 312.
  • the server 312 may include a communication module, a memory configured to store instructions, and a processor.
  • the processor may be coupled to the communication module and the memory.
  • the processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service 314 and an optimization engine 315 integrated with the optimization engine 315.
  • the communication module may be configured to facilitate an exchange of communication a network 310 between the detection service 314 and a plurality of client applications (e.g., a first computing device 302 and a second computing device 303).
  • a first user 324 may execute a web browser of an application 306 through the first computing device 302.
  • a first user experience 320 may facilitate communication over the network 310 and between the detection service 314 and the application 306.
  • the first computing device 302 may also include a first repository 340.
  • the first repository 340 may store a first list of customizations 342 and a second list of customizations 343.
  • the first list of customizations 342 may be labeled "previous" by default and may be associated with the previous version of the application 306.
  • the second list of the customizations 343 may be labeled "new" by default and may be associated with the new version of the application 306.
  • the previous version of the application 306 may be a down-level version of the application.
  • the optimization engine 315 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 342 to each customized feature from the second list of customizations 343 to determine if the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306.
  • the optimization engine 315 may implement an algorithm to perform the one-to-one comparison.
  • the algorithm may include a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, a machine learning algorithm, and/or machine learning techniques, among others.
  • the comparison-based sorting algorithm is a type of sorting algorithm that reads the list of elements through a single abstract comparison operation (e.g., a "less than or equal to" operator) that determines which of two elements should occur first in a final sorted list.
  • Examples of comparison-based sorting algorithms include a quick sort algorithm, a heap sort algorithm, a merge sort algorithm, an intro sort algorithm, an insertion sort algorithm, a selection sort algorithm, a bubble sort algorithm, a cycle sort algorithm, and a merge insertion sort algorithm, among others.
  • the approximate string matching algorithm finds approximate sub-string matches inside a given string and then finds dictionary strings that match the pattern approximately.
  • the machine learning techniques may include pattern recognition and computational learning theory, among others.
  • the machine learning algorithms may learn and make predictions. Common machine learning algorithms may include supervised learning algorithms, unsupervised learning algorithms, and reinforcement learning algorithms. Some of the machine learning algorithms may include linear regression algorithms, logistic regression algorithms, decision tree algorithms, support vector machine (SVM) algorithms, Naive Bayes algorithms, a K-nearest neighbors (KNN) algorithm, a K-means algorithm, a random forest algorithm, dimensionality reduction algorithms, and a Gradient Boost & Adaboost algorithm, among others.
  • SVM support vector machine
  • KNN K-nearest neighbors
  • KNN K-means algorithm
  • random forest algorithm dimensionality reduction algorithms
  • Gradient Boost & Adaboost algorithm among others.
  • incompatibility of features of a current version with past version(s) may be determined automatically, for example, through the use of heuristics.
  • the list of compatible / incompatible extensions may be built or updated through a module that monitors every time a user manually chooses to revert to a previous version (e.g., clicking "back to classic") and employs machine learning or similar process to look at the customizations of applications where many users have made such a decisions.
  • the monitoring module may look at the enabled extensions, for example, and determine if there is a strong correlation between a given extension being enabled on a particular version of an application (or service) and users of that version of the application manually reverting. Where a correlation is found, the list of compatible / incompatible extensions may be automatically updated.
  • a second user 325 may execute a thin version of the application 306 through the second computing device 303.
  • a second user experience 321 may facilitate communication over the network 310 and between the detection service 314 and the application 306.
  • the second computing device 303 may also include a second repository 341.
  • the second repository 341 may store a first list of customizations 344 and a second list of customizations 345.
  • the first list of customizations 344 may be labeled "previous" by default and may be associated with the previous version of the application 306.
  • the second list of the customizations 345 may be labeled "new" by default and may be associated with the new version of the application 306.
  • the optimization engine 315 may be configured to perform a one-to-one comparison between each customized feature from the first list of
  • the optimization engine 315 may implement an algorithm to perform the one-to- one comparison, as described with the first repository 340.
  • the optimization engine 315 may detect a deployment of a new version of the application 306 executed on the first computing device 302 in conjunction with the detection service 314.
  • the new version of the application 306 may include user experience changes.
  • the optimization engine 315 may determine
  • customizations associated with the first user experience 320 of a previous version of the application 306 for the first user 324 may also be applied to "out-of- the-box" features.
  • the customizations associated with the first user experience 320 of the previous version of the application 306 may include one or more of: a theme
  • the customizations may be at one of a user level, a group level, and an enterprise level.
  • the customizations may be detected by one of: modifications to source code of the application 306 and modifications to one or more modules associated with the detection service 314.
  • the customizations associated with the first user experience 320 may be detected by one or more of: modifications to metadata, modifications to libraries associated with the application 306, and/or modifications to modules associated with the application 306.
  • the optimization engine 315 may determine if at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In other examples, the optimization engine 315 may receive a request from the first user 324 to view one of a web-page, a dialog, or a screen on the first user experience 320. In response, the optimization engine 315 may initiate a process to determine if the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306.
  • the optimization engine 315 may provide the first user experience 320 of the previous version of the application 306 to the first user 324 in response to a determination that the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In further examples, the optimization engine 315 may provide the first user experience 320 of the new version of the application 306 to the first user 324 in response to a determination that the customizations of the previous version of the application 306 are compatible with the new version of the application 306.
  • FIG. 4 is a conceptual diagram illustrating an example system configuration for utilizing a hosted service and a detection service to provide an automatic detection and an optimization of user experience upgrades based on detected customizations, according to at least some embodiments disclosed herein.
  • the example system may include a detection service 416 executed over a server 413.
  • the example system may also include a hosted service 414 executed over a server 412.
  • the hosted service 414 and the detection service 416 may be configured to communicate with one another via one or modules and/or engines (e.g., communication modules).
  • the hosted service 414 may be integrated with an optimization engine 415.
  • the hosted service 414 and the detection service 416 may exchange communications over a network 410 to a first computing device 402 and a second computing device 403 through use of the one or more modules (e.g., the communication modules).
  • a first user 424 may execute a thin version of an application 406 through the first computing device 402.
  • a first user experience 420 may facilitate communication over the network 410 and between the hosted service 414 and/or the detection service 416 and the application 406.
  • the first computing device 402 may also include a first repository 440.
  • the first repository 440 may store a first list of customizations 442 and a second list of customizations 443.
  • the first list of customizations 442 may be labeled "previous" by default and may be associated with the previous version of the application.
  • the second list of the customizations 443 may be labeled "new" by default and may be associated with the new version of the application 406.
  • the optimization engine 415 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 442 to each customized feature from the second list of customizations 443 to determine if the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406.
  • the optimization engine 415 may implement an algorithm to perform the one-to-one comparison.
  • the algorithm may include a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, a machine learning algorithm, and/or machine learning techniques, among others.
  • a second user 425 may execute a thin version of the application 406 through the second computing device 403.
  • a second user experience 421 may facilitate communication over the network 410 and between the detection service 416 and/or the hosted service 414 and the application 406.
  • the second computing device 403 may also include a second repository 441.
  • the second repository 441 may store a first list of customizations 444 and a second list of customizations 445. The first list of
  • customizations 444 may be labeled "previous” by default and may be associated with the previous version of the application 406.
  • the second list of the customizations 445 may be labeled "new” by default and may be associated with the new version of the application 406.
  • the optimization engine 415 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 444 to each customized feature from the second list of customizations 445 to determine if the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406.
  • the optimization engine 415 may implement an algorithm to perform the one-to-one comparison, as described with the first repository 440.
  • the optimization engine 415 may detect a deployment of a new version of the application 406 executed on the first computing device 402 in conjunction with the detection service 416.
  • the new version of the application 406 may include user experience changes.
  • the optimization engine 415 may determine
  • the optimization engine 415 may determine if at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In other examples, the optimization engine 415 may provide the first user experience 420 of the previous version of the application 406 to the first user 424 in response to a determination that the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In further examples, the optimization engine 415 may provide the first user experience 420 of the new version of the application 406 to the first user 424 in response to a determination that the customizations of the previous version of the application 406 are compatible with the new version of the application 406.
  • FIG. 1 through FIG. 4 are shown with specific components, data types, and configurations. Embodiments are not limited to systems according to these example configurations. Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be implemented in configurations employing fewer or additional components. Furthermore, the example schema and components shown in FIG. 1 through FIG. 4 and their subcomponents may be implemented in a similar manner with other values using the principles described herein.
  • FIG. 5 is a simplified networked environment, where a system according to embodiments may be implemented.
  • an optimization engine may also be employed in conjunction with hosted applications and services (e.g., a detection service) that may be implemented via software executed over one or more servers 506 or individual server 508, as illustrated in diagram 500.
  • hosted applications or services e.g., a detection service
  • a hosted service or application may communicate with client applications on individual client devices 501-505, such as a handheld computer 501, a desktop computer 502, a laptop computer 503, a smart phone 504, and a tablet computer 505, among other client devices.
  • the hosted service or the application may communicate with the applications through one or more networks 510 and present a user experience to a plurality of users.
  • the individual client devices 501-505 may be used to access the functionality provided by the hosted service or the application.
  • the one or more of the servers 506 or the individual server 508 may be used to provide a variety of services, as previously discussed.
  • Relevant data may be stored in one or more data stores (e.g. a data store 514), which may be managed by the one or more servers 506 or by a database server 512.
  • the one or more networks 510 may comprise any topology of servers, clients, Internet service providers, and communication media.
  • a system according to embodiments may have a static or dynamic topology.
  • the one or more networks 510 may include a secure network such as an enterprise network, an unsecure network such as a wireless open network, or the Internet.
  • the one or more networks 510 may also coordinate communication over other networks, such as PSTN or cellular networks.
  • the one or more networks 510 may provide communication between the nodes, as described herein.
  • the one or more networks 510 may include wireless media such as acoustic, RF, infrared and other wireless media.
  • Many other configurations of computing devices, applications, engines, data sources, and data distribution systems may be employed for providing an automatic detection and an optimization of user experience upgrades based on detected
  • FIG. 6 is a block diagram of an example computing device, which may be used for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments.
  • a computing device 600 may be used as a server, desktop computer, portable computer, smart phone, special purpose computer, or similar device.
  • the computing device 600 may include one or more processors 604 and a system memory 606.
  • a memory bus 608 may be used for communication between the processor 604 and the system memory 606.
  • the example basic configuration 602 may be illustrated in FIG. 6 by those components within the inner dashed line.
  • the processor 604 may be of any type, including but not limited to a microprocessor ( ⁇ ), a microcontroller ( ⁇ ), a digital signal processor (DSP), or any combination thereof.
  • the processor 604 may include one more levels of caching, such as a level cache memory 612, one or more processor cores 614, and registers 616.
  • the one or more processor cores 614 may (each) include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof.
  • An example memory controller 618 may also be used with the processor 604, or in some implementations, the example memory controller 618 may be an internal part of the processor 604.
  • the system memory 606 may be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.), or any combination thereof.
  • the system memory 606 may include an operating system 620, a detection service 622, a repository 629, and a program data 624.
  • the detection service 622 may include an optimization engine 627, which may be an integrated module of the detection service 622.
  • the optimization engine 627 may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service.
  • the new version of the application may include user experience changes.
  • the optimization engine 627 may also determine customizations associated with a user experience of a previous version of the application for one or more users and may determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. Further, the optimization engine 627 may provide the user experience of the previous version of the application to the one or more users in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application. In other examples, the optimization engine 627 may provide the user experience of the new version of the application to the one or more users in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application.
  • the program data 624 may include customization data, as described herein.
  • the repository 629 may be configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application.
  • the optimization engine 627 may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • an algorithm may be implemented to perform the one-to-one comparison.
  • the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
  • the computing device 600 may have additional features or functionality, and additional interfaces to facilitate communications between the example basic configuration 602 and any desired devices and interfaces.
  • a bus/interface controller 630 may be used to facilitate communications between the example basic configuration 602 and one or more data storage devices 632 via a storage interface bus 634.
  • the data storage devices 632 may be one or more removable storage devices 636, one or more nonremovable storage devices 638, or a combination thereof.
  • Examples of the removable storage and the non-removable storage devices may include magnetic disk devices, such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives, to name a few.
  • Example computer storage media may include volatile and nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data.
  • the system memory 606, the removable storage devices 636 and the nonremovable storage devices 638 are examples of computer storage media.
  • Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs), solid state drives, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by the computing device 600. Any such computer storage media may be part of the computing device 600.
  • the computing device 600 may also include an interface bus 640 for facilitating communication from various interface devices (for example, one or more output devices 642, one or more peripheral interfaces 644, and one or more
  • the one or more peripheral interfaces 644 may include a serial interface controller 654 or a parallel interface controller 656, which may be configured to communicate with external devices such as input devices (for example, keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (for example, printer, scanner, etc.) via one or more I/O ports 658.
  • An example communication device 666 includes a network controller 660, which may be arranged to facilitate communications with one or more other computing devices 662 over a network communication link via one or more communication ports 664.
  • the one or more other computing devices 662 may include servers, computing devices, and comparable devices.
  • the network communication link may be one example of a communication media.
  • Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and may include any information delivery media.
  • a "modulated data signal" may be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal.
  • communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media.
  • RF radio frequency
  • IR infrared
  • the term computer readable media as used herein may include both storage media and communication media.
  • the computing device 600 may be implemented as a part of a general purpose or specialized server, mainframe, or similar computer, which includes any of the above functions.
  • the computing device 600 may also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.
  • Example embodiments may also include methods for providing an automatic detection and an optimization of user experience upgrades based on detected
  • FIG. 7 is a logic flow diagram illustrating a process for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments.
  • a process 700 may be implemented on a computing device (e.g., the computing device 600 in FIG. 6), a server, or with another system.
  • the system may include a server.
  • the server may include components, such as a
  • the communication module may be configured to facilitate an exchange of communication between a detection service and a plurality of client applications.
  • the memory may be configured to store instructions.
  • the processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service and an optimization engine integrated with the detection service.
  • the client device or the computing device may be associated with a user so that the user may execute customizations on the user experience.
  • the process 700 begins with operation 710, where the optimization engine may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service.
  • the new version of the application may include user experience changes.
  • the optimization engine may be further configured to detect the customizations associated with the user experience by modifications to source code of the application or modifications to one or more modules associated with the detection service.
  • the optimization engine may be configured to determine customizations associated with a user experience of a previous version of the application for one or more users.
  • the customizations associated with the user experience of the previous version of the application may include one or more of a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, and a behavior customization, and a combination thereof.
  • the customizations may be at one of a user level, a group level, and an enterprise level.
  • the optimization engine may be configured to determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application.
  • the optimization engine may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the one-to-one comparison may be performed by implementation of an algorithm.
  • the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
  • the optimization engine may be configured to provide the user experience of the previous version of the application to the one or more users in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the optimization engine may be configured to provide the user experience of the new version of the application to the one or more users in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application.
  • Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be implemented by similar processes with fewer or additional steps, as well as in different order of operations using the principles described herein.
  • the operations described herein may be executed by one or more processors operated on one or more computing devices, one or more processor cores, specialized processing devices, and/or general purpose processors, among other examples.
  • An example server may include a communication module, a memory, and a processor.
  • the communication module may be configured to facilitate an exchange of communication between a detection service and a plurality of client applications.
  • the memory may store instructions.
  • the processor may be coupled to the communication module and the memory.
  • the processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service and an optimization engine integrated with the detection service.
  • the optimization engine may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service.
  • the new version of the application may include user experience changes.
  • the optimization engine may also determine customizations associated with a user experience of a previous version of the application for one or more users and may determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, the optimization engine may also provide the user experience of the previous version of the application to the one or more users. In response to a determination that the
  • the optimization engine may also provide the user experience of the new version of the application to the one or more users.
  • the optimization engine may be further configured to detect no customized features associated with the previous version of the application and may provide the user experience of the new version of the application to the one or more users.
  • the customizations associated with the user experience of the previous version of the application may include a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a
  • the optimization engine may be at one of a user level, a group level, and an enterprise level. According to some other examples, the optimization engine may be further configured to detect the customizations associated with the user experience by modifications to source code of the application and/or modifications to one or more modules associated with the detection service.
  • the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application.
  • the optimization engine may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of
  • the optimization engine may be configured to implement an algorithm to perform the one-to-one comparison.
  • the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
  • customization may be described, which may include a means for detecting a deployment of a new version of an application executed on the computing device that includes user experience changes and a means for determining customizations associated with a user experience of a previous version of the application for one or more users.
  • the means for providing an automatic detection and an optimization of user experience upgrades based on detected customization may further include a means for determining if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, a means for providing the user experience of the previous version of the application to the one or more users may be described. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, a means for providing the user experience of the new version of the application to the one or more users may be described.
  • methods executed on computing devices may be described.
  • An example method executed on a computing device for providing an automatic detection and an optimization of user experience upgrades based on detected customization may be described.
  • the example method may include detecting a
  • customizations may be at one of a user level, a group level, and an enterprise level.
  • the example method may further include determining if at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the example method may further include providing the user experience of the previous version of the application to the one or more users.
  • the example method may further include providing the user experience of the new version of the application to the one or more users.
  • the example method in response to receiving a request from a user to view one of a web-page or a screen on the user experience, may further include initiating a process to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the previous version of the application may be a down-level version of the application.
  • the example method may further include detecting the customizations associated with the user experience by modifications to metadata, modifications to libraries associated with the application, and/or modifications to modules associated with the application.
  • the example method may further include identifying the one or more users as a first department within a company and a second department within a company, determining a first set of customizations associated with a first user experience of the previous version of the application for the first department, and determining a second set of customizations associated with a second user experience of the previous version of the application for the second department.
  • the example method may further include determining if at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the application and in response to a determination that the at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the
  • the example method may further include determining if at least one customized feature of the previous version of the application for the second department is incompatible with the new version of the application, detecting no customized features associated with the previous version of the application associated with the second department, and providing the user experience of the new version of the application to the second department.
  • computing devices may be described.
  • An example computing device configured to provide an automatic detection and an optimization of user experience upgrades based on detected customization may be described.
  • the example computing device may include a memory configured to store instructions and one or more processors coupled to the memory.
  • the one or more processors may be configured to execute, in conjunction with the instructions stored in the memory, an application associated with a detection service.
  • the application may be configured to detect a deployment of a new version of the application that includes user experience changes and determine customizations associated with a user experience of a previous version of the application for one or more users.
  • the customizations may be at one of a user level, a group level, and an enterprise level.
  • the application may also be configured to determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, the application may be further configured to provide the user experience of the previous version of the application to the one or more users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the application may be configured to provide the user experience of the new version of the application to the one or more users.
  • the application may include one of a word- processing application, a spreadsheet application, a presentation application, and a notebook application.
  • the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application.
  • the application may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
  • the algorithm may be
  • the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be described. A new version of an application may be executed on a computing device in conjunction with a detection service. The new version of the application may include user experience changes. Customizations associated with a user experience of a previous version of the application for users may be determined. In response to a determination that at least one customized feature of the previous version of the application is incompatible with the new version of the application, the user experience of the previous version of the application may be provided to the users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the user experience of the new version of the application may be provided to the users.

Description

PROVIDING AUTOMATIC DETECTION AND OPTIMIZATION OF USER EXPERIENCE UPGRADES BASED ON DETECTED CUSTOMIZATION
BACKGROUND
[0001] User experiences of hosted applications, such as collaboration applications or productivity applications, may be customized. User experience elements, such as menus, buttons, and application colors may be changed or extended through declarative means. In some examples, the user experience elements may be modified by deploying custom code.
[0002] When the user experience of the application is updated or upgraded, many changes may be incremental (e.g., a new feature may be added or changed, while leaving the surrounding application intact). Occasionally, the user experience of the application may change significantly, resulting in a change in the foundation upon which the customizations operate. In such scenarios, the customizations that were in place before the user experience was updated and/or was upgraded may no longer work.
SUMMARY
[0003] This summary is provided to introduce a selection of concepts in a simplified form that are further described below in the Detailed Description. This summary is not intended to exclusively identify key features or essential features of the claimed subject matter, nor is it intended as an aid in determining the scope of the claimed subject matter.
[0004] Embodiments are directed to providing an automatic detection and an optimization of user experience upgrades based on detected customization. A new version of an application may be executed on a computing device in conjunction with a detection service. The new version of the application may include user experience changes.
Customizations associated with a user experience of a previous version of the application for users may be determined. In response to a determination that at least one customized feature of the previous version of the application is incompatible with the new version of the application, the user experience of the previous version of the application may be provided to the users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the user experience of the new version of the application may be provided to the users.
[0005] These and other features and advantages will be apparent from a reading of the following detailed description and a review of the associated drawings. It is to be understood that both the foregoing general description and the following detailed description are explanatory and do not restrict aspects as claimed. BRIEF DESCRIPTION OF THE DRAWINGS
[0006] FIG. 1 is a conceptual diagram illustrating an example computing
environment for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments;
[0007] FIG. 2 is a conceptual diagram illustrating an example system configuration for providing an automatic detection and an optimization of user experience upgrades based on detected customization for a first tenant and based on detected customization for a second tenant, according to embodiments;
[0008] FIG. 3 is a conceptual diagram illustrating an example system configuration for performing a one-to-one comparison between each customized feature from a first list of customizations to each customized feature from a second list of customizations to determine if at least one customized feature of a previous version of an application is incompatible with a new version of the application, according to embodiments;
[0009] FIG. 4 is a conceptual diagram illustrating an example system configuration for utilizing a hosted service and a detection service to provide an automatic detection and an optimization of user experience upgrades based on detected customizations, according to embodiments;
[0010] FIG. 5 is a simplified networked environment, where a system according to embodiments may be implemented;
[0011] FIG. 6 is a block diagram of an example computing device, which may be used for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments; and
[0012] FIG. 7 is a logic flow diagram illustrating a process to provide an automatic detection and an optimization of user experience upgrades based on detected
customization, according to embodiments.
DETAILED DESCRIPTION
[0013] As briefly described above, providing an automatic detection and an optimization of user experience upgrades based on detected customization may be described. A new version of an application may be executed on a computing device in conjunction with a detection service. The new version of the application may include user experience changes. Customizations associated with a user experience of a previous version of the application for users may be determined. In response to a determination that at least one customized feature of the previous version of the application is incompatible with the new version of the application, the user experience of the previous version of the application may be provided to the users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the user experience of the new version of the application may be provided to the users.
[0014] According to other examples, the customizations associated with the user experience of the previous version of the application may include a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, a behavior customization, and a combination thereof. In other examples, the customizations may be at one of a user level, a group level, and an enterprise level. In additional examples, the previous version of the application is a down-level version of the application.
[0015] In the following detailed description, references are made to the
accompanying drawings that form a part hereof, and in which are shown by way of illustrations, specific embodiments, or examples. These aspects may be combined, other aspects may be utilized, and structural changes may be made without departing from the spirit or scope of the present disclosure. The following detailed description is therefore not to be taken in a limiting sense, and the scope of the present invention is defined by the appended claims and their equivalents.
[0016] While some embodiments will be described in the general context of program modules that execute in conjunction with an application program that runs on an operating system on a personal computer, those skilled in the art will recognize that aspects may also be implemented in combination with other program modules.
[0017] Generally, program modules include routines, programs, components, data structures, and other types of structures that perform particular tasks or implement particular abstract data types. Moreover, those skilled in the art will appreciate that embodiments may be practiced with other computer system configurations, including hand-held devices, multiprocessor systems, microprocessor-based or programmable consumer electronics, minicomputers, mainframe computers, and comparable computing devices. Embodiments may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in both local and remote memory storage devices. [0018] Some embodiments may be implemented as a computer-implemented process (method), a computing system, or as an article of manufacture, such as a computer program product or computer readable media. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program that comprises instructions for causing a computer or computing system to perform example process(es). The computer-readable storage medium is a computer- readable memory device. The computer-readable storage medium can for example be implemented via one or more of a volatile computer memory, a non-volatile memory, a hard drive, a flash drive, a floppy disk, or a compact disk, and comparable hardware media.
[0019] Throughout this specification, the term "platform" may be a combination of software and hardware components for providing an automatic detection and an optimization of user experience upgrades based on detected customization. Examples of platforms include, but are not limited to, a hosted service executed over a plurality of servers, an application executed on a single computing device, and comparable systems. The term "server" generally refers to a computing device executing one or more software programs typically in a networked environment. More detail on these technologies and example operations is provided below.
[0020] A computing device, as used herein, refers to a device comprising at least a memory and one or more processors that includes a server, a desktop computer, a laptop computer, a tablet computer, a smart phone, a vehicle mount computer, or a wearable computer. A memory may be a removable or non-removable component of a computing device configured to store one or more instructions to be executed by one or more processors. A processor may be a component of a computing device coupled to a memory and configured to execute programs in conjunction with instructions stored by the memory. Actions or operations described herein may be executed on a single processor, on multiple processors (in a single machine or distributed over multiple machines), or on one or more cores of a multi-core processor. An operating system is a system configured to manage hardware and software components of a computing device that provides common services and applications. An integrated module is a component of an application or service that is integrated within the application or service such that the application or service is configured to execute the component. A computer-readable memory device is a physical computer-readable storage medium implemented via one or more of a volatile computer memory, a non-volatile memory, a hard drive, a flash drive, a floppy disk, or a compact disk, and comparable hardware media that includes instructions thereon to automatically save content to a location. A user experience - a visual display associated with an application or service through which a user interacts with the application or service. A user action refers to an interaction between a user and a user experience of an application or a user experience provided by a service that includes one of touch input, gesture input, voice command, eye tracking, gyroscopic input, pen input, mouse input, and keyboards input. An application programming interface (API) may be a set of routines, protocols, and tools for an application or service that allow the application or service to interact or communicate with one or more other applications and services managed by separate entities.
[0021] While example implementations are described using user experience customizations herein, embodiments are not limited to user experience customizations. Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be implemented in other environments, such as in other hosted services, collaboration services, and productivity services.
[0022] Specifically, a system is described for upgrading the user experience of applications or services. The system additionally allows for an improvement of the user experience for the users and environments that are not customized, while leaving the business-critical functionality of customized environments intact. Such a system may rely on the application / service being able to host a particular page or a screen, while using either the newest version of the user experience or a down-level version of the user experience. When a user requests the page or the screen, the system may detect whether any customizations are present that rely on the down-level version of the user experience. If one of these customizations are detected, then the down-level user experience may be provided to the user. If none of these customizations are detected, then the newest version of the user experience may be provided. The technical advantages of providing an automatic detection and an optimization of user experience upgrades based on detected customization may include improved user efficiency and user experience interaction by enabling users and enterprises to continue using custom functionality while upgrading other users to a newest version of an application or service.
[0023] Embodiments address a need that arises from very large scale operations created by networked computing and cloud based services that cannot be managed by humans. The actions/operations described herein are not a mere use of a computer, but address results of a system that is a direct consequence of software used as a service such as hosted services and/or detection services offered in conjunction with user experience customizations.
[0024] FIG. 1 is a conceptual diagram illustrating an example computing
environment for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to at least some embodiments disclosed herein.
[0025] As illustrated in a diagram 100, an example system may include a datacenter 108. The datacenter 108 may host a detection service 114. The detection service 114 may provide an automatic detection and optimization of user experience upgrades based on detected customizations. The datacenter 108 may include processing servers 112. At least one of the processing servers 112 may execute an optimization engine 116 of the detection service 114, among other components. The datacenter 108 may also include storage servers 118. The storage servers 118 may be configured to manage one or more data stores. The one or more data stores may comprise data associated with the optimization engine 116. As described herein, the optimization engine 116 may be implemented as software, hardware, or a combination thereof.
[0026] According to some examples, the detection service 114 may be configured to be integrated with numerous applications. A user 104 may execute a thin version (e.g., a web browser) of an application 106 through a computing device 102. The computing device 102 may include a desktop computer, a laptop computer, a tablet computer, a smart phone, a vehicle mount computer, or a wearable computer, among other devices. In other examples, the user 104 may execute a thick version (e.g., a locally-installed version) of the application 106 through the computing device 102.
[0027] The detection service 114 may be configured to interact with the application 106 over one or more networks, such as a network 110. The network 110 may comprise any topology of servers, clients, Internet service providers, and communication media. In some examples, the application 106 may be a productivity application. The productivity application may include a word-processing application, a spreadsheet application, a presentation application, or a notebook application, among other examples. According to other examples, the application 106 may be hosted by the detection service 114. A user experience 120 may facilitate communication over the network 110 and between the detection service 114 and the application 106.
[0028] In some examples, the application 106 may be executed on a server. The server may include a communication module, a memory, and a processor. The communication module may be configured to facilitate communication between the detection service 114 and a plurality of client applications. The memory may be configured to store instructions. The processor may be coupled to the memory. The processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service 114 and the optimization engine 116 integrated with the detection service 114.
[0029] In some examples, when the user experience 120 of the application 106 is updated or upgraded, many features of the application 106 may be incremental. For example, a new feature may be added or a feature may be changed, while leaving the surrounding application intact. For the incremental changes, the customizations of the user experience 120 may continue to function as they have previously. However, the user experience 120 of the application 106 may change significantly in some scenarios, changing the foundation upon which the customizations operate. In such scenarios, the customizations that were in place before the user experience 120 was updated / upgraded may no longer work; this may pose a substantial challenge for enterprises that run business-critical functionality on cloud services, which upgrade their user experience frequently in a way that is not controlled by an administrator of the consuming enterprise.
[0030] To remedy this, the optimization engine 116 may detect a deployment of a new version of the application 106 executed on the computing device 102 in conjunction with the detection service 114. The new version of the application 106 may include user experience changes. The computing device 102 may also include a repository 130. The repository 130 may be configured to store a first list of customizations associated with the previous version of the application 106 and a second list of customizations associated with the new version of the application 106. The optimization engine 116 may determine customizations associated with the user experience 120 of a previous version of the application 106 for the user 104. The previous version of the application 106 may be a down-level version of the application.
[0031] Further, the optimization engine 116 may determine if at least one customized feature of the previous version of the application 106 is incompatible with the new version of the application 106. In other examples, the optimization engine 116 may provide the user experience 120 of the previous version of the application 106 to the user 104 in response to a determination that the at least one customized feature of the previous version of the application 106 is incompatible with the new version of the application 106. In some examples, the optimization engine 116 may provide the user experience 120 of the new version of the application 106 to the user 104 in response to a determination that the customizations of the previous version of the application 106 are compatible with the new version of the application 106.
[0032] While the example system in FIG. 1 has been described with specific components including the computing device 102, the application 106, the datacenter 108, the processing servers 112, the detection service 114, the optimization engine 116, the storage servers 118, and the user experience 120, embodiments are not limited to these components or system configurations and can be implemented with other system configuration employing fewer or additional components.
[0033] FIG. 2 is a conceptual diagram illustrating an example system configuration for providing an automatic detection and an optimization of user experience upgrades based on detected customization for a first tenant and based on detected customization for a second tenant, according to at least some embodiments disclosed herein.
[0034] As illustrated in a diagram 200, an example system may be described. The example system may include a hosted service 214 executed over a server 212. The server 212 may include a communication module, a memory configured to store instructions, and a processor. The processor may be coupled to the communication module and the memory. The processor may be configured to execute, in conjunction with the instructions stored in the memory, the hosted service 214 and an optimization engine 216 integrated with the hosted service 214.
[0035] The communication module may be configured to facilitate an exchange of communication over one or more networks, such as a network 110, between the hosted service 214 (e.g., a detection service) and a plurality of client applications. The hosted service 214 may be configured to interact with the application 206 over one or more networks, such as a network 110. The application 206 may include a word-processing application, a spreadsheet application, a presentation application, or a notebook application, among other applications. The network 110 may comprise any topology of servers, clients, Internet service providers, and communication media.
[0036] A first user experience 220 of a first computing device 209 may facilitate communication over the network 110 and between the hosted service 214 and the application 206. The first computing device 209 may further include a first repository 240. The first repository 240 is configured to store a first list of customizations associated with the previous version of the application 206 and a second list of customizations associated with the new version of the application 206. [0037] A second user experience 221 of a second computing device 211 may facilitate communication over the network 210 and between the hosted service 214 and the application 206. The second computing device 211 may include a second repository 241. The second repository 241 is configured to store a first list of customizations associated with the previous version of the application 206 and a second list of customizations associated with the new version of the application 206. The previous version of the application 206 may be a down-level version of the application 206.
[0038] In some examples, a single instance of software may run on the server 212 and may serve multiple tenants; this may be referred to as software multi-tenancy. In some examples, a first tenant 204 (or a first group of users) and a second tenant 222 (or a second group of users) may share a common access to the server 212. The first tenant 204 and the second tenant 222 may have specific access privileges to the software instance. In the multi-tenant architecture, the application 206 may be designed to provide every tenant (e.g., the first tenant 204 and the second tenant 222) a dedicated share of the software instance, which may include data associated with the software instance, a configuration of the software instance, non-functional properties of the software instance, and tenant individual functionality of the software instance.
[0039] The first tenant 204 (or the first group of users) may execute a thin version (e.g., a web browser) of the application 206 through the first computing device 209. In other examples, the first tenant 204 may execute a thick version (e.g., a locally-installed version) of the application 206 through the first computing device 209. In other examples, the second tenant 222 (or the second group of users) may execute the thin version (e.g., a web browser) of the application 206 through the second computing device 211. In further examples, the second tenant 222 may execute a thick version (e.g., a locally-installed version) of the application 206 through the second computing device 211.
[0040] In some examples, the first tenant 204 may include one or more users in a first department of a corporation (e.g., a legal department). The second tenant 222 may include one or more users of a second department of the corporation (e.g., a human resources department). According to some examples, the optimization engine 216 may determine a first set of customizations associated with a first user experience 220 of a previous version of the application 206 for the first tenant 204, which may include a theme customization and a color scheme customization. The optimization engine 216 may also determine a second set of customizations associated with a second user experience 221 of the previous version of the application 206 for the second tenant 222, which may include a shading customization and a menu customization. The first set of customizations and the second set of customizations may differ, as the legal department may require different user experience customizations than the human resources department may require to execute job-related tasks.
[0041] Additional customizations associated with the user experience of the previous version of the application may include a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, and a behavior customization, and a combination thereof. Further, the customizations may be at one of a user level, a group level, and an enterprise level. The optimization engine 216 may distinguish the customizations by one or more schemes, such as a textual scheme, a graphical scheme, an audio scheme, an animation scheme, a coloring scheme, a highlighting scheme, and/or a shading scheme, among others.
[0042] The optimization engine 216 may then determine if at least one customized feature of the previous version of the application 206 for the first tenant 204 is incompatible with the new version of the application 206. In response to a determination that the at least one customized feature of the previous version of the application 206 for the first tenant 204 is incompatible with the new version of the application 206, the optimization engine 216 is further configured to provide the first user experience 220 of the previous version of the application 206 to the first tenant 204. In additional examples, the optimization engine 216 is further configured to determine if at least one customized feature of the previous version of the application 206 for the second tenant 222 is incompatible with the new version of the application 206. The optimization engine 216 is also configured to detect no customized features associated with the previous version of the application 206 associated with the second tenant 222. In response, the optimization engine 216 is further configured to provide the second user experience 221 of the new version of the application 206 to the second tenant 222.
[0043] FIG. 3 is a conceptual diagram illustrating an example system configuration for performing a one-to-one comparison between each customized feature from a first list of customizations to each customized feature from a second list of customizations to determine if at least one customized feature of a previous version of an application is incompatible with a new version of the application, according to at least some
embodiments disclosed herein. [0044] As illustrated in a diagram 300, an example system may be described. The example system may include a detection service 314 executed over a server 312. The server 312 may include a communication module, a memory configured to store instructions, and a processor. The processor may be coupled to the communication module and the memory. The processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service 314 and an optimization engine 315 integrated with the optimization engine 315. The communication module may be configured to facilitate an exchange of communication a network 310 between the detection service 314 and a plurality of client applications (e.g., a first computing device 302 and a second computing device 303).
[0045] A first user 324 may execute a web browser of an application 306 through the first computing device 302. A first user experience 320 may facilitate communication over the network 310 and between the detection service 314 and the application 306. The first computing device 302 may also include a first repository 340. The first repository 340 may store a first list of customizations 342 and a second list of customizations 343. The first list of customizations 342 may be labeled "previous" by default and may be associated with the previous version of the application 306. The second list of the customizations 343 may be labeled "new" by default and may be associated with the new version of the application 306. The previous version of the application 306 may be a down-level version of the application.
[0046] The optimization engine 315 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 342 to each customized feature from the second list of customizations 343 to determine if the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In further examples, the optimization engine 315 may implement an algorithm to perform the one-to-one comparison. The algorithm may include a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, a machine learning algorithm, and/or machine learning techniques, among others.
[0047] The comparison-based sorting algorithm is a type of sorting algorithm that reads the list of elements through a single abstract comparison operation (e.g., a "less than or equal to" operator) that determines which of two elements should occur first in a final sorted list. Examples of comparison-based sorting algorithms include a quick sort algorithm, a heap sort algorithm, a merge sort algorithm, an intro sort algorithm, an insertion sort algorithm, a selection sort algorithm, a bubble sort algorithm, a cycle sort algorithm, and a merge insertion sort algorithm, among others.
[0048] The approximate string matching algorithm finds approximate sub-string matches inside a given string and then finds dictionary strings that match the pattern approximately. The machine learning techniques may include pattern recognition and computational learning theory, among others. The machine learning algorithms may learn and make predictions. Common machine learning algorithms may include supervised learning algorithms, unsupervised learning algorithms, and reinforcement learning algorithms. Some of the machine learning algorithms may include linear regression algorithms, logistic regression algorithms, decision tree algorithms, support vector machine (SVM) algorithms, Naive Bayes algorithms, a K-nearest neighbors (KNN) algorithm, a K-means algorithm, a random forest algorithm, dimensionality reduction algorithms, and a Gradient Boost & Adaboost algorithm, among others.
[0049] In yet other embodiments, incompatibility of features of a current version with past version(s) may be determined automatically, for example, through the use of heuristics. In one example, the list of compatible / incompatible extensions may be built or updated through a module that monitors every time a user manually chooses to revert to a previous version (e.g., clicking "back to classic") and employs machine learning or similar process to look at the customizations of applications where many users have made such a decisions. The monitoring module may look at the enabled extensions, for example, and determine if there is a strong correlation between a given extension being enabled on a particular version of an application (or service) and users of that version of the application manually reverting. Where a correlation is found, the list of compatible / incompatible extensions may be automatically updated.
[0050] A second user 325 may execute a thin version of the application 306 through the second computing device 303. A second user experience 321 may facilitate communication over the network 310 and between the detection service 314 and the application 306. The second computing device 303 may also include a second repository 341. The second repository 341 may store a first list of customizations 344 and a second list of customizations 345. The first list of customizations 344 may be labeled "previous" by default and may be associated with the previous version of the application 306. The second list of the customizations 345 may be labeled "new" by default and may be associated with the new version of the application 306. [0051] In some examples, the optimization engine 315 may be configured to perform a one-to-one comparison between each customized feature from the first list of
customizations 344 to each customized feature from the second list of customizations 345 to determine if the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In further examples, the optimization engine 315 may implement an algorithm to perform the one-to- one comparison, as described with the first repository 340.
[0052] In some examples, the optimization engine 315 may detect a deployment of a new version of the application 306 executed on the first computing device 302 in conjunction with the detection service 314. The new version of the application 306 may include user experience changes. The optimization engine 315 may determine
customizations associated with the first user experience 320 of a previous version of the application 306 for the first user 324. The customizations may also be applied to "out-of- the-box" features. The customizations associated with the first user experience 320 of the previous version of the application 306 may include one or more of: a theme
customization, a color scheme customization, a shading customization, a menu
customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a
functionality customization, and a behavior customization, and a combination thereof. Further, the customizations may be at one of a user level, a group level, and an enterprise level. In some examples, the customizations may be detected by one of: modifications to source code of the application 306 and modifications to one or more modules associated with the detection service 314. In further examples, the customizations associated with the first user experience 320 may be detected by one or more of: modifications to metadata, modifications to libraries associated with the application 306, and/or modifications to modules associated with the application 306.
[0053] Further, the optimization engine 315 may determine if at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In other examples, the optimization engine 315 may receive a request from the first user 324 to view one of a web-page, a dialog, or a screen on the first user experience 320. In response, the optimization engine 315 may initiate a process to determine if the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In other examples, the optimization engine 315 may provide the first user experience 320 of the previous version of the application 306 to the first user 324 in response to a determination that the at least one customized feature of the previous version of the application 306 is incompatible with the new version of the application 306. In further examples, the optimization engine 315 may provide the first user experience 320 of the new version of the application 306 to the first user 324 in response to a determination that the customizations of the previous version of the application 306 are compatible with the new version of the application 306.
[0054] FIG. 4 is a conceptual diagram illustrating an example system configuration for utilizing a hosted service and a detection service to provide an automatic detection and an optimization of user experience upgrades based on detected customizations, according to at least some embodiments disclosed herein.
[0055] As illustrated in a diagram 400, an example system may be described. The example system may include a detection service 416 executed over a server 413. The example system may also include a hosted service 414 executed over a server 412. The hosted service 414 and the detection service 416 may be configured to communicate with one another via one or modules and/or engines (e.g., communication modules). The hosted service 414 may be integrated with an optimization engine 415. The hosted service 414 and the detection service 416 may exchange communications over a network 410 to a first computing device 402 and a second computing device 403 through use of the one or more modules (e.g., the communication modules).
[0056] A first user 424 may execute a thin version of an application 406 through the first computing device 402. A first user experience 420 may facilitate communication over the network 410 and between the hosted service 414 and/or the detection service 416 and the application 406. The first computing device 402 may also include a first repository 440. The first repository 440 may store a first list of customizations 442 and a second list of customizations 443. The first list of customizations 442 may be labeled "previous" by default and may be associated with the previous version of the application. The second list of the customizations 443 may be labeled "new" by default and may be associated with the new version of the application 406.
[0057] The optimization engine 415 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 442 to each customized feature from the second list of customizations 443 to determine if the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In further examples, the optimization engine 415 may implement an algorithm to perform the one-to-one comparison. The algorithm may include a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, a machine learning algorithm, and/or machine learning techniques, among others.
[0058] A second user 425 may execute a thin version of the application 406 through the second computing device 403. A second user experience 421 may facilitate communication over the network 410 and between the detection service 416 and/or the hosted service 414 and the application 406. The second computing device 403 may also include a second repository 441. The second repository 441 may store a first list of customizations 444 and a second list of customizations 445. The first list of
customizations 444 may be labeled "previous" by default and may be associated with the previous version of the application 406. The second list of the customizations 445 may be labeled "new" by default and may be associated with the new version of the application 406. The optimization engine 415 may be configured to perform a one-to-one comparison between each customized feature from the first list of customizations 444 to each customized feature from the second list of customizations 445 to determine if the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In further examples, the optimization engine 415 may implement an algorithm to perform the one-to-one comparison, as described with the first repository 440.
[0059] In some examples, the optimization engine 415 may detect a deployment of a new version of the application 406 executed on the first computing device 402 in conjunction with the detection service 416. The new version of the application 406 may include user experience changes. The optimization engine 415 may determine
customizations associated with the first user experience 420 of a previous version of the application 406 for the first user 424. Further, the optimization engine 415 may determine if at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In other examples, the optimization engine 415 may provide the first user experience 420 of the previous version of the application 406 to the first user 424 in response to a determination that the at least one customized feature of the previous version of the application 406 is incompatible with the new version of the application 406. In further examples, the optimization engine 415 may provide the first user experience 420 of the new version of the application 406 to the first user 424 in response to a determination that the customizations of the previous version of the application 406 are compatible with the new version of the application 406. [0060] The example scenarios and schemas in FIG. 1 through FIG. 4 are shown with specific components, data types, and configurations. Embodiments are not limited to systems according to these example configurations. Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be implemented in configurations employing fewer or additional components. Furthermore, the example schema and components shown in FIG. 1 through FIG. 4 and their subcomponents may be implemented in a similar manner with other values using the principles described herein.
[0061] FIG. 5 is a simplified networked environment, where a system according to embodiments may be implemented.
[0062] In addition to locally installed applications (e.g., the application 106 of FIG. 1), an optimization engine may also be employed in conjunction with hosted applications and services (e.g., a detection service) that may be implemented via software executed over one or more servers 506 or individual server 508, as illustrated in diagram 500. A hosted service or application may communicate with client applications on individual client devices 501-505, such as a handheld computer 501, a desktop computer 502, a laptop computer 503, a smart phone 504, and a tablet computer 505, among other client devices. The hosted service or the application may communicate with the applications through one or more networks 510 and present a user experience to a plurality of users.
[0063] The individual client devices 501-505 may be used to access the functionality provided by the hosted service or the application. The one or more of the servers 506 or the individual server 508 may be used to provide a variety of services, as previously discussed. Relevant data may be stored in one or more data stores (e.g. a data store 514), which may be managed by the one or more servers 506 or by a database server 512.
[0064] The one or more networks 510 may comprise any topology of servers, clients, Internet service providers, and communication media. A system according to embodiments may have a static or dynamic topology. The one or more networks 510 may include a secure network such as an enterprise network, an unsecure network such as a wireless open network, or the Internet. The one or more networks 510 may also coordinate communication over other networks, such as PSTN or cellular networks. The one or more networks 510 may provide communication between the nodes, as described herein. By way of example, and not limitation, the one or more networks 510 may include wireless media such as acoustic, RF, infrared and other wireless media. [0065] Many other configurations of computing devices, applications, engines, data sources, and data distribution systems may be employed for providing an automatic detection and an optimization of user experience upgrades based on detected
customization. Furthermore, the networked environments discussed in FIG. 5 are for illustration purposes only. Embodiments are not limited to the example applications, engines, or processes.
[0066] FIG. 6 is a block diagram of an example computing device, which may be used for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments.
[0067] For example, a computing device 600 may be used as a server, desktop computer, portable computer, smart phone, special purpose computer, or similar device. In an example basic configuration 602, the computing device 600 may include one or more processors 604 and a system memory 606. A memory bus 608 may be used for communication between the processor 604 and the system memory 606. The example basic configuration 602 may be illustrated in FIG. 6 by those components within the inner dashed line.
[0068] Depending on the desired configuration, the processor 604 may be of any type, including but not limited to a microprocessor (μΡ), a microcontroller (μθ), a digital signal processor (DSP), or any combination thereof. The processor 604 may include one more levels of caching, such as a level cache memory 612, one or more processor cores 614, and registers 616. The one or more processor cores 614 may (each) include an arithmetic logic unit (ALU), a floating point unit (FPU), a digital signal processing core (DSP Core), or any combination thereof. An example memory controller 618 may also be used with the processor 604, or in some implementations, the example memory controller 618 may be an internal part of the processor 604.
[0069] Depending on the desired configuration, the system memory 606 may be of any type including but not limited to volatile memory (such as RAM), non-volatile memory (such as ROM, flash memory, etc.), or any combination thereof. The system memory 606 may include an operating system 620, a detection service 622, a repository 629, and a program data 624. The detection service 622 may include an optimization engine 627, which may be an integrated module of the detection service 622. The optimization engine 627 may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service. The new version of the application may include user experience changes. The optimization engine 627 may also determine customizations associated with a user experience of a previous version of the application for one or more users and may determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. Further, the optimization engine 627 may provide the user experience of the previous version of the application to the one or more users in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application. In other examples, the optimization engine 627 may provide the user experience of the new version of the application to the one or more users in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application. The program data 624 may include customization data, as described herein.
[0070] The repository 629 may be configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application. The optimization engine 627 may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application. In some examples, an algorithm may be implemented to perform the one-to-one comparison. In further examples, the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
[0071] The computing device 600 may have additional features or functionality, and additional interfaces to facilitate communications between the example basic configuration 602 and any desired devices and interfaces. For example, a bus/interface controller 630 may be used to facilitate communications between the example basic configuration 602 and one or more data storage devices 632 via a storage interface bus 634. The data storage devices 632 may be one or more removable storage devices 636, one or more nonremovable storage devices 638, or a combination thereof. Examples of the removable storage and the non-removable storage devices may include magnetic disk devices, such as flexible disk drives and hard-disk drives (HDD), optical disk drives such as compact disk (CD) drives or digital versatile disk (DVD) drives, solid state drives (SSD), and tape drives, to name a few. Example computer storage media may include volatile and nonvolatile, removable, and non-removable media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data.
[0072] The system memory 606, the removable storage devices 636 and the nonremovable storage devices 638 are examples of computer storage media. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVDs), solid state drives, or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which may be used to store the desired information and which may be accessed by the computing device 600. Any such computer storage media may be part of the computing device 600.
[0073] The computing device 600 may also include an interface bus 640 for facilitating communication from various interface devices (for example, one or more output devices 642, one or more peripheral interfaces 644, and one or more
communication devices 646) to the example basic configuration 602 via the bus/interface controller 630. Some of the one or more output devices 642 include a graphics processing unit 648 and an audio processing unit 650, which may be configured to communicate to various external devices such as a display or speakers via one or more A/V ports 652. The one or more peripheral interfaces 644 may include a serial interface controller 654 or a parallel interface controller 656, which may be configured to communicate with external devices such as input devices (for example, keyboard, mouse, pen, voice input device, touch input device, etc.) or other peripheral devices (for example, printer, scanner, etc.) via one or more I/O ports 658. An example communication device 666 includes a network controller 660, which may be arranged to facilitate communications with one or more other computing devices 662 over a network communication link via one or more communication ports 664. The one or more other computing devices 662 may include servers, computing devices, and comparable devices.
[0074] The network communication link may be one example of a communication media. Communication media may typically be embodied by computer readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and may include any information delivery media. A "modulated data signal" may be a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media may include wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, radio frequency (RF), microwave, infrared (IR) and other wireless media. The term computer readable media as used herein may include both storage media and communication media.
[0075] The computing device 600 may be implemented as a part of a general purpose or specialized server, mainframe, or similar computer, which includes any of the above functions. The computing device 600 may also be implemented as a personal computer including both laptop computer and non-laptop computer configurations.
[0076] Example embodiments may also include methods for providing an automatic detection and an optimization of user experience upgrades based on detected
customization. These methods can be implemented in any number of ways, including the structures described herein. One such way may be by machine operations, of devices of the type described in the present disclosure. Another optional way may be for one or more of the individual operations of the methods to be performed in conjunction with one or more human operators performing some of the operations while other operations may be performed by machines. These human operators need not be collocated with each other, but each can be only with a machine that performs a portion of the program. In other embodiments, the human interaction can be automated such as by pre-selected criteria that may be machine automated.
[0077] FIG. 7 is a logic flow diagram illustrating a process for providing an automatic detection and an optimization of user experience upgrades based on detected customization, according to embodiments.
[0078] A process 700 may be implemented on a computing device (e.g., the computing device 600 in FIG. 6), a server, or with another system. In some examples, the system may include a server. The server may include components, such as a
communication module, a memory, and a processor coupled to the memory. The communication module may be configured to facilitate an exchange of communication between a detection service and a plurality of client applications.
[0079] The memory may be configured to store instructions. The processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service and an optimization engine integrated with the detection service. The client device or the computing device may be associated with a user so that the user may execute customizations on the user experience.
[0080] The process 700 begins with operation 710, where the optimization engine may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service. The new version of the application may include user experience changes. In other examples, the optimization engine may be further configured to detect the customizations associated with the user experience by modifications to source code of the application or modifications to one or more modules associated with the detection service.
[0081] At operation 720, the optimization engine may be configured to determine customizations associated with a user experience of a previous version of the application for one or more users. The customizations associated with the user experience of the previous version of the application may include one or more of a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a functionality customization, and a behavior customization, and a combination thereof. The customizations may be at one of a user level, a group level, and an enterprise level.
[0082] At operation 730, the optimization engine may be configured to determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In other examples, the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application. The optimization engine may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application. The one-to-one comparison may be performed by implementation of an algorithm. The algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
[0083] At operation 740, the optimization engine may be configured to provide the user experience of the previous version of the application to the one or more users in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application. At operation
750, the optimization engine may be configured to provide the user experience of the new version of the application to the one or more users in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application. [0084] The operations included in process 700 are for illustration purposes.
Providing an automatic detection and an optimization of user experience upgrades based on detected customization may be implemented by similar processes with fewer or additional steps, as well as in different order of operations using the principles described herein. The operations described herein may be executed by one or more processors operated on one or more computing devices, one or more processor cores, specialized processing devices, and/or general purpose processors, among other examples.
[0085] According to some embodiments, servers for providing an automatic detection and an optimization of user experience upgrades based on detected
customization may be described. An example server may include a communication module, a memory, and a processor. The communication module may be configured to facilitate an exchange of communication between a detection service and a plurality of client applications. The memory may store instructions. The processor may be coupled to the communication module and the memory. The processor may be configured to execute, in conjunction with the instructions stored in the memory, the detection service and an optimization engine integrated with the detection service. The optimization engine may be configured to detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service. The new version of the application may include user experience changes. The optimization engine may also determine customizations associated with a user experience of a previous version of the application for one or more users and may determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, the optimization engine may also provide the user experience of the previous version of the application to the one or more users. In response to a determination that the
customizations of the previous version of the application are compatible with the new version of the application, the optimization engine may also provide the user experience of the new version of the application to the one or more users.
[0086] According to other examples, the optimization engine may be further configured to detect no customized features associated with the previous version of the application and may provide the user experience of the new version of the application to the one or more users. According to some embodiments, the customizations associated with the user experience of the previous version of the application may include a theme customization, a color scheme customization, a shading customization, a menu customization, a button customization, a graphical scheme customization, a control element customization, a customization to a behavior of the control element, a
functionality customization, a behavior customization, and a combination thereof.
[0087] According to further examples, the optimization engine may be at one of a user level, a group level, and an enterprise level. According to some other examples, the optimization engine may be further configured to detect the customizations associated with the user experience by modifications to source code of the application and/or modifications to one or more modules associated with the detection service.
[0088] According to some examples, the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application. According to further examples, the optimization engine may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of
customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application. According to other examples, the optimization engine may be configured to implement an algorithm to perform the one-to-one comparison. According to further examples, the algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
[0089] According to some embodiments, a means for providing an automatic detection and an optimization of user experience upgrades based on detected
customization may be described, which may include a means for detecting a deployment of a new version of an application executed on the computing device that includes user experience changes and a means for determining customizations associated with a user experience of a previous version of the application for one or more users. The
customizations may be at one of a user level, a group level, and an enterprise level. The means for providing an automatic detection and an optimization of user experience upgrades based on detected customization may further include a means for determining if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, a means for providing the user experience of the previous version of the application to the one or more users may be described. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, a means for providing the user experience of the new version of the application to the one or more users may be described.
[0090] According to further embodiments, methods executed on computing devices may be described. An example method executed on a computing device for providing an automatic detection and an optimization of user experience upgrades based on detected customization may be described. The example method may include detecting a
deployment of a new version of an application executed on the computing device that includes user experience changes and determining customizations associated with a user experience of a previous version of the application for one or more users. The
customizations may be at one of a user level, a group level, and an enterprise level. The example method may further include determining if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, the example method may further include providing the user experience of the previous version of the application to the one or more users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the example method may further include providing the user experience of the new version of the application to the one or more users.
[0091] According to other embodiments, in response to receiving a request from a user to view one of a web-page or a screen on the user experience, the example method may further include initiating a process to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application. According to some embodiments, the previous version of the application may be a down-level version of the application. According to further embodiments, the example method may further include detecting the customizations associated with the user experience by modifications to metadata, modifications to libraries associated with the application, and/or modifications to modules associated with the application.
[0092] According to additional embodiments, the example method may further include identifying the one or more users as a first department within a company and a second department within a company, determining a first set of customizations associated with a first user experience of the previous version of the application for the first department, and determining a second set of customizations associated with a second user experience of the previous version of the application for the second department. According to some other embodiments, the example method may further include determining if at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the application and in response to a determination that the at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the
application, providing the user experience of the previous version of the application to the first department. According to some embodiments, the example method may further include determining if at least one customized feature of the previous version of the application for the second department is incompatible with the new version of the application, detecting no customized features associated with the previous version of the application associated with the second department, and providing the user experience of the new version of the application to the second department.
[0093] According to further embodiments, computing devices may be described. An example computing device configured to provide an automatic detection and an optimization of user experience upgrades based on detected customization may be described. The example computing device may include a memory configured to store instructions and one or more processors coupled to the memory. The one or more processors may be configured to execute, in conjunction with the instructions stored in the memory, an application associated with a detection service. The application may be configured to detect a deployment of a new version of the application that includes user experience changes and determine customizations associated with a user experience of a previous version of the application for one or more users. The customizations may be at one of a user level, a group level, and an enterprise level. The application may also be configured to determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application. In response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, the application may be further configured to provide the user experience of the previous version of the application to the one or more users. In response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, the application may be configured to provide the user experience of the new version of the application to the one or more users.
[0094] According to some embodiments, the application may include one of a word- processing application, a spreadsheet application, a presentation application, and a notebook application. In some examples, the computing device may include a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application. According to other embodiments, the application may be further configured to perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application. The algorithm may be
implemented to perform the one-to-one comparison. The algorithm may include one of: a comparison-based sorting algorithm, an approximate string matching algorithm, an intelligent learning algorithm, and a machine learning algorithm.
[0095] The above specification, examples and data provide a complete description of the manufacture and use of the composition of the embodiments. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims and embodiments.

Claims

1. A server to provide an automatic detection and an optimization of user experience upgrades based on detected customization, the server comprising:
a communication module configured to facilitate an exchange of communication between a detection service and a plurality of client applications;
a memory to store instructions; and
a processor coupled to the communication module and the memory, the processor configured to execute, in conjunction with the instructions stored in the memory, the detection service and an optimization engine integrated with the detection service, wherein the optimization engine is configured to:
detect a deployment of a new version of an application executed on a computing device in conjunction with the detection service, wherein the new version of the application includes user experience changes;
determine customizations associated with a user experience of a previous version of the application for one or more users;
determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application;
in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, provide the user experience of the previous version of the application to the one or more users; and
in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, provide the user experience of the new version of the application to the one or more users.
2. The server of claim 1, wherein the optimization engine is further configured to: detect no customized features associated with the previous version of the application; and
provide the user experience of the new version of the application to the one or more users.
3. The server of claim 1, wherein the computing device includes a repository configured to store a first list of customizations associated with the previous version of the application and a second list of customizations associated with the new version of the application.
4. The server of claim 3, wherein the optimization engine is further configured to: perform a one-to-one comparison between each customized feature from the first list of customizations to each customized feature from the second list of customizations to determine if the at least one customized feature of the previous version of the application is incompatible with the new version of the application.
5. The server of claim 4, wherein the optimization engine is further configured to: implement an algorithm to perform the one-to-one comparison.
6. A method executed on a computing device to provide an automatic detection and an optimization of user experience upgrades based on detected customization, the method comprising:
detecting a deployment of a new version of an application executed on the computing device that includes user experience changes;
determining customizations associated with a user experience of a previous version of the application for one or more users, wherein the customizations are at one of a user level, a group level, and an enterprise level;
determining if at least one customized feature of the previous version of the application is incompatible with the new version of the application;
in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, providing the user experience of the previous version of the application to the one or more users; and
in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, providing the user experience of the new version of the application to the one or more users.
7. The method of claim 6, further comprising:
detecting the customizations associated with the user experience by one or more of: modifications to metadata, modifications to libraries associated with the application, and modifications to modules associated with the application.
8. The method of claim 6, further comprising:
identifying the one or more users as a first department within a company and a second department within a company;
determining a first set of customizations associated with a first user experience of the previous version of the application for the first department; and
determining a second set of customizations associated with a second user experience of the previous version of the application for the second department.
9. The method of claim 8, further comprising:
determining if at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the
application; and
in response to a determination that the at least one customized feature of the previous version of the application for the first department is incompatible with the new version of the application, providing the user experience of the previous version of the application to the first department.
10. The method of claim 6, further comprising:
determining if at least one customized feature of the previous version of the application for a second department is incompatible with the new version of the application;
detecting no customized features associated with the previous version of the application associated with the second department; and
providing the user experience of the new version of the application to the second department.
11. A computing device to provide an automatic detection and an optimization of user experience upgrades based on detected customization, the computing device comprising: a memory configured to store instructions; and
one or more processors coupled to the memory, the one or more processors configured to execute, in conjunction with the instructions stored in the memory, an application associated with a detection service, wherein the application is configured to:
detect a deployment of a new version of the application that includes user experience changes;
determine customizations associated with a user experience of a previous version of the application for one or more users, wherein the customizations are at one of a user level, a group level, and an enterprise level;
determine if at least one customized feature of the previous version of the application is incompatible with the new version of the application;
in response to a determination that the at least one customized feature of the previous version of the application is incompatible with the new version of the application, provide the user experience of the previous version of the application to the one or more users; and in response to a determination that the customizations of the previous version of the application are compatible with the new version of the application, provide the user experience of the new version of the application to the one or more users.
EP17723197.4A 2016-05-03 2017-04-27 Providing automatic detection and optimization of user experience upgrades based on detected customization Active EP3453155B1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201662330899P 2016-05-03 2016-05-03
US15/194,636 US10365914B2 (en) 2016-05-03 2016-06-28 Providing automatic detection and optimization of user experience upgrades based on detected customization
PCT/US2017/029732 WO2017192339A1 (en) 2016-05-03 2017-04-27 Providing automatic detection and optimization of user experience upgrades based on detected customization

Publications (2)

Publication Number Publication Date
EP3453155A1 true EP3453155A1 (en) 2019-03-13
EP3453155B1 EP3453155B1 (en) 2021-11-10

Family

ID=58701865

Family Applications (1)

Application Number Title Priority Date Filing Date
EP17723197.4A Active EP3453155B1 (en) 2016-05-03 2017-04-27 Providing automatic detection and optimization of user experience upgrades based on detected customization

Country Status (4)

Country Link
US (1) US10365914B2 (en)
EP (1) EP3453155B1 (en)
CN (1) CN109076107B (en)
WO (1) WO2017192339A1 (en)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10241778B2 (en) * 2016-09-27 2019-03-26 Ca, Inc. Microservices version state visualization
US20190026473A1 (en) * 2017-07-21 2019-01-24 Pearson Education, Inc. System and method for automated feature-based alert triggering
US10545755B2 (en) * 2017-09-07 2020-01-28 Servicenow, Inc. Identifying customization changes between instances
US10867128B2 (en) 2017-09-12 2020-12-15 Microsoft Technology Licensing, Llc Intelligently updating a collaboration site or template
US10742500B2 (en) * 2017-09-20 2020-08-11 Microsoft Technology Licensing, Llc Iteratively updating a collaboration site or template
US11108630B2 (en) 2018-10-10 2021-08-31 Itron, Inc. Hierarchical configuration of networked communication devices
US10896034B2 (en) * 2018-11-14 2021-01-19 Babu Vinod Methods and systems for automated screen display generation and configuration
US20200210210A1 (en) * 2018-12-26 2020-07-02 Servicenow, Inc. Systems and methods for enabling widget customization via extension points
CN110333875A (en) * 2019-07-02 2019-10-15 上海企创信息科技有限公司 A kind of service routine update method, device, server and storage medium
US11561672B1 (en) 2020-07-24 2023-01-24 Tableau Software, LLC Compatibility-based feature management for data prep applications
US11520692B1 (en) * 2021-09-08 2022-12-06 International Business Machines Corporation Performing software testing with best possible user experience

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5586304A (en) 1994-09-08 1996-12-17 Compaq Computer Corporation Automatic computer upgrading
US5845128A (en) 1996-02-20 1998-12-01 Oracle Corporation Automatically preserving application customizations during installation of a new software release
WO1998040807A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Migrating to a successive software distribution level
US6389591B1 (en) 1998-09-03 2002-05-14 Microsoft Corporation Method and apparatus for determining preferred controls for an upgradable operating system
US7051319B1 (en) 2001-03-27 2006-05-23 Siebel Systems, Inc. Method, system, and product for upgrading software objects using inherency
US7275243B2 (en) 2002-03-22 2007-09-25 Sun Microsystems, Inc. Mobile download system
US8122377B2 (en) 2004-03-09 2012-02-21 Siebel Systems, Inc. Preserving user interface customizations while upgrading an enterprise application
US20060026268A1 (en) 2004-06-28 2006-02-02 Sanda Frank S Systems and methods for enhancing and optimizing a user's experience on an electronic device
US20060130047A1 (en) 2004-11-30 2006-06-15 Microsoft Corporation System and apparatus for software versioning
EP1720098A1 (en) * 2005-05-02 2006-11-08 Trigence Corp. System including run-time software to enable a software application to execute on an incompatible computer platform
US20090017812A1 (en) 2007-07-11 2009-01-15 Weng Chong Chan Method and system for restoring user settings after over-the-air update of mobile electronic device software
US8898627B2 (en) 2010-05-11 2014-11-25 Smartshift Gmbh Systems and methods for applying rules to transform objects of an application
US8689208B2 (en) 2010-06-24 2014-04-01 Microsoft Corporation Upgrade management of application components
WO2013012690A1 (en) 2011-07-15 2013-01-24 Integware, Inc. Software automated data and data model upgrade system
US20130117738A1 (en) * 2011-11-03 2013-05-09 Microsoft Corporation Server Upgrades with Safety Checking and Preview
US9069607B1 (en) 2012-01-31 2015-06-30 Vmware, Inc. Selective migration of virtualized applications and configuration settings thereof
CN103853574B (en) 2012-12-06 2015-09-16 腾讯科技(深圳)有限公司 A kind of method and system of software upgrading
US9870349B2 (en) * 2013-09-20 2018-01-16 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
CN104636157A (en) * 2013-11-14 2015-05-20 中兴通讯股份有限公司 Software upgrading method based on data compatibility, client side, server and system
US9274790B2 (en) 2014-04-30 2016-03-01 Oracle International Corporation Customization manager
US9635129B2 (en) * 2014-09-10 2017-04-25 At&T Intellectual Property I, L.P. Automatic application discovery, download, integration and launch

Also Published As

Publication number Publication date
CN109076107B (en) 2021-12-14
US20170322795A1 (en) 2017-11-09
EP3453155B1 (en) 2021-11-10
US10365914B2 (en) 2019-07-30
CN109076107A (en) 2018-12-21
WO2017192339A1 (en) 2017-11-09

Similar Documents

Publication Publication Date Title
EP3453155B1 (en) Providing automatic detection and optimization of user experience upgrades based on detected customization
US10366114B2 (en) Providing data presentation functionality associated with collaboration database
US11586945B2 (en) Methods and systems for automated, intelligent application process development that recommend how to modify applications based on usage patterns of end users
US20230031057A1 (en) Techniques to automatically update payment information in a compute environment
US20190392345A1 (en) Automatic action loading based on a data context and a machine-learned model
CN108431768B (en) Controlled deployment of application features
US10521419B1 (en) Identifying an issue associated with data
US20170344531A1 (en) Providing automatic case suggestion
US9600300B2 (en) Method to generate dynamic customized context-sensitive help
US10803237B2 (en) Systems and methods for data entry into a region of a display
US11385871B2 (en) Adjusting a user interface layout based on user usage patterns
US10740361B2 (en) Clustering and analysis of commands in user interfaces
US20230110057A1 (en) Multi-tenant, metadata-driven recommendation system
US9304780B2 (en) User initiated data rollback using operating system partitions
US9917922B2 (en) Extensibility bundles for a cloud and devices suite
US20130226671A1 (en) Systems and methods for providing dependency injection in a business process model system
US20180052696A1 (en) Providing teaching user interface activated by user action
CN115390720A (en) Robotic Process Automation (RPA) including automatic document scrolling
US11521089B2 (en) In-database predictive pipeline incremental engine
US10963444B2 (en) Techniques and architectures for providing functionality to undo a metadata change
US11995046B2 (en) Record management for database systems using fuzzy field matching
US20170344527A1 (en) Providing checklist telemetry
US20230334025A1 (en) Record management for database systems using fuzzy field matching
JP2024052547A (en) Version update recommendations for software packages
JP2023021467A (en) Entity recognition based on machine learning

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20181031

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

AX Request for extension of the european patent

Extension state: BA ME

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

17Q First examination report despatched

Effective date: 20191217

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: EXAMINATION IS IN PROGRESS

GRAP Despatch of communication of intention to grant a patent

Free format text: ORIGINAL CODE: EPIDOSNIGR1

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: GRANT OF PATENT IS INTENDED

INTG Intention to grant announced

Effective date: 20210701

GRAS Grant fee paid

Free format text: ORIGINAL CODE: EPIDOSNIGR3

GRAA (expected) grant

Free format text: ORIGINAL CODE: 0009210

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE PATENT HAS BEEN GRANTED

AK Designated contracting states

Kind code of ref document: B1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC MK MT NL NO PL PT RO RS SE SI SK SM TR

RAP3 Party data changed (applicant data changed or rights of an application transferred)

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC

REG Reference to a national code

Ref country code: GB

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: AT

Ref legal event code: REF

Ref document number: 1447126

Country of ref document: AT

Kind code of ref document: T

Effective date: 20211115

Ref country code: CH

Ref legal event code: EP

REG Reference to a national code

Ref country code: DE

Ref legal event code: R079

Ref document number: 602017049078

Country of ref document: DE

Free format text: PREVIOUS MAIN CLASS: H04L0029080000

Ipc: H04L0065000000

REG Reference to a national code

Ref country code: DE

Ref legal event code: R096

Ref document number: 602017049078

Country of ref document: DE

REG Reference to a national code

Ref country code: IE

Ref legal event code: FG4D

REG Reference to a national code

Ref country code: LT

Ref legal event code: MG9D

REG Reference to a national code

Ref country code: NL

Ref legal event code: MP

Effective date: 20211110

REG Reference to a national code

Ref country code: AT

Ref legal event code: MK05

Ref document number: 1447126

Country of ref document: AT

Kind code of ref document: T

Effective date: 20211110

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: RS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: LT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: FI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: BG

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20220210

Ref country code: AT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IS

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20220310

Ref country code: SE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: PT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20220310

Ref country code: PL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: NO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20220210

Ref country code: NL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: LV

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: HR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: GR

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20220211

Ref country code: ES

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SM

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: SK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: RO

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: EE

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: DK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: CZ

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

REG Reference to a national code

Ref country code: DE

Ref legal event code: R097

Ref document number: 602017049078

Country of ref document: DE

PLBE No opposition filed within time limit

Free format text: ORIGINAL CODE: 0009261

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: NO OPPOSITION FILED WITHIN TIME LIMIT

26N No opposition filed

Effective date: 20220811

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: AL

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: SI

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

REG Reference to a national code

Ref country code: CH

Ref legal event code: PL

REG Reference to a national code

Ref country code: BE

Ref legal event code: MM

Effective date: 20220430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MC

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: LU

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20220427

Ref country code: LI

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20220430

Ref country code: CH

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20220430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: BE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20220430

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IE

Free format text: LAPSE BECAUSE OF NON-PAYMENT OF DUE FEES

Effective date: 20220427

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: FR

Payment date: 20230309

Year of fee payment: 7

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: IT

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

P01 Opt-out of the competence of the unified patent court (upc) registered

Effective date: 20230505

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: DE

Payment date: 20230307

Year of fee payment: 7

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: HU

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT; INVALID AB INITIO

Effective date: 20170427

PG25 Lapsed in a contracting state [announced via postgrant information from national office to epo]

Ref country code: MK

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

Ref country code: CY

Free format text: LAPSE BECAUSE OF FAILURE TO SUBMIT A TRANSLATION OF THE DESCRIPTION OR TO PAY THE FEE WITHIN THE PRESCRIBED TIME-LIMIT

Effective date: 20211110

PGFP Annual fee paid to national office [announced via postgrant information from national office to epo]

Ref country code: GB

Payment date: 20240321

Year of fee payment: 8