Retreieve datastreamID and set it | Community
Skip to main content
Level 4
July 1, 2022
Solved

Retreieve datastreamID and set it

  • July 1, 2022
  • 1 reply
  • 3288 views

Hi all, 

 

i'd like to know if there is any way to change the datastreamId where the data are sent during the elaboration of some conditions. 

 

Is there a way to detect the datastream and then change it, maybe inside a rule? 

 

Thanks in advance!

This post is no longer active and is closed to new replies. Need help? Start a new post to ask your question.
Best answer by Stewart_Schilling

I see that you are asking about "dataStreamId" and not "dataSetId".   

 

The dataStream is selected (per Launch environment) in the AEP Web SDK main configuration.  This setting is tied to the "instance" - most people only have one instance and take the default instance name of "alloy". 

 

What you're asking to do seems possible, but also pretty complicated.  Here's how I see it as being possible. 

 

It is possible to have multiple AEP Web SDK instances (each with different data stream settings). 

Let's say that you create two instances and name them "alloy A" and "alloy B". 

"alloy A" sends data to the edge using dataStream A (which in turn populates AA Report Suite A). 

"alloy B" sends data to the edge using dataStream B (which in turn populates AA Report Suite B). 

 

You can create a rule with the appropriate conditions that does an XDM Send using the "alloy A" instance.  You can then create an other rule with (hopefully mutually exclusive) conditions that does an XDM Send using "alloy B".  I think that I'd include some indication of the instance in the rule name so that you can keep things straight in the UI. 

 

IDK if this is an appropriate solution for you, but it's a solution nonetheless. 🙂

 

 

1 reply

_Manoj_Kumar_
Community Advisor
Community Advisor
July 1, 2022

Hello @nick_2024 

 

You can select the data set where you want to ingest the data in the launch rule.

 

Here is the screenshot where you can add the data set id.

 

     Manoj     Find me on LinkedIn
Nick_2024Author
Level 4
July 1, 2022

Thanks for the answer!

unfortunately it seems to be a little more complicated as i want to change not only the dataset but actually also the reportsuite for analytics. so i'd like to send certain data to a datastream with different configurations.

Stewart_Schilling
Community Advisor
Community Advisor
March 15, 2023

This is my scenario to track multiple business sites for an organization to have common data layer and common visitor identification but send data to their respective reportsuites.


Ok,  So for a given website, the report suite would always be the same? 

If that is the case, then you could create data elements that return the datastream identifier based on document.location.pathname.  You could have three datastreams, each configured for a given business site (with a different report suite).  In the AEP WEB SDK extension configuration, you can use data elements to provide the datastream id for production, staging, and development environments. 

 

You could actually use just one data element (Core -> custom code) that would look something like this: 

const dsMap = { "_development": "<enter datastream id>", "_staging": "<enter datastream id>", "_production": "<enter datastream id>", "xyz_development": "<enter datastream id>", "xyz_staging": "<enter datastream id>", "xyz_production": "<enter datastream id>", "pdr_development": "<enter datastream id>", "pdr_staging": "<enter datastream id>", "pdr_production": "<enter datastream id>" } const key = `${document.location.pathname.split("/")[1]}_${_satellite.environment.stage}`; return dsMap[key]||"NO DS MAP";

Note that this will set the datastream for the alloy instance.  This will be fine as long at the alloy instance is created when each site loads (if the sub-sites are part of a larger SPA, then this might not work for you).