Patent Publication Number: US-9887872-B2

Title: Hybrid application environments including hosted applications and application servers for interacting with data in enterprise environments

Description:
TECHNICAL FIELD 
     Aspects of the disclosure are related to computer hardware and software technologies, and in particular, to application hosting technologies and environments. 
     TECHNICAL BACKGROUND 
     Many software applications and services are provisioned within hosting environments that support multiple tenancies. The hosting environments include infrastructure and management components that allow parties to establish a tenancy with ease. The tenants can install and run applications from within the hosting environment. Client components communicatively coupled with the hosting environment engage with the hosted applications in order to provide application services to end users having hosted identities. 
     For example, an enterprise may develop a contacts management application for installation within a hosting environment with which the enterprise has established a tenancy. Users associated with the enterprise, by way of a web browsing application or other suitable interface, engage with the contacts management application through the hosting application. The contacts application is served to the end users from the application servers within the hosting application. In addition, associated data and other information are sometimes stored within the hosting environment. 
     Not all applications or data have been migrated to the provisioning model described above. Rather, many applications are installed on application servers residing within enterprise environments that are generally access restricted. In addition, the associated data and other information, with which the applications may interact, may reside within the enterprise environment and may be accessed only via the enterprise environment. Users typically gain access to these applications and associated data using enterprise identities. 
     OVERVIEW 
     Provided herein are systems, methods, and software for facilitating hybrid application environments. In at least one implementation, an application server within a hosting environment receives a data request initiated by a hosted application within the hosting environment. The hosted application may initiate the data request in response to a page request made on behalf of a hosted identity logged into the hosting environment. The application server generates a hybrid data request based on request information comprising at least a portion of the data request and the hosted identity and directs the hybrid data request over a connection established between the hosting environment and an enterprise environment for handling by an application server within the enterprise environment. 
     This Overview is provided to introduce a selection of concepts in a simplified form that are further described below in the Technical Disclosure. It should be understood that this Overview is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Many aspects of the disclosure can be better understood with reference to the following drawings. While several implementations are described in connection with these drawings, the disclosure is not limited to the implementations disclosed herein. On the contrary, the intent is to cover all alternatives, modifications, and equivalents. 
         FIG. 1  illustrates a hybrid environment in an implementation. 
         FIG. 2  illustrates a hybrid process in an implementation. 
         FIG. 3  illustrates a computing system in an implementation. 
         FIG. 4  illustrates an operational sequence in an implementation. 
         FIG. 5  illustrates a hybrid environment in an implementation. 
         FIG. 6  illustrates an operational sequence in an implementation. 
         FIG. 7  illustrates an operational sequence in an implementation. 
     
    
    
     TECHNICAL DISCLOSURE 
     Implementations described herein provide for improved application environments allowing for hybrid scenarios whereby an application hosted within a hosting environment may be able to interact with or otherwise obtain data generally accessible via an enterprise environment. 
     In at least one implementation, a connection is established between a hosting environment and an enterprise environment. A hosted application installed within the hosting environment and hosted on an application server therein initiates data requests. The application server generates hybrid requests for fulfillment or resolution by an application server within the enterprise environment. The hybrid requests are communicated to the enterprise environment over the established connection. 
       FIG. 1  illustrates hybrid environment  100  in an implementation. Hybrid environment  100  involves users  101 ,  103 , and  105 , operating clients  111 ,  113 , and  115  respectively, engaging with hosting environment  121  and enterprise environment  131 . In particular, user  101  operating client  111  and user  103  operating client  113  are engaged with hosting environment  121 . User  105  operating client  115  is engaged with enterprise environment  131 . 
     Hosting environment  121  includes application server  123 , hosted application  125 , and hosted application  127 . Application server  123  may be any server system, virtual server system, server software, or combination or variation thereof capable of hosting applications, such as hosted application  125  and hosted application  127 . Hosted application  125  may be any application capable of being installed within hosting environment  121  and hosted by application server  123  on behalf of or in association with tenancy  126 . Similarly, hosted application  127  may be any application capable of being installed within hosting environment  121  and hosted by application server  123  on behalf of or in association with tenancy  128 . Hosting environment  121  may include additional application servers, hosted applications, or other elements. Hosting environment  121  may be implemented within a facility or facilities suitable for hosting applications, such as a data center. 
     Enterprise environment  131  includes application server  133 , enterprise application  135 , and data store  136 . Application server  133  may be any server system, virtual server system, server software, or combination or variation thereof capable of hosting applications, such as enterprise application  135 . Enterprise application  135  may be any application capable of being installed within enterprise environment  131  and being hosted by application server  133 . Data store  136  may be any data store, collection of data, or other information accessible by enterprise application  135 . While illustrated as residing within enterprise environment  131 , data store  136  may be external to enterprise environment but accessed through enterprise environment  131 . 
     Clients  111  and  113  may be any client devices, client software, or combination or variation thereof capable of interfacing between hosting environment  121  and users  101  and  103  respectively. Client  115  may be any client device, client software, or combination or variation thereof capable of interfacing between enterprise environment  131  and user  105 . Examples of client devices include desktop computers, laptop computers, tablet computers, Internet appliances, gaming devices, workstations, mobile phones, smart phones, media players, and personal digital assistants, as well any other type of device capable of being communicatively coupled with application servers and applications. Examples of client software include web browsing applications and productivity applications, communication applications, and gaming applications, as well as any other type of software capable of being communicatively coupled with application servers and applications. 
     Note that while clients  111  and  113  are depicted as engaged with hosting environment  121 , clients  111  and  113  may be capable of engaging with enterprise environment  131 . Similarly, while client  115  is depicted as engaged with enterprise environment  131 , client  115  may be capable of engaging with hosting environment  121 . 
     In operation, users generally access hosting environment  121  using hosted identities, while users generally access enterprise environment  131  using enterprise identities that are different than the hosted identities. In some implementations, users may have multiple identities. For example, a user may have a hosted identity with which the users accesses hosting environment  121 . Hosting environment  121  may include various credentialing or authentication elements and capabilities to authenticate the user based on his or her hosted identity. The same user may also have an enterprise identity with which the user may access enterprise environment  131 . Enterprise environment  131  may also include various credentialing or authentication elements and capabilities to authenticate the user based on his or her enterprise identity. 
     In one possible implementation, user  101  may be associated with tenancy  126 . For example, an enterprise may engage with hosting environment  121  to establish tenancy  126 . Tenancy  126  allows for the installation and hosting of applications associated with the enterprise. Tenancy  126  also allows for associations between users, identified by hosted identities, and the applications and other resources provisioned under the tenancy. Upon engaging with hosting environment  121 , using client  111 , user  101  may provide his or her hosted identity in order to gain access to the various resources associated with tenancy  126 , such as hosted application  125 . 
     In a possible variation, user  103  may be associated with tenancy  128 . For example, another enterprise may engage with hosting environment  121  to establish tenancy  128 . Tenancy  128  allows for the installation and hosting of applications associated with the other enterprise. Tenancy  128  may also allow for associations between users, identified by hosted identities, and the applications and other resources provisioned under the tenancy. Upon engaging with hosting environment  121 , using client  113 , user  103  may provide his or her hosted identity in order to gain access to the various resources associated with tenancy  128 , such as hosted application  127 . 
     Note that the enterprise that establishes tenancy  126  may be a different enterprise than the other enterprise that establishes tenancy  128 . In addition, note that hosting environment  121  may be capable of established any number of tenancies with any number of enterprises. The tenancy model is well known in the art and need not be discussed at length here. 
     However, in at least some implementations, the enterprise that establishes tenancy  126  may be the same enterprise associated with enterprise environment  131 . In such an implementation, the enterprise may desire to host some applications, such as hosted application  125 , within hosting environment  121 . Those hosted applications may be accessible to users linked to the enterprise by way of their hosted identities that grant them with access to hosted environment  121 . 
     In addition, the enterprise may desire for hosted application  125  to be able to access data and possibly other resources within enterprise environment  131 . To accomplish this, a connection  110  may be established between hosting environment  121  and enterprise environment  131  over which hybrid requests, discussed in more detail below, may be communicated. The connection  110  may be established concurrent with or generally when hosted application  125  is installed. Optionally, the connection  110  may be established prior to installing hosted application  125 . Rather, during the installation process it may be possible to specify that data requests initiated by hosted application  125  be routed to enterprise environment  131  over the connection  110 . Such a configuration may also be accomplished after having installed hosted application  125 . In other words, the handling of data requests for hosted application  125  may be a configurable setting that can be dynamically changed or adjusted. The connection  110  may be a logical connection, a virtual connection, a physical connection, or any combination or variation thereof. The connection  110  may comprise a variety of links, equipment, and other elements capable of facilitating the exchange of communications between hosting environment  121  and enterprise environment  131 , as discussed herein. Such connections are generally well understood in the art and need not be discussed at length here. 
     Hosted application  127  may be configured differently than hosted application  125 . For example, whereas data requests initiated by hosted application  125  may be routed to enterprise environment  131 , data requests initiated by hosted application  127  may be handled internally by hosting environment  121 . In an implementation, data associated with hosted application  127  may be stored and hosted within hosting environment  121 . In another implementation, hosted application  127  may be configured so that data requests are routed to another enterprise environment different than enterprise environment  131 . 
     The data requests initiated by hosted application  125  and hosted application  127  discussed above may be made in response to page requests generated by clients  111  and  113 . The page requests may be, for example, web page requests for a page served by hosted application  125  or hosted application  127 . Other types of requests are possible, such as requests for information or data displayed by way of a web page or some other suitable data structure. Upon receiving the requests, hosted application  125  and hosted application  127  communicate data requests to application server  123 . Depending upon the configurable information associated with each hosted application, application server  123  may serve the data requests using data hosted internally to hosting environment  121  or by way of communication with enterprise environment  131  over the previously established connection  110 . 
       FIG. 2  illustrates a particular hybrid process  200  for handling data requests within application server  123 . To begin, application server  123  receives a data request initiated by a hosted application, such as hosted application  125  (step  201 ). The data request may be initiated by the hosted application in response to a page request made on behalf of a hosted identity logged into hosting environment  121 . Next, application server  123  generates a hybrid data request based on request information comprising at least a portion of the data request and the hosted identity (step  203 ). Application server  123  directs the hybrid data request over the connection  110  established between hosting environment  121  and enterprise environment  131  for handling by application server  133  within enterprise environment  131  (step  205 ). Application server  133  may, for example, retrieve data from a data store  136  or some other data store within or external to enterprise environment  131  and responsively reply to the hybrid data request with the data. Application server  123  may then provide the data to hosted application  125 . In turn, hosted application  125  can provide the data for presentation by a client associated with the hosted identity, such as client  111 . 
     In one implementation, the hybrid data request may identify user  101  by his or her hosted identity. Optionally, user  101  may be identified by a token or some other technique suitable for identifying user  101  to enterprise environment  131  such that user  101  may be authenticated or otherwise validated for access to enterprise environment  131 . In some implementations, the mapping of the users hosted identity to the users enterprise identity is done by way of a user profile mapping service. Establishing which hosted identities may have access to enterprise environment  131  may be part of the installation process for hosted application  125 , or part of some other post-installation process for facilitating a hybrid scenario. 
     In one implementation, a variation of hybrid process  200  may be employed by application server  133  within enterprise environment  131 . Client  115 , associated with user  105  logged into enterprise environment  131  under an enterprise identity, requests a page from enterprise application  135 . Enterprise application  135  responsively makes a data request to application server  133 . In this variation, configuration information for enterprise application  135  may be set such that data requests made by enterprise application  135  are directed to hosting environment  121 . Accordingly, application server  133  may generate a hybrid request for communication over the connection  110  between enterprise environment  131  and hosting environment  121 . Application server  123  can serve the hybrid request by, for example, retrieving or otherwise obtaining data hosted within hosted environment  121 . The retrieved data can be returned to application server  133  by way of the connection  110  and presented by enterprise application  135  to client  115 . 
     Referring now to  FIG. 3 , a computing system suitable for implementing a hybrid process is illustrated. Computing system  300  is generally representative of any computing system or systems on which hybrid process  200  may be suitably implemented. Optionally, computing system  300  may also be suitable for implementing application server  123  or application server  133 . Indeed, computing system  300  may also be suitable for implementing any elements of hosting environment  520  or enterprise environment  530  provided in  FIG. 5 . Examples of computing system  300  include server computers, client computers, virtual machines, distributed computing systems, and Internet appliances, as well as any combination or variation thereof. Computing system  300  is discussed in more detail below. 
       FIG. 4  illustrates an operational sequence  400  pertaining to one implementation of hybrid process  200 . In this implementation, user  101  logs into hosting environment  121 . Client  111  communicates an identifier (ID) representative of a hosted identity for user  101  to application server  123 . It can be appreciated that, while application server  123  may authenticate or otherwise authorize user  101 , other elements included within or provided separately from application server  123  may perform such authentication and authorization functions. Once logged into hosting environment  121 , user  101  may proceed to engage with the various applications and service available thereon, such as hosted application  125 . 
     While engaged with hosted application  125 , a page may be served to client  111  for rendering and presentation to user  101 . As user  101  interacts with the page or pages, client  111  may communicate page requests, or other types of requests, to hosted application  125 . Hosted application  125 , responsive to the page request, communicates a data request to application server  123 . For example, the page request may be a request to view a set of data and the data request may be a request for the set of data. 
     Application server  123  receives the data request and generates a hybrid request. The hybrid request identifies the hosted identity associated with user  101  and references the requested data. Application server  123  communicates the hybrid request to application server  133  over the connection  110  established there between. Application server  133  communicates with data store  136  to read or otherwise retrieve the requested data. Application server  133  provides a response to application server  123 , including the request data. Application server  123  responds to hosted application  125  with the request data which, in turn, presents a new page to client  111  with the data. For example, a web page with the requested data imbedded or otherwise included therein may be delivered to client  111  for presentation to user  101 . 
       FIG. 5  illustrates hybrid environment  500  in an implementation. Hybrid environment  500  includes hosting environment  520 , enterprise environment  530 , and optionally relay service  540 . Users  501  and  502 , utilizing clients  511  and  512  respectively, may engage with hosting environment  520  in order to gain access to and use hosted applications  525  and  527 , as will be discussed in more detail below. Users  503  and  504 , utilizing clients  513  and  515  respectively, may engage with enterprise environment  530  in order to gain access to and use enterprise application  537 . It should be understood that users  501  and  502  are not limited to engaging with hosting environment  520 , nor are users  501  and  502  limited to engaging with only on tenancy. Likewise, users  503  and  504  are not limited to engaging with enterprise environment  530 . Rather, users  501  and  502  may engaged with enterprise environment  530  or some other environment not shown, while users  503  and  504  may also engage with hosting environment  520 . 
     Hosting environment  520  includes access system  521 , credentials system  522 , application server  523 , and token system  524 . Application server  523  may include or provide hosted application  525 , associated with tenancy  526 , and hosted application  527 , associated with tenancy  528 . Credentials system  522  may be any system or collection of systems capable of providing service credentials for hosting environment  520 . Token system  524  may be any system capable of providing user credentials on behalf of a user, such as a token, to enterprise environment  530 . Application server  523  may be any system or collection of systems capable of hosting hosted applications  525  and  527 , providing various other hosted services, and interfacing with enterprise environment  530 . Access system  521  may be any system or collection of systems capable of providing access to hosting environment  520  and Internet  505 . 
     Enterprise environment  530  includes access system  531 , credentials system  532 , application server  533 , line system  534 , and identity mapper  535 . Application server  533  may include or otherwise provide enterprise application  537 . Line system  534 , sometimes referred to as a line of business system, includes or provides access to data store  536 . Intranet  539  provides intercommunication capability for the exchange of communications among the aforementioned elements, including clients  513  and  515 , operated by users  503  and  504  respectively. Credentials system  532  may be any system or collection of systems capable of providing credentials on behalf of users or systems in order for the systems or users to gain access to, possibly, application server  533  and/or line system  534 . Line system  534  may be any system or collection of systems capable of providing business applications, such as enterprise service applications. While line system  534  is depicted as internal to enterprise environment  530 , line system  534  may possibly be provisioned external to enterprise environment  530 . Enterprise application  537  may be any application or collection of applications hosted by application server  533 . Application server  533  may be any system or collection of systems capable of hosting enterprise application  537 . 
     In operation, an enterprise may provide some applications by way of hosting environment  520 , while providing others by way of enterprise environment  530 . Hosting environment  520  allows for multiple enterprises or entities to establish tenancies. The enterprises may then install or otherwise provision various resources, including data and applications, within hosting environment  520 . Users can login to hosting environment  520 , possibly using a hosted identity, to access their resources accordingly. Hosting environment  520  is generally accessible over Internet  505  using any number and variety of communication devices and appliances. 
     With respect to  FIG. 5 , a first enterprise may establish tenancy  526  within hosting environment  520  in order to provide hosted application  525  to users associated with the first enterprise. For illustrative purposes it will be assumed that user  501  is associated with the first enterprise. In addition, it will be assumed that the first enterprise is associated with enterprise environment  530 . A second enterprise, different and distinct from the first enterprise, may establish tenancy  528  within hosting environment  520  in order to provide hosted application  527  to users associated with the second enterprise. For illustrative purposes it will be assumed that user  502  is associated with the second enterprise. When logged into hosting environment  520 , user  501  is provided with access to hosted application  525 , while user  502  is provided with access to hosted application  527 . Users  501  and  502  may gain access using hosted identities that can be authenticated and verified by enterprise environment  520 . 
     Application server  523  generally executes hosted applications  525  and  527  in order to provide application experiences or environments to clients  511  and  512 . For example, application server  523  may service web pages or other content to clients  511  and  512  for presentation to users  501  and  502 . Other hosting functions are possible. Clients  511  and  512  may communicate requests and other commands to application server  523  to allow users  501  and  502  to navigate or otherwise interact with hosted applications  525  and  527 . 
     At times, user  501  may make a request, via client  511 , that implicates enterprise environment  530 . For example, user  501  may navigate to a page or data that is stored within data store  536 . The page request may prompt hosted application  525  to initiate a data request to application server  523 . Application server  523  handles the data request by communicating with enterprise environment  530  to obtain the data relevant to the request. 
       FIGS. 6-7  illustrates two example operational sequences pertaining to various ways in which application server  523  may engage with enterprise environment  530  in order to obtain and serve the relevant data. In  FIG. 6 , a first implementation is provided whereby application server  523  is capable of providing user credentials and service credentials to enterprise environment  530 . In  FIG. 7 , a second implementation is provided whereby relay service  540  provides service credentials to enterprise environment  530 . 
     Turning to  FIG. 6 , hosted application  525  receives a page request from, for example, client  511 . Hosted application  525  communicates a corresponding data request to application server  523  requesting data or other content relevant to the page request. Token system  524  provides user credentials, such as a token, to application server  523 . This may occur prior to, simultaneously with, or after the data request made by hosted application  525 . Credentials system  522  provides service credentials to application server  523 . 
     Application server  523  then generates a hybrid data request for communication and delivery to enterprise environment  530 . The hybrid data request, in addition to identifying the data request, also includes the user credentials and service credentials. Access system  531  receives the hybrid request and performs validation on the service credentials. Once the service validation is complete, access system  531  provides the user credentials to identity mapper  535 . 
     Identity mapper  535  receives the user credentials and maps the hosted identity of user  501  to an enterprise identity for user  501 . Identity mapper  535  may communicate with credentials system  532  in order to obtain on-premises credentials for user  501  based on the enterprise identity for user  501 . Having obtained the on-premises credentials, identity mapper  535  communicates the on-premises credentials to application server  533 . Application server  533  communicates with data store  536 , possibly via line system  534 , in order to retrieve the data relevant to the original data request made by client  511 . The data is communicated back through access system  531  and application server  523  to hosted application  525 . Hosted application  525  can then generate a new page for communication to and display by client  511 . 
     Turning to  FIG. 7 , hosted application  525  receives a page request from, for example, client  511 . Hosted application  525  communicates a corresponding data request to application server  523  requesting data or other content relevant to the page request. Token system  524  provides user credentials, such as a token, to application server  523 . This may occur prior to, simultaneously with, or after the data request made by hosted application  525 . 
     In this implementation, credentials system  522  does not provide service credentials to application server  523 . Rather, applications server  523  communicates the user credentials provided by token system  524  to relay service  540 . A corresponding data request may also be provided to relay service  540  by application server  523 . Relay service  540  then provides the user credentials and the service credentials to access system  531 . 
     Access system  531  receives the hybrid request and performs validation on the service credentials. Once the service validation is complete, access system  531  provides the user credentials to identity mapper  535 . Identity mapper  535  receives the user credentials and maps the hosted identity of user  501  to an enterprise identity for user  501 . Identity mapper  535  may communicate with credentials system  532  in order to obtain on-premises credentials for user  501  based on the enterprise identity for user  501 . 
     Having obtained the on-premises credentials, identity mapper  535  communicates the on-premises credentials to application server  533 . Application server  533  communicates with data store  536 , possibly via line system  534 , in order to retrieve the data relevant to the original data request made by client  511 . The data is communicated back through access system  531 , relay service  540 , and application server  523  to hosted application  525 . Hosted application  525  can then generate a new page for communication to and display by client  511 . 
     In a brief illustrative scenario, an application server is provided within a hosting environment to facilitate a hybrid application environment. The application server receives data requests initiated by hosted applications within the hosting environment. To respond to the data requests, the application server selectively engage with one of at least a hosted data source within the hosting environment and an enterprise data source within an enterprise environment based on configurable handling information associated with the hosted applications. To engage with the enterprise data source within the enterprise environment, the application server generates hybrid data requests for enterprise data based on the data requests and hosted identities associated with the data requests. The application server directs the hybrid data requests to the enterprise environment. 
     In some implementations, the application server may also render a configuration menu for presentation during installation of the hosted applications. The configurable handling information can be input or otherwise received through the configuration menu. 
     In another illustrative scenario, a hybrid environment may be facilitated by the SharePoint® hosting environment, provided by Microsoft®. In this scenario, it may be possible to connect services running in both an on-premises SharePoint® server as well as through SharePoint® Online, sometimes referred to as in the cloud, in order to create a single logical service or application that spans cloud and on-premises, but presents to the user a single logical interface with shared data and logic. 
     As an example, a SharePoint® application server may include or be enabled for Business Connectivity Services (BCS). This service may also be enabled in SharePoint® Online. Customers may have the choice of using the BCS service either on-premises, or in SharePoint®. The on-premises BCS service and the BCS service in SharePoint® Online may communicate with each other in order to deliver connectivity scenarios between SharePoint® Online and other on-premises line-of-business systems (e.g. SAP). 
     A number of scenarios may be enabled by the aforementioned connectivity. In one scenario, a user may navigate to a page in SharePoint® Online, while data for the page is retrieved data from the on-premises LOB system in real time. In another scenario, batch jobs may synchronize documents, roles, tasks, and user profiles, as well as other information, from the on-premises LOB system to SharePoint® Online. In yet another scenario, a user in a hosting environment may search for documents or other content within an enterprise environment. 
     In one scenario, an application server that provides at least a portion of the SharePoint® Online service, is implemented using one or more computer readable media having stored thereon program instructions for facilitating a hybrid application environment. The program instructions may include first program instructions that, when executed by a computing system, direct the computing system to process a data request, initiated by a hosted application within the hosting environment in response to a page request made on behalf of a hosted identity logged into the hosting environment, to generate a hybrid data request based on request information comprising at least a portion of the data request and the hosted identity. The computing system may also direct the hybrid data request over a connection established between the hosting environment and an enterprise environment for handling by a second application server within the enterprise environment. 
     The first program instructions may also direct the computing system to, responsive to a second data request initiated by a second hosting application within the hosting environment in response to a second page request made on behalf of the hosted identity logged into the hosting environment, retrieve second data from a hosted data source within the hosting environment. The first program instructions may also direct the computing system to render a configuration menu for presentation during installation of the hosted application and receive configurable handling information input through the configuration menu specifying for data requests initiated by the hosted application to be directed to the enterprise environment. The first program instructions may also further direct the first application server to render a second configuration menu for presentation during installation of the second hosted application and receive second configurable handling information input through the second configuration menu specifying for second data requests initiated by the second hosted application to be handled within the hosting environment. 
     In another scenario, the program instructions may include second program instructions for implementing a SharePoint® application server within an enterprise environment. The second program instructions, when executed by a second computing system, direct the second computing system to process a second data request, initiated by an enterprise application within the enterprise environment in response to a second page request made on behalf of the enterprise identity logged into the enterprise environment, to generate a second hybrid data request based on second request information comprising the second data request and the hosted identity associated with the enterprise identity. The second computing system may also direct the second hybrid data request over the connection established between the hosting environment and the enterprise environment for handling by the first application server within the hosting environment. 
     Referring back to  FIG. 3 , computing system  300  includes processing system  301 , storage system  303 , software  305 , and communication interface  307 . Computing system  300  also includes user interface  309 , although this is optional. Processing system  301  is operatively coupled with storage system  303 , communication interface  307 , and user interface  309 . Processing system  301  loads and executes software  305  from storage system  303 . When executed by computing system  300  in general, and processing system  301  in particular, software  305  directs computing system  300  to operate as described herein for hybrid process  200 . Computing system  300  may optionally include additional devices, features, or functionality not discussed here for purposes of brevity and clarity. 
     Referring still to  FIG. 3 , processing system  301  may comprise a microprocessor and other circuitry that retrieves and executes software  305  from storage system  303 . Processing system  301  may be implemented within a single processing device but may also be distributed across multiple processing devices or sub-systems that cooperate in executing program instructions. Examples of processing system  301  include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combinations of processing devices, or variations thereof. 
     Storage system  303  may comprise any storage media readable by processing system  301  and capable of storing software  305 . Storage system  303  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. Storage system  303  may be implemented as a single storage device but may also be implemented across multiple storage devices or sub-systems. Storage system  303  may comprise additional elements, such as a controller, capable of communicating with processing system  301 . 
     Examples of storage media include random access memory, read only memory, magnetic disks, optical disks, flash memory, virtual memory, and non-virtual memory, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and that may be accessed by an instruction execution system, as well as any combination or variation thereof, or any other type of storage media. In some implementations, the storage media may be a non-transitory storage media. In some implementations, at least a portion of the storage media may be transitory. It should be understood that in no case is the storage media a propagated signal. 
     Software  305  may be implemented in program instructions and among other functions may, when executed by computing system  300 , direct computing system  300  to receive data requests initiated by hosted applications within a hosting environment; to respond to the plurality of data requests, selectively engage with one of at least a hosted data source within the hosting environment and an enterprise data source within an enterprise environment based on configurable handling information associated with the hosted applications; and to engage with the enterprise data source within the enterprise environment, generate hybrid data requests for enterprise data based on the data requests and hosted identities associated with the data requests and direct the hybrid data requests to the enterprise environment. 
     Software  305  may include additional processes, programs, or components, such as operating system software or other application software. Software  305  may also comprise firmware or some other form of machine-readable processing instructions capable of being executed by processing system  301 . 
     In general, software  305  may, when loaded into processing system  301  and executed, transform processing system  301 , and computing system  300  overall, from a general-purpose computing system into a special-purpose computing system customized to facilitate hybrid scenarios as described herein for each implementation. Indeed, encoding software  305  on storage system  303  may transform the physical structure of storage system  303 . The specific transformation of the physical structure may depend on various factors in different implementations of this description. Examples of such factors may include, but are not limited to the technology used to implement the storage media of storage system  303  and whether the computer-storage media are characterized as primary or secondary storage. 
     For example, if the computer-storage media are implemented as semiconductor-based memory, software  305  may transform the physical state of the semiconductor memory when the program is encoded therein. For example, software  305  may transform the state of transistors, capacitors, or other discrete circuit elements constituting the semiconductor memory. A similar transformation may occur with respect to magnetic or optical media. Other transformations of physical media are possible without departing from the scope of the present description, with the foregoing examples provided only to facilitate this discussion. 
     It should be understood that computing system  300  is generally intended to represent a computing system with which software  305  is deployed and executed in order to implement hybrid process  200  and optionally application server  123  or application server  133 . However, computing system  300  may also represent any computing system on which software  305  may be staged and from where software  305  may be distributed, transported, downloaded, or otherwise provided to yet another computing system for deployment and execution, or yet additional distribution. 
     Referring again to  FIG. 1 , through the operation of computing system  300  employing software  305 , transformations may be performed with respect to hybrid application environment  100 . As an example, a data request initiated by hosted application  125  may be considered transformed from one state to another when subject to hybrid process  200 . In a first state, the data request is initiated by hosted application  125 . Upon receiving the data request, application server  123  generates a hybrid data request, thereby changing hybrid application environment  100  to a second, different state. 
     Referring again to  FIG. 3 , communication interface  307  may include communication connections and devices that allow for communication between computing system  300  and other computing systems not shown over a communication network or collection of networks. Examples of connections and devices that together allow for inter-system communication include network interface cards, antennas, power amplifiers, RF circuitry, transceivers, and other communication circuitry. The aforementioned network, connections, and devices are well known and need not be discussed at length here. 
     User interface  309 , although optional, may include a mouse, a voice input device, a touch input device for receiving a gesture from a user, a motion input device for detecting non-touch gestures and other motions by a user, and other comparable input devices and associated processing elements capable of receiving user input from a user. Output devices such as a display, speakers, printer, haptic devices, and other types of output devices may also be included in user interface  309 . The aforementioned user input devices are well known in the art and need not be discussed at length here. 
     The functional block diagrams, operational sequences, and flow diagrams provided in the Figures are representative of exemplary architectures, environments, and methodologies for performing novel aspects of the disclosure. While, for purposes of simplicity of explanation, the methodologies included herein may be in the form of a functional diagram, operational sequence, or flow diagram, and may be described as a series of acts, it is to be understood and appreciated that the methodologies are not limited by the order of acts, as some acts may, in accordance therewith, occur in a different order and/or concurrently with other acts from that shown and described herein. For example, those skilled in the art will understand and appreciate that a methodology could alternatively be represented as a series of interrelated states or events, such as in a state diagram. Moreover, not all acts illustrated in a methodology may be required for a novel implementation. 
     The included descriptions and figures depict specific implementations to teach those skilled in the art how to make and use the best mode. For the purpose of teaching inventive principles, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these implementations that fall within the scope of the invention. Those skilled in the art will also appreciate that the features described above can be combined in various ways to form multiple implementations. As a result, the invention is not limited to the specific implementations described above, but only by the claims and their equivalents.