Question
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
M1 Ltd
SG
Last activity: 1 Aug 2019 9:18 EDT
Pega Marketing Behaviour
Hi,
I like have a more insight on how Pega will behave in the event of failure.
I have a campaign flow as below:
a) send email
b) output to a table for tracking
c) send SMS
d) output to another table for tracking
i) How will the Pega behave when it failed at stage (a)?
E.g. If there is 100 emails to be sent. Will these 100 emails be output to a temporary table: pr_data_corr_email, and the backend agent responsible for communication with the SMTP server will take its own sweet time to send out the email. In the Pega front end where we track the campaign execution, will it only display as successful when all the 100 emails have been sent out? What happened if something went wrong after sending 20 emails, will the backend agent stop trying? Only when the campaign is being restart via the front end, then the backend agent start sending the email again, from where it failed?
ii) If the campaign failed at step (b), failed to populate data into a database table, what will happened when we restart the campaign? Will it repeat step (a) again? or proceed with with step (b) directly? What other choice is there available for us to rerun?
iii) We will like to push the campaign information to our production system, so that the customer service officer knows what is happening. Can we do away with the pushing of data into a database table? If yes, how shall we retrieve the data (campaign base) dynamically from Pega system table?
Hi,
I like have a more insight on how Pega will behave in the event of failure.
I have a campaign flow as below:
a) send email
b) output to a table for tracking
c) send SMS
d) output to another table for tracking
i) How will the Pega behave when it failed at stage (a)?
E.g. If there is 100 emails to be sent. Will these 100 emails be output to a temporary table: pr_data_corr_email, and the backend agent responsible for communication with the SMTP server will take its own sweet time to send out the email. In the Pega front end where we track the campaign execution, will it only display as successful when all the 100 emails have been sent out? What happened if something went wrong after sending 20 emails, will the backend agent stop trying? Only when the campaign is being restart via the front end, then the backend agent start sending the email again, from where it failed?
ii) If the campaign failed at step (b), failed to populate data into a database table, what will happened when we restart the campaign? Will it repeat step (a) again? or proceed with with step (b) directly? What other choice is there available for us to rerun?
iii) We will like to push the campaign information to our production system, so that the customer service officer knows what is happening. Can we do away with the pushing of data into a database table? If yes, how shall we retrieve the data (campaign base) dynamically from Pega system table?
Hope to hear from you experts soon.
Regards.
-
Like (0)
-
Share this page Facebook Twitter LinkedIn Email Copying... Copied!
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
Pegasystems Inc.
GB
Hi
1. outbound transmission is an async process, ie, output of the campaign goes to an intermediate/staging table, pr_data_corr_email, in your case, for email campaigns. The campaign status will get successful after inserting required records to pr_data_corr_email table.
The transmission of emails is performed by a separate agent SendEmailsinBulk, it keeps looking for records in pr_data_corr_email table and starts transmitting as soon as it find them. If successfully sent, the record is removed from this table
In case of error during transmission, the record is updated with the error message. there is also a number of retries, i think 3, before it is recorded as failed to send.
The record is not deleted, hence you can resend them once the issue is fixed.
2. if the campaign fails midway, and if you try to rerun the campaign, then it will start from beginning and user may get duplicates. to prevent this, you could adjust your segment to exclude the customers targeted by the failed run. i can think of 2 ways, there might be more
a. every campaign run outputs to a batch table named BatchoutPRxxx on class Data-BatchOutPRxxx , you could build a segment on this class and when re-running the campaign, use it as exclusion on your campaign segment.
Hi
1. outbound transmission is an async process, ie, output of the campaign goes to an intermediate/staging table, pr_data_corr_email, in your case, for email campaigns. The campaign status will get successful after inserting required records to pr_data_corr_email table.
The transmission of emails is performed by a separate agent SendEmailsinBulk, it keeps looking for records in pr_data_corr_email table and starts transmitting as soon as it find them. If successfully sent, the record is removed from this table
In case of error during transmission, the record is updated with the error message. there is also a number of retries, i think 3, before it is recorded as failed to send.
The record is not deleted, hence you can resend them once the issue is fixed.
2. if the campaign fails midway, and if you try to rerun the campaign, then it will start from beginning and user may get duplicates. to prevent this, you could adjust your segment to exclude the customers targeted by the failed run. i can think of 2 ways, there might be more
a. every campaign run outputs to a batch table named BatchoutPRxxx on class Data-BatchOutPRxxx , you could build a segment on this class and when re-running the campaign, use it as exclusion on your campaign segment.
b. every offer flow execution inserts a IH fact record with Pending-Neutral response. you could update your strategy in such a way that you omit offers already send to a certain customer. so rerunning campaign will not cause duplicate offers send to customers
3. i couldnt understand your question, can you elaborate. I assume you might be looking for some sort of reporting/alert mechanism. There are admin emails sent out wrt to campaign status change, including failure.
In case you want to churn some stats on campaign runs, you could create report definition on .RunStatistics page PegaMKT-Work-ProgramRun class.
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
M1 Ltd
SG
Thanks, Manu.
1. outbound transmission is an async process, ie, output of the campaign goes to an intermediate/staging table, pr_data_corr_email, in your case, for email campaigns. The campaign status will get successful after inserting required records to pr_data_corr_email table.
The transmission of emails is performed by a separate agent SendEmailsinBulk, it keeps looking for records in pr_data_corr_email table and starts transmitting as soon as it find them. If successfully sent, the record is removed from this table
In case of error during transmission, the record is updated with the error message. there is also a number of retries, i think 3, before it is recorded as failed to send.
The record is not deleted, hence you can resend them once the issue is fixed.
a) Can I imply that Pega behaves the same for sending of SMS?
b) How do I ensure that all the emails/SMS has been sent out from Pega front end?
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
Thanks, Manu.
1. outbound transmission is an async process, ie, output of the campaign goes to an intermediate/staging table, pr_data_corr_email, in your case, for email campaigns. The campaign status will get successful after inserting required records to pr_data_corr_email table.
The transmission of emails is performed by a separate agent SendEmailsinBulk, it keeps looking for records in pr_data_corr_email table and starts transmitting as soon as it find them. If successfully sent, the record is removed from this table
In case of error during transmission, the record is updated with the error message. there is also a number of retries, i think 3, before it is recorded as failed to send.
The record is not deleted, hence you can resend them once the issue is fixed.
a) Can I imply that Pega behaves the same for sending of SMS?
b) How do I ensure that all the emails/SMS has been sent out from Pega front end?
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
2. if the campaign fails midway, and if you try to rerun the campaign, then it will start from beginning and user may get duplicates. to prevent this, you could adjust your segment to exclude the customers targeted by the failed run. i can think of 2 ways, there might be more
a. every campaign run outputs to a batch table named BatchoutPRxxx on class Data-BatchOutPRxxx , you could build a segment on this class and when re-running the campaign, use it as exclusion on your campaign segment.
b. every offer flow execution inserts a IH fact record with Pending-Neutral response. you could update your strategy in such a way that you omit offers already send to a certain customer. so rerunning campaign will not cause duplicate offers send to customers
d) How do I determine what is the batch table name?
e) Where do I retrieve the IH Fact record?
f) I believed that in the initial run, the BatchoutPRxxxx table is not created, how do I created the class if the table is not available? It will also mean that we will need to create a lot of classes for the batch output as we are building more and more campaigns.
g) From the logic, it seems that we will need to pause, modify to include the additional check, and then rerun the campaign, should it encounter any issues.
3. i couldnt understand your question, can you elaborate. I assume you might be looking for some sort of reporting/alert mechanism. There are admin emails sent out wrt to campaign status change, including failure.
In case you want to churn some stats on campaign runs, you could create report definition on .RunStatistics page PegaMKT-Work-ProgramRun class.
h) Where can I configure in the campaign to send out emails on the outcome of campaign? Is it possible to extend this capability to sending of SMS? (Sending of SMS is not an issue to us, as we provide SMS Service).
i) Related to my query (b) above, if the system encountered some technical issue in sending of email/SMS, how can the Pega be configured to notify us?
j) We have a system for our customer service to log in to view customer records in the event that customer called in for queries. Thus, we will need to push the information over to that system so that our customer service is aware of such a campaign is available to the customer. At the moment, we manually push the output the campaign base into a fixed table in the campaign strategy. I am wondering can we do away with the fix table, and pull the campaign base directly from the campaign tables? This will help to minimise the error caused by our marketing users.
Sorry for asking so many basic questions. I am still a newbie in Pega.
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
Pegasystems Inc.
GB
Hi
Can you tell which Pega Marketing version you are using, the Email/SMS outbound functionality might have changed in PM 7.4 where we leverage more of Decision dataflows for bulk processing
a) Can I imply that Pega behaves the same for sending of SMS?
[Manu] yes,
b) How do I ensure that all the emails/SMS has been sent out from Pega front end?
[Manu] if successfuly sent, the record is deleted, so ideally this table should get cleared if all the emails are sent.
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
[Manu] since the record is deleted from the staging table once its sent, there woulnt be any duplication.
For failed records that got left in the table, you might have to update the status back to "Pending-Delivery" so that they get picked by the agent. The agent runs every 30 secs i think looking for records in the table.
Hi
Can you tell which Pega Marketing version you are using, the Email/SMS outbound functionality might have changed in PM 7.4 where we leverage more of Decision dataflows for bulk processing
a) Can I imply that Pega behaves the same for sending of SMS?
[Manu] yes,
b) How do I ensure that all the emails/SMS has been sent out from Pega front end?
[Manu] if successfuly sent, the record is deleted, so ideally this table should get cleared if all the emails are sent.
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
[Manu] since the record is deleted from the staging table once its sent, there woulnt be any duplication.
For failed records that got left in the table, you might have to update the status back to "Pending-Delivery" so that they get picked by the agent. The agent runs every 30 secs i think looking for records in the table.
d) How do I determine what is the batch table name?
[Manu] couple of ways,
from the campaign page, select the Schedule Run -> Reports -> Batch Execution Report, in the opened dialog you would see the PR-xxx in the filtered by section
Every campaign run generates a Dataflow run, so if you know the date/time of campaign run, you could check the Decisioning Batch data flows landing page and check the Dataflow run id like PR-xxx for the same date and time. please note that the Data flow runs gets deleted for successful campaigns. only failed DF runs are not deleted.
e) Where do I retrieve the IH Fact record?
[Manu]if using from dataflows, there is a pyInteractionHistory dataset. In strategy, there are 2 components Proposition Data and Interaction History component fetches the interaction history.
f) I believed that in the initial run, the BatchoutPRxxxx table is not created, how do I created the class if the table is not available? It will also mean that we will need to create a lot of classes for the batch output as we are building more and more campaigns.
[Manu] these classes and table are generated by the system, and is a prequisite for the campaign dataflow run. if they are not created, there will be campaign failure.
g) From the logic, it seems that we will need to pause, modify to include the additional check, and then rerun the campaign, should it encounter any issues.
[Manu]Ideally your strategy should be built in such a way that rerunning the campaigns wouldnt emit the same offers again.
h) Where can I configure in the campaign to send out emails on the outcome of campaign? Is it possible to extend this capability to sending of SMS? (Sending of SMS is not an issue to us, as we provide SMS Service).
[Manu]you have to configure the "PegaMKT-Work" email account. this is some you could customise bu i have not tried this, hence dont know how you could do this.
i) Related to my query (b) above, if the system encountered some technical issue in sending of email/SMS, how can the Pega be configured to notify us?
[Manu]the sending of Admin emails are different to outbound campaign emails. outbound campaign emails are sent by the agent and normally uses a different email account.
Admin emails are correspondences from campaign work item.
j) We have a system for our customer service to log in to view customer records in the event that customer called in for queries. Thus, we will need to push the information over to that system so that our customer service is aware of such a campaign is available to the customer. At the moment, we manually push the output the campaign base into a fixed table in the campaign strategy. I am wondering can we do away with the fix table, and pull the campaign base directly from the campaign tables? This will help to minimise the error caused by our marketing users.
[Manu] instead of copying the data of the campaign outside of Pega, may be you could integrate with Pega system using services like SOAP or REST.
you can identify from Interaction history if the customer was part of outbound campaign. in PR_DATA_IH_FACT, the record with latest pyOutcomeTime would be the latest record of a certain pySubjectID (aka customer Id). joining with PR_DATA_IH_DIM_CONTEXT you could identify if user has contacted with outbound campaign and also whether user has already responded or not.
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
M1 Ltd
SG
Thanks, Manu.
Can you tell which Pega Marketing version you are using, the Email/SMS outbound functionality might have changed in PM 7.4 where we leverage more of Decision dataflows for bulk processing
[TTS] We are using PM7.22, and we are considering whether shall we proceed with 7.4. We are afraid that it is not stable and it will affect our campaign roll out.
Thanks, Manu.
Can you tell which Pega Marketing version you are using, the Email/SMS outbound functionality might have changed in PM 7.4 where we leverage more of Decision dataflows for bulk processing
[TTS] We are using PM7.22, and we are considering whether shall we proceed with 7.4. We are afraid that it is not stable and it will affect our campaign roll out.
b) How do I ensure that all the emails/SMS has been sent out from Pega front end?
[Manu] if successfuly sent, the record is deleted, so ideally this table should get cleared if all the emails are sent.
[TTS] This checking is done at the back-end, how about the front-end?
At times, we need to send out email/sms to our customer to register their interest in newly launched product, like iphone launch. Due to constrain in our source system, we will need to send out the invitation in batches of ~500 to 2000. If we based on the front end, monitored in the front end, we will see that the invitation is out in a couple of seconds, but at the back end, but the actual process may takes around half-an-hour. Usually, the campaigns, from building to execution, is handled by our marketing user; we empowered them to do it themselves. Therefore, how can we reduce the discrepancy between what they saw at the front-end and what is happening in the back-end?
(i) Alternatively, are we able to specify the channel to be ASYNC or SYNC mode? i.e. we create new channels to execute the campaign in SYNC mode?
(ii) Another suggestion is that we send a message to the marketing user. I.e. after sending the full customer base, we will send additional message (can be the communication message) to 1 or more internal/marketing user (depending on the communication channel, email or SMS)? When the user receive the message, they will know that the batch has completed, and then they are ready to proceed with next batch.
We will prefer the second work-out, as it is a way to assure us that the campaigns are executed successfully. We have quite a number of recurring campaigns running now, and we can only assume that that they are running fine. Even if the campaign fails, we will not know, and only be notified by customer service, or other teams to notify us; this may lead to customer complains and it is not reflecting good image on the company.
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
[Manu] since the record is deleted from the staging table once its sent, there woulnt be any duplication.
For failed records that got left in the table, you might have to update the status back to "Pending-Delivery" so that they get picked by the agent. The agent runs every 30 secs i think looking for records in the table.
[TTS] If we are sending in SYNC mode, then we will need to handle this.
j) We have a system for our customer service to log in to view customer records in the event that customer called in for queries. Thus, we will need to push the information over to that system so that our customer service is aware of such a campaign is available to the customer. At the moment, we manually push the output the campaign base into a fixed table in the campaign strategy. I am wondering can we do away with the fix table, and pull the campaign base directly from the campaign tables? This will help to minimise the error caused by our marketing users.
[Manu] instead of copying the data of the campaign outside of Pega, may be you could integrate with Pega system using services like SOAP or REST.
you can identify from Interaction history if the customer was part of outbound campaign. in PR_DATA_IH_FACT, the record with latest pyOutcomeTime would be the latest record of a certain pySubjectID (aka customer Id). joining with PR_DATA_IH_DIM_CONTEXT you could identify if user has contacted with outbound campaign and also whether user has already responded or not.
[TTS] This is what I am trying to achieve, to create a stored procedure for the other parties to call.
The PR_DATA_IH_FACT is only reflecting customer that we have contacted in the campaign. Is it possible to extract the campaign information related to that contact?
[TTS] for the middle questions, I am still digesting your answers.
-
Sergiy Ladnych
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
M1 Ltd
SG
Hi,
Any update?
Regards.
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
![](https://accounts.pega.com/sites/default/files/styles/user_image/public/1689970000/0d7d463c-332b-4922-a5a7-63bcd2fa82de.png?itok=pcSOjeUi)
Pegasystems Inc.
GB
Hi
I kindly request to split this discussion into individual topics as its started to expand over to various different functionalities, if the questions are concise may be others can also chip in on the discussions.
on this current discussion i see 2 major topics, i will try to answer concisely, however you could create a new post on it if you have further queries.
1. Queries related to email transmission.
2. Queries related to campaign data.
1. Queries related to email transmission. :-
a. we dont have sync or async mode, i was just trying to describe it wrt to how the product behaves. Campaign Email transmission is always performed by an Agent, just like Campaigns. Agents are critical in PM functionality, so in case of problem, we will see the sendEmailsInBulk Agent going down. hence i think there is no front end here. also the email agent will pick up as soon as it sees record in the corresponding table. it will not wait for the campaign to finish, then start transmission. Since campaign processing occurs in partitions and batches, it can be almost as soon as the first 250 customer batch.
b. we send an email (configure PegaMKT-Work email account) in case campaign fails, rescheduled, suspended etc.
Hi
I kindly request to split this discussion into individual topics as its started to expand over to various different functionalities, if the questions are concise may be others can also chip in on the discussions.
on this current discussion i see 2 major topics, i will try to answer concisely, however you could create a new post on it if you have further queries.
1. Queries related to email transmission.
2. Queries related to campaign data.
1. Queries related to email transmission. :-
a. we dont have sync or async mode, i was just trying to describe it wrt to how the product behaves. Campaign Email transmission is always performed by an Agent, just like Campaigns. Agents are critical in PM functionality, so in case of problem, we will see the sendEmailsInBulk Agent going down. hence i think there is no front end here. also the email agent will pick up as soon as it sees record in the corresponding table. it will not wait for the campaign to finish, then start transmission. Since campaign processing occurs in partitions and batches, it can be almost as soon as the first 250 customer batch.
b. we send an email (configure PegaMKT-Work email account) in case campaign fails, rescheduled, suspended etc.
2. Queries related to integrating campaign data. : yes, pySubjectId in the IH FACT table (or the communication history view) is the customer Id, so you can make join with customer table. the campaign PR number can also be figured out from the Response Context dimension as well.
this data structure can built using dataflows and datasets and use a service integration to get the required data to external systems.
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
![](/profiles/pega_profile/modules/pega_user_image/assets/user-icon.png)
Accenture
RO
Hello,
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
[Manu] since the record is deleted from the staging table once its sent, there woulnt be any duplication.
For failed records that got left in the table, you might have to update the status back to "Pending-Delivery" so that they get picked by the agent. The agent runs every 30 secs i think looking for records in the table.
We tried to do this, but the records are getting back in the table with the status Failed and no error message. Did you encountered the same situation? Or do you know which is the cause?
Hello,
c) In the event of technical failure during the sending of email/SMS, how do I restart the sending from the point of failure at the front end? Pega has already tag the campaign as completed and no further action is required.
[Manu] since the record is deleted from the staging table once its sent, there woulnt be any duplication.
For failed records that got left in the table, you might have to update the status back to "Pending-Delivery" so that they get picked by the agent. The agent runs every 30 secs i think looking for records in the table.
We tried to do this, but the records are getting back in the table with the status Failed and no error message. Did you encountered the same situation? Or do you know which is the cause?
Thank you!