Some enterprises are required to market their products, services and offers to customers through various modes of message campaigns such as email campaign, letter campaign, phone campaign, short message service (SMS) campaign, etc. In email campaigns, enterprises are required to send large number of emails to customers, referred to as bulk emails. Bulk emails are generally sent in thousands. In such email campaigns, when numerous emails are sent, it is very likely that some of the emails sent can fail to reach the customers. In such a scenario, processing the failed emails is a challenge because customers should not receive redundant emails.
The claims set forth the embodiments with particularity. The embodiments are illustrated by way of examples and not by way of limitation in the figures of the accompanying drawings in which like references indicate similar elements. The embodiments, together with its advantages, may be best understood from the following detailed description taken in conjunction with the accompanying drawings.
Embodiments of techniques for restart capability in message campaign are described herein. In the following description, numerous specific details are set forth to provide a thorough understanding of the embodiments. One skilled in the relevant art will recognize, however, that the embodiments can be practiced without one or more of the specific details, or with other methods, components, materials, etc. In other instances, well-known structures, materials, or operations are not shown or described in detail.
Reference throughout this specification to “one embodiment”, “this embodiment” and similar phrases, means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one of the one or more embodiments. Thus, the appearances of these phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments.
Enterprise uses message campaigns such as email campaign, short message service (SMS) campaign, letter campaign, phone campaign, etc., to contact customers, business partners, vendors, etc., to market products, services and offers associated with the enterprise. Typically, enterprises have hundreds or thousands of business partners and customers. Campaigns such as message campaign and marketing campaigns require communications such as email, SMS and letter to be sent in huge volume referred to as bulk messaging. Bulk messaging is dissemination of large number of messages to people across the globe. Typically, in such message campaigns, bulk messaging is processed in batches referred to as batch processing. Batch processing is execution of series of programs or jobs on a processing unit without manual intervention.
As an example, in a scenario of bulk messaging to one hundred thousand customers, there can be one thousand batch jobs where the batch jobs comprising hundred customers each can be defined. While execution of one thousand batch jobs, some issues can occur such as some of the batch jobs failing, some of the batch jobs gets aborted, or the server executing the batch jobs getting crashed, etc. In such scenarios, the batch job might be partially processed where a first few customers among the hundred customers may be sent messages while the remaining few customers may not have been sent messages. Typically, the failed batch job is executed again to send message to the remaining few customers. However, while executing the batch job again, first few customers in the batch job who have already received the message are sent message once again causing redundancy.
There is a need to process only the remaining few customers and to send messages to them, because while processing the remaining few customers, first few customers in the batch jobs who have already received the message should not be sent message again. Restart capability in messaging campaign processes the remaining few customers and send messages only to them. The example embodiments illustrated below using
A message campaign such as an email campaign can be defined by receiving inputs such as name, start date, end date, email template, etc., and receiving a target group of recipients from the sender 110. The sender 110 schedules to execute the defined email campaign and to send email to recipients 160. In campaign management application 120, the target group of recipients is grouped into packages. These packages are executed in parallel in batches of defined batch size to send personalized email or personalized communication to the recipients 160 in the target group. The personalized emails sent are dispatched to the recipients 160 by the mail server 150 of the recipient. In case few packages fail during execution, the failed packages are restarted, where the personalized email is sent only to the recipients in the failed packages skipping the recipients in the successful packages who have already received the personalized email. Therefore the recipients receive only one copy of the personalized email.
A target group is defined as a group consisting of numerous recipients, typically in denomination of thousands or millions. Recipients in the target group may or may not share similarities, but are considered together as one single group. When the sender clicks on the target group link to select a target group, a new target group window 255 opens up displaying all the stored target groups as shown in 260. For example, target group identifier “TGA” in 265, which is currently in an “active” target group status having “200000” recipients, is selected to be added to the “demo email campaign” 206 in the new campaign window 205. Target group status indicates the status of the target group “TGA”. Specific target groups can also be searched using “find” 270 option provided in a graphical user interface 200 of the campaign management application.
Email templates are predefined and stored in the campaign management application. An email template may be defined using software applications as hypertext markup language pages, with placeholders defined for the recipient's name, recipient's title, etc. While executing the defined email campaign, the placeholders defined in the email template are substituted with recipient information, thereby providing personalized emails to recipients. One of the email templates defined and stored, namely “sample_email_template,” is selected and added to the email template 235 of the new campaign window 205. ‘From’ 240 is used to specify email address from which the email is dispatched to the recipients. The defined email campaign “demo email campaign” 206 can be ‘saved’ or ‘saved and opened’ for viewing in the graphical user interface 200 of the campaign management application. Once saved, the campaign named “demo email campaign” 206 is presented in the campaign list 245 in the user interface 200. Email campaigns can be in different lifecycle statuses such as “active”, “inactive”, “planned”, “finished”, “cancelled”, etc. List of email campaigns in the same lifecycle status can be viewed in the campaign list 245 using the drop down 275 to filter the stored email campaigns, e.g., to list only the “active” email campaigns as illustrated. Similarly, list of email campaigns in the “finished” or “cancelled” lifecycle status can be viewed using the drop down 275.
The defined email campaign named “demo email campaign” 206 can be scheduled using a schedule option provided in the campaign management application.
In one embodiment, during the execution of the “demo email campaign”, the “200000” recipients in the target group “TGA” 525 are packaged into groups of specified number of recipients per package, to execute the package in parallel in batches. Execution of packages in parallel can be defined using software jobs to simultaneously execute the packages in parallel to increase efficiency of the processing. In one embodiment, the packages can be executed in parallel by multiple processors available at the server device. Number of packages to be executed per batch can be defined by specifying the batch size. For example, “200000” recipients of the target group “TGA” 525 can be packaged in two thousand packages consisting of hundred recipients per package, and two thousand packages can be executed in two hundred batches of a batch size of ten.
In the campaign summary 510 of the execution of the campaign named “demo email campaign” 515, the “recipients contacted: 150000” 530 indicates that 150000 recipients have successfully received the personalized email, and “recipients not contacted: 50000” 540 indicates that 50000 recipients have not received the personalized email. Hence the execution status is displayed as “Finished with errors” 550. In one embodiment, “Finished with errors” 550 can be a link, which when clicked, provides execution details as shown in
Personalized emails need to be sent again to the “50000” recipients not contacted 640. Accordingly, restart execution of the “demo email campaign” 620 is performed to retry sending personalized email to the “50000” recipients not contacted earlier. The user interface 600 may provide an option “execute” 645 to initiate an execution of the “demo email campaign.” When the “execute” 645 instruction is provided, the execution of “demo email campaign” is restarted for only the “50000” recipients not contacted 640. The successfully contacted “150000” recipients 630 are skipped and are not contacted again, thereby avoiding sending of redundant emails. In one embodiment, if the execution of the email campaign, e.g., the campaign named “demo email campaign” 620, is successful, then the executed status is displayed as “Finished successfully” (not illustrated). “Finished successfully” can be a link which when clicked provides “execution details” of the campaign (e.g., named “demo email campaign” 620). A user interface is provided to display the result of the execution detail of the email campaign. Details of the result of execution of the “demo email campaign” 620 are displayed such as recipients contacted “200000”, recipients not contacted “0”, recipients unopened “0”, etc.
A user interface of the campaign management application opens a schedule execution window, where the created MDRO instance can be scheduled 740 for execution. Once the execution is scheduled, the user interface of the campaign management application sets the lifecycle status of the “demo email campaign” to “active” 750. The node “execution_step” 720 may get status information in an attribute “executionstatuscode”. “Execution_step” node 720 determines the execution status as “scheduled”. This “executionstatuscode” may be used to show the execution status of the “demo email campaign” execution in the campaign overview. The execution status value will be determined by an action “set_execution_status”. The execution status may have values such as “not scheduled”, “Scheduled”, “running”, “finished successfully”, “finished with errors” and “failed”.
When the execution status value is “not scheduled,” no instance of MDRO is scheduled. When the execution status value is “scheduled,” an instance of MDRO is scheduled. The scheduled instance can be re-scheduled or the scheduling can be removed. Some details of the scheduled email campaign can be changed, while some details of the scheduled email campaign cannot be changed such as execution status, campaign type, etc. For execution status value “running,” an instance of the MDRO is currently running or processed. This execution status value blocks the email campaign for changes. For execution status value “finished successfully,” an instance of the MDRO has been executed successfully without any failure or error. In case some recipients could not be contacted successfully due to unavailability of valid email address, the campaign execution status value may still be “finished successfully”. The execution details can be viewed in the campaign summary such as recipients contacted, recipients not contacted. For this “finished successfully” execution status value, restarting of email campaign is not allowed.
When the execution status value is “finished with errors”, an instance of MDRO has not been executed successfully, i.e. not all packages are executed successfully. In this case, the failed packages can be restarted. If an execution has been aborted, it allows the sender to start the email campaign execution again. The MDRO instance is processed as a background job. Background jobs older than a specified number of days (e.g., after the specified end date) are deleted. If the email campaign is with execution status values such as “running”, “finished with errors” or “cancelled”, changes cannot be made to the target group and changes cannot be made to the target group status as well.
While execution, the MDRO may not set or store information corresponding to target group or target group status. The information associated with the target group is dynamically checked. This dynamic or on-the-fly check has the advantage that the target group does not need to store any target group status information regarding their usage such as, checking the status of the recipients in the target group during the email campaign execution. Thus the MDRO does not need to set a certain target group status each time of execution of the email campaign. Specifically, in case where a MDRO instance gets aborted, no wrong status value would remain in the target group, and thereby no wrong information is provided to the sender in the user interface of the campaign management application. After the completion of execution of the email campaign, the information about the executed campaign corresponding to target group, target group status and packages are saved to a database.
In case an email campaign is restarted or changed, validation checks are performed on the details of the email campaign, before the recipients are contacted. In case the sender wants to change the start date or time of an already scheduled email campaign execution, similar validation checks are performed. If the validation checks are performed successfully, the lifecycle status of the email campaign is determined and set accordingly. For example, the lifecycle status of the email campaign is updated to “Active”. In case no MDRO instance is found, a new MDRO instance is created and the lifecycle status is set to “active”. This new MDRO instance can be scheduled using the schedule execution window (e.g., 320 in
The MDRO instance is in execution and the “execution_step” node 720 calculates the execution status value as “running” 755. The MDRO reads all the recipients of the target group “TGA”, groups the specified number of recipients into packages 760, and sends these packages to an action “execute” at 765 of the node “execution_step” of the email campaign. The action “execute” of node “execution_step” performs the following functions: a) using the information associated with the recipients of the target group “TGA”, determine if recipients are addressable 770 or if recipients are unaddressable 775; b) create a corresponding instance of all the recipients of the target group “TGA” 780; and c) create and send a personalized email for all the addressable recipients 785. Execution of the scheduled MDRO instance is in parallel batches. These packages are executed in parallel in batches of defined batch size, to send personalized email to the recipients in the target group “TGA”. Recipients who can be reached while sending email are referred to as addressable recipients, and recipients who cannot be reached while sending email are referred to un-addressable recipients. Once the personalized emails are sent to the addressable recipients, the node “execution_step” 720 calculates the execution status of the “demo email campaign” as “finished successfully” 790. This execution status is displayed in the campaign summary section of the user interface.
The various embodiments described above have a number of advantages. The packages are processed in parallel to keep the runtime of the execution of the packages as short as possible, and to finish the execution in the shortest possible time. After execution of the packages, the packages are saved or committed to a database. Saving the data in packages to the database is quick and efficient, because in case a few packages fail to get saved, rolling back the few failed packages in the database is easier compared to saving and rolling back the entire data in the target group. In case the message campaign execution aborts, all the recipients of the target group need not be processed, only the recipients having failed to receive the personalized communication need to be processed again. Therefore, the recipients are sent personalized communication only once and the recipients receive personalized communication only once. This implies that the restarted campaign execution would need only the shortest possible runtime.
Some embodiments may include the above-described methods being written as one or more software components. These components, and the functionality associated with each, may be used by client, server, distributed, or peer computer systems. These components may be written in a computer language corresponding to one or more programming languages such as, functional, declarative, procedural, object-oriented, lower level languages and the like. They may be linked to other components via various application programming interfaces and then compiled into one complete application for a server or a client. Alternatively, the components maybe implemented in server and client applications. Further, these components may be linked together via various distributed programming protocols. Some example embodiments may include remote procedure calls being used to implement one or more of these components across a distributed programming environment. For example, a logic level may reside on a first computer system that is remotely located from a second computer system containing an interface level (e.g., a graphical user interface). These first and second computer systems can be configured in a server-client, peer-to-peer, or some other configuration. The clients can vary in complexity from mobile and handheld devices, to thin clients and on to thick clients or even other servers.
The above-illustrated software components are tangibly stored on a computer readable storage medium as instructions. The term “computer readable storage medium” should be taken to include a single medium or multiple media that stores one or more sets of instructions. The term “computer readable storage medium” should be taken to include any physical article that is capable of undergoing a set of physical changes to physically store, encode, or otherwise carry a set of instructions for execution by a computer system which causes the computer system to perform any of the methods or process steps described, represented, or illustrated herein. Examples of computer readable storage media include, but are not limited to: magnetic media, such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs, DVDs and holographic devices; magneto-optical media; and hardware devices that are specially configured to store and execute, such as application-specific integrated circuits (ASICs), programmable logic devices (PLDs) and ROM and RAM devices. Examples of computer readable instructions include machine code, such as produced by a compiler, and files containing higher-level code that are executed by a computer using an interpreter. For example, an embodiment may be implemented using Java, C++, or other object-oriented programming language and development tools. Another embodiment may be implemented in hard-wired circuitry in place of, or in combination with machine readable software instructions.
A data source is an information resource. Data sources include sources of data that enable data storage and retrieval. Data sources may include databases, such as, relational, transactional, hierarchical, multi-dimensional (e.g., OLAP), object oriented databases, and the like. Further data sources include tabular data (e.g., spreadsheets, delimited text files), data tagged with a markup language (e.g., XML data), transactional data, unstructured data (e.g., text files, screen scrapings), hierarchical data (e.g., data in a file system, XML data), files, a plurality of reports, and any other data source accessible through an established protocol, such as, Open Data Base Connectivity (ODBC), produced by an underlying software system (e.g., ERP system), and the like. Data sources may also include a data source where the data is not tangibly stored or otherwise ephemeral such as data streams, broadcast data, and the like. These data sources can include associated data foundations, semantic layers, management systems, security systems and so on.
In the above description, numerous specific details are set forth to provide a thorough understanding of embodiments. One skilled in the relevant art will recognize, however that the embodiments can be practiced without one or more of the specific details or with other methods, components, techniques, etc. In other instances, well-known operations or structures are not shown or described in detail.
Although the processes illustrated and described herein include series of steps, it will be appreciated that the different embodiments are not limited by the illustrated ordering of steps, as some steps may occur in different orders, some concurrently with other steps apart from that shown and described herein. In addition, not all illustrated steps may be required to implement a methodology in accordance with the one or more embodiments. Moreover, it will be appreciated that the processes may be implemented in association with the apparatus and systems illustrated and described herein as well as in association with other systems not illustrated.
The above descriptions and illustrations of embodiments, including what is described in the Abstract, is not intended to be exhaustive or to limit the one or more embodiments to the precise forms disclosed. While specific embodiments of, and examples for, the one or more embodiments are described herein for illustrative purposes, various equivalent modifications are possible within the scope, as those skilled in the relevant art will recognize. These modifications can be made in light of the above detailed description. Rather, the scope is to be determined by the following claims, which are to be interpreted in accordance with established doctrines of claim construction.