Fetching the internal name of the recurring delivery dynamically | Community
Skip to main content
September 14, 2021
Solved

Fetching the internal name of the recurring delivery dynamically

  • September 14, 2021
  • 2 replies
  • 3423 views

Hello All,

 

I have been trying to fetch the internal name for the recurring delivery configured in the campaign workflow dynamically in the initialization script, but unable to do so successfully.

Already tried with delivery.internalName and activity.delivery.internalName, but none of them worked.

 

I am not looking for the internal name of the delivery generated, but the one that exists in the workflow.

 

Looking for some help here.


Thanks!
Dheeraj

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 Manoj_Kumar

@dheerajgarg  In that case you can change the operation to select and loop the result to get the delivery names.

 

The Code would look something like this.

 

var q = xtk.queryDef.create(
  <queryDef schema="nms:delivery" operation="select">
    <select>
      <node expr="@internalName"/>    
    </select>
    <where>     
        <condition expr={"[@workflow-id] ="+instance.id}  /> 
    </where>
      
  </queryDef>
);
var deliveries= q.ExecuteQuery();
for each(var delivery in deliveries.delivery){
  logInfo(delivery.@internalName)
}

2 replies

Jyoti_Yadav
Level 8
September 14, 2021

Hi @dheerajgarg ,

 

You can see your recurring Delivery internal name at:

[target/recurringDelivery/@internalName]

 

Thanks,

Jyoti

September 14, 2021

Hi @jyoti_yadav 

 

Thanks for looking into it.

 

The target dimension option is not available in the Advanced script tab. If we mean to check within activity, then I already tried with activity.delivery.internalName, which unfortunately doesn't work and result in an empty value


Snapshots below for your reference

 

 

 

What we are trying to get is the following internal name of the delivery configured dynamically:


The test workflow we have created is a simple one, with a query on nms:recipient and recurring delivery.

 


Best
Dheeraj

September 14, 2021

Hi @dheerajgarg ,

You are not getting name while executing delivery is because "Advanced Tab runs before delivery is executed". This is the reason no value is populated.

If you need the 'deliveryName' for query, then use query activity after delivery. In the Advanced tab of Query activity write

logInfo("delId: "+ vars.deliveryId);

Save this in an instance variable and use the same variable in your Query activity.

PFB Workflow design for your reference:

Thanks,

Jyoti

 


Hi @jyoti_yadav - The way you suggested is for finding the name of the delivery object created. However, that is not our requirement as of now.

The internal name which we are trying to find is stored somewhere, so couldn't there be a way to retrieve it?

 

Thanks
Dheeraj

Manoj_Kumar
Community Advisor
Community Advisor
September 14, 2021

Hello @dheerajgarg 

 

Try using this code:

 

 var q = xtk.queryDef.create(
  <queryDef schema="nms:delivery" operation="get">
    <select>
      <node expr="@internalName"/>    
    </select>
    <where>     
        <condition expr={"[@workflow-id] ="+instance.id}  /> 
    </where>
      
  </queryDef>
);
var delivery= q.ExecuteQuery();
logInfo("Name:"+delivery.@internalName);
Manoj     Find me on LinkedIn
September 15, 2021

Hello @_manoj_kumar_ -

Thanks for looking into it. This logic can work if there is one delivery in the workflow, but what if we have more than one deliveries configured in the same workflow?

Manoj_Kumar
Community Advisor
Manoj_KumarCommunity AdvisorAccepted solution
Community Advisor
September 15, 2021

@dheerajgarg  In that case you can change the operation to select and loop the result to get the delivery names.

 

The Code would look something like this.

 

var q = xtk.queryDef.create(
  <queryDef schema="nms:delivery" operation="select">
    <select>
      <node expr="@internalName"/>    
    </select>
    <where>     
        <condition expr={"[@workflow-id] ="+instance.id}  /> 
    </where>
      
  </queryDef>
);
var deliveries= q.ExecuteQuery();
for each(var delivery in deliveries.delivery){
  logInfo(delivery.@internalName)
}
Manoj     Find me on LinkedIn