Method and system for applying data retention policies in a computing platform

Information

  • Patent Grant
  • 9251371
  • Patent Number
    9,251,371
  • Date Filed
    Tuesday, July 7, 2015
    9 years ago
  • Date Issued
    Tuesday, February 2, 2016
    9 years ago
Abstract
Systems and methods for a multitenant computing platform. Original data is generated through operation of a computing platform system on behalf of an account of the computing platform system, and the original data is moderated according to a data retention policy set for the account. The moderated data is stored at the computing platform system. The computing platform system moderates the generated data by securing sensitive information of the generated data from access by the computing platform system, and providing operational information from the generated data. The operational information is accessible by the computing platform system during performance of system operations.
Description
TECHNICAL FIELD

This invention relates generally to the data management field, and more specifically to a new and useful method and system for applying data retention policies in the data management field.


BACKGROUND

Data analytics are an important part of running a data driven computing platform. However, there are many cases where the data is inappropriate for storage. In some cases, the information is sensitive and an operator would not want to store such information. Storing such information may violate the trust of involved parties or create an information liability. In some cases, the data cannot be stored to maintain compliance with regulations. For example, personal medical information may not be allowed to be stored when building a HIPAA compliant application. Thus, there is a need in the data management field to create a new and useful method and system for applying data retention policies in a computing platform. This invention provides such a new and useful method and system.





BRIEF DESCRIPTION OF THE FIGURES


FIG. 1 is a flow diagram of a method of a preferred embodiment;



FIG. 2 is a schematic representation of an exemplary implementation of a preferred embodiment;



FIG. 3 is a schematic representation of an exemplary implementation of a preferred embodiment;



FIG. 4 is a flow diagram of a method of a preferred embodiment;



FIG. 5 is a flow diagram of a method of a preferred embodiment; and



FIG. 6 is an architecture diagram of system of a preferred embodiment.





DESCRIPTION OF THE PREFERRED EMBODIMENTS

The following description of preferred embodiments of the invention is not intended to limit the invention to these preferred embodiments, but rather to enable any person skilled in the art to make and use this invention.


1. Method

As shown in FIG. 1, a method for controlling data of a preferred embodiment can include setting of a data retention policy of an account S110, generating data through the operation of a computing platform S120, moderating data of the account according to the data retention policy of the account S130, and storing the moderated data S140. The method functions to provide a mechanism through which a data-driven computing platform can accommodate a wide variety of data retention polices while serving number of different accounts. The method may be used to define how data is stored long term. Additionally or alternatively, the method may be used to provide data “deletion” capabilities to an account wherein the operational significance of the data is preserved for other parties (e.g., a computing platform operator). The method is preferably used in a multitenant computing platform, wherein each account, sub-account or other data scope may have individually assigned data retention polices.


The computing platform is preferably data-driven in the sense that the accumulation of data is used in subsequent processes of the platform—at least one operational aspect depends on accurate and exhaustive collection of data. In one case the data of the computing platform is metered/measured for each account and used in regulating usage of an account. In computing platform where the usage is a factor of billing, the data history for an account must be accurate to calculate fees. One objective of the method is to enable such data-driven behavior, while simultaneously enabling data protection that may otherwise conflict with the notion of metering usage.


In one particular implementation, the computing platform is a communication platform and more specifically a communication application platform such as the one described in U.S. Pat. No. 8,306,021, issued 6 Nov. 2012, which is incorporated in its entirety by this reference. A communication platform may have complicated billing models that can depend on the count of communications, the source and/or destination of communication, the type of communication, the duration of communication, the events and media processes associated with the communication (e.g., text to speech services, speech detection services, transcription services, recording services, etc.), rate and threshold billing variables, and other suitable factors. Such complicated billing models may preclude the on-demand calculation of itemized billing per communication or data record. The method can address the requirement of accounting while preserving the data in a private manner. Herein, the communication platform may be used as an exemplary platform, but any suitable computing platform may similarly apply the method for controlling data.


Block S110, which includes setting of a data retention policy of an account S110, functions to receive a signal that defines how at least a subset of data should be retained with the system. A data retention policy is preferably set by an account holder. The data retention policy is preferably received from the account holder. In one variation, the data retention policy is pre-defined. The policy retention policy could be globally pre-set for all data generated in association with the account. The policy retention policy may alternatively be defined for a sub-set of account data. For example, a policy retention policy may be mapped to a sub-account of the account, to a type of data (e.g., data generated during a voice communication or data generated during a message communication), or any suitable data scope. For example, data associated with SMS and MMS messaging may not be set for “deletion” while voice communication data is kept in an original format. Similarly, the data retention policy for communication with a first endpoint (e.g., phone number) may be different for data retention policies for a second endpoint. In one variation, an administrator of an account may specify the data retention policy/policies through an administrator control panel user interface. In another variation, the data retention policy may be set in response to a developer API request. A data retention policy may alternatively be defined in any suitable manner.


Data retention policy may additionally or alternatively be specified on-demand. The data retention policy can be defined in directives during operation of the computing platform. In the communication platform implementation, a data retention policy may be selectively changed for part or all of a call. The data retention policy directives may provide commands to initiate pause, end, or otherwise change the data retention policy. A data retention policy may be initiated in a first instance and then terminated in a second instance. Any data generated or associated with the time period between the first and second instances is preferably processed according to the data retention policy. Data outside of those two instances may be processed according to the default data retention policy or any original data retention policy. In one example, a user may be placing a call to a banking customer support phone system. While most of the communicated information is not sensitive data, a portion of the call may require the customer to enter personal information such as a credit card. The data retention policy may be elevated to a higher level of data protection during this process to prevent such data being retained and accessible in data logs.


Additionally or alternatively, a specific request to apply data retention to one or more data elements may be received and processed. In this variation, specific data records can be selectively targeted for particular data retention policy compliance.


A data retention policy preferably defines actions to take on data prior to storing or warehousing the data. In one variation, there are preferably at least two data retention policies. A first data retention policy is a passive data retention policy that preserves the data in an original and raw format. Such a data retention policy is preferably a default data retention policy, and no action is preferably taken on the data. The passive data retention policy can alternatively be described as a lack of a data retention policy. The other forms of data retention policy are preferably transformative data retention policies that result in some change or transformation of the data. A transformative data retention policy preferably removes or secures sensitive information while creating some mechanism through which the computing platform can accomplish data-driven operations.


A transformative data retention policy will preferably take some form of a data retention action on the data during moderation of the data. A data retention action can include data redaction/censoring, data classifying/bucketing, data aggregating, data encryption, partial deletion, and/or any suitable approach to data protection. Within the computing platform varying levels of data retention policies may be defined wherein different levels of data retention may have differing degrees of data destruction/preservation. Additionally, different forms of data transformation may be applied to different data fields. In a computing platform, the data stored may follow a substantially defined schema and the forms of transformations that should be applied can be customized for each field. For example, some fields may not be used for data-driven processes and can be deleted, while other fields may be suitable for a form of redaction, while other fields may be better suited for data classifying or bucketing.


A transformative data retention policy may additionally include one or more defined temporal properties. One temporal property may define how long the data may be retained before the data is moderated and transformed. One account may maintain the original raw data for 30 days and after 30 days transform the data. Another account may have no temporary need for the data and transform data directly after completing active use (e.g., during initial warehousing of the data). A second temporal property may be a backup time window that defines how long the original data is preserved in addition to the transformed data before deletion. In this variation, the method enables the capability to undo or reverse the transformation of a data retention policy. For example, a backup time window property for one account of 24 hours will allow any data transformation or deletion request to be undone for up to 24 hours. In one implementation, deleted or transformed data may be shown in a special folder within an administrator control panel until the time window is up. In another example, a backup time window property for another account can be set to zero seconds, and any data transformations or deletion requests are effective immediately and cannot be reversed.


The interface through which a data retention policy is received can be through an Application Program Interface, a configuration file, a user interface (e.g., in an administrator control panel), or any suitable interface. The manner in which a data retention policy is defined may be achieved through various approaches. In a first variation, a transformative data retention policy can be selected from a set of offered transformative data retention policy options. For example, an account may be able to set up an application within a communication application platform, and in the settings of that application select a default of no data transformations, a pre-defined redaction process, or a custom encryption data retention process. In another variation, a data retention policy may be specifically defined. A schema or configuration file may be provided that defines how data retention should be applied. The data retention can be specified specifically for different data attributes. Particular types of data retention actions may be directed to particular data types, data conditions (e.g., if a data field satisfies a specified condition enact a data retention action), data fields, or other suitable aspects. Alternatively, any suitable approach may be used to define the data retention policy. In another variation, the type of data retention policy may be defined based on the type of account.


Block S120, which includes generating data through the operation of a computing platform S120, functions to produce data within a system. The data produced is preferably data produced as a result of the accounts, users, or other entities using the multi-tenant computing platform. The data can be data logs, API request/response records, captured packets (PCAP files), form data input, user generated data, generated or obtained media (e.g., audio, images, video, etc.), and/or any suitable type of data. The data may be accessible to an account holder for any suitable use. For example, a customer support phone system built in a communication application platform may include event logs that include meta data about the calling phone number, the called phone number, the duration of the call, media recordings made during the call, DTMF input, and other suitable information. An account holder is preferably a developer account or administrator account, which may build different analytics or tools that leverage a portion of the generated data. For example, a history of a customer support agent could be generated by polling the data source of the communication application platform. Since the computing platform may be built as a general set of functionality to serve a wide variety of parties, there may be particular use cases to which this data logging behavior is not ideal or possibly prohibitive. For example, if phone system builds a tool where users enter their social security number, the data logs will automatically create a record of callers' social security numbers. The administrator of this system may not want to be liable for having access to such sensitive data. In another example, a health care system may end up storing personal identifiable information in the data, which may cause HIPAA compliance issues and so such automatic data logging may ordinarily prevent such a use case. The method of the preferred embodiment can preferably address such scenarios.


While the data generated may be the result of building a generic tool, the computing platform may additionally partially depend on information of the data. The computing platform in which the data is generated may be an at least partially closed system with operations that are outside of the control or direction of an account holder—there are preferably components of the computing platform to which an account holder/user of the platform will not have visibility. The computing platform is preferably multitenant, wherein multiple account holders will share the use of the computing platform while maintaining distinct and substantially independent applications/services. The partially closed portions of the platform can include the system orchestration system, usage/analytics tools, billing engine, business intelligence tools, a platform operations system (e.g., the platform operations system 270 of FIG. 2) and/or any suitable system. In some implementations, the platform operations system performs at least one of platform orchestration, usage metering, analytics, billing, and business intelligence. In some implementations, the platform operations system performs usage/analytics. Such system (or systems) can depend on the data generated in connection with an account holder. The data retention policy management method described herein may function to enable data protection without hindering or preventing such operations.


The data generated may have different stages in the data life cycle. The data is preferably generated as a result of some event relating to an account, sub-account, user action of an application, service action, or other suitable event. The data may have a period of being in-flight wherein inflight data is actively stored for use within some operation. For example, data generated during a phone call may be in-flight for the duration of the call. An SMS or MMS message may have in-flight data for the duration to complete transmission. Alternatively, there may be a concept of a conversation wherein the data is in-flight for the duration of the messaging conversation. After active use, the data may be moved to a temporary storage system prior to being transmitted for data warehousing. Data warehousing will preferably be used to store the data for long duration. It is between in-flight state and the data warehousing that blocks S130 preferably occurs, but Block S130 may alternatively occur at any suitable time. The data may additionally or alternatively include any alternative states.


Block S130, which includes moderating data of the account according to the data retention policy of the account, functions to exercise the actions defined by the data retention policy. As described above, the data retention policy is preferably exercised after active use and prior to long term storage for data records. The data retention policy may alternatively be applied to any new data records at a periodic interval, be applied immediately as data is generated, or at any suitable time. The conditions in which the data retention policy is exercised are preferably dependent on the data retention policy configuration of an account. More generally, the moderation of the data depends on the data retention policy defined for the data scope (e.g., sub-account data, user data, etc.). In the case where the data retention policy is to take no action, then the data is preferably stored in a raw and unaltered state. In the case where the data retention policy is a transformative data retention policy, the data will be augmented according to the defined actions. There may be different variations on how data is augmented or moderated. Some preferred variations might include data redaction processing, data classifying, data aggregating, data encrypting, partially deleting, and/or any suitable approach to data protection.


Redaction processing functions to remove elements of the data that are sensitive. The redaction processing can effectively censor data so as to put it in a form suitable for storage. Redaction processing additionally can preserve a subset of the data content. Preferably, the information in the data that is desired by the computing platform can be preserved while a subset or all of the remaining data is removed. Redaction processing is preferably applied to data fields or properties where the semantics or pattern of the data is understood sufficiently to differentiate between what should be kept and what should be removed. In one case, phone numbers may be an element of a data record. Phone numbers may provide personally identifying information as they often map back to an individual. However, a communication platform may depend on knowing the country and area codes of phone numbers during billing of an account. Accordingly, the country and area code are preferably preserved while the remaining four digits are censored. In one variation, redaction processing may include automatically detecting a pattern and applying censorship to the pattern. Automatic detection may be useful in situations where a fixed rule cannot be defined to specify where and when content will need to be augmented. Credit card numbers, social security numbers, and account numbers, addresses, and other suitable forms of information may be detected and automatically removed from the data. Such type of content may appear in various places, when data matches those patterns it may be automatically removed.


Data classifying functions to abstract or bucket the data content to remove details of the original information. The data classifying preferably includes abstracting up the level of information in the original data. One approach is to classify content into a higher-level abstraction. For example, geo-location data may be generalized from precise geo-location data to general location information such as zip code, region, city, state or country. As another alternative, data metrics may be bucketed from precise measurements into ranges. For example, a data metric measuring the duration of a call may be changed from second-level precision to minute level precision.


Data aggregating functions to create a distinct data record that is the cumulative combination of previous data records. The precise metrics of a data record can be maintained but only in combination with a set of other data records. The individual metric is preferably deleted or censored. For example, the total duration of a phone call may be aggregated into total duration of all phone calls for an account, however the duration of the individual call cannot normally be obtained.


Encrypting data functions to cryptographically transform the data. Encrypting data preferably depends on an account-defined key. Encrypting data preferably includes receiving an encryption callback reference, determining the data content to be encrypted, transmitting the original content to the encryption callback reference (e.g., the encryption callback 281 of FIG. 2), receiving encrypted data content and using the encrypted data content in place of the original content. The encryption callback reference is preferably a callback URI operated by the account holder. HTTP, SPDY, or any suitable application layer protocol may be used to communicate the original data to the callback URI. The account holder will receive the original data and can use a self-defined encryption algorithm and key to encrypt the data, which is then returned for storage. The encryption allows only the account holder to access the contents of the data. Encryption can be used if the data should be secured but not deleted permanently. Encryption may be used in combination with redaction classification, aggregation, or any suitable data transformation. Redaction, classification, and aggregation may enable system dependent information to be preserved while removing sensitive data. For example, if phone numbers are encrypted, the account holder may be able to decrypt the encrypted version to view the data. However, since a communication application platform may depend on the country and area code of that data, a redacted copy of that data property may additionally be stored.


A data augmentation may additionally include a partial deletion of data, wherein some data fields or whole data records may be deleted. Some subset of data types or data parameters may be fully deletable. Such fields may include customer defined data fields (e.g., data tags or metadata).


Block S140, which includes storing the moderated data, functions to store the moderated data. The moderated data can be stored in any suitable manner. As described above, for encrypted data. A second form of data transformation may be stored for some all parts of the encrypted data. The stored moderated data may be used for various system operations such as scaling infrastructure, metering account usage, billing for account usage, informing business decisions, acquiring assets, or any suitable data-driven decision. The policy transformed data is preferably applied to any location where data is stored such as in a data warehouse, log files, media records, and/or any suitable location.


The method can additionally facilitate various data related functionality. Such functionality may be enabled on secured data despite the original data being too sensitive to normally allow such functionality. As a primary functionality, account usage and analytics can be provided. Data aggregation, classification, and selective redaction can preserve some level of information that can provide insight into patterns. Such data preservation may additionally be applied to enable fraud detection, error detection, or general event pattern detection. Within the computing platform, the data information may be used in making decisions related to platform administration, orchestrating a cluster or distributed computing system, allocating/deallocating resource, pricing, and/or other operational factors of the computing platform. The systematic approach to data retention policies may additionally provide an audit trail of data management for an account, which can be used to show data compliance in various situations.


In one preferred implementation, the method is applied to a communication platform that can facilitate synchronous communication such as voice, video, screen sharing, virtual reality and/or any suitable media stream. The synchronous communication may use PSTN, SIP, WebRTC, IP-based protocols, or any suitable communication protocols. The communication platform may additionally or alternatively facilitate asynchronous communication such as SMS, MMS, or IP based messaging. As shown in FIG. 2, a communication (e.g., a communication requested by the communication request 211 of FIG. 2) will be executed on the communication platform (e.g., by the communication system 210 of FIG. 2). Various events during the communication such as the communication request, media generated during the communication, input received during the communication (e.g., DTMF input), and a summary of the communication after it completes may all be exemplary data records generated (e.g., by the communication system 210 of FIG. 2) in association with the communication. While the communication is active, the data is preferably stored in in-flight data storage (e.g., the in-flight data storage 220 of FIG. 2) (e.g., active data storage). Data may be mutable and possibly incomplete at this state. Once the call is completed, the associated data may be moved to a post-flight data storage system (e.g., the post-flight data storage 230 of FIG. 2). The post-flight data storage functions as a temporary data storage solution prior to being moved to a data warehousing solution (e.g., the data warehouse system 260 of FIG. 2). The post flight data storage may additionally provide faster real-time data information for particular use-cases. Periodically (based on a time period or satisfying some condition), the post-flight data is onboarded into the data warehousing system (e.g., the data warehouse system 260 of FIG. 2). A data retention policy engine (e.g., the data retention policy engine 251 of the data manager 250 of FIG. 2) preferably facilitates the onboarding process by exercising data retention policies (e.g., the data retention policy 252 of FIG. 2) that are assigned to the various data records. Data for an account that lacks a defined data retention policy will be onboarded with no transformation. Data for an account that has a transformation data retention policy will be transformed according to the data retention policy.


In one example, form of a data retention policy a call record may have the following actions applied call record fields: the “to” field is redacted to exclude last four digits, the “from” field is redacted to exclude last four digits, application URL field is deleted, duration field is bucketed into five minute buckets, time field is bucketed to only show events by hour, associated account identifier is kept, and a price field is deleted or bucketed. A location field may be abstracted to only show city information. Call recordings may be deleted or encrypted through an account controlled cryptographic key.


In some implementations, the communication platform includes the communication system 210, the in-flight data storage 220, the post-flight data storage 230, the data manager 250, the data retention policy engine 251, the data warehouse 260, the data retention policy 252, and the platform operations system 270, and the account holder system 280 is external to the communication platform.


In some implementations, the communication platform (e.g., the communication platform 200 of FIG. 2) includes the communication system 210, the in-flight data storage 220, the post-flight data storage 230, the data manager 250, the data retention policy engine 251, the data warehouse 260, the data retention policy 252, and the platform operations system 270, and the account holder system 280. In some implementations, the platform operations system 270 is external to the communication platform. In some implementations, the data warehouse system 260 is external to the communication platform. In some implementations, the data retention policy engine 251 is constructed to perform redaction, data classifying, data aggregating, and encrypting. In some implementations, the data warehouse system 260 is included in an account holder system (e.g., the account holder system 280), and the communication platform includes information to access data in the data warehouse system 260.


2. Multi-Tenant Computing Platform System

As shown in FIG. 3, a multi-tenant computing platform system 300 includes a computing system 310, an in-flight data storage system 320, a post-flight data storage system 330, a data manager 350, a data retention policy engine 351, a data warehouse system 360, and a platform operations system 370. The account holder system 380 is external to the computing platform 300. The computing system 310 includes an accounting system 312, a data retention policy API 313, and a computing service API 314.


In some implementations, the computing platform system 300 includes the account holder system. In some implementations, the platform operations system is external to the computing platform system. In some implementations, the data warehouse system is external to the computing platform system. In some implementations, the data retention policy engine is constructed to perform redaction, data classifying, data aggregating, and encrypting. In some implementations, the data warehouse system is included in an account holder system (e.g., the account holder system 380), and the computing platform system includes information to access data in the data warehouse system.


In some implementations, the computing platform system 300 is similar to the computing platform described above for FIG. 1. In some implementations, the in-flight data storage system 320 is similar to the in-flight data storage 220 of FIG. 2. In some implementations, the post-flight data storage system 330 is similar to the post-flight data storage 230 of FIG. 2. In some implementations, the data manager 350 is similar to the data manager 250 of FIG. 2. In some implementations, the data retention policy engine 351 is similar to the data retention policy engine 251 of FIG. 2. In some implementations, the data warehouse system 360, is similar to the data warehouse system 260 of FIG. 2. In some implementations, the platform operations system 370 is similar to the platform operations system 270 of FIG. 2.


The system 300 is communicatively coupled to the external system 380 via the data retention policy API 313 and the computing service API 314 of the computing system 310.


In the embodiment of FIG. 3, the external system 380 is a system of an account holder of an account (e.g., an account of the account system 312) of the computing platform system 300. In some implementations, external systems include a system of an application developer that provides an application to users of the external system. In some implementations, external systems include a system of a service provider that provides a service to users of the external system. In some implementations, external systems include a communication endpoint.


In some implementations, the computing system 310, the in-flight data storage system 320, the post-flight data storage system 330, the data manager 350, the data retention policy engine 351, the data warehouse system 360, and the platform operations system 370 are implemented as a server device. In some implementations, the computing system 310, the in-flight data storage system 320, the post-flight data storage system 330, the data manager 350, the data retention policy engine 351, the data warehouse system 360, and the platform operations system 370 are implemented as a plurality of server devices communicatively coupled to each other (e.g., a computing cluster).


The computing system 310 functions to provide any suitable computing service (e.g., a service provided via the computing service API 314).


In some implementations, the computing system 310 includes an account system (e.g., 312), which functions to allow distinct accounts to use the computing system 310. An account is preferably operated by a developer or application provider that builds an application or service that utilizes the computing system 310. For example, in an implementation in which the computing system 310 is a communication system, an account holder of an account may build a call center application that uses the computing system 310 to direct customers to customer service representatives. Alternatively, the account holder of an account may be an end user of an endpoint (e.g., phone number or SIP address) that uses the computing system 310 to provide some service. For example, an end user may use the computing system 310 to dynamically direct incoming calls to ring multiple destinations until the first device picks up. Any suitable account hierarchy or division may be used. For example, an account may include subaccounts, which run different instances of an application with unique configuration. The accounts additionally have specific authentication credentials. API requests and communication is preferably scoped to a particular account. Accordingly, a data retention policy provided by one account can be stored and associated with the account.


The data retention policy API 313 is preferably a set of data retention policy API calls and/or resources that can be used in the setting, editing, and reading of one or more data retention policies. In some implementations, an account is preferably limited with privileges to interacting with data retention policies associated with the account.


The data retention policy API 313 is preferably part of a RESTful API but may alternatively be any suitable API such as SOAP or custom protocol. The RESTful API works according to an HTTP request and response model. HTTP requests (or any suitable request communication) to the computing platform 300 preferably observe the principles of a RESTful design. RESTful is understood in this document to describe a Representational State Transfer architecture as is known in the art. The RESTful HTTP requests are preferably stateless, thus each message communicated contains all necessary information for processing the request and generating a response. The API service can include various resources, which act as API endpoints, which act as a mechanism for specifying requested information or requesting particular actions. The resources can be expressed as URI's or resource paths. The RESTful API resources can additionally be responsive to different types of HTTP methods such as GET, PUT, POST and/or DELETE.


3. Method of FIG. 4

The method 400 of FIG. 4 includes setting a data retention policy (e.g., 352 of FIG. 3) of an account (e.g., an account of the account holder system 380) at the computing platform system (e.g., the system 300) (process S410); generating data (e.g., the original data 340) through operation of the computing platform system (e.g., 300) on behalf of the account (process S420); moderating the generated data of the account according to the data retention policy of the account (process S430), and storing the moderated data (e.g., the policy compliant data 354 of FIG. 3) (process S440). The computing platform system moderates the generated data by: securing sensitive information of the generated data (e.g., 340) from access by the computing platform system (e.g., 300); and providing operational information from the generated data, the operational information being accessible by the computing platform system (e.g., 300) during performance of system operations (e.g., by the platform operations system 370).


In some implementations, the moderated data is stored at a data warehouse system (e.g., 360 of FIG. 3).


In some implementations, the method 400 includes: accessing, at the computing platform system (e.g., 300) (e.g., by using the platform operations system 370) the moderated data (e.g., 354) stored at the data warehouse system (e.g., 360) (process S450), and performing (e.g., by using the platform operations system 370) at least one system operation by using the accessed moderated data (process S460). In some implementations, system operations include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations.


In some implementations, the multi-tenant computing platform system 300 performs the processes S410-S440. In some implementations, the multi-tenant computing platform system 300 performs the process S450. In some implementations, the multi-tenant computing platform system 300 performs the process S460.


In some implementations, the computing system 310 performs the process S410. In some implementations, the policy API 313 performs the process S410. In some implementations, the computing system 310 and the policy API 313 perform the process S410. In some implementations, the computing system 310 performs the process S410 responsive to a request received via the policy API 313. In some implementations, the computing system 310 performs the process S410 responsive to a response received via the policy API 313.


In some implementations, the computing system 310 performs the process S420.


In some implementations, the data retention policy engine 351 performs the process S430.


In some implementations, the data retention policy engine 351 performs the process S440. In some implementations, the data warehouse system 360 performs the process S440. In some implementations, the system 300 stores the moderated data (e.g., the moderated data 354 of FIG. 3) in a storage device (e.g., the storage medium 605 of FIG. 6) of the system 300.


In some implementations, the system 300 stores the data retention policy (e.g., the data retention policy 352 of FIG. 3) in a storage device (e.g., the storage medium 605 of FIG. 6) of the system 300.


In some implementations, the platform operations system 370 performs the process S450. In some implementations, the platform operations system 370 performs the process S460.


In some implementations, the process S410 is similar to the process S110 of FIG. 1. In some implementations, the process S420 is similar to the process S120 of FIG. 1. In some implementations, the process S430 is similar to the process S130 of FIG. 1. In some implementations, and the process S440 is similar to the process S140 of FIG. 1.


3.1 Setting a Data Retention Policy

In some implementations, the process S410 functions to control the multi-tenant computing platform system 300 to set a data retention policy of an account (e.g., an account of the account system 312) at the computing platform system 300. In some implementations, the data retention policy is set as described above for S110 of FIG. 1. In some implementations, the data retention policy is similar to at least one of the data retention policies described above for S110 of FIG. 1.


In some implementations, the computing system 310 receives the data retention policy (e.g., 352) in a data retention policy message provided by an external system (e.g., the external account holder system 380), and responsive to the data retention policy message, the computing system 310 sets the data retention policy (e.g., 352) at the system 300 in association with an account identifier specified by the data retention policy message (e.g., an account of the account holder system 380). In some implementations, the computing system 310 receives the data retention policy (e.g., 352) via the data retention policy API 313.


In some implementations, the computing system 310 receives the data retention policy (e.g., 352) via an administrator control panel user interface provided by the system 300 (e.g., provided to the external account holder system 380).


In some implementations, the computing system 310 accesses a configuration file provided by an external account holder system (e.g., 380), and the configuration file defines the data retention policy 352.


In some implementations, the computing system 310 receives the data retention policy (e.g., 352) by processing a configuration file. In some implementations, the computing system 310 receives the data retention policy (e.g., 352) by processing a configuration file of an account holder of an account at the system 300 (e.g., an account associated with the external system 380).


In some implementations, the data retention policy is specified on-demand. In some implementations, the data retention policy is defined in directives during operation of the computing system 310. The computing system 310 processes such directives which set the data retention policy at the system 300.


In some implementations in which the system 300 is a communication platform system, the data retention policy is selectively changed for part or all of a call, as described above for S110. In some implementations in which the system 300 is a communication platform system, the data retention policy is selectively changed at least a portion of a communication session (e.g., a telephony voice communication) in a manner similar to that which is described above for S110.


In some implementations, the data retention policy (e.g., 352) is received from an external account holder system (e.g., 380), and the policy is received with a request to apply the policy to one or more specified data elements. In some implementations, specific data records are selectively targeted for particular data retention policy compliance. In some implementations, the data retention policy is a transformative data retention policy as described above for S110. In some implementations, the data retention policy is a transformative data retention policy that secures sensitive information while providing the system 300 with information for performing data-driven system operations. In some implementations, the transformative data retention policy defines at least one data retention action to be performed on the data during moderation of the data. In some implementations, the transformative data retention policy defines at least one data retention action to be performed on the data during moderation of the data, and at least one temporal property (e.g., a temporal property as described above for S110).


In some implementations, the computing system 310 sets the data retention policy by storing the data retention policy 352 in a storage medium of the system 300 (e.g., the storage medium 605 of FIG. 6) in association with the account identifier of the data retention policy message. In some implementations, the computing system 310 sets the data retention policy by storing the data retention policy 352 and the account identifier in a data retention policy data structure of the storage medium of the system 300 (e.g., the storage medium 605 of FIG. 6). In some implementations, the computing system 310 sets the data retention policy by storing a data retention policy data structure of the storage medium of the system 300 (e.g., the storage medium 605 of FIG. 6), the data retention policy data structure including the account identifier and a link to a storage location of the data retention policy 352.


3.2 Generating the Data

In some implementations, the process S420 functions to control the multi-tenant computing platform system 300 to generate data (e.g., the original data 340) through operation of the computing platform system (e.g., 300) on behalf of the account (e.g., an account of the account system 312). In some implementations, the process S420 functions to generate data within the system 300. In some implementations, the generated data (e.g., 340) is data that is produced as a result of accounts (of the system 300), users or other entities using the multi-tenant computing platform system 300.


In some implementations, the computing system 310 generates the data (e.g., the data 340) responsive to a computing request (e.g., the computing request 311) provided by an external system (e.g., the account holder system 380) and received by the computing system 310 via the computing service API (Application Program Interface) 314.


In some implementations, the generated data includes at least one of data logs, API request records, API response records, captured packets, form data input, user generated data, generated media, and obtained media.


The data is similar to the generated data described above for S120 of FIG. 1).


3.3 Moderating the Generated Data

In some implementations, the process S430 functions to control the multi-tenant computing platform system 300 to moderate the generated data of the account according to the data retention policy of the account. In some implementations, the data manger 350 receives the generated data (e.g., 340) from the computing system 310. In some implementations, the data manger 350 receives the generated data (e.g., 340) from the in-flight data storage system 320. In some implementations, the data manger 350 receives the generated data (e.g., 340) from the post-flight data storage system 330.


In some implementations, the data manager 350 moderates the received generated data according to the data retention policy 352. In some implementations, the data retention policy engine 351 of the data manger 350 moderates the received generated data according to the data retention policy 352. In some implementations, the data manager 350 receives the policy 352 from the computing system 310. In some implementations, the data manager 350 receives the policy 352 from an external system (e.g., the external account holder system 380). In some implementations, the data manager 350 moderates the data as described for S130 of FIG. 1.


In some implementations, the data retention policy engine 351 stores the data retention policy 352. In some implementations, the data retention policy engine 351 manages the data retention policy 352.


In some implementations, the data manager 350 moderates the received generated data by performing actions defined by the data retention policy 352. In some implementations, actions include at least one of data redaction, data censoring, data classifying, data bucketing, data aggregating, data encryption, and partial deletion.


In some implementations, the data retention policy (e.g., 352) defines actions performed by the computing platform system 300 on the data (e.g., 340) to secure the sensitive information prior to storing the data in a data warehouse (e.g., 360) of the computing platform system, and moderating data includes performing the actions defined by the data retention policy. In some implementations, actions include at least one of data redaction, data censoring, data classifying, data bucketing, data aggregating, data encryption, and partial deletion.


In some implementations, the data manager 350 performs redaction as described above for S130 of FIG. 1. In some implementations, data redaction includes automatically detecting and removing at least one of a credit card number, social security number, account number, and address from the data (e.g., 340).


In some implementations, the data manager 350 performs data classifying as described above for S130 of FIG. 1. In some implementations, data classifying includes replacing data with a generalized representation of the data.


In some implementations, the data manager 350 performs data aggregating as described above for S130 of FIG. 1. In some implementations, data aggregating includes replacing metrics of data with an aggregated representation of the metrics of data.


In some implementations, the data manager 350 performs data encryption as described above for S130 of FIG. 1. In some implementations, data encryption includes determining an encryption callback reference (e.g., 381) for the data, transmitting the data to an external system (e.g., 380) of the encryption callback reference (e.g., 381), and replacing the data (e.g., the original data 340) with encrypted data provided by the external system of the encryption callback reference, wherein the account is an account for the external system (e.g., 380). In some implementations, the encryption allows only an account holder of the account (e.g., an account of the accounting system 312 that corresponds to the data retention policy) to access the encrypted sensitive information.


In some implementations, the data manager 350 performs partial deletion as described above for S130 of FIG. 1.


In some implementations, the data manager 350 moderates the received generated data 340 after active use of the generated data by the computing system 310, and prior to long term storage of the data (e.g., in the data warehouse 360). In some implementations, the data manager 350 moderates newly generated data (e.g., 340) at a periodic interval. In some implementations, the data manager 350 moderates newly generated data (e.g., 340) immediately as the data is generated.


In some implementations, moderating the generated data (process S430) includes securing sensitive information of the generated data (e.g., 340) from access by the computing platform system (e.g., 300); and providing operational information from the generated data, the operational information being accessible by the computing platform system (e.g., 300) during performance of system operations (e.g., by the platform operations system 370). In some implementations, the data manager 350 secures sensitive information of the generated data. In some implementations, the data retention policy engine 351 secures sensitive information of the generated data. In some implementations, the data manager 350 provides the operational information from the generated data. In some implementations, the data retention policy engine 351 provides the operational information from the generated data.


In some implementations, securing sensitive information includes at least one of redacting, removing, censoring and encrypting of the sensitive information of the generated data. In some implementations, the encrypting is performed by using an external system (e.g., the external account holder system 380) associated with the account (e.g., an account of the accounting system 312), and the encrypted sensitive information is secured from access by the computing platform system (e.g., 300).


In some implementations, providing operation information from the generated data includes at least one of: preserving operational information from the generated data, providing a portion of the generated data as operation information, and generating operation information from the generated data.


In some implementations, providing a portion of the generated data includes performing redaction on at least one portion of the generated data, preserving at least one portion of the original data, and providing each preserved portion for storage (e.g., providing each preserved portion to the data warehouse 360). In some implementations, providing a portion of the generated data includes performing data deletion on at least one portion of the generated data, preserving at least one portion of the original data, and providing each preserved portion for storage (e.g., providing each preserved portion to the data warehouse 360). In some implementations, providing a portion of the generated data includes performing data encryption on at least one portion of the generated data, preserving at least one portion of the original data in an unencrypted format, and providing each preserved (unencrypted) portion for storage (e.g., providing each preserved portion to the data warehouse 360).


In some implementations, generating operation information from the generated data includes performing a data classification process as described above for S130 of FIG. 1, and providing data classifications generated by the classification process as the operation information. In some implementations, generating operation information from the generated data includes performing a data aggregation process as described above for S130 of FIG. 1, and providing aggregated data generated by the aggregation process as the operation information.


In some implementations, system operations (e.g., performed by the platform operations system 370) include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations.


3.4 Storing the Moderated Data

In some implementations, the process S440 functions to control the multi-tenant computing platform system 300 to store the moderated data (e.g., the policy compliant data 354 of FIG. 3). In some implementations, the system 300 stores the moderated data at the data warehouse 360. In some implementations, the system 300 stores the moderated data at a log file storage location of the system 300 (e.g., a storage location of the storage medium 605 of FIG. 6). In some implementations, the system 300 stores the moderated data at a media records storage location of the system 300 (e.g., a storage location of the storage medium 605 of FIG. 6).


3.5 Accessing the Moderated Data

In some implementations, the process S450 functions to control the multi-tenant computing platform system 300 to access the stored moderated data. In some implementations, the platform operations system 370 accesses the stored moderated data. In some implementations, the moderated data is accessed at the data warehouse system 360. In some implementations, the moderated data is accessed at a log file storage location of the system 300. In some implementations, the moderated data is accessed at a media records storage location of the system 300


3.6 Performing System Operations

In some implementations, the process S460 functions to control the multi-tenant computing platform system 300 perform at least one system operation by using the accessed moderated data. In some implementations, the platform operations system 370 performs at least one system operation by using the accessed moderated data. In some implementations, system operations include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations.


4. Method of FIG. 5

The method 500 of FIG. 5 includes: moderating original data (e.g., 340) generated through operation of the computing platform system (e.g., generated through operation of the computing system 310) on behalf of an account (e.g., an account of the account system 312) of the computing platform system, the moderating being performed according to a data retention policy (e.g., 352) set for the account (process S510), and storing the moderated data (e.g., 354) at the computing platform system (process S520). The computing platform system (e.g., 300) moderates the generated data (e.g., 340) by: securing sensitive information of the generated data (e.g., 340) from access by the computing platform system (e.g., 300); and providing operational information from the generated data, the operational information being accessible by the computing platform system (e.g., 300) during performance of system operations (e.g., by the platform operations system 370).


In some implementations, the moderated data is stored at a data warehouse system (e.g., 360 of FIG. 3).


In some implementations, the method 500 includes: accessing, at the computing platform system (e.g., 300) (e.g., by using the platform operations system 370) the moderated data (e.g., 354) stored at the data warehouse system (e.g., 360) (process S530); and performing (e.g., by using the platform operations system 370) at least one system operation by using the accessed moderated data (process S540). In some implementations, system operations include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations.


In some implementations, the multi-tenant computing platform system 300 performs the processes S510-S520. In some implementations, the multi-tenant computing platform system 300 performs the process S500. In some implementations, the multi-tenant computing platform system 300 performs the process S540.


In some implementations, the data retention policy engine 351 performs the process S510. In some implementations, the data manager 350 performs the process S510


In some implementations, the data retention policy engine 351 performs the process S520. In some implementations, the data warehouse system 360 performs the process S520. In some implementations, the system 300 stores the moderated data (e.g., the moderated data 354 of FIG. 3) in a storage device (e.g., the storage medium 605 of FIG. 6) of the system 300.


In some implementations, the method of FIG. 5 is similar to the method of FIG. 4. In some implementations, process S510 is similar to the process S430 of FIG. 4. In some implementations, process S520 is similar to the process S440 of FIG. 4. In some implementations, process S530 is similar to the process S450 of FIG. 4. In some implementations, process S540 is similar to the process S460 of FIG. 4.


In some implementations, the data retention policy is set for the account as described above for the process S410 of FIG. 4. In some implementations, the original data is generated as described above for the process S420.


In some implementations, the data retention policy (e.g., 352) defines actions performed by the computing platform system 300 on the data (e.g., 340) to secure the sensitive information prior to storing the data in a data warehouse (e.g., 360) of the computing platform system, and moderating data includes performing the actions defined by the data retention policy.


In some implementations, the data (e.g., 340) includes at least one of data logs, API request records, API response records, captured packets, form data input, user generated data, generated media, and obtained media.


In some implementations, actions include at least one of data redaction, data censoring, data classifying, data bucketing, data aggregating, data encryption, and partial deletion.


In some implementations, data redaction includes automatically detecting and removing at least one of a credit card number, social security number, account number, and address from the data (e.g., 340). In some implementations, data classifying includes replacing data with a generalized representation of the data. In some implementations, data aggregating includes replacing metrics of data with an aggregated representation of the metrics of data. In some implementations, data encryption includes determining an encryption callback reference (e.g., 381) for the data, transmitting the data to an external system (e.g., 380) of the encryption callback reference, and replacing the data with encrypted data provided by the external system of the encryption callback reference, wherein the account is an account for the external system (e.g., 380).


In some implementations, the computing platform system (e.g., 300) secures the sensitive information from access by the computing platform system (e.g., 300) by performing at least one of removing, censoring and encrypting of the sensitive information of the generated data. In some implementations, the computing platform system provides the operational information from the generated data by at least one of preserving operational information from the generated data and generating operation information from the generated data. In some implementations, the encrypting is performed by using an external system (e.g., 380) associated with the account, and the encrypted sensitive information is secured from access by the computing platform system (e.g., 300).


In some implementations, the encryption allows only an account holder of the account to access the encrypted sensitive information.


In some implementations, system operations include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations. In some implementations, system operations include at least one of metering account usage, and billing for account usage.


In some implementations, the computing platform system performs at least one system operation by using the operational information. In some implementations, the computing platform system performs at least one system operation by using the stored moderated data. In some implementations, the moderated data is stored at a data warehouse system (e.g., 360), and the computing platform system accesses the moderated data stored at the data warehouse system and performs at least one system operation by using the accessed moderated data.


5. System Architecture
Computing Platform System


FIG. 6 is an architecture diagram of a system (e.g., the computing platform system 300 of FIG. 3) according to an implementation in which the system is implemented by a server device. In some implementations, the system is implemented by a plurality of devices. In some implementations, the system 300 is similar to the communication platform 200 of FIG. 2.


The bus 601 interfaces with the processors 601A-601N, the main memory (e.g., a random access memory (RAM)) 622, a read only memory (ROM) 604, a processor-readable storage medium 605, a display device 607, a user input device 608, and a network device 611.


The processors 601A-601N may take many forms, such as ARM processors, X86 processors, and the like.


In some implementations, the system (e.g., 600) includes at least one of a central processing unit (processor) and a multi-processor unit (MPU).


The processors 601A-601N and the main memory 622 form a processing unit 699. In some embodiments, the processing unit includes one or more processors communicatively coupled to one or more of a RAM, ROM, and machine-readable storage medium; the one or more processors of the processing unit receive instructions stored by the one or more of a RAM, ROM, and machine-readable storage medium via a bus; and the one or more processors execute the received instructions. In some embodiments, the processing unit is an ASIC (Application-Specific Integrated Circuit). In some embodiments, the processing unit is a SoC (System-on-Chip). In some embodiments, the processing unit includes one or more of a computing system, a data manager, a data warehouse, a platform operations system, an in-flight data storage system, a post-flight data storage system, a data retention policy storage system, at least one data retention policy, in-flight data, and post-flight data.


The network adapter device 611 provides one or more wired or wireless interfaces for exchanging data and commands between the system (e.g., 600) and other devices, such as an external system (e.g., 380). Such wired and wireless interfaces include, for example, a universal serial bus (USB) interface, Bluetooth interface, Wi-Fi interface, Ethernet interface, near field communication (NFC) interface, and the like.


Machine-executable instructions in software programs (such as an operating system, application programs, and device drivers) are loaded into the memory 622 (of the processing unit 699) from the processor-readable storage medium 605, the ROM 604 or any other storage location. During execution of these software programs, the respective machine-executable instructions are accessed by at least one of processors 601A-601N (of the processing unit 699) via the bus 601, and then executed by at least one of processors 601A-601N. Data used by the software programs are also stored in the memory 622, and such data is accessed by at least one of processors 601A-601N during execution of the machine-executable instructions of the software programs. The processor-readable storage medium 605 is one of (or a combination of two or more of) a hard drive, a flash drive, a DVD, a CD, an optical disk, a floppy disk, a flash storage, a solid state drive, a ROM, an EEPROM, an electronic circuit, a semiconductor memory device, and the like. The processor-readable storage medium 605 includes machine-executable instructions (and related data) for an operating system 612, software programs 613, device drivers 614, the computing system 310, the in-flight data storage system 320, the post-flight data storage system 330, the data manager 350, and the platform operations system 370. In some implementations, the processor-readable storage medium 605 includes machine-executable instructions (and related data) for the data warehouse 360. In some implementations, the data warehouse is external to the system 300. In some implementations, the platform operations system is external to the system 300.


In some implementations, the processor-readable storage medium 605 includes in-flight data. In some implementations, the processor-readable storage medium 605 includes post-flight data. In some implementations, the processor-readable storage medium 605 includes the policy compliant (moderated) data 354. In some implementations, the processor-readable storage medium 605 includes data retention policies 615 of a plurality of accounts of the system 300 (e.g., accounts of the account system 312 of FIG. 3). In some implementations, the processor-readable storage medium 605 includes the data retention policy 352.


6. Machines

The systems and methods of the preferred embodiments and variations thereof can be embodied and/or implemented at least in part as a machine configured to receive a computer-readable medium storing computer-readable instructions. The instructions are preferably executed by computer-executable components preferably integrated with the computing platform. The computer-readable medium can be stored on any suitable computer-readable media such as RAMs, ROMs, flash memory, EEPROMs, optical devices (CD or DVD), hard drives, floppy drives, or any suitable device. The computer-executable component is preferably a general or application specific processor, but any suitable dedicated hardware or hardware/firmware combination device can alternatively or additionally execute the instructions.


6. Conclusion

As a person skilled in the art will recognize from the previous detailed description and from the figures and claims, modifications and changes can be made to the preferred embodiments of the invention without departing from the scope of this invention defined in the following claims.

Claims
  • 1. A method, comprising: at a multitenant computing platform system: setting a data retention policy of an account at the computing platform system;generating data through operation of the computing platform system on behalf of the account;moderating the generated data of the account according to the data retention policy of the account; andstoring the moderated data,wherein the computing platform system moderates the generated data by: securing sensitive information of the generated data from access by the computing platform system, andproviding operational information from the generated data, the operational information being accessible by the computing platform system during performance of system operations.
  • 2. A method, comprising: at a multitenant computing platform system: moderating original data generated through operation of the computing platform system on behalf of an account of the computing platform system, the moderating being performed according to a data retention policy set for the account; andstoring the moderated data at the computing platform system,wherein the computing platform system moderates the generated data by: securing sensitive information of the generated data from access by the computing platform system, andproviding operational information from the generated data, the operational information being accessible by the computing platform system during performance of system operations.
  • 3. The method of claim 2, wherein the data retention policy defines actions performed by the computing platform system on the data to secure the sensitive information prior to storing the data in a data warehouse of the computing platform system, and wherein moderating data comprises performing the actions defined by the data retention policy.
  • 4. The method of claim 2, wherein the data includes at least one of data logs, API request records, API response records, captured packets, form data input, user generated data, generated media, and obtained media.
  • 5. The method of claim 3, wherein actions include at least one of data redaction, data censoring, data classifying, data bucketing, data aggregating, data encryption, and partial deletion.
  • 6. The method of claim 5, wherein data redaction comprises automatically detecting and removing at least one of a credit card number, social security number, account number, and address from the data,wherein data classifying comprises replacing data with a generalized representation of the data,wherein data aggregating comprises replacing metrics of data with an aggregated representation of the metrics of data,wherein data encryption comprises determining an encryption callback reference for the data, transmitting the data to an external system of the encryption callback reference, and replacing the data with encrypted data provided by the external system of the encryption callback reference, wherein the account is an account for the external system.
  • 7. The method of claim 2, wherein the computing platform system secures the sensitive information from access by the computing platform system by performing at least one of removing, censoring and encrypting of the sensitive information of the generated data,wherein the computing platform system provides the operational information from the generated data by at least one of preserving operational information from the generated data and generating operation information from the generated data,wherein the encrypting is performed by using an external system associated with the account, and the encrypted sensitive information is secured from access by the computing platform system.
  • 8. The method of claim 7, wherein the encryption allows only an account holder of the account to access the encrypted sensitive information.
  • 9. The method of claim 2, wherein system operations include at least one of usage analytics, business intelligence operations, infrastructure scaling operations, metering account usage, billing for account usage, fraud detection, error detection, general event pattern detection, platform administration operations, allocating resources, deallocating resources, cluster management operations, and auditing operations.
  • 10. The method of claim 2, wherein system operations include at least one of metering account usage, and billing for account usage.
  • 11. The method of claim 2, further comprising, at the computing platform system, performing at least one system operation by using the operational information.
  • 12. The method of claim 2, further comprising, at the computing platform system, performing at least one system operation by using the stored moderated data.
  • 13. The method of claim 2, wherein the moderated data is stored at a data warehouse system, and the method further comprises, at the computing platform system, accessing the moderated data stored at the data warehouse system and performing at least one system operation by using the accessed moderated data.
  • 14. The method of claim 2, wherein the computing platform system receives the data retention policy in a data retention policy message provided by an external system, and responsive to the data retention policy message, the computing platform system sets the data retention policy at the system in association with an account identifier specified by the data retention policy message, the account identifier being an account identifier of the account.
  • 15. The method of claim 2, wherein the computing platform system receives the data retention policy via at least one of: a data retention policy API (Application Program Interface); an administrator control panel user interface provided by the computing platform system; a configuration file provided by an external account holder system; and directives during operation of the computing platform system.
  • 16. The method of claim 2, wherein the data retention policy is received from an external account holder system, and the data retention policy is received with a request to apply the data retention policy to one or more specified data elements.
  • 17. The method of claim 2, wherein the computing platform system generates the data responsive to a computing request provided by an external system and received by the computing platform system via a computing service API (Application Program Interface).
  • 18. The method of claim 2, wherein the computing platform system is a multi-tenant telephony communication platform system.
  • 19. The method of claim 18, wherein the communication platform system selectively changes the data retention policy for at least a portion of a communication session.
  • 20. The method of claim 18, wherein the data is generated responsive to execution of a communication on the communication platform system.
CROSS-REFERENCE TO RELATED APPLICATIONS

This application claims the benefit of U.S. Provisional Application Ser. No. 62/021,645, filed on 7 Jul. 2014, which is incorporated in its entirety by this reference.

US Referenced Citations (415)
Number Name Date Kind
5274700 Gechter et al. Dec 1993 A
5526416 Dezonno et al. Jun 1996 A
5581608 Jreij et al. Dec 1996 A
5598457 Foladare et al. Jan 1997 A
5934181 Adamczewski Aug 1999 A
6094681 Shaffer et al. Jul 2000 A
6138143 Gigliotti et al. Oct 2000 A
6185565 Meubus et al. Feb 2001 B1
6192123 Grunsted et al. Feb 2001 B1
6206564 Adamczewski Mar 2001 B1
6223287 Douglas et al. Apr 2001 B1
6269336 Ladd et al. Jul 2001 B1
6425012 Trovato et al. Jul 2002 B1
6426995 Kim et al. Jul 2002 B1
6430175 Echols et al. Aug 2002 B1
6434528 Sanders Aug 2002 B1
6445694 Swartz Sep 2002 B1
6445776 Shank et al. Sep 2002 B1
6459913 Cloutier Oct 2002 B2
6493558 Bernhart et al. Dec 2002 B1
6496500 Johnson et al. Dec 2002 B2
6501832 Saylor et al. Dec 2002 B1
6507875 Mellen-Garnett et al. Jan 2003 B1
6577721 Vainio et al. Jun 2003 B1
6600736 Ball et al. Jul 2003 B1
6606596 Zirngibl et al. Aug 2003 B1
6614783 Sonesh et al. Sep 2003 B1
6625258 Ram et al. Sep 2003 B1
6625576 Kochanski et al. Sep 2003 B2
6662231 Drosset et al. Dec 2003 B1
6704785 Koo et al. Mar 2004 B1
6707889 Saylor et al. Mar 2004 B1
6711249 Weissman et al. Mar 2004 B2
6738738 Henton May 2004 B2
6757365 Bogard Jun 2004 B1
6765997 Zirngibl et al. Jul 2004 B1
6768788 Langseth et al. Jul 2004 B1
6778653 Kallas et al. Aug 2004 B1
6785266 Swartz Aug 2004 B2
6788768 Saylor et al. Sep 2004 B1
6792086 Saylor et al. Sep 2004 B1
6792093 Barak et al. Sep 2004 B2
6798867 Zirngibl et al. Sep 2004 B1
6807529 Johnson et al. Oct 2004 B2
6807574 Partovi et al. Oct 2004 B1
6819667 Brusilovsky et al. Nov 2004 B1
6820260 Flockhart et al. Nov 2004 B1
6829334 Zirngibl et al. Dec 2004 B1
6834265 Balasuriya Dec 2004 B2
6836537 Zirngibl et al. Dec 2004 B1
6842767 Partovi et al. Jan 2005 B1
6850603 Eberle et al. Feb 2005 B1
6873952 Bailey et al. Mar 2005 B1
6874084 Dobner et al. Mar 2005 B1
6885737 Gao et al. Apr 2005 B1
6888929 Saylor et al. May 2005 B1
6895084 Saylor et al. May 2005 B1
6898567 Balasuriya May 2005 B2
6912581 Johnson et al. Jun 2005 B2
6922411 Taylor Jul 2005 B1
6931405 El-Shimi et al. Aug 2005 B2
6937699 Schuster et al. Aug 2005 B1
6940953 Eberle et al. Sep 2005 B1
6941268 Porter et al. Sep 2005 B2
6947417 Laursen et al. Sep 2005 B2
6961330 Cattan et al. Nov 2005 B1
6964012 Zirngibl et al. Nov 2005 B1
6970915 Partovi et al. Nov 2005 B1
6977992 Zirngibl et al. Dec 2005 B2
6985862 Stroem et al. Jan 2006 B2
6999576 Sacra Feb 2006 B2
7003464 Ferrans et al. Feb 2006 B2
7006606 Cohen et al. Feb 2006 B1
7010586 Allavarpu et al. Mar 2006 B1
7020685 Chen et al. Mar 2006 B1
7039165 Saylor et al. May 2006 B1
7062709 Cheung Jun 2006 B2
7076428 Anastasakos et al. Jul 2006 B2
7089310 Ellerman et al. Aug 2006 B1
7103003 Brueckheimer et al. Sep 2006 B2
7103171 Annadata et al. Sep 2006 B1
7106844 Holland Sep 2006 B1
7111163 Haney Sep 2006 B1
7140004 Kunins et al. Nov 2006 B1
7143039 Stifelman et al. Nov 2006 B1
7197331 Anastasakos et al. Mar 2007 B2
7197461 Eberle et al. Mar 2007 B1
7197462 Takagi et al. Mar 2007 B2
7197544 Wang et al. Mar 2007 B2
7225232 Elberse May 2007 B2
7227849 Rasanen Jun 2007 B1
7266181 Zirngibl et al. Sep 2007 B1
7269557 Bailey et al. Sep 2007 B1
7272212 Eberle et al. Sep 2007 B2
7272564 Phillips et al. Sep 2007 B2
7277851 Henton Oct 2007 B1
7283515 Fowler Oct 2007 B2
7286521 Jackson et al. Oct 2007 B1
7287248 Adeeb Oct 2007 B1
7289453 Riedel et al. Oct 2007 B2
7296739 Mo et al. Nov 2007 B1
7298732 Cho Nov 2007 B2
7308085 Weissman Dec 2007 B2
7308408 Stifelman et al. Dec 2007 B1
7324633 Gao et al. Jan 2008 B2
7324942 Mahowald et al. Jan 2008 B1
7328263 Sadjadi Feb 2008 B1
7330890 Partovi et al. Feb 2008 B1
7340040 Saylor et al. Mar 2008 B1
7369865 Gabriel et al. May 2008 B2
7373660 Guichard et al. May 2008 B1
7376223 Taylor et al. May 2008 B2
7376586 Partovi et al. May 2008 B1
7376733 Connelly et al. May 2008 B2
7376740 Porter et al. May 2008 B1
7412525 Cafarella et al. Aug 2008 B2
7428302 Zirngibl et al. Sep 2008 B2
7440898 Eberle et al. Oct 2008 B1
7447299 Partovi et al. Nov 2008 B1
7454459 Kapoor et al. Nov 2008 B1
7457397 Saylor et al. Nov 2008 B1
7473872 Takimoto Jan 2009 B2
7486780 Zirngibl et al. Feb 2009 B2
7496054 Taylor Feb 2009 B2
7500249 Kampe et al. Mar 2009 B2
7505951 Thompson et al. Mar 2009 B2
7519359 Chiarulli et al. Apr 2009 B2
7522711 Stein et al. Apr 2009 B1
7536454 Balasuriya May 2009 B2
7552054 Stifelman et al. Jun 2009 B1
7571226 Partovi et al. Aug 2009 B1
7613287 Stifelman et al. Nov 2009 B1
7623648 Oppenheim et al. Nov 2009 B1
7630900 Strom Dec 2009 B1
7631310 Henzinger Dec 2009 B1
7644000 Strom Jan 2010 B1
7657433 Chang Feb 2010 B1
7657434 Thompson et al. Feb 2010 B2
7672295 Andhare et al. Mar 2010 B1
7675857 Chesson Mar 2010 B1
7715547 Ibbotson et al. May 2010 B2
7875836 Imura et al. Jan 2011 B2
7882253 Pardo-Castellote et al. Feb 2011 B2
7926099 Chakravarty et al. Apr 2011 B1
7936867 Hill et al. May 2011 B1
7962644 Ezerzer et al. Jun 2011 B1
7979555 Rothstein et al. Jul 2011 B2
8023425 Raleigh Sep 2011 B2
8069096 Ballaro et al. Nov 2011 B1
8081958 Soederstroem et al. Dec 2011 B2
8103725 Gupta et al. Jan 2012 B2
8126128 Hicks, III et al. Feb 2012 B1
8150918 Edelman et al. Apr 2012 B1
8156213 Deng et al. Apr 2012 B1
8196133 Kakumani et al. Jun 2012 B2
8243889 Taylor et al. Aug 2012 B2
8266327 Kumar et al. Sep 2012 B2
8306021 Lawson et al. Nov 2012 B2
8346630 McKeown Jan 2013 B1
8355394 Taylor et al. Jan 2013 B2
8417817 Jacobs Apr 2013 B1
8429827 Wetzel Apr 2013 B1
8438315 Tao et al. May 2013 B1
8462670 Chien et al. Jun 2013 B2
8509068 Begall et al. Aug 2013 B2
8532686 Schmidt et al. Sep 2013 B2
8542805 Agranovsky et al. Sep 2013 B2
8594626 Woodson et al. Nov 2013 B1
8611338 Lawson et al. Dec 2013 B2
8613102 Nath Dec 2013 B2
8649268 Lawson et al. Feb 2014 B2
8667056 Proulx et al. Mar 2014 B1
8755376 Lawson et al. Jun 2014 B2
8806024 Francis et al. Aug 2014 B1
8837465 Lawson et al. Sep 2014 B2
8838707 Lawson et al. Sep 2014 B2
9014664 Kim et al. Apr 2015 B2
9015702 Bhat Apr 2015 B2
20010038624 Greenberg et al. Nov 2001 A1
20010043684 Guedalia et al. Nov 2001 A1
20020006124 Jimenez et al. Jan 2002 A1
20020006125 Josse et al. Jan 2002 A1
20020006193 Rodenbusch et al. Jan 2002 A1
20020067823 Walker et al. Jun 2002 A1
20020077833 Arons et al. Jun 2002 A1
20020126813 Partovi et al. Sep 2002 A1
20020136391 Armstrong Sep 2002 A1
20020165957 Devoe et al. Nov 2002 A1
20020176378 Hamilton et al. Nov 2002 A1
20020198941 Gavrilescu et al. Dec 2002 A1
20030006137 Wei et al. Jan 2003 A1
20030014665 Anderson et al. Jan 2003 A1
20030018830 Chen et al. Jan 2003 A1
20030026426 Wright et al. Feb 2003 A1
20030046366 Pardikar et al. Mar 2003 A1
20030051037 Sundaram et al. Mar 2003 A1
20030059020 Meyerson et al. Mar 2003 A1
20030060188 Gidron et al. Mar 2003 A1
20030061317 Brown et al. Mar 2003 A1
20030061404 Atwal et al. Mar 2003 A1
20030088421 Maes et al. May 2003 A1
20030123640 Roelle et al. Jul 2003 A1
20030211842 Kempf et al. Nov 2003 A1
20030231647 Petrovykh Dec 2003 A1
20040011690 Marfino et al. Jan 2004 A1
20040071275 Bowater et al. Apr 2004 A1
20040101122 Da Palma et al. May 2004 A1
20040102182 Reith et al. May 2004 A1
20040165569 Sweatman et al. Aug 2004 A1
20040172482 Weissman et al. Sep 2004 A1
20040205689 Ellens et al. Oct 2004 A1
20040213400 Golitsin et al. Oct 2004 A1
20040228469 Andrews et al. Nov 2004 A1
20040240649 Goel Dec 2004 A1
20050005200 Matena et al. Jan 2005 A1
20050010483 Ling Jan 2005 A1
20050021626 Prajapat et al. Jan 2005 A1
20050025303 Hostetler Feb 2005 A1
20050038772 Colrain Feb 2005 A1
20050043952 Sharma et al. Feb 2005 A1
20050091572 Gavrilescu et al. Apr 2005 A1
20050125251 Berger et al. Jun 2005 A1
20050135578 Ress et al. Jun 2005 A1
20050141500 Bhandari et al. Jun 2005 A1
20050177635 Schmidt et al. Aug 2005 A1
20050181835 Lau et al. Aug 2005 A1
20050228680 Malik Oct 2005 A1
20050240659 Taylor Oct 2005 A1
20050243977 Creamer et al. Nov 2005 A1
20050246176 Creamer et al. Nov 2005 A1
20050289222 Sahim Dec 2005 A1
20060015467 Morken et al. Jan 2006 A1
20060047666 Bedi et al. Mar 2006 A1
20060067506 Flockhart et al. Mar 2006 A1
20060129638 Deakin Jun 2006 A1
20060143007 Koh et al. Jun 2006 A1
20060168334 Potti et al. Jul 2006 A1
20060203979 Jennings Sep 2006 A1
20060209695 Archer et al. Sep 2006 A1
20060215824 Mitby et al. Sep 2006 A1
20060217823 Hussey Sep 2006 A1
20060217978 Mitby et al. Sep 2006 A1
20060222166 Ramakrishna et al. Oct 2006 A1
20060256816 Yarlagadda et al. Nov 2006 A1
20060262915 Marascio et al. Nov 2006 A1
20060270386 Yu et al. Nov 2006 A1
20060285489 Francisco et al. Dec 2006 A1
20070002744 Mewhinney et al. Jan 2007 A1
20070036143 Alt et al. Feb 2007 A1
20070050306 McQueen Mar 2007 A1
20070070906 Thakur Mar 2007 A1
20070070980 Phelps et al. Mar 2007 A1
20070071223 Lee et al. Mar 2007 A1
20070074174 Thornton Mar 2007 A1
20070121651 Casey et al. May 2007 A1
20070127691 Lert Jun 2007 A1
20070127703 Siminoff Jun 2007 A1
20070130260 Weintraub et al. Jun 2007 A1
20070133771 Stifelman et al. Jun 2007 A1
20070149166 Turcotte et al. Jun 2007 A1
20070153711 Dykas et al. Jul 2007 A1
20070192629 Saito Aug 2007 A1
20070208862 Fox et al. Sep 2007 A1
20070232284 Mason et al. Oct 2007 A1
20070242626 Altberg et al. Oct 2007 A1
20070265073 Novi et al. Nov 2007 A1
20070286180 Marquette et al. Dec 2007 A1
20070291905 Halliday et al. Dec 2007 A1
20070293200 Roundtree et al. Dec 2007 A1
20080005275 Overton et al. Jan 2008 A1
20080037746 Dufrene et al. Feb 2008 A1
20080040484 Yardley Feb 2008 A1
20080091843 Kulkarni Apr 2008 A1
20080101571 Harlow et al. May 2008 A1
20080104348 Kabzinski et al. May 2008 A1
20080134049 Gupta et al. Jun 2008 A1
20080139166 Agarwal et al. Jun 2008 A1
20080146268 Gandhi et al. Jun 2008 A1
20080152101 Griggs Jun 2008 A1
20080154601 Stifelman et al. Jun 2008 A1
20080155029 Helbling et al. Jun 2008 A1
20080162482 Ahern et al. Jul 2008 A1
20080165708 Moore et al. Jul 2008 A1
20080177883 Hanai et al. Jul 2008 A1
20080209050 Li Aug 2008 A1
20080222656 Lyman Sep 2008 A1
20080229421 Hudis Sep 2008 A1
20080232574 Baluja et al. Sep 2008 A1
20080256224 Kaji et al. Oct 2008 A1
20080275741 Loeffen Nov 2008 A1
20080310599 Purnadi et al. Dec 2008 A1
20080313318 Vermeulen et al. Dec 2008 A1
20080316931 Qiu et al. Dec 2008 A1
20080317222 Griggs et al. Dec 2008 A1
20080317232 Couse et al. Dec 2008 A1
20080317233 Rey et al. Dec 2008 A1
20090046838 Andreasson Feb 2009 A1
20090052437 Taylor et al. Feb 2009 A1
20090052641 Taylor et al. Feb 2009 A1
20090074159 Goldfarb et al. Mar 2009 A1
20090075684 Cheng et al. Mar 2009 A1
20090089699 Saha et al. Apr 2009 A1
20090093250 Jackson et al. Apr 2009 A1
20090125608 Werth et al. May 2009 A1
20090136011 Goel May 2009 A1
20090170496 Bourque Jul 2009 A1
20090171659 Pearce et al. Jul 2009 A1
20090171669 Engelsma et al. Jul 2009 A1
20090171752 Galvin et al. Jul 2009 A1
20090182896 Patterson et al. Jul 2009 A1
20090220057 Waters Sep 2009 A1
20090221310 Chen et al. Sep 2009 A1
20090222341 Belwadi et al. Sep 2009 A1
20090225748 Taylor Sep 2009 A1
20090225763 Forsberg et al. Sep 2009 A1
20090232289 Drucker et al. Sep 2009 A1
20090235349 Lai et al. Sep 2009 A1
20090252159 Lawson et al. Oct 2009 A1
20090276771 Nickolov et al. Nov 2009 A1
20090300194 Ogasawara Dec 2009 A1
20090318112 Vasten Dec 2009 A1
20100037204 Lin et al. Feb 2010 A1
20100082513 Liu Apr 2010 A1
20100087215 Gu et al. Apr 2010 A1
20100088187 Courtney et al. Apr 2010 A1
20100088698 Krishnamurthy Apr 2010 A1
20100094758 Chamberlain et al. Apr 2010 A1
20100115041 Hawkins et al. May 2010 A1
20100142516 Lawson et al. Jun 2010 A1
20100150139 Lawson et al. Jun 2010 A1
20100167689 Sepehri-Nik et al. Jul 2010 A1
20100188979 Thubert et al. Jul 2010 A1
20100191915 Spencer Jul 2010 A1
20100208881 Kawamura Aug 2010 A1
20100217837 Ansari et al. Aug 2010 A1
20100232594 Lawson et al. Sep 2010 A1
20100235539 Carter et al. Sep 2010 A1
20100251329 Wei Sep 2010 A1
20100281108 Cohen Nov 2010 A1
20100291910 Sanding et al. Nov 2010 A1
20110029882 Jaisinghani Feb 2011 A1
20110053555 Cai et al. Mar 2011 A1
20110078278 Cui et al. Mar 2011 A1
20110081008 Lawson et al. Apr 2011 A1
20110083179 Lawson et al. Apr 2011 A1
20110093516 Geng et al. Apr 2011 A1
20110096673 Stevenson et al. Apr 2011 A1
20110110366 Moore et al. May 2011 A1
20110131293 Mori Jun 2011 A1
20110167172 Roach et al. Jul 2011 A1
20110170505 Rajasekar et al. Jul 2011 A1
20110176537 Lawson et al. Jul 2011 A1
20110211679 Mezhibovsky et al. Sep 2011 A1
20110251921 Kassaei et al. Oct 2011 A1
20110253693 Lyons et al. Oct 2011 A1
20110255675 Jasper et al. Oct 2011 A1
20110265172 Sharma et al. Oct 2011 A1
20110274111 Narasappa et al. Nov 2011 A1
20110276892 Jensen-Horne et al. Nov 2011 A1
20110280390 Lawson et al. Nov 2011 A1
20110283259 Lawson et al. Nov 2011 A1
20110289126 Aikas et al. Nov 2011 A1
20110299672 Chiu et al. Dec 2011 A1
20110310902 Xu Dec 2011 A1
20110320449 Gudlavenkatasiva Dec 2011 A1
20110320550 Lawson et al. Dec 2011 A1
20120000903 Baarman et al. Jan 2012 A1
20120011274 Moreman Jan 2012 A1
20120017222 May Jan 2012 A1
20120023544 Li Jan 2012 A1
20120028602 Lisi et al. Feb 2012 A1
20120036574 Heithcock et al. Feb 2012 A1
20120039202 Song Feb 2012 A1
20120079066 Li et al. Mar 2012 A1
20120083266 Vanswol et al. Apr 2012 A1
20120089572 Raichstein Apr 2012 A1
20120110564 Ran et al. May 2012 A1
20120149404 Beattie et al. Jun 2012 A1
20120173610 Bleau et al. Jul 2012 A1
20120174095 Natchadalingam et al. Jul 2012 A1
20120201238 Lawson et al. Aug 2012 A1
20120208495 Lawson et al. Aug 2012 A1
20120254828 Aiylam et al. Oct 2012 A1
20120281536 Gell et al. Nov 2012 A1
20120288082 Segall Nov 2012 A1
20120290706 Lin et al. Nov 2012 A1
20120304245 Lawson et al. Nov 2012 A1
20120304275 Ji et al. Nov 2012 A1
20120321070 Smith et al. Dec 2012 A1
20130029629 Lindholm et al. Jan 2013 A1
20130031158 Salsburg Jan 2013 A1
20130054684 Brazier et al. Feb 2013 A1
20130058262 Parreira Mar 2013 A1
20130067448 Sannidhanam et al. Mar 2013 A1
20130156024 Burg Jun 2013 A1
20130201909 Bosch et al. Aug 2013 A1
20130204786 Mattes et al. Aug 2013 A1
20130212603 Cooke et al. Aug 2013 A1
20140064467 Lawson et al. Mar 2014 A1
20140105372 Nowack et al. Apr 2014 A1
20140106704 Cooke et al. Apr 2014 A1
20140123187 Reisman May 2014 A1
20140129363 Lorah et al. May 2014 A1
20140153565 Lawson et al. Jun 2014 A1
20140185490 Holm et al. Jul 2014 A1
20140254600 Shibata et al. Sep 2014 A1
20140274086 Boerjesson et al. Sep 2014 A1
20140282473 Saraf et al. Sep 2014 A1
20140355600 Lawson et al. Dec 2014 A1
20140379670 Kuhr Dec 2014 A1
20150004932 Kim et al. Jan 2015 A1
20150004933 Kim et al. Jan 2015 A1
20150023251 Giakoumelis et al. Jan 2015 A1
20150066865 Yara Mar 2015 A1
20150181631 Lee et al. Jun 2015 A1
Foreign Referenced Citations (13)
Number Date Country
1684587 Mar 1971 DE
0282126 Sep 1988 EP
1464418 Oct 2004 EP
1522922 Apr 2005 EP
1770586 Apr 2007 EP
2134107 Sep 1999 ES
02087804 Nov 2002 WO
2009018489 Feb 2009 WO
2009124223 Oct 2009 WO
2010037064 Apr 2010 WO
2010040010 Apr 2010 WO
2010101935 Sep 2010 WO
2011091085 Jul 2011 WO
Non-Patent Literature Citations (3)
Entry
Archive Microsoft Office 365 Email | Retain Unified Archiving, 2015, GWAVA, Inc., Montreal, Canada. <http://www.gwava.com/Retain/Retain—for—Office—365.php>.
Complaint for Patent Infringement, Telinit Technologies, LLC v. Twilio Inc., dated Oct. 12, 2012.
RFC 3986: Uniform Resource Identifier (URI): Generic Syntax; T. Berners-Lee, R. Fielding, L. Masinter; Jan. 2005; The Internet Society.
Related Publications (1)
Number Date Country
20160004882 A1 Jan 2016 US
Provisional Applications (1)
Number Date Country
62021645 Jul 2014 US