100% found this document useful (1 vote)
202 views55 pages

Sublime Text

This document contains various settings, configuration details, and troubleshooting steps related to Responsys. It includes email IDs, account and pod details, server roles, steps to access configuration files, log locations, and SQL queries. Troubleshooting sections provide guidance on checking event flow status, creating conversion links, viewing program stages and states in the database, and unpublished programs before deleting folders.

Uploaded by

Anonymous tMfxW4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
100% found this document useful (1 vote)
202 views55 pages

Sublime Text

This document contains various settings, configuration details, and troubleshooting steps related to Responsys. It includes email IDs, account and pod details, server roles, steps to access configuration files, log locations, and SQL queries. Troubleshooting sections provide guidance on checking event flow status, creating conversion links, viewing program stages and states in the database, and unpublished programs before deleting folders.

Uploaded by

Anonymous tMfxW4
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 55

Email Ids:

----------
email ids

628007037
241055

[email protected] [email protected]

[email protected] [email protected]

[email protected] [email protected]

[email protected]

FHGXUBY6

232187, 232287

[email protected]
22573376

PRG_STAGE GRP_ENACTMENT_LOG

<p><#fail "Fail The Launch"></p>

To access settings.ini at account level:


[spagonda@admin01-eng1 ~]$ sudo -u rsvp -i -H
[spagonda@admin01-eng1 ~]$ cd /usr/responsys/site/accounts/shashiqa/
[spagonda@admin01-eng1 programteam]$ vi settings.ini

To access Podconfig.ini:
[spagonda@admin01-eng1 shashiqa]$ cd ../../config
[spagonda@admin01-eng1 config]$ vi PodConfig.ini

23615369 - ENACTMENTS GETTING STUCK AT EMAIL CAMPAIGN IN TRIGGERED MODE FOR DROPBOX
ENABLED

===================================================================================
=============

POD: QA1
Build: 631008694
Account: exachalla

6.31 FF1/New Features/Programs/Remove Commom Dependency on Programs


Ground Floor, 1st Main, No,33-7/1, Asthalakshmi Layout
Near PuttenaHalli Circle, JP Nagar 7th Phase
BANGALORE, KARNATAKA 560078
India

Important Notes:
-----------------
Important Notes

PUTTY
To access settings.ini at account level:
[spagonda@admin01-eng1 ~]$ sudo -u rsvp -i -H
[spagonda@admin01-eng1 ~]$ cd /usr/responsys/site/accounts/shashiqa/
[spagonda@admin01-eng1 programteam]$ vi settings.ini

EnactmentBatchDuration.CustomerDeactivated=0

updateEnactmentStatustoBlocked

To access Podconfig.ini:
[spagonda@admin01-eng1 shashiqa]$ cd ../../config
[spagonda@admin01-eng1 config]$ vi PodConfig.ini

[csrao@admin01-eng1 ~]$ sudo -u rsvp -i -H


[rsvp@admin01-eng1 ~]$ ssh pubweb01-eng1

To make changes to files:


sudo -u rsvp -i -H

launch01-qa1.qa1.dc2.responsys.com=ALL
launch1001-qa1.qa1.dc2.responsys.com=ALL

launch04-qa1.qa1.dc2.responsys.com=003;004
launch02-qa1.qa1.dc2.responsys.com=003
spam01-qa1.qa1.dc2.responsys.com=003;004;005
spam1001-qa1.qa1.dc2.responsys.com=003;004;005

629/CF/Full Functional Regression/Interact Programs/Program Skip Retry/Program Skip


Retry

P_Sanity_CustomerActivated_Program_ChannelClientEnabled (Pgm ID: 496661)

[ChannelClient]
SmallBatchThreshold=1000
LaunchCompleteNotificationJobFrequencyInSecs=15
ChannelClientEnabled=false

cd/usr/local/responsys/logs/ri

ls -ltr

tail -f stderr.log

vim stderr.log

ca1-c-rsp-rds-01.responsys.net

-----------------------------------------------------------------------------------
---

SERVERS
PUB WEB server : for tracking the open, clicks and conversion
pubweb server contains Web Event Listner(wel) and Web Event Processor(WEP).

DISPATCHER Server : for building work list. Choosing the audience, filters the
opted out in records, emails that are invalid etc..the basic job of building work
list is to get the correct audience for the program

PERSONALIZER SERVER : For sending emails with personalization values defined.

ui01 server for all the program APIs

-----------------------------------------------------------------------------------
---
BLOCK

CUST DB:

select* from program_graph where program_id='164361';

select * from grp_enactment where program_id='164361';

select * from program where id='164361';

update grp_enactment set stage_id = 'a_1458637051617 1', group_state='B' where


grp_enactment_id='152421';

commit;

SysAdmin DB:

select * from qzl001_4_TRIGGERS where trigger_group ='prg-37807'

select * from prg_block where program_id=164361;

insert into PRG_BLOCK values ('6499:164361:a_1458637051617


1',6499,164361,'a_1458637051617 1','Start collaboration','Collab
Event','A','E','22-NOV-15 02.34.01.826000000 PM','22-NOV-15 02.35.01.826000000
PM',1,'Start collaborationStartCollaboration stage: stageLabel because of a
failure on server','Start collaborationStartCollaboration stage: stageLabel
because of a failure on server','Y');

commit;

select * from qzl001_4_TRIGGERS where trigger_group ='prg-37807'

-----------------------------------------------------------------------------------
---
Event Flow

How to check if event flow is enabled or not.

Login to SysLocal Shared Event DB. Access EF_EVENT_STATUS. Query this table using
account ID. We need to look into the column called APPLICATION_NAME, it will have
values for behtargetting and reporting. Also, check the column IS_ENABLED for
checking if behtargetting/reporting is enabled/disabled. Also check EVENT_TABLES
column.

For example:
select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%';
IS_ENABLED table will contain value Y for the EVENT_TABLES that are enabled.

-----------------------------------------------------------------------------------
---
How to create a conversion link
1. Open an EMD campaign.
2. Go to Campaign Settings > Tracking options. Check the checkbox for "Track
conversions". Save
3. Ensure to turn on Link tracking for the campaign. Select the link table.
4. Go to Folders > Right click menu of the campaign > Campaign URLs.
5. Under the Conversion Tracking Tag, select the entire string under the tag <>
i.e., <IMG SRC="http://rsp.ServerName.net/pub/cct?_ri_=X0Gzc2X%3DS%3AzbHS%3ASRCR
%3Aq&_ei_=EnVd2LoBFEIeOzPXj3wLH0Y"WIDTH="1" HEIGHT="1">
6. Now, create an HTML document and place this between the body tag.
sample HTML:

<html>
<head>
<title>Thank you!</title>
</head>
<body>
<p>Thank you for your order! We appreciate your business.</p>
<IMG SRC="http://rsp.ServerName.net/pub/cct?_ri_=X0Gzc2X%3DS%3AzbHS%3ASRCR
%3Aq&_ei_=EnVd2LoBFEIeOzPXj3wLH0Y"WIDTH="1" HEIGHT="1"></body>
</html>

7. Go to Manage Hosted content and upload and publish this document.


8. Copy the public URL of the hosted document.
9. Go to Link table and add a new link name, say "Test_Conversion".
10. Paste the public URL in Link URL.
11. Now, in your campaign document, add a tag
<table border="0" cellpadding="0" cellspacing="0" width="601">
<tbody>
<tr>
<td width="149"><a href="${clickthrough('Test_Conversion')}">Click
Here</a><img src="images/NewsletterFooterBar.gif" /></td>
</tr>
</tbody>
</table>
</body>
12. Save the Campaign. Now link tracking should work for the campaign.
-----------------------------------------------------------------------------------
---
Program Stages in DB:
---------------------------
public enum StageType {
START('S'), ACTIVITY('A'), GATE('G'), TIMER('T'), END('E');

Program States in DB:


--------------------------
public enum StageState {
ENTERED('E'), WAITING('W'), BLOCKED('B'),
// 6.20 enactment states for batch process
MIGRATING('M'), PENDING('P'), READY('R'), EXECUTING('X');
-----------------------------------------------------------------------------------
---

<p><a href="${clickthrough('textlink_HTTP')}">Click Here</a>


</p>

-------------------------------------------------------------------

How to check the logs of personalizer... which is the personalizer for the given
arg.

ApplicationHosts in Podconfig, see for which arg, which launch server is assigned..
see stdrlog and critical log.

Then check the EF_EVENT_STATUS table to see if IS_ENABLED is false.. and


failurecount=0 in shared event DB

Update these to IS_ENABLED=Y and failurecount=5.

Triggere the program and check logs.. if there is any issue with event flow, it
will be listed in tool01 or personalizer stdrlogs.. if there is any issue with
event flow, the IS_ENABLED will become N again

-----------------------------------------------------------------------------------
-----------------

How to unpublish all programs in a folder so that you can delete the folder.

select * from program where id=38727;

select * from program where folder_id=20607 and ACTIVE_VERSION!=0;

update program set Active_version=0 where folder_id=20607 and ACTIVE_VERSION!=0;


commit;

Very Important:
=================

----------------------------------------------------------------------------------
1.

ChannelClientEnabled=0
EnactmentBatchEnabled=0
EnactmentBatchDuration.CustomerActivated=30

In this case, if program flow is like -


CA > Email Campaign > Timer > End.

All enactments will go through as trigger mode. Pure Trigger mode is possible.
All enactments can be found in prg_enactment table. Enactments will not go tp
grp_enactment.

What ever value you give to customer activated duration is invalid

In PODlevel: for pure trigger, Auto Retry will be enabled by default.

----------------------------------------------------------------------------------

2.

ChannelClientEnabled=0
EnactmentBatchEnabled=1
EnactmentBatchDuration.CustomerActivated=30

In this, all the customer activated enactments(prg_enactment table) will be


converted to batch(batch engine) in 30 seconds and moved to grp_enactment table.
Until 30 seconds, it will be there in prg_enactment table.

If you have a campaign after customer activated, these enactment will be a trigger
launch only.

In this settings, pure trigger flow is not possible.

----------------------------------------------------------------------------------

3.

BatchOfOne

ChannelClientEnabled=0
EnactmentBatchEnabled=0
SingleEnactmentBatchingViaBatchEngineEnabled=1
SingleEnactmentBatchingAutoRetryEnabled=1
EnactmentBatchDuration.CustomerActivated=0

In this setting, all triggered enactments will be moved directly to batch. You will
not find any records in prg_enactment table. All enactments will be moved to
grp_enactment directly.

If any enactments get blocked in campaign stage, auto retry will happen.

Trigger mode testing is not possible in this case.

-----------------------------------------------------------------------------------
--

4.

ChannelClientEnabled=0
EnactmentBatchEnabled=0
SingleEnactmentBatchingViaBatchEngineEnabled=1
SingleEnactmentBatchingAutoRetryEnabled=1
EnactmentBatchDuration.CustomerActivated=60

In this settings, all enactments will wait in prg_enactment table for 60 seconds
and move to grp_enactment table after 60 seconds.

If any enactments get blocked in campaign stage, auto retry will happen.

In this setting, trigger to batch can be done.

Pure trigger not possible.

-----------------------------------------------------------------------------------
--

on which servers the wars are deployed confluence page

https://confluence.oraclecorp.com/confluence/display/RES/Server+respective+war+File
s+List+according+to+POD%27s

-----------------------------------------------------------------------------------
--

Video link to Surender's demo on RR:


https://confluence.oraclecorp.com/confluence/display/RES/Rapid+Retargeter+Evolution
#RapidRetargeterEvolution-OperationalDeepDiveSessionRecording

-----------------------------------------------------------------------------------
---
To check when the batchtimerjob will run:

select * from qzl001_4_TRIGGERS where trigger_group ='prg-37807' -


37807(shashiqa)
-----------------------------------------------------------------------------------
---

POD LEVEL
To Pause:
JMX Console - pauseAllActivePrograms()
PodConfig - SuspendProgramExecution=1

To resume:
PodConfig - SuspendProgramExecution=0
JMX Console - resumeAllActivePrograms()

ARG LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByArg(ARG id)
PodConfig - SuspendProgramExecutionInArgs=argid_1 (multiple ARGS
separated by semicolon)

To resume:
PodConfig - SuspendProgramExecutionInArgs=
JMX Console - resumeAllActiveProgramsByArg(ARG id)

ACCOUNT LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByAccount (Act id)
PodConfig - SuspendProgramExecutionInAccounts=act_1 (multiple Accounts
separated by semicolon)

To resume:
PodConfig - SuspendProgramExecutionInAccounts =
JMX Console - resumeAllActiveProgramsByAccount (Act id)
Cross Program:
--------------
CrossProgram Events

Tables:
-------
PRG_CPO_DEPENDENCY

select * from PRG_CPO_DEPENDENCY where program_id=251467; -- Throw

select * from PRG_CPO_DEPENDENCY where program_id=251567; -- Catch

select * from PRG_CPO_DEPENDENCY where program_id=252147; -- Catch 02

select * from PRG_CPO_DEPENDENCY where program_id=252407; -- Catch 03 List Change

select * from grp_enactment_log where ACTION='CREATE_NEW' and reason like


'%cpoEventId%' and program_id=251467 order by created_dt desc;

select * from grp_enactment_log where ACTION='CREATE_NEW' and reason like


'%cpoEventId%' and program_id=252147 order by created_dt desc;

select * from prg_enactment_0000252967; - Throw


select * from prg_enactment_0000253067; - Catch

Scenarios to Test
-----------------
Pause unpause
Test Programs
Triggered mode
Batch Mode
Batch Trigger mode
Enactment Batching Enabled
Enactment Batching Disabled
Batch Of one
Upddating the catch programs/re-publishing
Updating the throw programs/re-publishing
ETVs
Corner Scenarios
CPO should work for all channels - Push, InApp, SMS, MMS, Email

ETV with Custom Event.


ETV with custom list fields.
ETV with PET.

AppCloud:
---------

FOR APP CLOUD, enactmentbatching should be enabled compulsorily.

Snail Mail App install URL:


---------------------------
https://interact-
a.eng1.responsys.net/interact/appCloud/manageAppCloud/snailmail/install?
accountName=shashiqa

App Cloud important user stories:


---------------------------------
RSYS-3916 AppCloud DB Tables

RSYS-4826 AppCloud Channel Program Platform Infrastructure


https://jira.oraclecorp.com/jira/browse/RSYS-4826

https://confluence.oraclecorp.com/confluence/display/RES/Get+Apps

https://jira.oraclecorp.com/jira/browse/RSYS-3542

RSYS-2779
Enhancement to handle app failure

App Cloud confluence Links:


---------------------------
https://confluence.oraclecorp.com/confluence/display/RES/AppCloud+Inbound+Channel+T
echnical+Design

https://confluence.oraclecorp.com/confluence/display/RES/App+Cloud+Inbound+Webservi
ces

https://confluence.oraclecorp.com/confluence/display/RES/Transaction+Validation+-
+Orion+6.27

DB Tables:
----------
E_RECIPIENT_APPCLOUD_SENT
PRG_APPCLOUD_INBOUND_PARAM
PROGRAM_DROPBOX_ENTRY
E_RECIPIENT_APPCLOUD_INBOUND
APPCLOUD_APP_PARAM
E_RECIPIENT_APPCLOUD_INBOUND

Built In:
---------
${campaign.id}

WHO
Launch Event Listener(producer) and Dropbox client(consumer)
WHAT
Today we have a LaunchListenerJob that picks up the records from dropbox table that
are in the New state every 15 mins (configurable). The existing LaunchListenerJob
should be modified not only to pick the records in New status but also queued ones.
If LEL app server goes down after status changed to QUEUEING, but before message
sent to the consumer , records be queued (STATE =Q) for ever. Such records need to
be retried to allow for reprocessing.
WHY
To recover elegantly from failures.
ACCEPTANCE CRITERIA
Possible failure scenarios
1. If DB has gone down during the processing, the processing should resume once the
DB has come up.
2. If LEL has gone down during the processing, the processing should resume once
the LEL has come up.
3. If JMS has gone down during the processing, the processing should resume once
the JMS has come up.
4. If Personalizer has gone down during the processing, the processing should
resume once the Personalizer has come up.
Expected behavior is
The records should be picked irrespective of the status (New/Queued/Processing)
when the failure occurs
The records would be retried for the configured number of retry attempts every 10
minutes (??) and records that are being processed for
FailedRecordsProcessingDurationInMins minutes would be retried.
[ProgramDropbox]
RetryCount=4
FailedRecordsProcessingDurationInMins=60
After the number of retries the records would be updated as failed (F) and the
failure reason would be updated in the PROGRAM_DROPBOX.EXTRA_INFO column. Failure
reasons would be truncated at 4000 chars.
The records marked as Failed would eventually be persisted to PRG_BLOCKED_EVT_prgId
table and picked up by existing BlockedEventRecovery job to replay them to program
engine batch or program engine triggered
TEST APPROACH
Create a program with ChannelClient enabled account.
After dropbox tables are populated by LEL and Dropbox client is called to notify
Program Dropbox of the batches that are persisted.
Now after Batch is updated with status=Q bring the LEL application server down.
The records should still be sent to the Program engine eventually

Important:
----------
EnactmentBatching should be enabled for AppCloud with Inbound Action
Distributed Task model:
-----------------------
Distributed Task Model
https://confluence.oraclecorp.com/confluence/display/RES/6.29+Acct+QoS+and+Task+Man
agement+QA+Guide

Imp User Stories/Epic:

EPIC: https://jira.oraclecorp.com/jira/browse/RSYS-887

QoS
---
https://jira.oraclecorp.com/jira/browse/RSYS-887

6.29 Account QoS and Task Management


# Below properties define Program specific configurations for Distributed Task.
#
# To enable Distributed Task for an account, the following properties MUST be set:
# 1. AsyncProgramEngineEnabled=1
# 2. DistributedTaskEnabled=1
# 3. [ARG_ID].DistributedTaskManagerEnabled=1
# The ARG_ID is the ARG where the account belongs to.
#
# For example, to enable Distributed Task for the account 'programteam' (in ARG
004):
# 1. Account settings.ini has:
# [Programs]
# AsyncProgramEngineEnabled=1
# DistributedTaskEnabled=1
# 2. PodConfig has:
# [Programs]
# 004.DistributedTaskManagerEnabled=1
#
#
# -- DistributedTaskEnabled --
# (1: enable Distributed Task , 0: disable DistributedTask)
# To enable Distributed Task, it is required to enable Async Program Engine
(AsyncProgramEngineEnabled=1)
# By default, Distributed Task is disabled at POD level. It can be overriden by the
account settings.ini.
#
DistributedTaskEnabled=0

# -- [ARG_ID].DistributedTaskManagerEnabled --
# (1: enable Distributed Task Manager for the ARG, 0: disable Distributed Task
Manager for the ARG)
# To enable Distributed Task for the account, it is required to have
# [ARG_ID].DistributedTaskManagerEnabled=1 for the ARG that the account belongs to.
#
003.DistributedTaskManagerEnabled=1
004.DistributedTaskManagerEnabled=0
005.DistributedTaskManagerEnabled=0

The API to invoke for Pause & Unpause tasks from jmx should be in UIServer-
>programdesigner->ProgrammanagerConsole. Here is the name of the APIs:
pauseActiveProgram, which will pause the program
pauseAllActiveProgramsByAccount, which will pause all the active programs of the
account
pauseAllActiveProgramsByArg, which will pause all the active programs of the arg.
pauseAllActivePrograms, which will pause all active programs in a POD.
Similarly, the corresponding unpause APIs are:
resumeActiveProgram
resumeAllActiveProgramsByAccount
resumeAllActiveProgramsByArg
resumeAllActivePrograms

[ApplicationLimits]
MaxProfileLists=200

6.29/FF1/NewFeatures/Interact Programs/Task Manager


Audience:
---------
Audience

Audience Engine Design Documents:


https://confluence.oraclecorp.com/confluence/display/RES/Audience+Engine+Design+Doc
uments

https://confluence.oraclecorp.com/confluence/display/RES/Audience+Designer+
%3A+Engineering+Design+for+Programs

Database Tables:
----------------
AUDIENCE_NOTIFICATION
AUDIENCE_RUN
AUDIENCE_RUN_PARAMETER
AUDIENCE_RUN_LOG
PRG_STAGE_RUN
FILTER_RESULT

Parameters
-----------
MaxNumberOfConditionPerProfileTypeFilter
MaxPublishedAudiences=20(default)
AudienceMaxFilters=5(default)

select * from prg_Stage where program_id ='49147';


select * from audience_notification order by created_dt desc; this will contain
data only until the Audience is executing. When the COUNT column becomes zero in
PRG_STAGE table, all records are removed from the audience_notification table.

select * from program where id= '49147';


select * from grp_enactment where program_id='49147';
select * from grp_enactment_log where program_id='49147';
select * from program where id= '49307';
AUDIENCE_NOTIFICATION - syslocal
PRG_STAGE - Cust
GRP_ENACTMENT_LOG - Cust
PRG_STAGE_STATS
PRG_STATS_LOG
GRP_ENACTMENT
FILTER_RESULT.CACHE_IDENTIFIER

select * from AUDIENCE_NOTIFICATION where program_id=181287;


select * from AUDIENCE_RUN where program_id=181287;
select * from AUDIENCE_RUN_PARAMETER;
select * from AUDIENCE_RUN_LOG where program_id=181287;
select * from PRG_STAGE_RUN where program_id=181287
Dega Kumar <[email protected]>

Hi, In the case of Audience Designer, the flow requires Audience Engine to call
Filter Engine to populate the results in FILTER_RESULT and FILTER_RESULT_DROPBOX
tables where the RIID information is available. During the execution of the
Audience, GRP_ENACTMENT and GRP_MEMBER tables get populated with data, but at the
end of the execution, all data is deleted except for the history data in
GRP_ENACTMENT_LOG table. This contains the information regarding the creation,
execution and deletion of groups as well as the member counts at each step. For
this current case, can you please clarify the following? 1. Is the Audience
execution complete already when you are looking for the data in the database? If
yes, this data will already be deleted. 2. Is there any reason you are checking for
data in GRP_MEMBER tables? As per the design, this data will be available in
FILTER_RESULT table. Thanks, Zoheb.

select * from filter_result where program_id='49687';


select * from FILTER_RESULT_DROPBOX order by created_dt desc;

select * from PRG_AUDIENCE_STAT order by AUDIENCE_CREATED_DT desc; - Event DB

Audience ID - 49147
Program ID - 49307

select * from prg_Stage where program_id ='49147';

select * from audience_notification order by created_dt desc; this will contain


data only until the Audience is executing. When the COUNT column becomes zero in
PRG_STAGE table, all records are removed from the audience_notification table.

select * from program where id= '49147';

select * from grp_enactment where program_id='49147';

select * from grp_enactment_log where program_id='49147';

select * from program where id= '49307';

Tables:

AUDIENCE_NOTIFICATION - syslocal

PRG_STAGE - Cust

GRP_ENACTMENT_LOG - Cust

PRG_STAGE_STATS
PRG_STATS_LOG

MaxPublishedAudiences=20(default)
Maximum number of audience that can be published in an account. Unpublish few old
audiences and republish the new one for the new one to get published Or value can
be changed in account.ini

AudienceMaxFilters=5(default)
The max number of filters per audience should be a positive number greater than 1
and less than 20. The default should be 5.
Value can be changed in account.ini

[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[ 629 ]]]]]]]]]]]]]


]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]]

Main EPIC: RSYS-4816 Org. Scope support for Audiences

Epic containing stories related to supporting organization scope for Audiences when
they're used in Programs & Canvas. Also captures requirements about changes to
Audience Designer.
6.29 DM solution doc:
https://confluence.oraclecorp.com/confluence/pages/viewpage.action?pageId=188019923

-----------------------------------------------------------------------------------
-----------------------------

RSYS-5123 Audience Engine : Handle Audience Designer UI Runs

What : Handle UI (no parameters) runs in Audience Engine


Accceptance Criteria
Audience Designer UI can request Audience without passing in any parameters
There will be one AUDIENCE_RUN record created for UI run
There will be one AUDIENCE_NOTIFICATION record created for UI run
There will be NO AUDIENCE_RUN_PARAMETER record created
At the end of each run,
AUDIENCE_NOTIFICATION records that correspond to UI (REQUESTER_TYPE = DESIGNER) is
retained
AUDIENCE_RUN record that correspond to UI run will have STATUS = 'S'
At the end of each run,
AUDIENCE_NOTIFICATION records that do NOT correspond to UI run do NOT get deleted
(for eg. if Programs is calling Audience at the same time)
AUDIENCE_RUN records that do NOT correspond to current run do NOT get deleted (for
eg. if Programs is calling Audience at the same time)
AUDIENCE_RUN_PARAMETER records that do NOT correspond to current run do NOT get
deleted (for eg. if Programs is calling Audience at the same time)
If Audience gets blocked for some reason such as invalid/deleted filter,
AUDIENCE_NOTIFICATION records that correspond to current run will be retained
AUDIENCE_RUN record that correspond to current run will have STATUS = 'B'
Note:
There will be another story for Audience Designer Analyze tab to show statistics

-----------------------------------------------------------------------------------
-----------------------------
6.29
----
Audience_Run statuses.
AUDIENCE_RUN needs to have following statuses :
X New Audience which has not been run so far, This status will be created when
Audience is published successfully.
E if activation failed on the server, we can handle this scenario by showing a
different message in UI.
R Audience is currently running
B Audience is blocked.
I Audience is Initializing, Will be used only by UI.
S Audience successfully executed.

RSYS-5122 Audience Engine : Handle Multiple Concurrent Runs


https://jira.oraclecorp.com/jira/browse/RSYS-5122

What : Handle multiple (different parameters), concurrent (same parameters) runs in


Audience Engine
IMPORTANT : Please test this US for new Audiences
Accceptance Criteria
1. Multiple requesters can request Audience concurrently with DIFFERENT parameters,
each creating a new run:
For eg. 2 programs with different org scoping in Scheduled Audience
stage scheduled at the same time
This can be verified by checking AUDIENCE_RUN_LOG.RUN_ID
2. Multiple requesters can request Audience concurrently with SAME parameters and
they will create or join a single run (For eg. 2 program
For eg. 2 programs with the same org scoping in Scheduled Audience
stage scheduled at the same time
This can be verified by checking AUDIENCE_RUN_LOG.RUN_ID
3. During the Audience execution
AUDIENCE_NOTIFICATION records corresponding to requests with same input
parameters (org ids) will have the same RUN_ID value corresponding to the run in
AUDIENCE_RUN table
AUDIENCE_NOTIFICATION records corresponding to requests with different
input parameters (org ids) will have different RUN_ID values corresponding to the
run in AUDIENCE_RUN table
4. At the end of each run, ALL requesters who have same input parameters (org ids)
at the same time will get the results.
For eg. say we have 2 programs with the same org scoping (org units) in
Scheduled Audience stage are scheduled at the same time 8:00 am. In this scenario,
the Audience run will happen only ONCE with only one AUDIENCE_RUN record and one
final FILTER_ENGINE result. Both programs will get the same result with the same
result count
5. At the end of each run,
AUDIENCE_NOTIFICATION records that correspond to current non-UI run get
deleted
AUDIENCE_RUN record that correspond to current non-UI run gets deleted
AUDIENCE_RUN_PARAMETER records that correspond to current non-UI run
get deleted
PRG_STAGE_RUN records that correspond to current non-UI run get deleted
GRP_ENACTMENT records that correspond to current non-UI run get deleted
6. At the end of each run,
AUDIENCE_NOTIFICATION records that do NOT correspond to current run do
NOT get deleted
AUDIENCE_RUN records that do NOT correspond to current run do NOT get
deleted
AUDIENCE_RUN_PARAMETER records that do NOT correspond to current run do
NOT get deleted
GRP_ENACTMENT records that do NOT correspond to current run do NOT get
deleted
PRG_STAGE_RUN records that do NOT correspond to current run do NOT get
deleted

The value of parametersHash can be checked in AUDIENCE_RUN_LOG.PARAMETERS_HASH at


the end of the run
The value of parametersHash can be checked in FILTER_RESULT.CACHE_IDENTIFIER at the
end of the run

137 EPIC

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------
> If 2 or more Audiences run at the same time, the run ids will be different.
However, note that the value of PARAMETERS_HASH will be the same. ie.
A3E73B287A470E3B3FB71A76E70F890536309166061918CD8E61F32765D09D72

> In 6.29, Programs will support org scoping. Hence, the value of PARAMETERS_HASH
will be dependent on the org scoping.
a. If 2 Programs call Audience WITHOUT org scoping, the value of PARAMETERS_HASH
will be the same. ie.
C4D98F3A365D17A71D09F8621AD2CA9F3F7DDD41C8D899936F46BE59EE3DB3A4
b. If a Program calls Audience WITH org scoping, the value of PARAMETERS_HASH
will be a value determined by the value of org scoping. This value cannot be pre-
determined.
c. If 2 Programs call Audience WITH SAME org scoping, the value of
PARAMETERS_HASH will be the same. This value cannot be pre-determined.
d. If 2 Programs call Audience WITH DIFFERENT org scoping, the value of
PARAMETERS_HASH will be different. These values cannot be pre-determined.
-----------------------------------------------------------------------------------
-----------------------------
Pausing/Unpausing of Audiences follows the same process for Programs - there is NO
difference.
Email excerpt from Jose regarding Pausing

By requirement and design, the Account, ARG and Pod level settings for Pause-Resume
for programs and audiences are read from the podconfig.ini.
The only setting read from the settings.ini is to pause-resume individual programs
or audiences in an account � However, this is for internal dev use only, and is not
supported with this user story.
Here are the settings, the JMX console API and the PodConfig.ini setting.
POD LEVEL
To Pause:
JMX Console - pauseAllActivePrograms()
PodConfig - SuspendProgramExecution=1
To resume:
PodConfig - SuspendProgramExecution=0
JMX Console - resumeAllActivePrograms()
ARG LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByArg(ARG id)
PodConfig - SuspendProgramExecutionInArgs=argid_1 (multiple ARGS separated by
semicolon)
To resume:
PodConfig - SuspendProgramExecutionInArgs=
JMX Console - resumeAllActiveProgramsByArg(ARG id)
ACCOUNT LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByAccount (Act id)
PodConfig - SuspendProgramExecutionInAccounts=act_1 (multiple Accounts separated by
semicolon)
To resume:
PodConfig - SuspendProgramExecutionInAccounts =
JMX Console - resumeAllActiveProgramsByAccount (Act id)
Hope this is clear.

Please note that unpausing an Audience might take up to an hour for Audience events
to be re-processed. This is because the quartz job runs every hour.

Regards,
Jose
--------------------------------------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------
-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------

-----------------------------------------------------------------------------------
-----------------------------
The quartz trigger for �BlockedEventRecoveryJob�, that resends blocked events in
the PRG_BLOCKED_EVT_x tables to the Program Engine or Audience Engine runs once
every hour.
So, even after you resume programs in an account from the JMX console, you might
have to wait for nearly an hour to see the events being processed.
You can find the next quartz trigger fire time in one of the
QZL001_x_TRIGGERS(x=1,2,�) tables in the SYSDB.
Filter by TRIGGER_GROUP, example prg_4228_68980(prg_<AccountID>_<ProgramID>). Look
for BlockedEventRecoveryJob.

For your batch program, it was published at 4.04 am with a 4.10 am scheduled
filter. From the GRP_ENACTMENT_LOG and Analyze tab audience stats, I see that the
events were processed at 5.19 am.
For the triggered program, I see that quartz triggers were missing in the SYSDB.
The program was last published in 2014, and the table entries were deleted at some
point during maintenance or upgrade.
Natalya and me republished the program, and we see the quartz triggers now.
Also if you pause programs in an account before the scheduled filter has fired,
you�ll see the FilterEvent CRON trigger being paused in the DB, and no entries in
the BLOCKED_EVT tables.
When the programs in the account are resumed, the paused FilterEvent CRON triggers
will fire and the ScheduledFilter is processed.

So, look for the next fire time for BlockedEventRecoveryJob quartz triggers and
check after they have fired.
Also, may be create a new program for the triggered mode tests/ republish the
program. (ideally should work without it. But the one program you tested on did not
have quartz triggers. Might have been deleted any time between 2014 and now.

Let me know if you have any other questions.

From: Shashidhar Pagonda


Sent: Tuesday, March 01, 2016 5:35 AM
To: Jose Antony
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi Rao; Natalya Pavkin; Pavan T V;
Zoheb Rahiman
Subject: RE: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Hi Jose,
Looks like even Pause-Resume is not working. I have validated pause resume at
�account level� through PodConfig.ini

On pausing programs at account level


- Trigger Mode: Data populated in PRG_BLOCKED_EVT_XXXXX

- Batch Mode: Data populated in PRG_BLOCKED_EVT_XXXXX

On resuming programs at account level


Trigger Mode: No data populated in PRG_ENACTMENT_XXXXX
Batch Mode: No data populated in GRP_MEMBER_XXXXX and GRP_ENACTMENT_LOG table.

Credentials:
Cluster: QA1 POD
Account: Progmig (Id:4228)
Trigger Mode Program: HeartBeat Stage Gate-02 CA Close Gate Manually (Id: 23290)
Batch Mode Program: SF Test01 for Pause Resume (Id: 68980)

Note: If you notice any account working properly for pause resume, Please let me
know so that I can validate it and update you accordingly.

Please let me know if you need more information

Thanks
Shashi

From: Jose Antony


Sent: Tuesday, March 01, 2016 12:20 AM
To: Shashidhar Pagonda
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi Rao; Natalya Pavkin; Pavan T V;
Zoheb Rahiman
Subject: RE: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Hello Shashi,

I asked you to retest the pause-resume feature at an Account Level, ARG Level and
Pod level � all these settings are in the podconfig.ini.
Seems like you have your settings in the settings.ini.
By requirement and design, the Account, ARG and Pod level settings for Pause-Resume
for programs and audiences are read from the podconfig.ini.
The only setting read from the settings.ini is to pause-resume individual programs
or audiences in an account � However, this is for internal dev use only, and is not
supported with this user story.

Here are the settings, the JMX console API and the PodConfig.ini setting.

POD LEVEL
To Pause:
JMX Console - pauseAllActivePrograms()
PodConfig - SuspendProgramExecution=1

To resume:
PodConfig - SuspendProgramExecution=0
JMX Console - resumeAllActivePrograms()

ARG LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByArg(ARG id)
PodConfig - SuspendProgramExecutionInArgs=argid_1 (multiple ARGS
separated by semicolon)

To resume:
PodConfig - SuspendProgramExecutionInArgs=
JMX Console - resumeAllActiveProgramsByArg(ARG id)

ACCOUNT LEVEL
To Pause:
JMX Console - pauseAllActiveProgramsByAccount (Act id)
PodConfig - SuspendProgramExecutionInAccounts=act_1 (multiple Accounts
separated by semicolon)

To resume:
PodConfig - SuspendProgramExecutionInAccounts =
JMX Console - resumeAllActiveProgramsByAccount (Act id)

Hope this is clear.

Regards,
Jose

From: Shashidhar Pagonda


Sent: Monday, February 29, 2016 1:28 AM
To: Jose Antony
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi rao
([email protected]); Natalya Pavkin; Pavan T V; Zoheb Rahiman; Naresh
Jamwal; Richard Conrad; David Yuan
Subject: RE: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Hi Jose,

Thanks for the update. Please see my comments as below and let me know if you need
more information on it.

Thanks
Shashi
From: Jose Antony
Sent: Thursday, February 25, 2016 4:27 AM
To: Shashidhar Pagonda
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi Rao; Natalya Pavkin; Pavan T V;
Zoheb Rahiman; Naresh Jamwal; Richard Conrad; David Yuan
Subject: RE: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Hello Shashi,

For operations, we support Pause/Resume of Programs and Audiences at an Account


level, ARG level and Pod level.
Program or Audience level pause-resume is for dev use only.

From your mail, I understand that you are pausing an audience at Audience level
from the podConfig.ini. How do you specify which account the audience is paused for
? #On invoking �pauseActiveProgram� from jmx we use to define account id.#
This is an invalid use case as program/audience level pause-resume should be done
using the settings.ini, however we don�t support this for operations. #We have
tried this from settings.ini as well.#
Can you please retest the use cases using pause-resume at Account level, ARG level
and Pod level(from podconfig.ini) # I have tried again with all below use cases.
Please provide your updates on it.#

Use cases Account/Pod Audience/ Program Audience/Program's Analyze tab DB


Tables
1 Settings.ini Audience: It is paused from both settings.ini and jmx On
clicking 'Run' Stats are updated QZL001_4_TRIGGER : BlockedEventRecovery Paused
2 Settings.ini Audience: Paused from both settings.ini and jmx
Program: Not Paused When Audience is in Paused state, Program got triggered
-
3 Settings.ini Audience: Paused from both settings.ini and jmx
Program: Paused from both settings.ini and jmx When both Audience and Program is
in Paused state, program didn�t triggered QZL001_4_TRIGGER : All jobs in this
program are Paused
No data in GRP_ENACTMENT_LOG table
4 Settings.ini Audience: Not Paused
Program: Paused from both settings.ini and jmx No Data in Analyze tab of Programs
and Audience QZL001_4_TRIGGER : All jobs in this program are Paused
No data in GRP_ENACTMENT_LOG table

Also, we observe that when an audience is paused and RUN button clicked, a refresh
of the page shows stale results from a previous run. The current request events are
blocked properly. #Paused an Audience which didn�t run even once. On clicking Run
enactments are moving to Final Audience. Current request events didn�t blocked#
Can you verify this behavior. You can look into the group enactment logs to check
if the audience is running or not.

Regards,
Jose

From: Zoheb Rahiman


Sent: Wednesday, February 24, 2016 10:13 AM
To: Shashidhar Pagonda; Jose Antony
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi Rao; Natalya Pavkin; Pavan T V
Subject: RE: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Including Jose who worked on the User Story.

Thanks,
Zoheb.

From: Shashidhar Pagonda


Sent: Wednesday, February 24, 2016 4:05 AM
To: Zoheb Rahiman
Cc: Mark Murthy; Jyothi Nellore; Challa Sanyasi rao
([email protected]); Natalya Pavkin; Pavan T V
Subject: Queries on B-09866 Audience Engine : Support Pausing of Audiences

Hi Zoheb,

We have validated this US �B-09866 Audience Engine : Support Pausing of Audiences�


on Eng1 POD. As per below observations, Could you please provide an update on it ?

Audience:
- Paused an Audience from PodConfig.ini then from jmx.
- Audience is paused properly

- When I �Run� Audience from Analyze tab, Enactments are moving properly even
though �Audience� is in Paused state (Is this expected?)

Program:
- Program1:
? Published a new program with above �Audience� and program is getting
triggered properly even �Audience� is in Paused state (Is this correct?)
- Program2:

627_PEG and BEH


----------------
627_PEG and BEH

Event Flow:
https://confluence.oraclecorp.com/confluence/display/RES/Event+Flow

Database Tables:
----------------
Event DB:

E_WEB_BROWSE
E_WEB_CART
select * from e_recipient_opened where launch_id IN (676067,676087);
Cust DB:
select * from program_dropbox_entry order by created_dt desc;
select * from program_dropbox where batch_id in (141447,141427,141467);

Event DB
select * from e_recipient_opened where launch_id in (676387,676407);
BUFFERED_EVENT_GROUP
PRG_BUFFERED_EVENT

Shared Event DB:


select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%';
select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%' order by created_dt desc;

Shared Cust DB:


select * from EF_LAST_EVENT_PROCESSED order by created_dt desc;

select * from program_dropbox pd , program_dropbox_entry pde where


PD.BATCH_ID=PDE.BATCH_ID and pd.program_id =

PEG:
----
For PEG events, EF is not required ****** Dont check for EF_EVENT_STATUS table for
PEG Events..
If PEG is not working:
Check the settings.ini for list and timeout configuration.
Go to WebEventProcessorBatchRepeatMins=15 - Check this to 3 min.
Invoke the JMX API after triggering from pubweb02/01 server - rescheduleBatch
under webeventprocessor
"interact.web.event.processor.impl.batch.WebEventProcessorBatchScheduler"
Program will trigger after TimeOut configuration(assuming 2) +
WebEventProcessorBatchRepeatMins(assuming 3) = 5 min.
After 2, all the data in event db is deleted and after 3 min, this data will be
picked up by WebEventProcessorBatchRepeatMins and process it. Program will get
triggered.

Control Feature:
----------------

[ProgramBehavioralEvents]
Enabled=1

ProgramBehavioralEventsEnabled=1 (enabled)

WebEventProcessorBatchRepeatMins=5

Change the value of WebEventProcessorBatchRepeatMins in PODConfig.ini to 5 min. It


will usually be 15 min.
Then go to http://pubweb01-eng1.eng1.dc2.responsys.com:8080/jmxconsole/ >
webevtprocessor >
name=interact.web.event.processor.impl.batch.WebEventProcessorBatchScheduler,type=W
ebEventProcessorBatchScheduler

Confluence Links:
-----------------
https://confluence.oraclecorp.com/confluence/display/RES/Event+Switch+support+for+b
ehavioral+and+rapid+retargeter+events

Deployed on:
------------
WEP - pubweb01
WEL - pubweb02
LEL - eventcapture01
BEL - eventcapture01
BEL - eventcapture01

1998941
2000341 [email protected]

23857344

Enactments are getting stuck at campaign stage in all channels except email.

23857344 - ISSUE WITH ENACTMENTS NOT RELEASING FROM APPCLOUD STAGE IN TRIGGERED
MODE

-----------------------------------------------------------------------------------
---
Event Switch Support for Behavioral and Rapid Retargeter events -
https://confluence.oraclecorp.com/confluence/display/RES/Event+Switch+support+for+b
ehavioral+and+rapid+retargeter+events

RSYS-111 Event Switch with Open, Click & Conversion events


https://jira.oraclecorp.com/jira/browse/RSYS-111

Summary:
An Event Switch is similar to a Data Switch in that enactments flow into it, an
evaluation occurs and one path is chosen for the outflow. An Event Switch is
different from a Data Switch in that a Data Switch routes according to a field
within a record, whereas an Event Switch receives the incoming enactments, holds
them and waits for an Event to occur. The outflow from an Event Switch is
determined by which Event occurs first, not on a data field.
New events supported in Event switches:
Rapid Retargeter Events : Cart Abandon, Browse Abandon & Purchase Behavioral Events
Opens, Clicks, Conversion events

RSYS-3593 Controlled Feature for enabling opens/clicks/conversions

-----------------------------------------------------------------------------------
---

pubweb server contains Web Event Listner(wel) and Web Event Processor(WEP).

How to Raise PEG Events from JMX:

http://ui01-eng1.eng1.dc2.responsys.com:8080/jmxconsole/

ProgramDesigner>ProgramManagerConsole>raisePEGEvent

-----------------------------------------------------------------------------------
---
RSYS-2475 Cart Abandon Event registration for Program Engine/Clients

WHO
Program Event Registry.
WHAT
Cart Abandon events as intermediate events at event gate.
WHY
The registry is done based on PEG event type(for e.g. CA here) by a given program
i.e. a program event configuration containing the stage ids of CA events supported
by the program at the intermediate event gate stage.
This is similar as event gates listening to custom events.
ACCEPTANCE CRITERIA
1. Create a program with any start stage and include event gate.
2. Enactments should get released when correct peg event(CA here) is triggered
Podconfig.ini needs to have the below configuration for PEG EVENT.
[ProgramEventRegistryClients]
ui.EventTypes=PEG_EVENT, SMS_RECEIVED_EVENT, CUSTOM_EVENT, LIST_EVENT
programdesigner.EventTypes=PEG_EVENT, SMS_RECEIVED_EVENT, LIST_EVENT,
COLLABORATION_EVENT
webevtprocessor.EventTypes=CUSTOM_EVENT, PEG_EVENT

Find out the Program id from LAUNCH table for the given launch id in event.
Now we need to find out the stage for a given program id which is listening to the
particular event type (Open, click, conversion)
We need to enhance event registry that will allow us to find the list of stage id
for the event switch for a given account id, list id, program id, event type and
campaign id.
If multiple stages in a program are listening to the same event (let�s say open).
We need to send the event to multiple endpoints.

Now we have the Program id and stage id information available for the given event.
We need a way to batch them together for inserting data into Program_dropbox and
program_dropbox_entry tables.
We need to batch the events based on program Id ,stage id and whether it has
enactment id or group member id .This is because on the event gate side we need to
split based on enactment id or group member id
All the events belonging to the same program id, stage id , batch type (enactment
id or group member id) will be grouped together.
We do not need event type for grouping since we will get only one event type at a
time in the listener.
We will create a map of Map<String, List<EventFlowEvent>> where the Key would be
ProgramID , StageID, batch type and value would be a List of EventFlowEvent
objects.
We will create another set Set<Triplet<Long, String, BehBatchType>> .The Triplet
holds program id and stage id and batch type.
We will populate these 2 data structures as we loop through the List of EventFlow
objects that are passed to the processBatch() method.
Once they are populated, we will create the Batch IDs for all the entries present
in the 2 nd map mentioned above. Note: This will be achieved by using a single
query to obtain multiple sequence IDs.
Once we get the Batch IDs, we will create one entry per Batch in the
PROGRAM_DROPBOX table and for every Batch that is present in the 1 st Map we will
create child records in the PROGRAM_DROPBOX_ENTRY table.
After the transaction is committed, the performPostCommitActions() method is
invoked. Inside this method we will invoke the Dropbox Client API which will
create a DropboxEvent and put the message in the ProgramDropbox JMS Queue.

-----------------------------------------------------------------------------------
---
RSYS-2865 New war file for supporting Opens Clicks and Conversions using event flow

WHO
Program at the event gate
WHAT
Read Opens,Clicks and Conversion events from event db and send them to Program
Dropbox
WHY
Enactments listening to behavioral (opens,clicks,conversions) events at the event
gate should be correctly released when program receives those events via program
dropbox . The matching criteria for split will be Enactment ID.
ACCEPTANCE CRITERIA
1. Create a program with any start stage and campaign stage (only email channel).
2. Include event gate and configure it to listen for open/click/conversion events.
3. Once the campaign is launched from the campaign , the emails will be sent.
4. Let's assume the event gate is configured for open . If you open an email
received through this program and campaign then the event should be captured in
E_RECIPIENT_OPENED
5. We will be creating a new war file (bel.war) as part of this user story. If the
war file is deployed correctly then it should read the records from
E_RECIPIENT_OPENED and send them to program drop box. The new war file will use the
event flow architecture to read data from EVENT DB. The records should be available
in PROGRAM_DROPBOX_ENTRY table
use the following scripts to enable Eventflow Manually for an Account
to be inserted to shared cust db --Event type id 4 for open ,5 for click and 6 for
conversion
INSERT INTO ef_last_event_processed (account_id, event_type_id, target_schema,
last_sync_time, last_sync_id, application_name)
values ( <account id> , 4 ,<cust schema ex:'shashiqa_CUST'>,
sysdate,0,'behavioraleventlistener');
INSERT INTO ef_last_event_processed (account_id, event_type_id, target_schema,
last_sync_time, last_sync_id, application_name)
values ( <account id> , 5 ,<cust schema ex:'shashiqa_CUST'>,
sysdate,0,'behavioraleventlistener');
INSERT INTO ef_last_event_processed (account_id, event_type_id, target_schema,
last_sync_time, last_sync_id, application_name)
values ( <account id> , 6 ,<cust schema ex:'shashiqa_CUST'>,
sysdate,0,'behavioraleventlistener');
shared event db --Event type id 4 for open ,5 for click and 6 for conversion
INSERT INTO ef_event_status (arg_id, account_id, event_type_id,
event_schema,is_enabled ,run_status, last_sync_time, last_sync_id, event_table,
application_name)
values(<arg id> ,<account id> ,4 ,<arg specific event
db>,'Y','A',sysdate,0,'E_RECIPIENT_OPENED','behavioraleventlistener');
INSERT INTO ef_event_status (arg_id, account_id, event_type_id,
event_schema,is_enabled ,run_status, last_sync_time, last_sync_id, event_table,
application_name)
values(<arg id> ,<account id> ,5 ,<arg specific event
db>,'Y','A',sysdate,0,'E_RECIPIENT_CLICKED','behavioraleventlistener');
INSERT INTO ef_event_status (arg_id, account_id, event_type_id,
event_schema,is_enabled ,run_status, last_sync_time, last_sync_id, event_table,
application_name)
values(<arg id> ,<account id> ,6 ,<arg specific event
db>,'Y','A',sysdate,0,'E_RECIPIENT_CONVERSION','behavioraleventlistener');

Cust DB:
select * from program_dropbox_entry order by created_dt desc;
select * from program_dropbox where batch_id in (141447,141427,141467);

Event DB
select * from e_recipient_opened where launch_id in (676387,676407);

Shared Event DB:


select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%';
select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%' order by created_dt desc;

Shared Cust DB:


select * from EF_LAST_EVENT_PROCESSED order by created_dt desc;

select * from program_dropbox pd , program_dropbox_entry pde where


PD.BATCH_ID=PDE.BATCH_ID and pd.program_id =

-----------------------------------------------------------------------------------
---

RSYS-2868 Event registry changes for supporting Opens/Clicks/Conversions at event


switch

ACCEPTANCE CRITERIA
Precondition: Event flow is enabled ,the controlled feature is enabled for
behavioral events and bel.war is deployed
1. Create two programs with any start stage and campaign stage (only email
channel).
2. Include event gate and configure one program to listen to Open Event.
Other program should not listen to open event.
3.Once the campaign is launched from the Program, the emails will be sent.
4.Open the emails sent from both the programs.
5.Open event is registered in E_RECIPIENT_OPENED table of event db for both the
opens.
If Program event registry is working as expected and bel.war is deployed
5.Program Drop box should have the records for the program 1 which is listening to
open event at event gate
6. The events for the program which is not listening to open event should not enter
the program dropbox.

How this works is :


1. Create 2-3 programs.
2. Let one of the program be configured with event switch - Open event.
3. Let all 3 programs have same campaign(or different campaign).
4. When user performs open on emails received, from the E_RECIPIENT_OPENED, we get
launch ID. From the launch ID, we access Launch table. From the launch table we
access program ID.
5. So, if program 3 is listening to open event, only this program will release
enactment at the event switch. Also, if an

Cust DB:
select * from program_dropbox_entry order by created_dt desc;
select * from program_dropbox where batch_id in (141447,141427,141467);

Event DB
select * from e_recipient_opened where launch_id in (676387,676407);

Shared Event DB:


select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%';
select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%' order by created_dt desc;

Shared Cust DB:


select * from EF_LAST_EVENT_PROCESSED order by created_dt desc;

select * from program_dropbox pd , program_dropbox_entry pde where


PD.BATCH_ID=PDE.BATCH_ID and pd.program_id =

select * from launch where launch_id in (676387,676407);


select TRG_BY_PROGRAM_ID from launch where launch_id in (676387,676407);
select * from EF_LAST_EVENT_PROCESSED order by created_dt desc;

-----------------------------------------------------------------------------------
---
Event Flow
How to check if event flow is enabled or not.

Login to SysLocal Shared Event DB. Access EF_EVENT_STATUS. Query this table using
account ID. We need to look into the column called APPLICATION_NAME, it will have
values for behtargetting and reporting. Also, check the column IS_ENABLED for
checking if behtargetting/reporting is enabled/disabled. Also check EVENT_TABLES
column.

For example:
select * from EF_EVENT_STATUS where account_id=23487 and APPLICATION_NAME like
'%beh%';
IS_ENABLED table will contain value Y for the EVENT_TABLES that are enabled.

-----------------------------------------------------------------------------------
---

RSYS-2868 Event registry changes for supporting Opens/Clicks/Conversions at event


switch

--> To check Event flow is enabled connect syslocal event shared db and access
EF_EVENT_STATUS
--> To check if bel.war is deployed, access eventcapture01/eventcapture02 servers
and check if bel is listed in jmx.

-----------------------------------------------------------------------------------
---
RSYS-2482 Browse Abandon Event Runtime Handling

update QZWEP1_TRIGGERS table for releasing events quickly

PLSQL_LOG table - to verify every level of logs,

select * from program where program_id=226707;

select * from grp_member_0000227827;


select * from cust_txn_0000227827;

select * from grp_enactment where program_id=227827;

select * from program_version where program_id=227827;

(SELECT DISTINCT RIID_ FROM (SELECT UNIQUE a.GRP_MEMBER_ID, a.RIID_ FROM /* ?.


*/grp_member_0000227827 a, /* ?. */grp_member_0000227827 b,
/* ?. */cust_txn_0000227827 WC, /* ?. */cust_txn_0000227827 FC WHERE
a.GRP_ENACTMENT_ID = 990947
AND b.GRP_ENACTMENT_ID = 991027 AND a.RIID_ = b.RIID_ AND FC.CUST_TXN_ID_ =
b.CUST_TXN_ID_ AND WC.CUST_TXN_ID_ = a.CUST_TXN_ID_
AND WC.CA_BROWSER = FC.CA_BROWSER)) ;

select * from Proclog where message like '%227827%' order by RUNTIME desc;

select * from Proclog where message like '%990947%' order by RUNTIME desc;

CALL SPLIT_GROUP_PARTITIONED(orgGrpEnactmentId=990947, newGrpEnactmentId=991127,


grpMemTableName=GRP_MEMBER_0000227827, custTxnTableName=CUST_TXN_0000227827,
programId=227827, filterQuery=SELECT DISTINCT RIID_ FROM (SELECT UNIQUE
a.GRP_MEMBER_ID, a.RIID_ FROM /* ?. */GRP_MEMBER_0000227827 a, /* ?.
*/GRP_MEMBER_0000227827 b, /* ?. */CUST_TXN_0000227827 WC, /* ?.
*/CUST_TXN_0000227827 FC WHERE a.GRP_ENACTMENT_ID = 990947 AND b.GRP_ENACTMENT_ID
= 991027 AND FC.CUST_TXN_ID_ = b.CUST_TXN_ID_ AND WC.CUST_TXN_ID_ = a.CUST_TXN_ID_
AND a.RIID_ = b.RIID_ AND WC.CA_BROWSER = FC.CA_BROWSER), filterColumn=RIID_,
tableSpace=programteam_CUST_PRG, entryTrackingTable=CUST_TXN_0000227827,
entryTrackingCond=GRP_ENACTMENT_ID = 991027, batchSize=5000,
smallGroupSizeThreshold=10),

CALL SPLIT_GROUP_PARTITIONED(orgGrpEnactmentId=1005227, newGrpEnactmentId=1005347,


grpMemTableName=GRP_MEMBER_0000228007, custTxnTableName=CUST_TXN_0000228007,
programId=228007, filterQuery=select PROGRAM_DROPBOX_ENTRY.ENACTMENT_ID AS
GRP_MEMBER_ID from /* ?. */PROGRAM_DROPBOX_ENTRY where BATCH_ID =148087,
filterColumn=GRP_MEMBER_ID, tableSpace=programteam_CUST_PRG, entryTrackingTable=,
entryTrackingCond=, batchSize=5000, smallGroupSizeThreshold=10),

CALL SPLIT_GROUP_PARTITIONED(orgGrpEnactmentId=1001527, newGrpEnactmentId=1005227,


grpMemTableName=GRP_MEMBER_0000228007, custTxnTableName=CUST_TXN_0000228007,
programId=228007, filterQuery=SELECT DISTINCT RIID_ FROM (SELECT UNIQUE
a.GRP_MEMBER_ID, a.RIID_ FROM /* ?. */GRP_MEMBER_0000228007 a, /* ?.
*/GRP_MEMBER_0000228007 b, /* ?. */CUST_TXN_0000228007 WC, /* ?.
*/CUST_TXN_0000228007 FC WHERE a.GRP_ENACTMENT_ID = 1001527 AND b.GRP_ENACTMENT_ID
= 1005127 AND FC.CUST_TXN_ID_ = b.CUST_TXN_ID_ AND WC.CUST_TXN_ID_ = a.CUST_TXN_ID_
AND a.RIID_ = b.RIID_ AND WC.CA_BROWSER = FC.CA_BROWSER), filterColumn=RIID_,
tableSpace=programteam_CUST_PRG, entryTrackingTable=, entryTrackingCond=,
batchSize=5000, smallGroupSizeThreshold=10),

If enactments are not moving to next stage in triggered mode/batch mode for
launcheventlistener/beh event listener, check EF_EVENT_STATUS and check, is enabled
= Y
if N, update

select * from ef_event_status where application_name like '%launchevent%';


ROLLBACK;
update ef_event_status set is_enabled = 'Y' where event_type_id in (1,8,10)and
event_schema like '%programteam_EVENT%' and application_name like '%launchevent%';
commit;
select * from ef_event_status where event_type_id in (1,8,10)and event_schema like
'%challaqa_EVENT%';

WebEventProcessorBatchRepeatMins=5

Change the value of WebEventProcessorBatchRepeatMins in PODConfig.ini to 5 min. It


will usually be 15 min.
Then go to http://pubweb01-eng1.eng1.dc2.responsys.com:8080/jmxconsole/ >
webevtprocessor >
name=interact.web.event.processor.impl.batch.WebEventProcessorBatchScheduler,type=W
ebEventProcessorBatchScheduler

-----------------------------------------------------------------------------------
---
RSYS-2866 Support Opens Clicks Conversions at Event Switch

Today we migrate triggered enactments to batch engine at event switch to handle


intermediate events from trigger engine. In the process the Enactment ID is not
migrated and is lost .

We need to bring in Enactment ID so that it can be used as a filter criteria for


the incoming events. This will require adding a new column to GRP_MEMBER_XXX
table .

Acceptance Criteria:
1.Create a pure triggered program with event gate stage.
2.After enactments wait at the event gate stage and when the group timer event
comes, trigger to batch migration happens.
3.Check in the GRP_MEMBER table for these riids, the ENACTMENT_ID_ column should
get populated with the ENACTMENT_ID_ value in the PRG_ENACTMENT table.

also for new programs, the GRP_MEMBER as well as CUST_TXN tables should have the
nullable ENACTMENT_ID_ column of type NUMBER.
PRG_TAB_COLUMN table will have this column added after 1st group gets created.

NOTE: If EnactmentBatching is enabled the enactments will directly enter the batch
engine and when after campaign launch when the email is clicked/opened we will have
valid enactmentId and grpEnactmentId in the eventDB tables and hence dropbox batch
will be populated via BEL.

Please note ENACTMENT_ID_ column will only get populated if the outpath for event
switch has atleast one of the behavioral event types (opens,clicks,conversions)
configured and not always.

-----------------------------------------------------------------------------------
---

RSYS-2866 Support Opens Clicks Conversions at Event Switch

-----------------------------------------------------------------------------------
---

Very Important Points:

Video link to Surender's demo on RR:


https://confluence.oraclecorp.com/confluence/display/RES/Rapid+Retargeter+Evolution
#RapidRetargeterEvolution-OperationalDeepDiveSessionRecording

> The Rapid Retargeter events will continue to be raised by the webeventprocessor
but unlike where RR events are used as start stage that WEP sends them to Program
Engine Triggered, at the event gate stage they will directly come to the batch
engine.

> The major distinction between Rapid Retargeter events and Behavioral events is
that RR events are usually sent from an external system without much knowledge
about the internals of the interact system; the user will know of the API to
introduce them. On the other hand, an Behavioral event receives its name from the
fact that they carry a context payload related to the execution of a program, a
campaign, a user unique identifier and others.
/* Events supported till 6.29 are custom event(list upload,connect,form submit,web
services), collaboration event, smsreceived event, rapid retargeter
events(browse,cart,purchase)
* and behavioral events(opens,clicks,conversions)
* we process each of these events differently. custom event(list upload,connect)
and collaboration event are group events and are processed immediately
* for custom event(form submit,web services), smsreceived event, rapid retargeter
events(browse,cart,purchase) - these are trigger events and we do not process
immediately. we first create a
* buffer group(group state = "F") and every 10 mins during grouptimer job process
and release them accordingly
* Rapid Retargeter events flow:-
* once browse,cart abandon and purchase events are triggered via web event listener
the event entries come to event DB tables - E_WEB_BROWSE and E_WEB_CART
* web event processor job that runs every 15 minutes aggregates these events and
sends to programs. For RR events as start events it comes to program engine trigger
for event gate
* it comes to program engine batch
* 1st F group is created and every 10 mins during grouptimer job process and
release them accordingly. It is done based on matching by RIID.
* when match field is also selected then specific RIID with matching ETV value that
came alongwith the event is released
* Behavioral Events flow:-
* For opens, clicks and conversion the events are 1st stored in event DB tables -
E_RECIPIENT_OPENED, E_RECIPIENT_CLICKED and E_RECIPIENT_CONVERSION
* these come to programs via event flow. BehavioralEventListener creates batches
and inserts into PROGRAM_DROPBOX and PROGRAM_DROPBOX_ENTRY tables. Those events
which have come via batch flow
* i.e. those have valid grpEnactmentId and EnactmentId in event DB tables will have
GRP_ENACTMENT_ID column in PROGRAM_DROPBOX as -4 and those which came via pure
trigger flow with null
* grpEnactmentId in event DB tables will have GRP_ENACTMENT_ID column in
PROGRAM_DROPBOX as -3. Eventgateworker will receive these events as
ProgramDropboxGroupEvent and
* will not process them immediately but insert the batch info into
PRG_BUFFERED_EVENT table. every 10 mins during grouptimer job
* and every time a new group enters event gate we process them and release
accordingly. here release is done batched on matching by enactmentId.
*
*/

-----------------------------------------------------------------------------------
---

481921
627_DropBox and Channel Client
-------------------------------
627_DropBox and Channel Client

Drop Box Epic : https://jira.oraclecorp.com/jira/browse/RSYS-750


-----------------
Pre-requisites:
ChannelClient=1
ChannelClient.SmallBatchThreshold=5

RSYS-2871 End to end program/launch dropbox integration


https://jira.oraclecorp.com/jira/browse/RSYS-2871

RSYS-2779 Enhancement to handle app failure

Database Tables:
----------------

custShared db
EF_LOG
EF_LAST_EVENT_PROCESSED
EF_EVENT_STATUS
cust db
GRP_ENACTMENT_LOG
PROGRAM_DROPBOX
PROGRAM_DROPBOX_ENTRY

event db
LUNCH
LAUNCH_ACTIVE
E_RECIPIENT_SENT
E_RECIPIENT_SKIPPED
E_RECIPIENT_FAILED

Confluence Links:
-----------------
Channel Client -
https://confluence.oraclecorp.com/confluence/display/RES/Channel+Client
Dropbox Design -
https://confluence.oraclecorp.com/confluence/display/RES/Orion6.25_ProgramDropboxDe
sign

6.30/NewFeatures/Programs/Collaboration

Channel Client Testing:


----------------------
10.3 Testing a simple triggered flow

� Create a simple program with email activity stage.


Ex: customer-activated ? email ? timer ? end.

� Generate customer-activated event from data viewer by opt-in recipients.


Program engine process the event

� Enactments will be at email stage with DROPBOX_RECEIVING mode. i.e.


stage_state_=�V�
o select * from prg_enactment_<program-id> where stage_id_='<<email-stage-id>>'

� Go to JMX API �testProgramDropboxTriggeredUseCase� to generate dropbox event.


Give appropriate
o Account ID
o Program ID
o Campaign Stage ID
o Response Event Type

Shared event
SELECT es.account_id, es.event_type_id, arg_id, event_schema,
event_table,application_name, last_stored_id, last_stored_time, last_sync_id,
last_sync_time, run_status, rownum rn
FROM ef_event_status
es, ef_last_insert_log ei
WHERE ARG_ID = 4
AND application_name =
'launcheventlistener'
AND run_status = 'A'
AND is_enabled = 'Y'
AND es.account_id =
ei.account_id
AND es.event_type_id =
ei.event_type_id;

Select * from EF_LOG where application_name = 'launcheventlistener'

custShared
select * from EF_LAST_EVENT_PROCESSED where application_name =
'launcheventlistener'

select * from EF_EVENT_STATUS where APPLICATION_NAME like 'launcheventlistener' and


event_schema like '%programteam_EVENT%';

In the shared event DB table EF_EVENT_STATUS for event schema programteam_EVENT is


mapped to arg1 but from account schema for programteam account I see it is arg4.
Can we run the script to populate the seed data for arg4.

I can see other configuration for eventflow and applicationhost are present in
podconfig.

I checked the PROGRAM_DROPBOX tables � but there are no entries there since June
2015.
This I believe is because there are no entries for arg4 in the EF_EVENT_STATUS
table and hence the argManagers are not woken up to trigger the eventflow mechanism
for LEL to insert data in the PROGRAM_DROPBOX tables.

In the shared event DB table EF_EVENT_STATUS for event schema programteam_EVENT is


mapped to arg1 but from account schema for programteam account I see it is arg4.
Can we run the script to populate the seed data for arg4.

I can see other configuration for eventflow and applicationhost are present in
podconfig.

I checked the PROGRAM_DROPBOX tables � but there are no entries there since June
2015.
This I believe is because there are no entries for arg4 in the EF_EVENT_STATUS
table and hence the argManagers are not woken up to trigger the eventflow mechanism
for LEL to insert data in the PROGRAM_DROPBOX tables.

Required Servers: Launch 01, 02, 100


Event Capture 01, Event Capture 02 for LEL deployment.
POD config for CustShared and EventShared configuration details, search for
�shared� keyword

QA is testing dropbox functionality via eventflow for programteam account.


In the shared event DB table EF_EVENT_STATUS for event schema programteam_EVENT is
mapped to arg1 but from account schema for programteam account I see it is arg4.
Can we run the script to populate the seed data for arg4.

I can see other configuration for eventflow and applicationhost are present in
podconfig.

I checked the PROGRAM_DROPBOX tables � but there are no entries there since June
2015.
This I believe is because there are no entries for arg4 in the EF_EVENT_STATUS
table and hence the argManagers are not woken up to trigger the eventflow mechanism
for LEL to insert data in the PROGRAM_DROPBOX tables.

-----------------------------------------------------------------------------------
-----------------------------------------------------------------------------------
---------------
RSYS-2779 Enhancement to handle app failure
https://jira.oraclecorp.com/jira/browse/RSYS-2779
WHO
Launch Event Listener(producer) and Dropbox client(consumer)
WHAT
Today we have a LaunchListenerJob that picks up the records from dropbox table that
are in the New state every 15 mins (configurable). The existing LaunchListenerJob
should be modified not only to pick the records in New status but also queued ones.
If LEL app server goes down after status changed to QUEUEING, but before message
sent to the consumer , records be queued (STATE =Q) for ever. Such records need to
be retried to allow for reprocessing.
WHY
To recover elegantly from failures.
ACCEPTANCE CRITERIA
Possible failure scenarios
1. If DB has gone down during the processing, the processing should resume once the
DB has come up.
2. If LEL has gone down during the processing, the processing should resume once
the LEL has come up.
3. If JMS has gone down during the processing, the processing should resume once
the JMS has come up.
4. If Personalizer has gone down during the processing, the processing should
resume once the Personalizer has come up.
Expected behavior is
The records should be picked irrespective of the status (New/Queued/Processing)
when the failure occurs
The records would be retried for the configured number of retry attempts every 10
minutes (??) and records that are being processed for
FailedRecordsProcessingDurationInMins minutes would be retried.
[ProgramDropbox]
RetryCount=4
FailedRecordsProcessingDurationInMins=60
After the number of retries the records would be updated as failed (F) and the
failure reason would be updated in the PROGRAM_DROPBOX.EXTRA_INFO column. Failure
reasons would be truncated at 4000 chars.
The records marked as Failed would eventually be persisted to PRG_BLOCKED_EVT_prgId
table and picked up by existing BlockedEventRecovery job to replay them to program
engine batch or program engine triggered
TEST APPROACH
Create a program with ChannelClient enabled account.
After dropbox tables are populated by LEL and Dropbox client is called to notify
Program Dropbox of the batches that are persisted.
Now after Batch is updated with status=Q bring the LEL application server down.
The records should still be sent to the Program engine eventually

Shared event
SELECT es.account_id, es.event_type_id, arg_id, event_schema,
event_table,application_name, last_stored_id, last_stored_time, last_sync_id,
last_sync_time, run_status, rownum rn
FROM ef_event_status
es, ef_last_insert_log ei
WHERE ARG_ID = 4
AND application_name =
'launcheventlistener'
AND run_status = 'A'
AND is_enabled = 'Y'
AND es.account_id =
ei.account_id
AND es.event_type_id =
ei.event_type_id;

Select * from EF_LOG where application_name = 'launcheventlistener'

custShared
select * from EF_LAST_EVENT_PROCESSED where application_name =
'launcheventlistener'

select * from EF_EVENT_STATUS where APPLICATION_NAME like 'launcheventlistener' and


event_schema like '%programteam_EVENT%';

In the shared event DB table EF_EVENT_STATUS for event schema programteam_EVENT is


mapped to arg1 but from account schema for programteam account I see it is arg4.
Can we run the script to populate the seed data for arg4.

I can see other configuration for eventflow and applicationhost are present in
podconfig.

I checked the PROGRAM_DROPBOX tables � but there are no entries there since June
2015.
This I believe is because there are no entries for arg4 in the EF_EVENT_STATUS
table and hence the argManagers are not woken up to trigger the eventflow mechanism
for LEL to insert data in the PROGRAM_DROPBOX tables.
In the shared event DB table EF_EVENT_STATUS for event schema programteam_EVENT is
mapped to arg1 but from account schema for programteam account I see it is arg4.
Can we run the script to populate the seed data for arg4.

I can see other configuration for eventflow and applicationhost are present in
podconfig.

I checked the PROGRAM_DROPBOX tables � but there are no entries there since June
2015.
This I believe is because there are no entries for arg4 in the EF_EVENT_STATUS
table and hence the argManagers are not woken up to trigger the eventflow mechanism
for LEL to insert data in the PROGRAM_DROPBOX tables.

Required Servers: Launch 01, 02, 100


Event Capture 01, Event Capture 02 for LEL deployment.

POD config for CustShared and EventShared configuration details, search for
�shared� keyword

625_Blocking and Unblocking


----------------------------
625_Blocking and Unblocking

<#fail "Fail The Launch">

Database Tables:
----------------
CUST DB:

select* from program_graph where program_id='164361';

select * from grp_enactment where program_id='164361';

select * from program where id='164361';

update grp_enactment set stage_id = 'a_1458637051617 1', group_state='B' where


grp_enactment_id='152421';

commit;

SysAdmin DB:

select * from prg_block where program_id=164361;-- where program_id='164361';

insert into PRG_BLOCK values ('6499:164361:a_1458637051617


1',6499,164361,'a_1458637051617 1','Start collaboration','Collab
Event','A','E','22-NOV-15 02.34.01.826000000 PM','22-NOV-15 02.35.01.826000000
PM',1,'Start collaborationStartCollaboration stage: stageLabel because of a
failure on server','Start collaborationStartCollaboration stage: stageLabel
because of a failure on server','Y');

commit;

EMD Email Campaign:


1. Link Table Delete - Success
2. Fail Script - Success
3. Document delete - Success
4. List change - Success

Classic Campaign:
1. Link Table Delete - Success
2. Fail Script - Built in does not work
3. Document delete - Success
4. List change - Success

SMS Campaign:
1. Link Table Delete - Success
2. Fail Script - Success
3. Document delete - No document
4. List change - Not possible.
5. Key word delete - Key word not getting deleted.
6. Delete custom column - Does not get blocked.

MMS Campaign
1. Link Table Delete - No Link table
2. Fail Script - Success
3. Document delete - Does not get blocked
4. List change - Success
5. Delete custom column - Does not get blocked.

<#fail "Fail The Launch">

${Surender_Contacts.NAME1?uppercase}

<p><#if Sh_Async_List.CUSTOMER_ID_?contains('3001')><#fail "Fail Launch


Successfull"></#if>
</p>

For the triggered mode, ideally, we should not have the popup for Retry/Skip/Exit
for the customer login.
However, with the current behavior, you�ll see the blocked popup with Skip and Exit
options.
This though will not unblock the stage as the unblock options are supported only
for the batch engine. We are currently looking into how to handle this scenario.

For the new stages, for the customer login, retry/skip/exit is not supported
(unblock options are supported only for campaign stages for customer login).
However, for the sysadmin login, the behavior should be the same as any other non-
campaign stages.

Hello Shashi,

So, currently there is no way for the unblock action logic to tell the UI if it is
a triggered program or batch program stage block.
Also, there may be cases where a stage is fed by both batch and triggered start
events. Example, a campaign stage having two in-paths, from a Scheduled Filter and
a Customer Activated Event.
Therefore, as of now, the unblock options will be shown for both cases.
For triggered stage blocks, clicking the options does nothing - this is a known
issue.
The auto-retry option will however try to recover these blocks.

We also have a flag called isUserActionable in the PRG_BLOCK table. This is used to
show the Retry button.
It is set for all stages if it is SysAdmin login. For customer login, it is set
only for Bulk Campaign launch blocks(above the EmailCampaign.SmallBatchThreshold).
So, based on this you will either see all 3 options, or only Skip and Exit options.

So, the answer for your use cases (for customer login, and assuming the stage in
question is a campaign stage)�

1. Yes, but only Skip and Exit options are shown. Clicking the options does
nothing � known bug.
2. Yes. Skip and exit is shown. Retry is shown if it is above the small batch
threshold. Also, if the latest block as the isUserActionable set � meaning batching
should have been before the block happened, and this is above the small batch
threshold.
3. Is this valid case ? Can there be migration from PRG_ENACTMENT_XXX to
GRP_MEMBER_XXX , and origin changed to �B� ? Shouldn�t origin be still �T� ?
4. Yes, Skip and Exit options are shown. No retry!
5. Yes, All 3 options are shown.
Regards,
Jose

The problem is not that they are doing this.. The problem is why do they have to do
this?
Think about it.. It's easy for me and you to pick a phone, see a video, get
suddenly aware getting our eyes wide open and write a comment..but are we really
aware of people's problems around us? Are our eyes really open?
If your family is dying of starvation, what would you do when nothing good can be
done anymore and no one cares be it the people around you or the government.. Karma
definitely wouldn't be the thing that will come first on your mind.. You will say
I'm sorry God.. I'm helpless.. I have to do it for me and my family's survival..
Well not everyone who is born and living on this earth is blessed.. They would go
to the best possible extent to do for their family.. I don't have any hope with the
government but I wish everyone reading this comment take a pledge to help people
around them when they're actually capable of doing it..If one helps another then
united we are helping thousands of them.

DM
--
DM

Database Tables:
----------------
How to find MPET table:
1. Take the list id of the profile list(say 89741).
2. select * from attribute_profile_map where list_id=283981; Note down the MPET
ID.
3. select * from mpet_00000089981;
4.

ATTRIBUTE_VALUES_PROPERTIES
ATTRIBUTE_VALUES_DENORM
select * from collab_wf_activity;
table_metadata

1. MPET_DETAILS: SELECT * FROM ATTRIBUTE_PROFILE_MAP WHERE 1=1 AND ATTRIBUTE_ID


IN (SELECT ATTRIBUTE_ID FROM ATTRIBUTE_DEFINITION WHERE
ATTRIBUTE_NAME='Organization') AND LIST_ID=?;
2. MPET_TABLE_NAME: SELECT TABLE_METADATA_ID , FOLDER_ID , TABLE_METADATA_NAME ,
TABLE_METADATA_TABLE FROM TABLE_METADATA WHERE TABLE_METADATA_ID = 'mpet_table_id';
//id from above query
3. FINAL_QUERY:
SELECT DISTINCT RIID_ FROM (SELECT DISTINCT mpet.RIID_, den.ATTRIBUTE_VALUE_ID FROM
filter.getSql() fq, mpetTable mpet, ATTRIBUTE_VALUES_PROPERTIES avp,
ATTRIBUTE_VALUES_DENORM den WHERE avp.PROPERTY_NAME = 'AUDIENCE_SCOPE_CODE' AND
den.ATTRIBUTE_VALUE_ID IN
(SELECT ORG_ID from PROGRAM_ORG_MAPPING where PROGRAM_ID = prgId) AND
(avp.ATTRIBUTE_VALUE_ID = den.CHILD_ATTRIBUTE_VALUE_ID ) AND
( mpet.AUDIENCE_SCOPE_CODE = avp.PROPERTY_VALUE ) AND mpet.REC_STATUS_='A' AND
(fq.RIID_ = mpet.RIID_) )

DM Important Links
-------------------
https://confluence.oraclecorp.com/confluence/pages/viewpage.action?pageId=188019923
Project overview:
https://confluence.oraclecorp.com/confluence/display/RES/Solution+for+Orgs+impactin
g+Programs+and+Campaigns

https://confluence.oraclecorp.com/confluence/display/RES/Collaboration
%3A+6.25+Requirements

select * from collab_wf_activity where name like 'P%04';

select * from program_org_mapping where program_id=89061;

select * from table_metab;

select * from attribute_profile_map;


select * from filter_result where program_Id=89061;

select mpet.RIID_,den.ATTRIBUTE_VALUE_ID from


MPET_00000045401 mpet,
ATTRIBUTE_VALUES_PROPERTIES avp,
ATTRIBUTE_VALUES_DENORM den
WHERE avp.PROPERTY_NAME = 'AUDIENCE_SCOPE_CODE'
AND den.ATTRIBUTE_VALUE_ID IN
( SELECT ORG_ID FROM
PROGRAM_ORG_MAPPING WHERE PROGRAM_ID = 89061
)
AND (avp.ATTRIBUTE_VALUE_ID = den.CHILD_ATTRIBUTE_VALUE_ID )
AND ( mpet.AUDIENCE_SCOPE_CODE = avp.PROPERTY_VALUE );

select * from filter_result_dropbox where batch_ID=28000481; This value should


match with above query.

Oganization Access Control :


https://confluence.oraclecorp.com/confluence/display/RES/Steps+for+Org.
+Access+Control+Implementation
Async
------
Async

Recursive Execution
The existing Program Batching Engine in Production is running in �Recursive� model.
It means the program workflow execution will recursively execute each stage till a
thread boundary is reach e.g. Timer Stage is reached, Email campaign bulk launch is
executed, and etc.
For the above program, the stage execution flow in Recursive will be:
� GroupFilter event received
� Execute stage S1: create Group G1, move G1 to S2
� Execute S2: split Group G1, to G2, G3, and G1; Move G2 to next stage S3; Move
G3 to next stage S4; Move G1 to next stage S5
� Execute S3 for Group G2: execute Email Campaign w/ Bulk Launch
� Execute S4 for Group G3: execute Email Campaign w/ Bulk Launch
� Execute S6 for Group G1: execute Email Campaign w/ Bulk Launch
� Launch Complete on G2: move G2 to next stage S6; execute S6 for G2

6.27 Async Execution Model


Unlike recursive, the execution is limited to the current stage execution. For
example, the above program in Async Execution Model work as:
� Receive GroupFilter event
� Execute stage S1: create Group G1; Queue up JMS Stage Workflow Complete event
with (S1, G1)
� Receive Workflow Complete event with (S1, G1)
� Move G1 to next stage S2; Queue up JMS Stage Workflow START event with (S2,
G1)
� Receive Workflow START event with (S2, G1);Execute S2: split Group G1, to G2,
G3; Queue up JMS Stage Workflow Complete event with (S2, G1, G2, G3)
� Receive Workflow Complete event with (S2, G1,G2,G3); Move G2 to next stage
S3; Move G3 to next stage S4; Move G1 to next stage S5; Queue up START events: (G2,
S3), (G3, S4), (G1, S5)
� Receive START event (S3, G2); Execute S3 with Email Campaign in Bulk Launch
� Receive Launch Complete event for G2; Queue up Stage Complete event (S3, G2)
� Receive Stage Complete event (S3, G2); move G2 to next stage S6; Queue up
stage START event (S6, G2)
� �
For details, please see design document:
https://confluence.oraclecorp.com/confluence/download/attachments/108019708/627%20A
synchronousProgramEngine_Design_rev2.docx?api=v2

Account Settings Properties to enable Program Asynchronous Engine


- �AsyncProgramEngineEnabled=1� all programs will be processed in asynchronous
engine.
For QA only, it is also allowed to turn on for selected program(s). For example
- AsyncProgramEngineEnabledPrograms=1001;1002;1003

Log4J Debug Flags


log4j.logger.interact.program.engine.engine.ProgramEngineBatch=debug
log4j.logger.interact.program.engine.batch.workflow.async.AsyncWorkflowEngine=debug
log4j.logger.interact.program.engine.batch.workflow.async.task.SynchronousTaskDispa
tcher=debug
log4j.logger.interact.program.engine.batch.workflow.async.task.SynchronousStageTask
Executor=debug
Example Debugs Logs
Below logs are captured for a program execution with �Scheduled Filter� then
�Timer�. The Filter Engine is on.

In Sprint-2, Async Engine completed the full cycle of Async events (START &
COMPLETE).
Sprint-3 deliverable includes:
Async Program Engine - Event Switch Worker fullly support async event cycle (B-
09315)
Async Program Engine - Stage Gate Worker fullly support async event cycle (B-09401)
Async Program Engine - Stage Retry Verification (B-09549)

Async Program Engine - Large group Verification (B-09402) done


Async Program Engine - Exception Handling (B-09404) done
Async Program Engine - Switch from Recursive to Async & Async to Recursive (B-
09405) done

Async Program Engine - Performance Metrics Collection (B-09435)


Async Program Engine - JMX API to send Stage START or Complete Event (B-09410)
Async Program Engine - Audience Engine Integration (B-08606)
In Batch Trigger mode, Retry option is not shown in unblocking options.

POD: QA1
Build: 630008113.1
Account: qa1prog/Welcome1234%
Program: P_ChannelClient_RetryForBatchTrigger2(Pgm ID:536801)

EmailCampaign.SmallBatchThreshold = 10

1. Login to RI and go to Programs.


2. Create a program with SF > Email Campaign > Timer > End. Validate and publish.
3. Change the campaign in such a way that it will get blocked when the enactments
arrive.
4. Trigger the program with records less than small batch threshold.
5. Verify campaign gets blocked.
6. Verify Retry option is present in the unblocking options (Since there is no Auto
Retry for Batch Trigger case, Retry option should be available)

Expected Result:
----------------
Retry option should be visible.

Actual Result:
--------------
Retry option is not present.

Note: In batch trigger mode, since there is no AUTO RETRY, Retry option should be
available.

6.31
-----

https://confluence.oraclecorp.com/confluence/display/RES/VT%3A+Program+Platform+-
+6.31

https://confluence.oraclecorp.com/confluence/display/RES/Program+To+Program+Events+
Engineering+Specification

Test:
----Test

Rajasthan, as it happened for an amatuer traveller.

Well,this is my first try at writing.


After having been to Maharashtra, I definitely wanted to travel more. Goa was on my
mind, december was the time.

After a brief thought, with exorbitant Goan New Year prices in mind, I said to
myself, "Hey, why not sikkim? if the budget will work out to be same as Goa !"

That was an amatuer traveller thought. On doing a little bit of R & D, I


realized,travelling to sikkim with my budget would be like tasting champagne with a
beer budget !

So, I was back to square one. Few days passed, nothing solid had worked out. Then,
like we all Indians with affinity towards Advertisements, heard Amitabh on TV,
saying, kuch din to guzariaye Gujrath mein. And there I was, Google Maps,
makemytrip.com, Travel Websites, Gujrath Tourism website, flipkart.com, started
accessing them all.

And finally, I was ready with a Plan. The Guj Plan.


Ahm, Surat, Damn Diu, Modera, Palitana, Gir Forest, Dwaraka, Somnath, Vadodara,
Kutch/Bhuj.
Surat for shopping
Gir for my adventure buds
Kutch/Bhuj for the mind blowing view of moon on the infinite salt expanse.
Rest for the temples and their arch.

Sounded fun !
Booked Flight to and Fro to Ahm.
I was all exited about Kutch/Bhuj but somehow this feeling started to creep-in.
Temples? Really? umm..
Amature the traveller that I am, had not checked the moon visibility for the period
I was travelling. The Moon visibility during the period I was travelling was not
great at all for Kutuch.

And hence, Guj plan went for a toss. Since, the filght was alraedy booked, we
decided, lets do Rajasthan

Warmth of the hiding sun,


Aura of the never ending cold,
It rains cats and dogs, time and again, I am told.
Lets play the journey song and await for the memories to unfold.

There aint words which can describe your beauty.


The more I explore, more you arouse my curiosity.
Dont get lost, time and again, I am told.
Lets play the journey song and await for the memories to unfold.

Towering passes, scenic view,


Landscapes changing their form and hue !
Ride safe, time and again, I am told.
Lets play the journey song and await for the memories to unfold.

The bright and shiny stars, the clear moon at night,


I am sure, it is going to be an unforgetable sight.
Peace and tranquility of those nights are something to bh
I am a late bloomer, but when I bloom, I am the most beautiful flower.

http://www.quora.com/How-can-a-person-increase-his-or-her-intellect

World's highest motorable pass, scenine view.

Amongest the coldest inhabited desert, they say.

Aaroveda, Edamadu Grama,


Kanakapura

Muttarayana Hills

08532 226195

underprivileged

as kids, we played all day.. then came school, took all my time away..
hushed and rushed, i was supposed to score 90 plus.
By the time i realized, cricket was my calling,
pre-university

Any book that helps a child to form a habit of reading, to make reading one of his
needs, is good for him. �Maya Angelou

Knowledge is free at the library. Just bring your own container.

---------------------------
Let's go back to 1700-1800 and see how the world was and how British managed to get
a hold of India.

1760s saw a number of battles between the Europeans and the French in North
America, Africa.

French won most of the battles

WebElement captchaimage = driver.findElement(By.id("captcha"));


File imageFile = WebElementExtender.captureElementPicture(captchaimage);

// get the Tesseract direct interace


Tesseract instance = new Tesseract();

// the doOCR method of Tesseract will retrive the text


// from image captured by Selenium
String result = instance.doOCR(imageFile);

}
}
by 2 tea
Mother promise
father promise
god promise
i am like this only..
if u have any problems with this, dont revert back !

You might also like