I have a Journey setup where a Contact is entered into the journey via an entry in a Data Extension. This DE that is populated by a SQL query in the 'overwrite' mode.
My emails contain AMP Script that utilizes either variables/data from either the Source/Entry Data Extension or the SubscriberKey.
The issue I am having is that, when a Contact is actively in a journey, during which the SQL query is re-run (via a scheduled/triggered automation task) to re-populate the "Source/Entry Data Extension", the subsequent emails in that journey start to break. Specifically, the SubscriberKey and any variables from the "Source/Entry Data Extension" are all returning BLANKS/EMPTY. Yet the email is successfully sent.
This occurs even if the "SQL Query overwrite" still contains the Contact information for the Contact in the active journey.
I am not 100% sure yet, but I believe this only happens when either: (a) a related data extension is refreshed (filtered data extensions related via Contact Builder) (b) or, the Source/Entry Data Extension is refreshed via the SQL query.
Does anyone know how I can avoid this? Part of my journey requires that I refresh related data extensions so that they can be used in my decision splits. In addition, I need to refresh the Source/Entry Data Extension so that new Contacts can re-enter the journey.
UPDATE 1: I can confirm, it is due to the SQL 'overwrite' issue. Running the SQL query during an active journey causes the emails to break (subscriberKey and any passed in data via the Data Extension is empty).
My guess is a separate internal ID is generated for the journey and on overwrite that is somehow destroyed. Anyone can shed any light on this? Maybe I can replicate the ID field so that it will not be removed on overwrite (similar to the EmailAddress and SubscriberKey requirement issue).
UPDATE 2: Somewhat of a success! I tried utilizing the following ways to get the "subscriberkey" in AMP script in a way that didn't end up being blank/empty if the Source Data Extension was refreshed.
From SubscriberKey: %%=v(SubscriberKey)=%% %%[ VAR @subKey ]%% <script runat="server"> Platform.Load("core", "1.1.1"); var SubscriberKey = Platform.Recipient.GetAttributeValue('SubscriberKey') ; Variable.SetValue("subKey", SubscriberKey); </script> <br> From SSJS: %%=v(@subKey)=%%<br/> From _subscriberkey: %%=v(_subscriberkey)=%%
The only one that worked was _subscriberkey. This is populated even if you refresh the source data extension. So I am able to use this now.
This doesn't resolve the fact that I cannot get the Event Data passed to the email from the source data extension. However, with the subscriber key, I can do a look up (since mine is unique in the DE)!
I am waiting for a response to see if anyone knows a better solution before I mark this as answered.