Third party access gateway for telecommunications services
Claim Score by NHIP
Abstract
A telecommunications architecture exposes telecommunications services to third parties through a secure access gateway. The third parties may be other telecommunications service providers who employ the services to support their own products and services. The access gateway provides a secure, standardized, and controlled access platform for the exposed services, and addresses the technical problems associated with such access. In addition to providing technical solutions for efficient and secure access to exposed services, the architecture also provides an additional revenue channel for existing telecommunication service providers.

Term
0.3 yearsto projected expiry
Projected expiry 22 January 2027, counted from filing; an application has no term until it is granted.
- Priority
- Filed
- Published
- Today
- Projected expiry
27 claims: 3 independent, 24 dependent
- 1A secure access gateway for a telecommunications architecture, the access gateway comprising:a profiling database comprising third party authorization data;a subscriber communication interface;a service broker communication interface;a service provider communication interface;an application communication interface;a service request handler coupled to the subscriber communication interface and the profiling database, the service request handler operable to: receive a communication network access request through the subscriber communication interface;extract a subscriber device identifier from the communication network access request;search the profiling database for an authorized subscriber device identifier record;and when the authorized subscriber device identifier record exists, forward the communication network access request to a communication network service provider through the service provider communication interface;a capability hander coupled to the subscriber communication interface, the capability handler operable to: receive an exposed service request through the application communication interface;authenticate the exposed service request to obtain a certificate identifier from the exposed service request;search the profiling database for an authorized third party application associated to the certificate identifier;and when the authorized third party application exists, forward the exposed service request to a service broker through the service broker communication interface.
- 12Broadest claimClaim Score 38, average(NHIP)A method for secure third party access to telecommunications services, the method comprising:establishing a profiling database comprising third party authorization data;receiving telecommunications service use requests;distinguishing the telecommunications service use requests between a communication network access request and an exposed service request;initiating execution of a service request handler on the communication network access request to: extract a subscriber device identifier from the communication network access request;search the profiling database for an authorized subscriber device identifier record;and when the authorized subscriber device exists, forward the communication network access request to a communication network service provider through a service provider communication interface;and initiating execution of a capability hander on the exposed service request to: authenticate the exposed service request to obtain a certificate identifier from the exposed service request;search the profiling database for an authorized third party application associated to the certificate identifier;and when the authorized third party application exists, forward the exposed service request to a service broker through the service broker communication interface.
- 21A product comprising:a machine readable medium;and instructions encoded on the machine readable medium which case a processor in an access gateway to perform a method comprising: storing third party authorization data in a profiling database;receiving a communication network access request through a first interface;receiving an exposed service request through a second interface;initiating execution of a service request handler on the communication network access request to: extract a subscriber device identifier from the communication network access request;search the profiling database for an authorized subscriber device identifier record;and when the authorized subscriber device exists, forward the communication network access request to a communication network service provider through a service provider communication interface;and initiating execution of a capability hander on the exposed service request to: authenticate the exposed service request to obtain a certificate identifier from the exposed service request;search the profiling database for an authorized third party application using the certificate identifier;and when the authorized third party application exists, forward the exposed service request to a service broker through the service broker communication interface.
Independent claims3
146 paragraphs in 5 sections, as filed
BACKGROUND OF THE INVENTION
PRIORITY CLAIM
0001This application claims the benefit of EPO Application No. ______, filed ______ and Italian Application No. ______, filed ______, both of which are incorporated herein by reference in their entirety.
00021. Technical Field
0003This invention relates to telecommunications processing system architectures. In particular, this invention relates to providing secure and controlled third party access to telecommunication service provider functionality.
00042. Related Art
0005Rapid advances in data processing and telecommunications technology have lead to a vast array of communication services available to the consumer. Such telecommunications services include traditional telephone service, Internet service, cable television service, cellular phone service, paging service, combined voice and data delivery service, and many other services. Furthermore, many services may be either wireless or wireline based.
0006Established telecommunications service providers have invested enormous amounts of time, money, and advanced technology to implement and reliably provide a broad spectrum of telecommunication products and services. In the past, this investment has been of primary benefit only to the telecommunications service provider. That is, the telecommunications service providers internally maintained their own technologies in confidence and for their own use.
0007Against this backdrop of sophisticated telecommunications architectures is the desire within each telecommunications service provider to explore and develop new business opportunities which lead to new revenue channels. Existing technology in the service provider architectures could drive such new revenue channels. However, in the past there was no sufficiently secure, flexible, and efficient mechanism which allowed third parties to access underlying functionality in service provider architectures.
0008A need has long existed for enhanced telecommunications service provider architectures.
SUMMARY
0009Establishing enhanced telecommunications service provider architectures for third party access poses significant technical challenges. As examples, there is a technical challenge in providing an architecture which provides secure and controlled access to internal functionality. Another technical challenge lies in providing a database data model architecture which efficiently flexibly supports independent authorization criteria for multiple different types of service requesters. The service requesters may vary widely, from individual end-users to company applications which issue service requests.
0010One aspect of the invention is an access gateway for a telecommunications architecture. The gateway provides the access point between a telecommunications service provider and third parties who issue requests to use the functionality implemented at the service provider. The gateway protects the telecommunications service provider against unauthorized access while exposing available services, and authenticating, authorizing, and processing third party requests for exposed services.
0011The gateway implements several interfaces between third parties and the underlying telecommunications service functionality. A subscriber communication interface receives, for example, third party communication network access requests (e.g., HTTP requests for web site content). An application interface receives, as examples, third party requests for exposed services such as short message service (SMS), multimedia message service (MMS), Charge services, and other exposed services.
0012The third party gateway includes a service request handler. The service request handler receives the communication network access request through the subscriber communication interface. The service request handler extracts a subscriber device identifier (e.g., an MSISDN associated with a subscriber device such as a cell phone) from the communication network access request and searches a profiling database for a record of the subscriber device identifier. When an authorized record exists, the service request handler forwards the communication network access request to a communication network service provider through the service provider communication interface.
0013The gateway distinguishes communication network access requests from exposed service requests. To that end, the gateway provides a capability hander which receives an exposed service request from a third party through the application interface. The capability handler may then extract a secure certificate identifier from the exposed service request and search the profiling database to authorize the third party application associated with the certificate identifier.
0014After authorizing the third party application to use the exposed service, the capability handler maps the exposed service request to form an input message as expected by the telecommunications service provider. For example, the capability handler may wrap the exposed service requests for delivery to a service broker in the telecommunications architecture through a service broker communication interface. The capability handler may provider wrappers for SMS requests, MMS request, Session Initiation Protocol (SIP) requests, Charge requests or any other request for an exposed service.
0015Another aspect of the invention is a profiling database and data model which support particularly efficient establishment and authorization of multiple types of service requesters. The data model provides a root node (e.g., a company table) to which multiple types of service requesters are related. From the root node the data model establishes independent branches for requesters of different types of services, such as network communication requesters and exposed service requesters.
0016Thus, one company may provide employees with cell phones which request network communication service (e.g., Internet browsing service) as well as establish company applications (e.g., a SMS front end) which submit requests for an exposed SMS service. Different types of authorization data may be established along each branch to selectively tailor authorization appropriately to the type of service requester. Furthermore, the data model establishes status identifiers at multiple levels within each branch. Accordingly, the access gateway may flexibly establish and apply authorization criteria not only for each type of service requester, but also for the individual service requesters within each type.
0017Other systems, methods, features and advantages of the invention will be, or will become, apparent to one with skill in the art upon examination of the following figures and detailed description. It is intended that all such additional systems, methods, features and advantages be included within this description, be within the scope of the invention, and be protected by the following claims.
BRIEF DESCRIPTION OF THE DRAWINGS
0018The invention can be better understood with reference to the following drawings and description. The components in the figures are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. Moreover, in the figures, like referenced numerals designate corresponding parts or elements throughout the different views.
0019<figref idref="DRAWINGS">FIG. 1</figref> shows a portion of a telecommunications architecture which includes a third party access gateway.
0020<figref idref="DRAWINGS">FIG. 2</figref> shows a third party access gateway in communication with a service broker and with external devices, applications, and service providers.
0021<figref idref="DRAWINGS">FIG. 3</figref> shows a service request handler in communication with an access management module.
0022<figref idref="DRAWINGS">FIG. 4</figref> shows a capability handler in communication with an access management module.
0023<figref idref="DRAWINGS">FIG. 5</figref> shows a profiling database.
0024<figref idref="DRAWINGS">FIG. 6</figref> shows a message flow diagram for a communication network access request.
0025<figref idref="DRAWINGS">FIG. 7</figref> shows a message flow diagram for SMS and MMS exposed service requests.
0026<figref idref="DRAWINGS">FIG. 8</figref> shows a message flow diagram for Charge, SIP, and Authorization service requests.
0027<figref idref="DRAWINGS">FIG. 9</figref> shows an SMS exposed service request.
0028<figref idref="DRAWINGS">FIG. 10</figref> shows a wrapped SMS service request.
0029<figref idref="DRAWINGS">FIG. 11</figref> shows an SMS service request response.
0030<figref idref="DRAWINGS">FIG. 12</figref> shows a wrapped SMS service request response.
0031<figref idref="DRAWINGS">FIG. 13</figref> shows a mapping from an MMS exposed service request to a wrapped MMS service request.
0032<figref idref="DRAWINGS">FIG. 14</figref> shows a mapping from an MMS exposed service response to a wrapped MMS service response.
0033<figref idref="DRAWINGS">FIG. 15</figref> shows a mapping from an SIP exposed service request to a wrapped SIP service request.
0034<figref idref="DRAWINGS">FIG. 16</figref> shows a mapping from a SIP exposed service response to a wrapped SIP service response.
0035<figref idref="DRAWINGS">FIG. 17</figref> shows a mapping from a Status exposed service request to a wrapped Status service request.
0036<figref idref="DRAWINGS">FIG. 18</figref> shows a mapping from a Status response to a wrapped Status service response.
0037<figref idref="DRAWINGS">FIG. 19</figref> shows a mapping from an Authentication exposed service request to a wrapped Authentication service request.
0038<figref idref="DRAWINGS">FIG. 20</figref> shows a mapping from an Authentication exposed service response to a wrapped Authentication service response.
0039<figref idref="DRAWINGS">FIG. 21</figref> shows a mapping from a Charge exposed service request to a wrapped Authentication service request.
0040<figref idref="DRAWINGS">FIG. 22</figref> shows a mapping from a Charge exposed service response to a wrapped Authentication service response.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
0041The elements illustrated in the Figures interoperate as explained in more detail below. Before setting forth the detailed explanation, however, it is noted that all of the discussion below, regardless of the particular implementation being described, is exemplary in nature, rather than limiting. For example, although selected aspects, features, or components of the implementations are depicted as being stored in memories, all or part of systems and methods consistent with the third party access gateway and its underlying components may be stored on, distributed across, or read from other machine-readable media, for example, secondary storage devices such as hard disks, floppy disks, and CD-ROMs; a signal received from a network; or other forms of ROM or RAM either currently known or later developed.
0042Furthermore, although specific components of the third party access gateway architecture will be described, methods, systems, and articles of manufacture consistent with the third party access gateway architecture may include additional or different components. For example, a processor may be implemented as a microprocessor, microcontroller, application specific integrated circuit (ASIC), discrete logic, or a combination of other type of circuits or logic. Similarly, memories may be DRAM, SRAM, Flash or any other type of memory. Flags, data, databases, tables, and other data structures may be separately stored and managed, may be incorporated into a single memory or database, may be distributed, or may be logically and physically organized in many different ways. Programs may be parts of a single program, separate programs, or distributed across several memories and processors. Systems may be implemented in hardware, software, or a combination of hardware and software in one processing system or distributed across multiple processing systems.
0043<figref idref="DRAWINGS">FIG. 1</figref> shows a portion of a telecommunications architecture <b>100</b> which interacts with third parties <b>102</b>. The third parties <b>102</b> may vary widely in form and in implementation. As examples, the third parties <b>102</b> may include: subscriber devices <b>104</b> such as cellular phones, personal data assistants, network (e.g., Internet) communication devices; applications <b>106</b> such as telecommunications service applications implemented by other service providers, such as Short Message Service (SMS) messaging applications, Session Initiation Protocol (SIP) systems, and billing applications which charge customers for products and services; and other devices, programs, or entities <b>108</b>.
0044The telecommunications architecture <b>100</b> implements functionalities which support telecommunications products and services. In addition, as will be explained in more detail below, the telecommunications architecture <b>100</b> exposes selected functionalities to the third parties <b>102</b>. In other words, the third parties <b>102</b> may communicate with the telecommunications architecture <b>100</b> to use the functionalities already in place in the architecture <b>100</b>. In other words, the third parties <b>102</b> need not expend the resources required to locally duplicate the functionalities already provided by the telecommunications architecture <b>100</b>.
0045The products and services, and their exposed underlying functionalities, may vary between implementations. As examples, the telecommunications architecture <b>100</b> may expose SMS messaging services (to deliver and charge for an SMS message), Multimedia Messaging System (MMS) messaging services (to deliver and charge for an MMS message), and SIP services (to setup a SIP call and charge for the call). As additional examples, the telecommunications architecture <b>100</b> may expose Charge services (to request to bill a charge against an account), Internet Protocol Television (IPTV) services (to request delivery of television programming), User Status services (to request a current user status, such as ‘online’, ‘offline’, ‘busy’, or ‘away’), and user authentication services (e.g., to request verification of whether a mobile user exists and whether the mobile user has the credentials to purchase a desired service, such as IPTV service). Other functionalities may be provided in addition or as alternatives. Furthermore, the telecommunications architecture <b>100</b> and may also provide access to communication network services (e.g., Internet browsing services) through the third party access gateway <b>110</b>.
0046The telecommunications architecture <b>100</b> secures access to the exposed services. To that end, the architecture <b>100</b> provides a third party access gateway <b>110</b>. The third party access gateway <b>110</b> acts as a single point of contact for the third parties <b>102</b> to the exposed services.
0047As shown in <figref idref="DRAWINGS">FIG. 1</figref>, the third party access gateway <b>110</b> receives service requests <b>112</b> from the third parties <b>102</b>. In response, the third party access gateway <b>110</b> verifies that the service request originates with an authenticated and authorized third party. In the case of network communication service requests (as one example), the third party access gateway <b>110</b> processes authorized service requests and relays the service requests to service providers <b>114</b>. In the case of exposed service requests, such as SMS, MMS, and SIP service requests, the third party access gateway <b>100</b> may process and relay the authorized service requests to the service broker <b>116</b>.
0048The service broker <b>116</b> executes the service request. In doing so, the service broker <b>116</b> may communicate with Business Support Systems (BSS) and Operation Support Systems (OSS) <b>118</b> which the architecture <b>100</b> implements to create, deploy, manage, and maintain telecommunications products and services. In executing the service request, the service broker <b>116</b> may additionally or alternatively communicate with a network layer <b>120</b> which may deliver or return service related data to the service broker <b>116</b>. Responses from service providers <b>114</b> and the service broker <b>116</b> are returned to the third-party access gateway <b>110</b> for delivery to the originating third party requester.
0049The third party access gateway <b>110</b> thereby provides a security layer between the third parties <b>102</b> and the exposed functionality implemented in the telecommunications architecture <b>100</b>. The third party access gateway <b>110</b> allows third parties to develop, deploy, deliver, and manage a wide range of products and services using functionality already implemented in another telecommunications architecture. At the same time, the third party access gateway <b>110</b> allows the telecommunications architecture <b>100</b> to expose core functionality toward the third parties <b>102</b> and a secure, standardized, and controlled manner.
0050<figref idref="DRAWINGS">FIG. 2</figref> shows a more detailed view of the third-party access gateway <b>110</b>. The third-party access gateway <b>110</b> communicates with the subscriber devices <b>104</b>, the service providers <b>114</b> and the requesting applications <b>106</b>. The third-party gateway <b>110</b> also communicates with the service broker <b>116</b>. <figref idref="DRAWINGS">FIG. 2</figref> shows that the service broker <b>116</b> accepts service requests for several exposed services: SMS services <b>202</b>, MMS services <b>204</b>, Charge services <b>206</b>, SIP services <b>208</b>, and User Authentication services <b>210</b>.
0051Optionally, the subscriber devices <b>104</b>, service providers <b>114</b>, and requesting applications <b>106</b> may communicate with the third-party access gateway <b>110</b> through intermediaries. As one example, the intermediaries may include web servers, such as the web server <b>212</b> and web server <b>213</b>. The intermediaries may implement encrypted or otherwise secure communication links between the third-party access gateway <b>110</b> and the subscriber devices <b>104</b>, service providers <b>114</b>, and requesting applications <b>106</b>. For example, the intermediaries (or the third party gateway <b>110</b> itself) may implement secure socket protocols (such as the HTTPS protocol), with accompanying SSL certificates and certificate identifiers which provide authentication and which convey public keys components of public key encryption pairs of private keys and a public keys. The web servers <b>212</b> and <b>213</b> and the gateway <b>110</b> may then authorize the third parties <b>102</b> using client certificates and the authorization information stored in the profiling database <b>228</b>.
0052The third-party access gateway <b>110</b> communicates through several interfaces. The interfaces include a subscriber communication interface <b>216</b> and a service broker communication interface <b>218</b>. The interfaces also include a service provider communication interface <b>220</b> and an application interface <b>222</b>.
0053The interfaces <b>216</b>-<b>222</b> may be implemented in many ways. As one example, the interfaces <b>216</b>-<b>222</b> may be network sockets defined by IP addresses, port numbers, and communication protocols, with a supporting physical layer (e.g., one or more network interface cards). The interfaces <b>216</b>-<b>222</b> may communicate through the physical layer using interprocess communication, messaging, or signaling, using HTTP, the Simple Object Access Protocol (SOAP), Java Database Connectivity (JDBC), or other communication protocols. The messages may be encoded in network packets (e.g., TCP/IP packets) in any desired form, such as extensible Markup Language (XML) messages. Furthermore, a firewall may be established to block requests from unknown hosts.
0054The third party access gateway <b>110</b> includes two message handlers which handle service requests. A service request handler <b>224</b> receives and processes communication network access requests such as Internet browsing requests, web server information requests, or other network access requests. A capability hander <b>226</b> receives and processes exposed service use requests, such as SMS service requests or Charge service requests.
0055Summarizing the processing of a communication network access request, the service request handler <b>224</b> receives the request, extracts a subscriber device identifier (e.g., an MSISDN identifier), and searches the profiling database <b>228</b> for verification information (e.g., a matching Active MSISDN record) which may correspond to any given subscriber device. When the verification information is located, the service request handler <b>224</b> maps the request to a service provider <b>114</b> through the service provider communication interface <b>216</b>. The service provider <b>114</b> responds with the requested data. In turn, the service request handler <b>224</b> returns the data to the requester through the subscriber communication interface <b>216</b>.
0056Summarizing the processing of an exposed service request, the capability handler <b>226</b> receives the request, optionally including a digital certificate issued by a certificate authority. The capability handler <b>226</b> authenticates the requester based on the digital certificate. The capability handler <b>226</b> may also extract a certificate identifier (e.g., a public key or a subject unique identifier), and searches the profiling database <b>228</b> for a requester application matching the certificate identifier. The capability handler <b>226</b> may also determine whether a matching requester application has an Active status (or other status indicating that the application is authorized to request the service) for one or more services.
0057When an authorized requester application is authenticated and authorized for the requested service, the capability handler <b>226</b> wraps the request for downstream processing, and forwards the wrapped request the service broker <b>116</b>. The service broker <b>116</b> provides an acknowledgment to the capability handler <b>226</b> and initiates execution of the request for the exposed service for the authorized requester application. Accordingly, as examples, an authorized requester application may send and charge for an SMS message or MMS message, setup a SIP connection, submit a Charge against a customer account or employ any other services exposed in the architecture <b>100</b>.
0058The service request handler <b>224</b> and the capability handler <b>226</b> authorize the service use requests. To that end, the service request handler <b>224</b> and the capability handler <b>226</b> consult the profiling database <b>228</b>. As will be explained in more detail below, the profiling database <b>228</b> holds authorization information for service requesters. An access management module <b>230</b> may interface the profiling database <b>228</b> and the service request handler <b>224</b> to the capability handler <b>226</b> (or any other program or entity in the third-party access gateway <b>110</b>). As an example, the access management module <b>230</b> may implement a database sever <b>232</b> including a database search engine. To that end, the access management module <b>230</b> and the profiling database <b>228</b> may be built on an Oracle (TM), Microsoft (TM) SQL, or other third party database server platform.
0059The third-party access gateway <b>110</b> further includes the reporting module <b>234</b>. The reporting module <b>234</b> obtains service request processing records from the service request handler <b>224</b> and the capability handler <b>226</b>. The reporting module <b>234</b> obtains the service log files <b>236</b> (e.g., through an FTP connection with systems which implement the service request handler <b>224</b> and/or capability handler <b>226</b>) and processes the log files <b>236</b> to update log tables in the profiling database <b>228</b>, as described in more detail below.
0060<figref idref="DRAWINGS">FIG. 3</figref> shows additional detail of the service request handler <b>224</b>. The service request handler <b>224</b> may be implemented in a general purpose processing architecture including a processor <b>302</b> and a memory <b>304</b>. The memory <b>304</b> stores programs and data which provide the service request handler functionality, as explained below.
0061The processor <b>302</b> may be dedicated to service request handler functionality. For example, the service request handler <b>224</b> may be an independent processing system within the overall architecture of the third party gateway <b>110</b>. In other implementations, the processor may be shared across additional programs and thus perform additional functionality in the third party gateway <b>110</b>. As examples, the processor <b>302</b> may also perform the functions of the capability handler <b>226</b> and/or initiate reception and transmission of messages through the interfaces <b>216</b>-<b>222</b>.
0062The memory <b>304</b> includes a network access request processing program <b>306</b>. The processing program <b>306</b> processes communication network access requests <b>308</b> received, for example, through the subscriber communication interface <b>216</b>. <figref idref="DRAWINGS">FIG. 3</figref> shows an example in which the communication network access request <b>308</b> is a Hypertext Transfer Protocol (HTTP) request <b>310</b>, including a Uniform Resource Locator (URL) <b>312</b> and an MSISDN <b>314</b>.
0063The processing program <b>306</b> authorizes the network access request <b>308</b>. In one implementation, the process program <b>306</b> extracts the MSISDN <b>314</b> from the request <b>308</b>. The processing program <b>306</b> issues a request to the access management module <b>230</b> to search the profiling database <b>228</b> based on the MSISDN. The access management module <b>230</b> returns the search results to the processing program <b>306</b>, which then determines whether an authorized record exists for the MSISDN.
0064For network access requests from authorized subscriber devices, the service request handler <b>224</b> determines a destination web server to handle the request. To that end, the network access request processing program <b>306</b> may establish and apply a web server mapping <b>316</b>. The web server mapping <b>316</b> may associate available web servers (e.g., identified by name, IP address, and/or port number) to the MSISDN and/or to portions of the Uniform Resource Locator (URLs) or other data in the HTTP request. The service request handler <b>224</b> thereby determines which service provider <b>114</b> will handle the network access request <b>308</b>.
0065The selected service provider <b>114</b> responds to the access request <b>308</b> with the requested data. <figref idref="DRAWINGS">FIG. 3</figref> shows an example in which the service provider <b>114</b> responds to the HTTP request <b>308</b> with HTTP response data <b>318</b>. The response data <b>318</b> may include HTML, image, sound, and/or movie data, or any other data responsive to the HTTP request <b>308</b>. The service request handler <b>224</b> returns the HTTP response data <b>318</b> to the authorized requester.
0066The service request handler <b>224</b> may also create log files <b>320</b>. The log files <b>320</b> may include any desired service tracking information for each service request. The logged information may include authorized subscriber information, MSISDNs, service request dates and times, URL data, amount of data transferred, identifiers of the responsive service providers, error codes, transaction identifiers, and other information. The service request handler <b>224</b> may provide the log files <b>320</b> to the reporting module <b>234</b> for parsing and populating log tables in the profiling database <b>228</b>.
0067<figref idref="DRAWINGS">FIG. 4</figref> shows additional detail of the capability handler <b>226</b>. The capability handler <b>226</b> may be implemented in a general purpose processing architecture including a processor <b>402</b> and a memory <b>404</b>. The memory <b>404</b> stores programs and data which provide the capability handler functionality, as explained below. A webserver <b>436</b> (e.g., an Apache Axis webserver) may provide third party authentication based on client certificates and a secure communication channel through SSL.
0068The capability handler <b>226</b> may be an independent processing system within the overall architecture of the third party gateway <b>110</b>. In other implementations, the processor <b>402</b> may be shared across additional programs and perform additional functionality in the third party gateway <b>110</b>. As examples, the processor <b>402</b> may also execute the functions of the service request handler <b>224</b> and/or initiate reception and transmission of messages through the interfaces <b>216</b>-<b>222</b>.
0069The memory <b>404</b> includes an exposed service request processing program <b>406</b>. The processing program <b>406</b> processes exposed service requests <b>408</b> received, for example, through the application interface <b>222</b>. The service request <b>408</b> shown in <figref idref="DRAWINGS">FIG. 4</figref> includes a certificate identifier <b>410</b> (e.g., a public key or subject unique identifier) which may be present in a digital certificate included with the service requests <b>408</b>. The processing program <b>406</b> may authenticate the exposed service request <b>408</b> by first decoding the digital certificate and verifying issuance of the certificate with by a certificate authority. The processing program <b>406</b> may then employ the verified public key to authenticate the service request <b>408</b> (e.g., by comparing a decrypted message hash value with a calculated message hash value). Alternatively, the capability handler <b>226</b> may employ the web server <b>426</b> for authentication.
0070In one implementation, the processing program <b>406</b> extracts the certificate identifier <b>410</b> from the request <b>408</b>. The processing program <b>406</b> issues a request to the access management module <b>230</b> to search the profiling database <b>228</b> based on the certificate identifier <b>410</b>. The access management module <b>230</b> returns the search results to the processing program <b>406</b>. In turn, the processing program <b>406</b> determines whether an authorized company application exists corresponding to the certificate identifier <b>410</b> and that is linked to an Active (or otherwise authorized) installed service corresponding to the requested service.
0071For exposed service requests from authenticated and authorized applications, the capability handler <b>226</b> determines which exposed service has been requested. The service type may be specified in the service request <b>408</b>, or the service request may be distinguished based on the specific endpoints within the third party gateway <b>110</b> to which they are sent. Each service request <b>408</b> may vary in form and content depending on the type of exposed service which is requested.
0072The third party gateway <b>110</b> may define and publish Web Services Description Language (WSDL) descriptors for exposed services to the third parties <b>102</b>. WSDL descriptors may specify the location of a service (e.g., the network address of an endpoint establishes in the third party access gateway <b>110</b>) and the functionality which the service exposes. The WSDL descriptors may also define each exposed service, the operations which may be performed, and the messages that are involved. Accordingly, the third parties <b>102</b> receive the published descriptors and understand where to communicate service requests, the form and content that the service request should adhere to, and the form and content of responses that may be expected.
0073The capability handler <b>226</b> provides an exposed service interface <b>412</b> which acts an intermediary between the service broker <b>116</b> and the requesting applications <b>106</b>. The exposed service interface <b>412</b> may translate received service request messages <b>408</b> from a form expected by the third party gateway <b>110</b> (e.g., the form for input messages specified in the WSDL descriptor) to a form expected by the service broker <b>116</b> for such requests. In other words, the wrappers are the mapping applied by WSDL definitions to form input messages for the exposed services. Thus, the exposed service interface <b>412</b> insulates the service broker <b>116</b> from the potentially widely varying form and content of exposed service requests messages and efficiently connects requesting applications to the exposed services.
0074To that end, the exposed service interface <b>412</b> may include wrapper logic which prepares a standardized (i.e., wrapped) exposed service request <b>424</b> for the service broker <b>116</b>. The wrapper logic may represent a processing program which parses the WSDL definition to translate the received message form and content to match the message definitions specified in the WSDL definitions. Examples of message formats expected by the service broker <b>116</b> are described below.
0075Wrapper logic may be provided for any of the exposed services. <figref idref="DRAWINGS">FIG. 4</figref> shows an SMS wrapper <b>414</b>, an MMS wrapper <b>416</b>, and a Status Inquiry wrapper <b>418</b>. <figref idref="DRAWINGS">FIG. 4</figref> also shows a Mobile User Authentication wrapper <b>420</b>, a User Authentication Wrapper <b>422</b>, a SIP wrapper <b>432</b> and a Charge wrapper <b>434</b>.
0076In one implementation, the exposed service interface <b>412</b> may employ Java Remote Method Invocation (RMI). RMI provides a mechanism through which Java objects may be defined, and their method invoked remotely. To that end, the service broker <b>116</b> may act as an object server to create objects which handle exposed service requests. The objects may be registered so that the capability handler <b>226</b> may obtain references to the objects and invoke the objects remotely. The third party gateway <b>110</b> may send and receive wrapped service request messages and responses to and from the service broker <b>116</b> with other message communication and remote procedure call techniques, however.
0077The capability handler <b>226</b> obtains service request responses <b>426</b> to the exposed service requests from the service broker <b>116</b>. The capability handler <b>226</b> provides the request responses <b>426</b> to the requesting applications. In addition, the capability handler <b>226</b> may provide a standardized response format for each exposed service request response. To that end, the wrappers shown in <figref idref="DRAWINGS">FIG. 4</figref> may generate wrapped exposed service request responses <b>428</b> according to the output messages defined in the WSDL definitions.
0078The capability handler <b>226</b> may also create log files <b>430</b>. The log files <b>430</b> may include any desired exposed service tracking information, such as authorized subscriber information, certificate identifiers, service request dates and times, number of requests made, types of requests made, error codes, transaction identifiers, and other information. The capability handler <b>226</b> may provide the log files <b>430</b> to the reporting module <b>234</b> for parsing and for populating log tables in the profiling database <b>228</b>.
0079<figref idref="DRAWINGS">FIG. 5</figref> shows an example implementation of the data model in the profiling database <b>228</b>. The profiling database <b>228</b> includes a company table <b>502</b>, which stores information characterizing a company which has access to one or more exposed services provided by the architecture <b>100</b>. A company identifier field <b>504</b> provides a primary key to uniquely identify each record in the company table <b>502</b>. The company table <b>502</b> is shown in more detail below in Table 1. <tables id="TABLE-US-00001" num="1"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 1</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Company</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>COMPANY_ID</entry><entry>Unique Identifier of the Company</entry><entry>Integer</entry></row><row><entry>MASTERPARTYID</entry><entry>AlphaNumeric descriptor of the</entry><entry>String</entry></row><row><entry /><entry>Company</entry></row><row><entry>COMPANY_NAME</entry><entry>Company Name</entry><entry>String</entry></row><row><entry>VAT_CODE</entry><entry>Company Vat Code</entry><entry>String</entry></row><row><entry>FISCAL_CODE</entry><entry>Company Fiscal Code</entry><entry>String</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Company status (e.g.,</entry><entry>Integer</entry></row><row><entry /><entry>activated, deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0080An end-user table <b>506</b> stores information relating to the MSISDNs (which generally associate to specific individuals) which use network communication services and exposed services. The end-user table <b>506</b> establishes the relationships between the end user, their company, and their MSISDN. A primary key end user identifier field <b>508</b> uniquely identifies each record in the end-user table <b>506</b>. The end-user table <b>506</b> is shown in more detail below in Table 2. <tables id="TABLE-US-00002" num="2"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 2</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>End User</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>ENDUSER_ID</entry><entry>Unique Identifier of the EndUser</entry><entry>Integer</entry></row><row><entry>MSISDN_ID</entry><entry>Identifier of user MSISDN</entry><entry>Integer</entry></row><row><entry>SERVICE_PARTY_ID</entry><entry>AlphaNumeric descriptor of the</entry><entry>String</entry></row><row><entry /><entry>EndUser</entry></row><row><entry>COMPANY_ID</entry><entry>Identifier of the Company</entry><entry>Integer</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of EndUser status (e.g.,</entry><entry>Integer</entry></row><row><entry /><entry>activated, deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0081An MSISDN table <b>510</b> provides a device identifier table which establishes recognized MSISDNs in the MSISDN field <b>512</b>. The MSISDN may be associated with subscriber devices, such as with GSM SIM cards for mobile phones. The end user table <b>506</b> may then relate an end user to an MSISDN using the MSISDN identifier field. That status field in the MSDISN table <b>510</b> provides a subscriber device status. A primary key is provided in the MSISDN identifier field <b>514</b> to uniquely identify each record in the MSISDN table <b>510</b>. The MSISDN table <b>510</b> is shown in more detail below in Table 3. <tables id="TABLE-US-00003" num="3"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 3</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>MSISDN</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="105PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>MSISDN_ID</entry><entry>Unique Identifier of the MSISDN</entry><entry>Integer</entry></row><row><entry>MSISDN</entry><entry>MSISDN value</entry><entry>String</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of MSISDN status (e.g.,</entry><entry>Integer</entry></row><row><entry /><entry>activated, deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0082A status table <b>520</b> establishes the possible statuses for end users, companies, MSISDNs, or other entities. A primary key status identifier field <b>522</b> uniquely identifies each record in the status table <b>520</b>. The status table <b>520</b> is shown in more detail below in Table 4.
0083Examples of status include Active, Deactivated, Suspended, and Idle. Accordingly, the third party gateway <b>110</b> may set the status to one of many different levels. For example, the status may reflect the status of a company, a company application, a user, or a specific MSISDN. When authorizing service requests, the third party gateway <b>110</b> may check that the status is at any desired level before authorizing the request. For example, the third party gateway <b>110</b> may ensure that both an MDISDN and an end-user remain Active. Alternatively or additionally, the gateway <b>110</b> may ensure that the associated company also remains Active. <tables id="TABLE-US-00004" num="4"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 4</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Status</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>STATUS_ID</entry><entry>Unique Identifier of the Status</entry><entry>Integer</entry></row><row><entry>STATUS_NAME</entry><entry>Name of the Status:</entry><entry>String</entry></row><row><entry /><entry>Activated</entry></row><row><entry /><entry>Deactivated</entry></row><row><entry /><entry>Suspended</entry></row><row><entry /><entry>Idle</entry></row><row><entry>STATUS_DESCRIPTION</entry><entry>Description of the Status</entry><entry>String</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0084An end-user cross application table <b>516</b> establishes a relationship between an end user and the business applications they are subscribed to. End user identifier and application identifier fields provide primary key/foreign key fields <b>518</b> which link end users to company applications. The end-user cross application table <b>516</b> is shown in more detail below in Table 5. <tables id="TABLE-US-00005" num="5"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 5</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>End user cross application</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="77PT" align="left" /><colspec colname="2" colwidth="112PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>ENDUSER_ID</entry><entry>Unique Identifier of the EndUser</entry><entry>Integer</entry></row><row><entry>APPLICATION_ID</entry><entry>Unique Identifier of the Application</entry><entry>Integer</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0085A company application table <b>524</b> establishes the characteristics of an application within a company which may submit exposed service requests. The characteristics may include name, description, URL, a certificate identifier stored in the certificate identifier field <b>526</b>, and other characteristics. As one example, the company application table may specify the characteristics of an SMS front end application running at a third party service provider, for example. The SMS front end may submit SMS requests to the third party gateway <b>110</b> on behalf of customers of the company associated with the SMS front end.
0086A primary key application identifier field <b>528</b> uniquely identifies each record in the company application table <b>524</b>. In addition, a status identifier provides status information for each company application record. The company application table <b>524</b> is shown in more detail below in Table 6. <tables id="TABLE-US-00006" num="6"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 6</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Company Application</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="105PT" align="left" /><colspec colname="2" colwidth="84PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>APPLICATION_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Application</entry></row><row><entry>APPLICATION_NAME</entry><entry>The name of the</entry><entry>String</entry></row><row><entry /><entry>Application</entry></row><row><entry>APPLICATION_DESCRIPTION</entry><entry>The description of the</entry><entry>String</entry></row><row><entry /><entry>Application</entry></row><row><entry>URL</entry><entry>The home URL of the</entry><entry>String</entry></row><row><entry /><entry>Application</entry></row><row><entry>COMPANY_ID</entry><entry>Identifier of the Company</entry><entry>Integer</entry></row><row><entry>MSITE_URL_CATALOGUE</entry><entry>The URL of Application</entry><entry>String</entry></row><row><entry /><entry>catalogue</entry></row><row><entry>CERTIFICATE_ID</entry><entry>Identifier of Application</entry><entry>Integer</entry></row><row><entry /><entry>certificate</entry></row><row><entry>PROXY_HOST</entry><entry>IP of proxy server</entry><entry>String</entry></row><row><entry>PROXY_PORT</entry><entry>Port of proxy server</entry><entry>String</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Application</entry><entry>Integer</entry></row><row><entry /><entry>status (e.g. activated,</entry></row><row><entry /><entry>deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0087An installed services table <b>530</b> establishes records of the exposed services to which a company has subscribed. Thus, the installed services identify which exposed services the company applications may request. An installed service identifier field <b>532</b> serves as a primary key to uniquely identify each record in the installed services table <b>530</b>. The installed services table <b>530</b> is shown in more detail below in Table 7. <tables id="TABLE-US-00007" num="7"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 7</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Installed Services</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>INSTALLEDSERVICE_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Installed Service</entry></row><row><entry>APPLICATION_ID</entry><entry>Identifier of the Application</entry><entry>Integer</entry></row><row><entry>SERVICE_ID</entry><entry>Identifier of the subscribed</entry><entry>Integer</entry></row><row><entry /><entry>Service</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Installed Service</entry><entry>Integer</entry></row><row><entry /><entry>status (e.g., activated,</entry></row><row><entry /><entry>deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>ENDDATE</entry><entry>Service Ending Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0088An installed attributes table <b>534</b> establishes characteristics of services associated with specific companies. An installed attributes identifier field <b>536</b> serves as a primary key to uniquely identify each record in the installed attributes table <b>534</b>. Table 8, below, shows the installed attributes table <b>534</b> in more detail. <tables id="TABLE-US-00008" num="8"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 8</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Installed Attributes</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="98PT" align="left" /><colspec colname="2" colwidth="84PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>INSTALLEDATTRIBUTE_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Installed Attribute</entry></row><row><entry>ATTRIBUTE_ID</entry><entry>Identifier of the Attribute</entry><entry>Integer</entry></row><row><entry>ATTRIBUTE_VALUE</entry><entry>Name of the Attribute</entry><entry>Integer</entry></row><row><entry>INSTALLEDSERVICE_ID</entry><entry>Identifier of the Installed</entry></row><row><entry /><entry>Service</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Installed</entry><entry>Integer</entry></row><row><entry /><entry>Attribute status (e.g.,</entry></row><row><entry /><entry>activated, deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0089A service attribute table <b>538</b> stores the name, description, and a default value for attributes of exposed services available through the third party access gateway <b>110</b>. Examples of service attributes include:
0090Recurring charge: the cost to be paid every month to use the service (e.g., the monthly cost for access to the Send SMS or Send MMS exposed services).
0091Threshold: the amount of SMS or MMS messages which may be sent every month.
0092Extra quota: the cost per SMS or MMS message when the threshold has been exceeded.
0093The default value may be exported into the installed attribute table. The value in the installed attribute table may then be modified appropriately for a specific company application.
0094An attribute identifier field <b>540</b> serves as a primary key to uniquely identify each record in the service attribute table <b>538</b>. Table 9, below, shows the service attribute table <b>534</b> in more detail. <tables id="TABLE-US-00009" num="9"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 9</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Service Attribute</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="112PT" align="left" /><colspec colname="2" colwidth="77PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>ATTRIBUTE_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Attribute</entry></row><row><entry>SERVICE_ID</entry><entry>Identifier of the Service</entry><entry>String</entry></row><row><entry>ATTRIBUTE_NAME</entry><entry>The name of the attribute</entry><entry>String</entry></row><row><entry>ATTRIBUTE_DEFAULT_VALUE</entry><entry>The attribute default</entry><entry>String</entry></row><row><entry /><entry>value</entry></row><row><entry>ATTRIBUTE_DESCRIPTION</entry><entry>The description of the</entry><entry>String</entry></row><row><entry /><entry>attribute</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Service</entry><entry>Integer</entry></row><row><entry /><entry>Attribute status (e.g.,</entry></row><row><entry /><entry>activated, deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0095A service catalog table <b>542</b> stores the name, description, status and other information associated with the exposed services available through the third party access gateway <b>110</b>. Each business application <b>114</b> or service provider <b>106</b> may subscribe to one or more services defined in the service catalog table <b>542</b>. The service catalog table <b>542</b> may establish records which provide a name, description, identifier, and status for exposed SMS, MMS, Charge, or other types of exposed services. A service identifier field <b>544</b> serves as a primary key to uniquely identify each record in the service catalog table <b>542</b>. Table 10, below, shows the service catalog table <b>542</b>. <tables id="TABLE-US-00010" num="10"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 10</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Service Catalog</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="91PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>SERVICE_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Service</entry></row><row><entry>SERVICE_NAME</entry><entry>The name of the Service</entry><entry>String</entry></row><row><entry>SERVICE_DESCRIPTION</entry><entry>The description of the</entry><entry>String</entry></row><row><entry /><entry>Service</entry></row><row><entry>STATUS_ID</entry><entry>Identifier of Service Catalog</entry><entry>Integer</entry></row><row><entry /><entry>status (e.g., activated,</entry></row><row><entry /><entry>deactivated)</entry></row><row><entry>CREATIONDATE</entry><entry>Creation Date</entry><entry>Date</entry></row><row><entry>LASTMODIFIEDDATE</entry><entry>Last Modified Date</entry><entry>Date</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0096As an example, the profiling database <b>228</b> may define an exposed SMS service. To that end, the service catalog may establish a new record with a Service_Name set to “Send SMS”. The service attribute table may then set an Attribute_Name of “Threshold”, with an Attribute_Default_Value of “100” (i.e., 100 SMS messages per month). The Attribute_Description optionally may be set to a text string which describes the Threshold. The Service Attribute table may also define a Recurring Charge attribute with an Attribute_Default_Value of $ 1,000 (i.e., access to the exposed service costs $ 1,000 per month). An associated Attribute_Description may provide a text string which describes the recurring charge.
0097A third party company may negotiate with the telecommunications service provider to have access to the exposed SMS message service. The terms and conditions of the access will depending on the negotiation and are supported by the data model in the profiling database <b>228</b>. The profiling database <b>228</b> will establish a company record for the company, and establish a company application record linked. to the company. The installed services table may then establish an installed service record for the company application which specifies the “Send SMS” service defined in the service catalog. The default values provided in the service attribute table may be set specifically for the company in the installed attributes table. For example, the installed attributes table may define a Threshold of 10,000 SMS messages per month, and a Recurring Charge of $ 5,000 per month.
0098A combination of a company application and installed services establishes a client portfolio for the company application. The company application submits service requests which the third party gateway <b>110</b> authorizes with reference to the client portfolio. The data model established in the portfolio database <b>228</b> supports flexible definition, modification, and deletion of the client portfolios.
0099<figref idref="DRAWINGS">FIG. 5</figref> shows that the profiling database <b>228</b> implements a data model which supports particularly efficient establishment and authorization of different types of service requests. The company table <b>502</b> acts as a root table which relates multiple types of service requesters back to an associated company. From the company table <b>502</b>, the data model establishes independent branches for network communication requesters and exposed service requesters. Each type of requester is associated with a company. As examples, one company may include both employees who request network communication service (e.g., Internet browsing service) and at the same time the company may establish applications (e.g., a SMS front end) which submit requests for an exposed SMS service.
0100The data model allows the third party gateway <b>110</b> to authorize each type of requester based on different criteria. The criteria may therefore be independently chosen and tailored to the requester types. At the same time, the branching structure of the data model allows each type of requester to coexist in the same data model, establish a relationship to a single company, and support unique authorization controls for each type of requester.
0101The company table defines one or more companies which may access the third party gateway <b>110</b> using unique company identifiers in the company table <b>502</b> (Table 2). The end user branch <b>554</b> is established by providing unique end user identifiers <b>508</b> in the end user table <b>506</b> and a relation back to a specific company using the company identifier field. Similarly, the company application branch <b>556</b> is established by providing unique application identifiers <b>528</b> which establish company applications with a relation back to a specific company using the company identifier field. Thus, the end users and requesting applications are linked back to a company which may include both types of requesters.
0102Furthermore, each branch in the data model provides a mechanism for establishing different authorization criteria for each type of requester. In the end user branch, for example, the MSISDN provides a data field on which to authorize network communication access requests (e.g., for a mobile telephone user or PDA user who is browsing the internet). Accordingly, the end user branch establishes an MSISDN table <b>510</b> which associates end users to MSISDNs through the MSISDN identifier field in the end user table <b>506</b> (Table 2).
0103The data model also provides multiple authorization options for the end users. To that end, the data model establishes the status table <b>520</b> which defines statuses (e.g., Active, Deactivated, Suspended, or Idle). The third party gateway <b>110</b> may determine from the status whether a request should be authorized. Each end user defined in the end user table <b>506</b> and each MSISDN defined in the MSISDN table <b>510</b> may specify a status.
0104For example, the service request handler <b>224</b> may manage authorization policies by considering an end user's network communication request to be authorized when the service request is accompanied by an MSISDN established in the MSISDN table <b>510</b>. Depending on the policy, the service request handler <b>224</b> may also check to ensure that the MSISDN has an authorized status (e.g., Active). Additionally or alternatively, depending on the policy, the service request handler <b>224</b> may check to ensure that the end user linked to the MSISDN has an authorized status. The data model thereby provides an efficient and flexible mechanism for establishing authorization control of the end users. Furthermore, the authorization control for the end users is independent of the authorization control of the company applications.
0105The application branch in the data model establishes a different authorization mechanism for the company applications. In particular, the application branch establishes authorization based on certificate identifiers. To that end, each company application defined in the application table <b>524</b> includes a certificate identifier field <b>526</b>. The certificate identifier field <b>526</b> stores a pre-assigned identifier (e.g., a public key) which may be checked against an identifier obtained from a digital certificate (e.g., a public key or a subject unique identifier) through authentication of the digital certificate.
0106The certificate identifier is obtained during authentication. Including a certificate identifier in the company application record in the database <b>228</b> efficiently extends use of the certificate identifier to authorization, without requiring additional authorization identifiers. Thus, the capability handler <b>228</b> not only supports a very secure authentication technique, but also uses results obtained from authentication for efficient and secure authorization of the company applications. The enhanced authorization of company applications provides a strong protection against unauthorized access of valuable telecommunications services by third parties.
0107Furthermore, the data model provides a flexible service definition and attribute definition structure. In particular, the data model may associate one or more installed services to each company application using the application identifiers in the installed services table <b>530</b> (Table 7). In this manner, the exposed services which the company application is authorized to request are established and linked to the company application. The service catalog table <b>542</b> may then provide a detailed description for each installed service using the service description field.
0108Similarly, the installed attributes table <b>534</b> may define specific attributes of an installed service through the link provided by the installed service identifier field (Table 8). The service attribute table <b>538</b> may then provide a detailed description for each attribute using the attribute description field. Default values for installed attributes may be provided from the service attribute table <b>538</b>.
0109Each of the tables <b>524</b>, <b>530</b>, <b>534</b>, <b>538</b>, and <b>542</b> in the company application branch may include a status identifier field. The data model thereby provides a great deal of additional policy management flexibility in establishing when a company application is authorized to use any given exposed service. For example, after authentication and recovery of the certificate identifier, the capability handler <b>228</b> may establish an authorization policy which determines that a company application is authorized to use a requested service when an Active company application matching the certificate identifier is found in the company application table <b>524</b>. Additionally, the policy may require that company application is linked to an Active installed service which matches the requested exposed service. Further, depending on the authorization policy, the capability handler <b>228</b> may require that the installed service is linked to an Active installed attribute, service attribute, or service catalog entry. Depending on the policy enforced, the data model may flexibly permit or deny access to an exposed service by modifying the status fields in one or more of the tables <b>524</b>, <b>530</b>, <b>534</b>, <b>538</b>, and <b>542</b>.
0110Thus, the data model supports flexible policy management based on status fields and authorization identifiers (e.g., MSISDN identifiers and certificate identifiers) to examine when authorizing end users, company applications, or other service requesters. The policies may specify status criteria for one or more records in the data model at one or more levels (e.g., the company level, the end-user level, the MSISDN level, or the company application level) within each branch in the data model before a request is considered authorized. The policies may vary for each company application and end-user.
0111As noted above, the reporting module <b>234</b> may parse the log files <b>236</b> and responsively populate log tables in the profiling database <b>228</b>. A first log table <b>546</b> may store information logged (e.g., on a daily basis) for communication network access request (e.g., HTTP requests). An object identifier field <b>538</b> provides a unique identifier of each row in the log table <b>546</b>. Table 11 shows an example implementation of the first log table <b>546</b>. <tables id="TABLE-US-00011" num="11"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 11</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Log Table</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="84PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><colspec colname="3" colwidth="35PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>OBJECT_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Table row</entry></row><row><entry>DATETIME</entry><entry>The date of the event</entry><entry>String</entry></row><row><entry>MSISDN</entry><entry>The MSISDN</entry><entry>String</entry></row><row><entry>SERVICE_PARTY_ID</entry><entry>The Service Party ID</entry><entry>String</entry></row><row><entry>TRANSACTION_ID</entry><entry>The event transaction ID</entry><entry>String</entry></row><row><entry>MODULE_IDENTIFIER</entry><entry>The third party access gateway</entry><entry>String</entry></row><row><entry /><entry>module identifier</entry></row><row><entry>ACTION</entry><entry>The point where the log has</entry><entry>String</entry></row><row><entry /><entry>been taken</entry></row><row><entry>ELAPSED_TIME</entry><entry>The time elapsed in each action</entry><entry>Integer</entry></row><row><entry>APPLICATION_NAME</entry><entry>The name of the Application</entry><entry>String</entry></row><row><entry>COMPANY_NAME</entry><entry>The name of the Company</entry><entry>String</entry></row><row><entry>APPLICATION_URL</entry><entry>The home application URL</entry><entry>String</entry></row><row><entry>REQUESTED_URL</entry><entry>The requested URL</entry><entry>String</entry></row><row><entry>ERROR_CODE</entry><entry>The error code</entry><entry>String</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0112A second log table <b>550</b> may store information logged (e.g., on a daily basis) for exposed service requests (e.g., SMS charge requests). An object identifier field <b>552</b> provides a unique identifier of each row in the log table <b>550</b>. Table 12 shows an example implementation of the second log table <b>546</b>. <tables id="TABLE-US-00012" num="12"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="217PT" align="center" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 12</entry></row></thead><tbody valign="top"><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row><row><entry>Company</entry></row></tbody></tgroup><tgroup align="left" colsep="0" rowsep="0" cols="3"><colspec colname="1" colwidth="91PT" align="left" /><colspec colname="2" colwidth="98PT" align="left" /><colspec colname="3" colwidth="28PT" align="left" /><tbody valign="top"><row><entry>Attribute Name</entry><entry>Attribute Description</entry><entry>Type</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row><row><entry>OBJECT_ID</entry><entry>Unique Identifier of the</entry><entry>Integer</entry></row><row><entry /><entry>Table row</entry></row><row><entry>DATETIME</entry><entry>The date of the event</entry><entry>String</entry></row><row><entry>TRANSACTION_ID</entry><entry>The event transaction ID</entry><entry>String</entry></row><row><entry>MODULE_IDENTIFIER</entry><entry>The third party access gateway</entry><entry>String</entry></row><row><entry /><entry>module identifier</entry></row><row><entry>APPLICATION_NAME</entry><entry>The name of the Application</entry><entry>String</entry></row><row><entry>COMPANY_NAME</entry><entry>The name of the Company</entry><entry>String</entry></row><row><entry>BRICK_NAME</entry><entry>The Name of a wrapper applied</entry><entry>String</entry></row><row><entry /><entry>to the request</entry></row><row><entry>ACTION</entry><entry>The point where the log has</entry><entry>String</entry></row><row><entry /><entry>been taken</entry></row><row><entry>MSISDN_QUANTITY</entry><entry>The quantity of MSISDN sent</entry><entry>String</entry></row><row><entry>ERROR_CODE</entry><entry>The error code</entry><entry>String</entry></row><row><entry>TRANSACTION_RESULT</entry><entry>The transaction result</entry><entry>String</entry></row><row><entry>MESSAGE_VOLUME_KB</entry><entry>The amount of data transferred</entry><entry>Integer</entry></row><row><entry>ARTICLE_ID</entry><entry>The article ID for payment</entry><entry>String</entry></row><row><entry /><entry>transactions</entry></row><row><entry>ASSET_CREATION_DATE</entry><entry>The creation date of the asset</entry><entry>Date</entry></row><row><entry /><entry>requested</entry></row><row><entry>ARTICLE_PRICE</entry><entry>The article price</entry><entry>String</entry></row><row><entry>CURRENCY</entry><entry>The article currency</entry><entry>String</entry></row><row><entry>ARTICLE_PRICE_BAND</entry><entry>The article price band</entry><entry>String</entry></row><row><entry>INVOICE_TEXT</entry><entry>The invoice text</entry><entry>String</entry></row><row><entry>ASSET_QUANTITY</entry><entry>The number of assets</entry><entry>Integer</entry></row><row><entry /><entry>requested</entry></row><row><entry namest="1" nameend="3" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0113<figref idref="DRAWINGS">FIG. 6</figref> shows a message flow diagram <b>600</b> for handling a communication network access request. As an overview, the service request handler <b>224</b> receives the access request, authorizes the requester, and forwards the request to a web server. The web server returns the access request results to the service request handler <b>224</b>, which in turn returns the results to the requesting party.
0114<figref idref="DRAWINGS">FIG. 6</figref> shows that a service party (e.g., an end user or subscriber device) sends an HTTP service request (Act <b>602</b>), which may include an MSISDN, a service party identifier, a URL, or other network access information. The service request handler <b>224</b> extracts the MSISDN from the HTTP request (Act <b>604</b>). The service request handler <b>224</b> initiates a database search based on the MSISDN. If the MSISDN is found and is Active, then the request is authorized.
0115The service request handler <b>224</b> may also search the profiling database <b>228</b> to determine whether a record of the service party exists (Act <b>606</b>). The profiling database <b>228</b> returns the search results (Act <b>608</b>). If the service party does not currently exist (Act <b>610</b>), the service request handler <b>224</b> adds the service party to the profiling database <b>228</b> and associates the service party with the active MSISDN (Act <b>612</b>).
0116The service request handler <b>224</b> may also determine that the service party does exist, and that the extracted MSISDN is a new MSISDN for the service party (Act <b>614</b>). In that case, the service request handler <b>224</b> may update the status of the old MSISDN for the service party to Inactive (Act <b>616</b>). In addition, the service request handler <b>224</b> updates the MSISDN for the service party in the profiling database <b>228</b> (Act <b>618</b>) to reflect the new MSISDN. The service request handler <b>224</b> thereby accurately maintains which service parties are associated with which MSISDNs.
0117Furthermore, the service request handler <b>224</b> sends the request to a web server which responds with the requested data. To that end, the service request handler <b>224</b> may route the request to a web server based on the MSISDN. For example, the service request handler <b>224</b> may implement a lookup table which establishes a correspondence between the MSISDNs and the web servers assigned to handle their requests.
0118To that end, in one implementation the service request handler <b>224</b> builds a new URL (Act <b>620</b>) based on the URL in the request and the assigned web server. In other words, the new URL specifies a request for the content in the original URL, from the server mapped to the MSISDN. The service request handler <b>224</b> forwards the HTTP request to the selected web server (Act <b>622</b>) and receives the responsive data (Act <b>624</b>). The responsive data is communicated to the originating service party (Act <b>626</b>).
0119<figref idref="DRAWINGS">FIGS. 7 and 8</figref> shows message flow diagrams <b>700</b> and <b>800</b> for handling an exposed service request. As an overview, the capability handler <b>226</b> receives the service request, authenticates the requester and verifies that the requester is authorized to access the exposed service. Exposed service requests from authenticated and authorized requesters are wrapped and delivered to the service broker <b>116</b>.
0120As shown in <figref idref="DRAWINGS">FIG. 7</figref>, the capability handler <b>226</b> receives an MMS/SMS service request (Act <b>702</b>) from an external company application <b>106</b>. Service requests may also be received from service providers <b>114</b>. The capability handler <b>226</b> extracts a certificate identifier (Act <b>704</b>) from the request. The capability handler <b>226</b> searches the profiling database <b>228</b> for a matching certificate identifier (Act <b>706</b>) in the company application table <b>524</b>, and the profiling database <b>228</b> returns the search results (Act <b>708</b>). A matching certificate identifier may authorize the requesting company application or may be one check made to authorize the company application (Act <b>710</b>). Additional checks may be performed before authorization is complete, such as checking the status of the company application and/or the associated company.
0121The capability handler <b>226</b> applies a mapping to the service request (Act <b>712</b>). The capability handler <b>226</b> then sends the RMI request to the service broker <b>116</b> (Act <b>714</b>). The service broker <b>116</b> returns a request response to the RMI request (Act <b>716</b>). The response may be an acknowledgement that the service broker <b>116</b> has received the request. The capability handler <b>226</b> returns the request response to the application <b>106</b> (Act <b>718</b>).
0122As shown in <figref idref="DRAWINGS">FIG. 8</figref>, the capability handler <b>226</b> receives a Charge, SIP, or User Authorization request (Act <b>802</b>) from a service provider <b>114</b> and extracts a certificate identifier (Act <b>804</b>). A company application may also submit such service requests. The capability handler <b>226</b> searches the profiling database <b>228</b> for a matching certificate identifier (Act <b>806</b>) in the application table <b>524</b>, and the profiling database <b>228</b> returns the search results (Act <b>808</b>). The capability handler <b>226</b> determines whether the authenticated application is authorized (Act <b>810</b>).
0123More specifically, a matching certificate identifier may authorize the application or provide a first step in authorizing the company application. The capability handler <b>226</b> may also search the profiling database <b>228</b> for the services associated with the requesting company application. If an active service is found associated with the requesting application in the profiling database <b>228</b>, the capability handler <b>226</b> may authorize the service request. The capability handler <b>226</b> may implement other authorization policies based on the status of the requesting company application, associated company, or other records in the profiling database <b>228</b>.
0124For authenticated applications which submit authorized service requests, the capability handler <b>226</b> wraps the service request for submission. The capability handler <b>226</b> may then perform a remote method invocation to issue the request to the service broker <b>116</b>. The capability handler <b>226</b> thereby sends via RMI a wrapped request to the service broker <b>116</b> (Act <b>814</b>). The capability handler <b>226</b> receives a response from the service broker <b>116</b> (Act <b>816</b>). The response may be an acknowledgement, error message, or other response provided by the service broker <b>116</b>. The capability handler returns the request response to the application <b>106</b> (Act <b>818</b>).
0125<figref idref="DRAWINGS">FIG. 9</figref> shows an example of a service request <b>900</b> for an exposed SMS service. An application may submit the SMS service request to the architecture <b>100</b> to request that the architecture <b>100</b> send an SMS message and charge for the SMS message on behalf of the application. The service request <b>900</b> includes a transaction identifier field <b>902</b>, which may provide a unique identifier of the service request; a message type field <b>904</b>, which may specify that the request is an SMS request, and an SMS version field <b>906</b>, which specifies which version of SMS the request adheres to. The service request <b>900</b> also includes addressing information such as a To Address field <b>910</b>, a CC Address field <b>912</b>, and a BCC address field <b>914</b>. A service code field <b>916</b> provides an identifier of the service provider submitting the SMS service request.
0126Delivery timing information is also present in the service request <b>900</b>. In particular, the request <b>900</b> includes a time of request field <b>918</b>, a time of expiry field <b>920</b>, and an earliest delivery time field <b>922</b>. The request <b>900</b> also specifies the message priority using the priority field <b>924</b>, the subject of the message in the subject field <b>926</b>, the party to charge for delivery of the message in the charged party field <b>928</b>. The content of the SMS message is present in the content field <b>930</b>.
0127As noted above, the exposed service interface <b>412</b> may wrap the request to a standard form for the service broker <b>116</b>. <figref idref="DRAWINGS">FIG. 10</figref> shows an example of a wrapped SMS message <b>1000</b>. The SMS wrapper <b>414</b> maps the transaction identifier field <b>902</b> to the transaction identifier field <b>1002</b>, adds a transaction label field <b>1004</b> which may specify the message type (e.g., “SMSDELIVERY” for SMS messages); and maps the message type field <b>904</b> to the service type field <b>1006</b>, while dropping the SMS version field <b>906</b>. Similarly, the SMS wrapper <b>414</b> maps the addressing fields <b>910</b>-<b>914</b> to the To Address field <b>1010</b>, CC Address field <b>1012</b>, and BCC address field <b>1014</b>, and also maps the service code field <b>916</b> to the service identifier field <b>1016</b>.
0128Delivery timing information is also present in the wrapped request <b>1000</b>. In particular, the SMS wrapper <b>414</b> maps the time of request field <b>918</b> to a start date field <b>1018</b>, maps the time of expiry field <b>920</b> to the end date field <b>1020</b>, and drops the earliest delivery time field <b>922</b>. The SMS wrapper <b>414</b> also maps the priority field <b>924</b> to the priority field <b>1022</b>, the subject field <b>926</b> to the subject field <b>1024</b>, and the charged party field <b>928</b> to the account identifier field <b>1026</b>. The content of the SMS message is mapped from the content field <b>930</b> to the message body field <b>1028</b>.
0129Table 13 shows an example implementation of a wrapped XML SMS request message with field values derived from the request message shown in <figref idref="DRAWINGS">FIG. 9</figref>. The wrapped message adds a label field (set to “SMSDELIVERY” for SMS messages). <tables id="TABLE-US-00013" num="13"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><thead><row><entry /><entry namest="OFFSET" nameend="1" align="center">TABLE 13</entry></row><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry></entry></row><row><entry /><entry> <TSOheader TSOID=“12345” TSOlabel=“SMSDELIVERY” /></entry></row><row><entry /><entry> <TSOattributes></entry></row><row><entry /><entry> <attribute name=“SERVICE_TYPE” value=“SMS” /></entry></row><row><entry /><entry> <attribute name=“SENDERADDRESS” value=“M-Site” /></entry></row><row><entry /><entry> <attribute name=“SERVICEID” value=“55555” /></entry></row><row><entry /><entry> <attribute name=“STARTDATE” value=“05/05/2004” /></entry></row><row><entry /><entry> <attribute name=“ENDDATE” value=“10/05/2004” /></entry></row><row><entry /><entry> <attribute name=“PRIORITY” value=“High” /></entry></row><row><entry /><entry> <attribute name=“SUBJECT” value=“Message” /></entry></row><row><entry /><entry> <attribute name=“ACCOUNTID” value=“77777” /></entry></row><row><entry /><entry> <attribute name=“MESSAGE_BODY”</entry></row><row><entry /><entry> value=“This is the SMS message.” /></entry></row><row><entry /><entry> <attribute name=“CHARGE_FLAG” value=“1” /></entry></row><row><entry /><entry> <list name=“TO_ADDRESSEE” value=“3”></entry></row><row><entry /><entry> <attribute name=“1” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“2” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“3” value=“+39xxxx” /></entry></row><row><entry /><entry> </list></entry></row><row><entry /><entry> <list name=“CC_ADDRESSEE” value=“4”></entry></row><row><entry /><entry> <attribute name=“1” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“2” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“3” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“4” value=“+39xxxx” /></entry></row><row><entry /><entry> </list></entry></row><row><entry /><entry> <list name=“BCC_ADDRESSEE” value=“3”></entry></row><row><entry /><entry> <attribute name=“1” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“2” value=“+39xxxx” /></entry></row><row><entry /><entry> <attribute name=“3” value=“+39xxxx” /></entry></row><row><entry /><entry> </list></entry></row><row><entry /><entry> </TSOattributes></entry></row><row><entry /><entry> </TSO_DATA></entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0130<figref idref="DRAWINGS">FIG. 11</figref> shows an example of an exposed service response <b>1100</b> returned from the service broker <b>116</b>. The response <b>1100</b> provides an acknowledgement of the request, and includes a transaction identifier field <b>1102</b>, a transaction label field <b>1104</b>, and a request status field <b>1106</b>. The response <b>1100</b> also provides an error code field <b>1108</b> and an error description field <b>1110</b> which convey error conditions to the requesting application.
0131Table 14 shows an example of an XML message which conveys the data fields shown in <figref idref="DRAWINGS">FIG. 11</figref>. <tables id="TABLE-US-00014" num="14"><table frame="none" colsep="0" rowsep="0"><tgroup align="left" colsep="0" rowsep="0" cols="2"><colspec colname="OFFSET" colwidth="14PT" align="left" /><colspec colname="1" colwidth="203PT" align="left" /><thead><row><entry /><entry namest="OFFSET" nameend="1" align="center">TABLE 14</entry></row><row><entry /><entry /></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry /><entry></entry></row><row><entry /><entry> <TSOheader TSOID=“12345” TSOlabel=“SMSDELIVERY” /></entry></row><row><entry /><entry> <TSOresult></entry></row><row><entry /><entry> <statusCode>0</statusCode></entry></row><row><entry /><entry> <errorCode></errorCode></entry></row><row><entry /><entry> <errorDescription></errorDescription></entry></row><row><entry /><entry> </TSOresult></entry></row><row><entry /><entry> </TSO_DATA></entry></row><row><entry /><entry namest="OFFSET" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0132The capability handler <b>226</b> may also wrap the service broker response for delivery to the requesting application. In other words, the form and content of the response message returned to the requesting application may differ from the form and content of the response message sent from the service broker <b>116</b>. <figref idref="DRAWINGS">FIG. 12</figref> shows an example of a wrapped SMS response <b>1200</b>.
0133The SMS wrapper <b>414</b> maps information from the response <b>1100</b> to the wrapped response <b>1200</b>, including a transaction identifier field <b>1202</b>, status field <b>1204</b>, error code field <b>1206</b>, and error description field <b>1208</b>. The wrapped response <b>1200</b> also adds a message type field <b>1210</b> (e.g., set to “<SMS>” or another value expected by the requesting application), and an SMS version field <b>1221</b> which reports the applicable SMS version to the requesting application. The transaction label field <b>1104</b> may be dropped.
0134<figref idref="DRAWINGS">FIG. 13</figref> shows a mapping from an MMS exposed service request <b>1302</b> to a wrapped MMS service request <b>1304</b>. The TSOLABEL may be set to “MMSDelivery” or any other identifier. An application may issue the MMS service request to deliver multimedia content to any specified recipient. <figref idref="DRAWINGS">FIG. 14</figref> shows a mapping from an MMS exposed service response <b>1402</b> to a wrapped MMS service response <b>1404</b>.
0135<figref idref="DRAWINGS">FIG. 15</figref> shows a mapping from an SIP exposed service request <b>1502</b> to a wrapped SIP service request <b>1504</b>. The TSOLABEL may be set to “SIPCall” or any other identifier. A requesting application may initiate a SIP request to establish a communication channel between a sender and a receiver specified in the SIP request <b>1502</b>. <figref idref="DRAWINGS">FIG. 16</figref> shows a mapping from a SIP exposed service response <b>1602</b> to a wrapped SIP service response <b>1604</b>. The TSOLABEL field may be dropped.
0136<figref idref="DRAWINGS">FIG. 17</figref> shows a mapping from a Status exposed service request <b>1702</b> to a wrapped Status service request <b>1704</b>. The TSOLABEL may be set to “GetUserStatus” or any other identifier. A requesting application may issue the Status request to check the status of one or more users listed in the status request <b>1702</b>. The Status request <b>1702</b> may further include provider identifiers to request status with respect to specific service providers. <figref idref="DRAWINGS">FIG. 18</figref> shows a mapping from a Status response <b>1802</b> to a wrapped Status service response <b>1804</b>.
0137<figref idref="DRAWINGS">FIG. 19</figref> shows a mapping from an Authentication exposed service request <b>1902</b> to a wrapped Authentication service request <b>1904</b>. The TSOLABEL may be set to “Authentication” or any other identifier. A requesting application may issue the authentication request <b>1902</b> in order to ask for authentication of an MSISDN with respect to a particular service and provider. <figref idref="DRAWINGS">FIG. 20</figref> shows a mapping from a Status exposed service response <b>2002</b> to a wrapped Status service response <b>2004</b>. The response may include a wide range of status information, such as service status (e.g., “ok”, or “disconnected”), customer type (e.g., “commercial” or “residential”), identification information for the customer's service plan, SIM module, wireless device type, capability to send or receive MMS, UMTS, or GPRS messages, the access channel (e.g., “mobile” or “landline”), or any other status information available for the MSISDN.
0138<figref idref="DRAWINGS">FIG. 21</figref> shows a mapping from a Charge exposed service request <b>2102</b> to a wrapped Charge service request <b>2104</b>. The TSOLABEL may be set to “Charge” or any other identifier. A requesting application may initiate a charge request to request billing for a communication session with the specified begin and end date between two endpoints (e.g., between a sender URI and a receiver URI) and handled by the a service provider specified in the Charge request <b>2102</b>. <figref idref="DRAWINGS">FIG. 22</figref> shows a mapping from a Charge exposed service response <b>2202</b> to a wrapped Charge service response <b>2204</b>. The TSOLABEL field may be dropped in the response.
0139Table 15 shows an example of a WSDL definition for an exposed service. In particular, Table 15 shows an example WSDL Charge service descriptor which may define input and output messages and the message format for an exposed service. The Charge service descriptor defines a <port> (“ChargeAdapterFrontEnd”) through which the Charge service requests and responses are sent as defined by the input and output messages. Furthermore, the Charge service descriptor defines the message form and content for the input and output messages (“submitReqRequest”, and “submitReqResponse”, respectively). A SOAP binding is also defined, as is the location to which the Charge exposed service requests are sent (via the “location” specifier).
0140WSDL definitions may be established for each exposed service in a similar manner. The WSDL definitions may vary widely depending on the implementation of the gateway <b>110</b> and the exposed services. <tables id="TABLE-US-00015" num="15"><table frame="none" colsep="0" rowsep="0" pgwide="1"><tgroup align="left" colsep="0" rowsep="0" cols="1"><colspec colname="1" colwidth="266PT" align="left" /><thead><row><entry namest="1" nameend="1" align="center">TABLE 15</entry></row><row><entry /></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></thead><tbody valign="top"><row><entry></entry></row><row><entry><wsdl:definitions targetNamespace=“http://[address]”</entry></row><row><entry>xmlns=“http://schemas.xmlsoap.org/wsdl/”</entry></row><row><entry>xmlns:apachesoap=“http://xml.apache.org/xml-soap” xmlns:impl=“http://[address]”</entry></row><row><entry>xmlns:intf=“http://[address]”</entry></row><row><entry>xmlns:soapenc=“http://schemas.xmlsoap.org/soap/encoding/”</entry></row><row><entry>xmlns:tns2=“http://[address]” xmlns:tns3=“http://[address]”</entry></row><row><entry>xmlns:wsdl=“http://schemas.xmlsoap.org/wsdl/”</entry></row><row><entry>xmlns:wsdlsoap=“http://schemas.xmlsoap.org/wsdl/soap/”</entry></row><row><entry>xmlns:xsd=“http://www.w3.org/2001/XMLSchema”></entry></row><row><entry> <wsdl:types></entry></row><row><entry> <schema targetNamespace=“http://[address]”</entry></row><row><entry>xmlns=“http://www.w3.org/2001/XMLSchema”></entry></row><row><entry> <import namespace=“http://schemas.xmlsoap.org/soap/encoding/”/></entry></row><row><entry> <complexType name=“WrappedRequest”></entry></row><row><entry> <sequence></entry></row><row><entry> <element name=“certId” nillable=“true” type=“xsd:int”/></entry></row><row><entry> <element name=“transactionId” nillable=“true” type=“xsd:string”/></entry></row><row><entry> </sequence></entry></row><row><entry> </complexType></entry></row><row><entry> <complexType name=“Status”></entry></row><row><entry> <sequence></entry></row><row><entry> <element name=“details” nillable=“true” type=“xsd:string”/></entry></row><row><entry> <element name=“statusCode” type=“xsd:int”/></entry></row><row><entry> <element name=“statusText” nillable=“true” type=“xsd:string”/></entry></row><row><entry> </sequence></entry></row><row><entry> </complexType></entry></row><row><entry> <complexType name=“WrappedResponse”></entry></row><row><entry> <sequence></entry></row><row><entry> <element name=“status” nillable=“true” type=“tns3:Status”/></entry></row><row><entry> <element name=“transactionId” nillable=“true” type=“xsd:string”/></entry></row><row><entry> </sequence></entry></row><row><entry> </complexType></entry></row><row><entry> </schema></entry></row><row><entry> <schema targetNamespace=“http://[address]”</entry></row><row><entry>xmlns=“http://www.w3.org/2001/XMLSchema”></entry></row><row><entry> <import namespace=“http://schemas.xmlsoap.org/soap/encoding/”/></entry></row><row><entry> <complexType name=“ChargeWrappedRequest”></entry></row><row><entry> <complexContent></entry></row><row><entry> <extension base=“tns3:WrappedRequest”></entry></row><row><entry> <sequence></entry></row><row><entry> <element name=“accountID” nillable=“true” type=“xsd:string”/></entry></row><row><entry> <element name=“endDate” nillable=“true” type=“xsd:dateTime”/></entry></row><row><entry> <element name=“serviceID” nillable=“true” type=“xsd:string”/></entry></row><row><entry> <element name=“startDate” nillable=“true” type=“xsd:dateTime”/></entry></row><row><entry> </sequence></entry></row><row><entry> </extension></entry></row><row><entry> </complexContent></entry></row><row><entry> </complexType></entry></row><row><entry> <complexType name=“ChargeWrappedResponse”></entry></row><row><entry> <complexContent></entry></row><row><entry> <extension base=“tns3:WrappedResponse”></entry></row><row><entry> <sequence/></entry></row><row><entry> </extension></entry></row><row><entry> </complexContent></entry></row><row><entry> </complexType></entry></row><row><entry> </schema></entry></row><row><entry> </wsdl:types></entry></row><row><entry> <wsdl:message name=“submitReqRequest”></entry></row><row><entry> <wsdl:part name=“chargeWrappedRequest”</entry></row><row><entry> type=“tns2:ChargeWrappedRequest”/></entry></row><row><entry> </wsdl:message></entry></row><row><entry> <wsdl:message name=“submitReqResponse”></entry></row><row><entry> <wsdl:part name=“submitReqReturn” type=“tns2:ChargeWrapped Response”/></entry></row><row><entry> </wsdl:message></entry></row><row><entry> <wsdl:portType name=“ChargeAdapterFrontEnd”></entry></row><row><entry> <wsdl:operation name=“submitReq”</entry></row><row><entry>parameterOrder=“chargeWrappedRequest”></entry></row><row><entry> <wsdl:input message=“intf:submitReqRequest” name=“submitReqRequest”/></entry></row><row><entry> <wsdl:output message=“intf:submitReqResponse”</entry></row><row><entry>name=“submitReqResponse”/></entry></row><row><entry> </wsdl:operation></entry></row><row><entry> </wsdl:portType></entry></row><row><entry> <wsdl:binding name=“ChargeAdapterFrontEndSoapBinding”</entry></row><row><entry>type=“intf:ChargeAdapterFrontEnd”></entry></row><row><entry> <wsdlsoap:binding style=“rpc”</entry></row><row><entry>transport=“http://schemas.xmlsoap.org/soap/http”/></entry></row><row><entry> <wsdl:operation name=“submitReq”></entry></row><row><entry> <wsdlsoap:operation soapAction=“”/></entry></row><row><entry> <wsdl:input name=“submitReqRequest”></entry></row><row><entry> <wsdlsoap:body</entry></row><row><entry>encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”</entry></row><row><entry>namespace=“http://[address]” use=“encoded”/></entry></row><row><entry> </wsdl:input></entry></row><row><entry> <wsdl:output name=“submitReqResponse”></entry></row><row><entry> <wsdlsoap:body</entry></row><row><entry>encodingStyle=“http://schemas.xmlsoap.org/soap/encoding/”</entry></row><row><entry>namespace=“http://[address]” use=“encoded”/></entry></row><row><entry> </wsdl:output></entry></row><row><entry> </wsdl:operation></entry></row><row><entry> </wsdl:binding></entry></row><row><entry> <wsdl:service name=“ChargeAdapterFrontEndService”></entry></row><row><entry> <wsdl:port binding=“intf:ChargeAdapterFrontEndSoapBinding”</entry></row><row><entry>name=“ChargeAdapterFrontEnd”></entry></row><row><entry> <wsdlsoap:address</entry></row><row><entry>location=“http://localhost:8080/serverfinto/services/SdcCharge”/></entry></row><row><entry> </wsdl:port></entry></row><row><entry> </wsdl:service></entry></row><row><entry></wsdl:definitions></entry></row><row><entry namest="1" nameend="1" align="center" rowsep="1" /></row></tbody></tgroup></table></tables>
0141The third party gateway <b>110</b> provides secure, efficient access to exposed services provided by a telecommunications service provider. The third party gateway <b>110</b> enhances third party authorization by employing certificate identifiers obtained during secure authentication. Including the certificate identifier in the company application record in the database <b>228</b> efficiently extends use of the certificate identifier to authorization, without requiring separate or independent authorization identifiers for company applications. The enhanced authorization of company applications provides strong protection against unauthorized third party access of valuable telecommunications.
0142Furthermore, the MSISDN field and certificate identifier field independent authorization criteria for different types of service requesters. In conjunction with the multiple level status fields in the data model, the data model supports flexible policy management for the service request handler <b>224</b>. The policies may specify status criteria for records in the data model at one or more levels (e.g., the company level, the end-user level, or the company application level) within each branch in the data model before a request is considered authorized.
0143Summarizing the technique for securely allowing access for multiple different types of service requesters, the third party gateway <b>110</b> receives an exposed service request from a first type of service requester (e.g., a company application). The third party gateway <b>110</b> also receives a network communication service request from a second type of service requester (e.g., a mobile telephony device). The third party gateway authenticates the exposed service request and obtains a secure authorization identifier (e.g., a public key) from authenticating the exposed service request.
0144The profiling database <b>228</b> provides search results, based on the secure authorization identifier, from a service requester branch of a data model defined in the profiling database <b>228</b>. The third party gateway <b>110</b> determines a company application represented in the search results. Authorization for the company application proceeds based on one or more status identifiers (e.g., a company application identifier) in the first search results.
0145With regard to the second type of service requester, the third party gateway <b>110</b> extracts a device identifier from the network communication service request. The profiling database <b>228</b> also provides search results from a different service requester branch based on the device identifier. A subscriber device represented in the second search results is determined and authorized based on one or more subscriber device status identifiers in the second search results.
0146While various embodiments of the invention have been described, it will be apparent to those of ordinary skill in the art that many more embodiments and implementations are possible within the scope of the invention. Accordingly, the invention is not to be restricted except in light of the attached claims and their equivalents.
Contents5
23 sheets
Sheet 1 Sheet 2 Sheet 3 Sheet 4 Sheet 5 Sheet 6 Sheet 7 Sheet 8 Sheet 9 Sheet 10 Sheet 11 Sheet 12 Sheet 13 Sheet 14 Sheet 15 Sheet 16 Sheet 17 Sheet 18 Sheet 19 Sheet 20 Sheet 21 Sheet 22 Sheet 23
Every citation, both ways
| Document | Relation | Office | Cited during |
|---|---|---|---|
| US2007133763A1 | Cited by | United States of America | Pre-grant |
| US2009190602A1 | Cited by | United States of America | Pre-grant |
| US2008242326A1 | Cited by | United States of America | Pre-grant |
| US2007168432A1 | Cited by | United States of America | Pre-grant |
| US8358745B2 | Cited by | United States of America | Applicant |
| US8634862B2 | Cited by | United States of America | Applicant |
| US9094370B2 | Cited by | United States of America | Search report |
| US2008091836A1 | Cited by | United States of America | Pre-grant |
| US9876850B2 | Cited by | United States of America | Applicant |
| US9344834B2 | Cited by | United States of America | Search report |
| US7945251B2 | Cited by | United States of America | Search report |
| US2014032897A1 | Cited by | United States of America | Pre-grant |
| US8819800B2 | Cited by | United States of America | Applicant |
| US2007253405A1 | Cited by | United States of America | Pre-grant |
| US2011202631A1 | Cited by | United States of America | Pre-grant |
| US2011070865A1 | Cited by | United States of America | Pre-grant |
| WO2013185720A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US9854066B1 | Cited by | United States of America | Applicant |
| US2016371756A1 | Cited by | United States of America | Search report |
| US8484328B2 | Cited by | United States of America | Search report |
| WO2015191603A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8457601B2 | Cited by | United States of America | Applicant |
| US2011030047A1 | Cited by | United States of America | Pre-grant |
| US2010029254A1 | Cited by | United States of America | Pre-grant |
| US2008059477A1 | Cited by | United States of America | Pre-grant |
| US2007224975A1 | Cited by | United States of America | Pre-grant |
| US2008208972A1 | Cited by | United States of America | Pre-grant |
| US8787935B2 | Cited by | United States of America | Search report |
| US10165224B2 | Cited by | United States of America | Applicant |
| US9015282B2 | Cited by | United States of America | Search report |
| EP2109251A1 | Cited by | European Patent Office (EPO) | Search report |
| EP2109251A4 | Cited by | European Patent Office (EPO) | Search report |
| US9071596B2 | Cited by | United States of America | Search report |
| US8428227B2 | Cited by | United States of America | Applicant |
| US2010330976A1 | Cited by | United States of America | Pre-grant |
| US2015223007A1 | Cited by | United States of America | Pre-grant |
| US8978113B2 | Cited by | United States of America | Applicant |
| WO2011146553A1 | Cited by | World Intellectual Property Organization (WIPO) | International search |
| US8385951B2 | Cited by | United States of America | Search report |
| US2002035617A1 | Cites | United States of America | Pre-grant |
| US2002156874A1 | Cites | United States of America | Pre-grant |
| US2002168962A1 | Cites | United States of America | Pre-grant |
| US2003023472A1 | Cites | United States of America | Pre-grant |
| US2003065777A1 | Cites | United States of America | Pre-grant |
| US2003154179A1 | Cites | United States of America | Pre-grant |
| US2003172272A1 | Cites | United States of America | Pre-grant |
| US2004015366A1 | Cites | United States of America | Pre-grant |
| US2004088417A1 | Cites | United States of America | Pre-grant |
| US2004111506A1 | Cites | United States of America | Pre-grant |
| US2004133486A1 | Cites | United States of America | Pre-grant |
| US2004133627A1 | Cites | United States of America | Pre-grant |
| US2004139166A1 | Cites | United States of America | Pre-grant |
| US2004153404A1 | Cites | United States of America | Pre-grant |
| US2004249910A1 | Cites | United States of America | Pre-grant |
| US2005037752A1 | Cites | United States of America | Pre-grant |
| US2005038869A1 | Cites | United States of America | Pre-grant |
| US2005073999A1 | Cites | United States of America | Pre-grant |
| US2005091370A1 | Cites | United States of America | Pre-grant |
| US2005149724A1 | Cites | United States of America | Pre-grant |
| US2005160135A1 | Cites | United States of America | Pre-grant |
| US2005165930A1 | Cites | United States of America | Pre-grant |
| US2005175021A1 | Cites | United States of America | Pre-grant |
| US2005185661A1 | Cites | United States of America | Pre-grant |
| US2005223064A1 | Cites | United States of America | Pre-grant |
| US2005228906A1 | Cites | United States of America | Pre-grant |
| US2006026108A1 | Cites | United States of America | Pre-grant |
| US2006047709A1 | Cites | United States of America | Pre-grant |
| US2006101474A1 | Cites | United States of America | Pre-grant |
| US2006209768A1 | Cites | United States of America | Pre-grant |
| US2007047533A1 | Cites | United States of America | Pre-grant |
| US2007050340A1 | Cites | United States of America | Pre-grant |
| US2007118648A1 | Cites | United States of America | Pre-grant |
| US2007240046A1 | Cites | United States of America | Pre-grant |
| US2007242819A1 | Cites | United States of America | Pre-grant |
| US2007274291A1 | Cites | United States of America | Pre-grant |
| US2008077680A1 | Cites | United States of America | Pre-grant |
| US2008117917A1 | Cites | United States of America | Pre-grant |
| US6026424A | Cites | United States of America | Pre-grant |
| US6076093A | Cites | United States of America | Pre-grant |
| US6362370B1 | Cites | United States of America | Pre-grant |
| US6453356B1 | Cites | United States of America | Pre-grant |
| US6775262B1 | Cites | United States of America | Pre-grant |
| US6807181B1 | Cites | United States of America | Pre-grant |
| US6910074B1 | Cites | United States of America | Pre-grant |
| US6985569B2 | Cites | United States of America | Pre-grant |
| US7103165B2 | Cites | United States of America | Pre-grant |
| US7140025B1 | Cites | United States of America | Pre-grant |
| US7222088B2 | Cites | United States of America | Pre-grant |
| US7310532B2 | Cites | United States of America | Pre-grant |
| US7506040B1 | Cites | United States of America | Pre-grant |
| US7552323B2 | Cites | United States of America | Pre-grant |
12 members in 6 offices
Priority claims8
| Document | Office | Kind | Date |
|---|---|---|---|
| 05425656 | European Patent Office (EPO) | A | |
| 054256565 | European Patent Office (EPO) | – | |
| MI20051741 | Italy | A | |
| MI2005A001741 | Italy | – | |
| 054256565 | – | – | – |
| EP20050425656 | – | – | – |
| IT2005MI01741 | – | – | – |
| MI2005A001741 | – | – | – |
Members12
| Document | Office | Kind | |
|---|---|---|---|
| CA2559647A1 | Canada | A1 | |
| EP1764971A1 | European Patent Office (EPO) | A1 | |
| US2007067385A1 | United States of America | A1 | |
| CN1941778A | China | A | |
| AU2006220388A1 | Australia | A1 | |
| JP2007089200A | Japan | A | |
| AU2006220388B2 | Australia | B2 | |
| JP4526526B2 | Japan | B2 | |
| CN1941778B | China | B | |
| US7917124B2 | United States of America | B2 | |
| CA2559647C | Canada | C | |
| EP1764971B1 | European Patent Office (EPO) | B1 |
87 transactions on the USPTO file
Allowed after 1 non-final rejection and 4 RCEs.
- Non-final rejections
- 1
- Final rejections
- 0
- RCEs
- 4
- Appeals
- 0
Over time
Point at a mark for the transactionTransactions
| Event | Code | |
|---|---|---|
| Payment of Maintenance Fee, 8th Year, Large EntityM1552 | M1552 | |
| Recordation of Patent Grant MailedPGM/ | PGM/ | |
| Patent Issue Date Used in PTA CalculationAllowedPTAC | PTAC | |
| Issue Notification MailedAllowedWPIR | WPIR | |
| Dispatch to FDCD1935 | D1935 | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Mail-Record Petition Decision of Granted to Withdraw from IssueMP006 | MP006 | |
| Record Petition Decision of Granted to Withdraw from IssueP006 | P006 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Petition EnteredPET. | PET. | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Dispatch to FDCD1935 | D1935 | |
| Application Is Considered Ready for IssuePILS | PILS | |
| Issue Fee Payment VerifiedN084 | N084 | |
| Issue Fee Payment ReceivedIFEE | IFEE | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Disposal for a RCE / CPA / R129AbandonedABN9 | ABN9 | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Request for Continued Examination (RCE)RCEX | RCEX | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Workflow - Request for RCE - BeginBRCE | BRCE | |
| Response to Reasons for AllowanceREAS | REAS | |
| Mail Examiner's AmendmentMEX.A | MEX.A | |
| Mail Notice of AllowanceAllowedMN/=. | MN/=. | |
| Notice of Allowance Data Verification CompletedAllowedN/=. | N/=. | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Examiner's Amendment CommunicationEX.A | EX.A | |
| Examiner Interview Summary Record (PTOL - 413)EXIN | EXIN | |
| Date Forwarded to ExaminerFWDX | FWDX | |
| Response after Non-Final ActionA... | A... | |
| Mail Non-Final RejectionNon-final rejectionMCTNF | MCTNF | |
| Non-Final RejectionNon-final rejectionCTNF | CTNF | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| Withdraw Flagged for 5/25W525 | W525 | |
| Flagged for 5/25F525 | F525 | |
| PG-Pub Issue NotificationPG-ISSUE | PG-ISSUE | |
| Request for Foreign Priority (Priority Papers May Be Included)RQPR | RQPR | |
| Case Docketed to Examiner in GAUDOCK | DOCK | |
| IFW TSS Processing by Tech Center CompleteTSSCOMP | TSSCOMP | |
| Information Disclosure Statement consideredIDSC | IDSC | |
| Reference capture on IDSRCAP | RCAP | |
| Information Disclosure Statement (IDS) FiledM844 | M844 | |
| Information Disclosure Statement (IDS) FiledWIDS | WIDS | |
| Application Return from OIPEWROIPE | WROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Return TO OIPEROIPE | ROIPE | |
| Application Is Now CompleteCOMP | COMP | |
| Application Dispatched from OIPEOIPE | OIPE | |
| Substitute Specification FiledC604 | C604 | |
| Preliminary AmendmentA.PE | A.PE | |
| Cleared by OIPE CSRL194 | L194 | |
| IFW Scan & PACR Auto Security ReviewSCAN | SCAN | |
| Initial Exam Team nnIEXX | IEXX |
8 legal events, as the office reported them to INPADOC
Over the term
Point at a mark for the eventEvents
| Event | Code | |
|---|---|---|
| Maintenance fee paymentMAFP | MAFP | |
| Maintenance fee paymentMAFP | MAFP | |
| Fee paymentFPAY | FPAY | |
| Information on status: patent grantGrantedPATENTED CASESTCF | STCF | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS | |
| AssignmentAS | AS |
Numbers
- Publication
- 20070067385
- Publication, DOCDB
- 2007067385
- Publication, EPODOC
- US2007067385
- Application
- 11314577
- Application, DOCDB
- 31457705
- Application, EPODOC
- US20050314577
Titles
- English
- Third party access gateway for telecommunications services
Classification
- CPC, 1
- H04L67/02
- IPC, 1
- G06F15 16
- USPC, 1
- 709203000