Skip navigation

Do It

6 Posts authored by: Andy BaII-Oracle

A Long time ago, in an Eloqua Instance far, far away….

 

There were two fields: Lead source - Original and Lead Source - Most recent.

The battle for revenue attribution supremacy was fierce, but some people still asked “what was the deal?”, & “why do those fields even exist?”

Well, it is simple,... and if you so wish, I shall train you young Marketing ones, in 'the ways of the Source’.

 

The purpose of these fields is to give you some clear information on where your contacts originated and what their most recent interaction with you was.... Simple, right?

 

Lead source - Original is an indication of the FIRST time a contact was created in your instance and once set this value should never be altered.

This allows you to backtrack & identify what the original source was of that data. For example if a list of data was being imported and fields mapped. – One of the fields in your data file should be lead Source - Original.
This should be imported and then mapped into your Lead source - Original field with an update type of ‘only if Blank’

 

‘Only if Blank’? 

Yes, absolutely, - the reason as indicated above is that this will only write that value into the record if the record does not already have a value in that field. Therefore, if you accidentally upload a list containing some existing contacts (& we all know it happens from time to time) then you will not overwrite the value that was already in that field from when the record was first created. – So essentially you should have 100% of your records with a value in the Lead source - Original field & that should enable you to breakdown exactly the sources ( & volumes) of Lead generation for your instance.

 

OK, That makes sense wise master, but so what about this Lead Source - Most recent field?

Well conversely Lead Source - Most Recent should of course be updated as well, but updated in every situation, to give a clear reflection of the contact's most recent interaction with your marketing materials.

This should capture the activity they just conducted. – Whether their 1st, or 421st.
Initially it will be the same as Lead source - Original, but as time progresses they will start to diverge, with Lead Source - Original always remaining constant, & Lead Source - Most recent always showing what they did most recently.

 

Here is a simple article demonstrating how to do this correctly on the processing steps on the back of a form.
How To: Updating Lead Source fields from a Form Submission.

 

 

 

But how granular should it be?

Well that’s up to you really, but essentially it should be detailed enough to categorise your leads in a useful way, but not so detailed that it becomes onerous for you to report on.

if you have a set of fixed values: like web form, Webinar, Tradeshow, Event, Sales, Whitepaper download, etc. then you can run a simple field population report & it will break down the field into those clear distinctions, along with numbers.

 

Lead SourceCount
Web form7,631
Webinar90,057
Tradeshow45,769
Event20,749
Sales1,230
Whitepaper97
Total165,533

 

Perhaps you do want to be more granular, - that’s fine too of course, just be mindful that having fewer set values is easier to maintain & you can even use Eloqua to ‘listen’ for invalid values and present them to you in a filter (see below),
so you can readily see that this month you have had 3 records created without the correct values, and you should be able to deduce where they originated in order to educate the person responsible (choking not advocated!).

 

So why is all this important?

Well it might become relevant if you start to conduct Closed Loop Reporting (CLR), and wish to perform analysis on the amount of your closed leads, - where they originated, and the last interactions they had before they closed.

Case in point, - if your CLR evidences that 40% of your closed leads entered your database after registering at one of your Webinar events, but thereafter downloaded a particular whitepaper before purchasing – well, you can infer two things here.
Firstly to put more money into your webinars as they are generating good quality leads*, but also that you should be pushing leads who come from that source into a campaign to try & forward these important Whitepapers directly to them proactively.

If you can see a winning recipe for sales in your data, then you can use the power of Eloqua to try and replicate that.

 

*I am aware that other factors are at play here, such as cost per lead etc. (this is a simple explanation though)

 

 

Here is a working Example for you to see it in action.

Initially we upload some contacts from an event (along with Lead Source - Original & Lead Source - Most Recent).
Lead Source - Most Recent should always update, Lead source - Original should only update if blank.

The Event in question is a meetup and music Event at a local Cantina in Mos Eisley.

 

First Name

Last Name

Title

Company

Lead Source - Most recent

Lead Source - Original

Luke S.

Walker

Apprentice

JED1 inc.

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

Stu

Backer

P.A.

Falcon Aluminiums

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

Stan

Solo

CEO

Falcon Aliminiums

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

Bob

Fett

Consultant

Carbonite storage solutions

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

Dave

Maul

Head hunter

Force Removals

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

EmPerorCTODark Side recruitmentEvent- Cantina (01/01/19)Event- Cantina (01/01/19)

 

 

As detailed earlier all of these contacts have a common Lead Source - Original & Lead Source - Most Recent. This is expected if they have only had one interaction with you.

 

Over the next few months there are a number of other interactions involving our demo subjects.

 

Stan Solo downloads a whitepaper on smartening up scruffy interiors.

Stu Backer watched a webinar on Anger management

Luke Walker Submitted a form to update his details & preferences

Bob Fett clicked through an email with a blind form submit to get information on updated storage.

Em Peror requested a callback (sometime around December 19th 2019 probably!)

Dave Maul was never heard from again.

 

All of these Changes should be reflected in the Lead Source - Most Recent, but NOT Lead Source – Original, as for all those contacts were created as part of the Cantina (01/01/19) event.
This is where the contact originated so this should never alter as they will only ever originate one time, from one place.

 

A few Months later the table would have altered like this. – Note that Lead Source – Original has not changed for any of them as that field denotes how they first originally arrived into the contact table. That fact will never alter.

 

First Name

Last Name

Title

Company

Lead Source - Most recent

Lead Source - Original

Luke S.

Walker

Apprentice

JED1 inc.

Re-Engagement (04/05/19)

Event- Cantina (01/01/19)

Stu

Backer

P.A.

Falcon Aluminiums

Webinar – Anger Mgmt (11/02/19)

Event- Cantina (01/01/19)

Stan

Solo

CEO

Falcon Aliminiums

Whitepaper – Scuffy int’ (01/03/19)

Event- Cantina (01/01/19)

Bob

Fett

Consultant

Carbonite storage solutions

Blind form- Storage (01/04/19)

Event- Cantina (01/01/19)

Dave

Maul

Head hunter

Force Removals

Event- Cantina (01/01/19)

Event- Cantina (01/01/19)

EmPerorCTODark Side RecruitmentCallback form (12/04/2019)Event- Cantina (01/01/19)

 

You can see the cell alterations in Yellow (You don't necessarily need to include dates, I've included those just to communicate my point).

What we've started to do here though is get more granular in the recording, allowing us to delve deeper into exactly what communication resonated, but making it much harder to report on.

 

What is often used is a code, consisting of the details of the email that drove the contact to that resource, something like EM_05_19_UK_Y0DA

 

EM, denoting Email, then MM_YY, then Country code, then a 3 or 4 letter code for detail.

This code should be added to all links in all emails ( unique to each email), - then if it is catalogued somewhere,  you can refer back to see what codes relate to what emails.

 

So you might end up with the below, which is complex, but can be traced back to individual emails driving the contacts to forms or other content.

 

Lead SourceCount
EM_01_19_UK_NEWS97
EM_01_19_US_NEWS120
EM_02_19_DE_C3P073
EM_02_19_NL_R2D24,210
EM_03_19_UK_STAR61
EM_03_19_UK_WARS11
EM_04_19_BR_SNIP123
EM_04_19_US_GAME51
EM_04_19_UK_CHEW37
EM_04_19_US_SH1P201
EM_03_19_FR_TRAP12

 

 

So How do I update those values once they're included in the links?

Well fortunately there are a few techniques you can employ within the Eloqua platform which will help you here, see below for a couple,
but first things first, you must bring balance to your data and you do this by committing to data quality and then tidying up your data sanity. Adding good data onto bad helps no-one.

It is not a small job to get things set right, but it’s much easier to maintain once the effort is in place to solve data sanity.
It’s also important to maintain this rigidly. If you do not, the erroneous values will be back, (and in greater numbers). So you must track the fields and correct errors as they arise.

 

Want to learn more...?

 

Read my guide to see how to populate your records with Lead Source values consistently off the back of an Eloqua form.
How To: Updating Lead Source fields from a Form Submission.

 

And Read my Guide here on using JavaScript / JQuery to capture values on your web pages & pass those into hidden fields.
How To: Using JavaScript / JQuery to update a Hidden Formfield.

 

And finally read my guide on how to lift rocks whilst standing on your head.
(Just kidding!)

 

 

Now, *waves hand* repeat after me,
“This was the article I was looking for”….

“I will commit to better data sanity and reap the rewards”

 

Very good.

Now Move along please…..

 

 

 

Andy Ball

Eloqua Principal Technical Account Manager,

Oracle Cloud Priority Support.

So all in all, this is a simple process.

 

You'll need to create a form update Rule then you'll create two processing steps on your form.

 

First the Form update Rule.

 

go to Audience > Tools > Form update Rules.

 

Hit New to create a New one. We'll call ours "copy LS- MR to LS-O"

 

It's going to operate on the Entity type Contacts and the Data field is Email Address

 

Now we just create one rule as below:

This copies the value from Lead Source - Most recent Into Lead Source Original. That's all it does.

 

 

 

Now the processing steps.

 

Obviously we want to Update our Contact table, so we add the Update Contacts - With Form Data step.

 

 

There's two ways you can set your value, - either set a static value in the form field so that same value is passed every time,
OR, if the form field will be driven to from various sources, have a hidden field on the form that we populate using JavaScript (see my guide on how to do that)

Either way we map that field to Lead Source - Most Recent

This ensures that for EVERY form submission a relevant Lead Source value is written into the Lead Source - Most Recent field (as it should be, 100% of the time).

 

We then add a second processing step to utilise our new Form update Rule.

 

The step we use is 'Update Contacts with Custom Values'.

click the 'Apply shared Update Rule' button to add your Form Update Rule, and set the step to operate conditionally if Lead Source - Original (is Blank)

 

 

You could just set it as a one-off processing step to update the field from Lead Source - Most Recent to Lead Source - Original, but by creating a shared rule we can use it on every form!

 

 

And that is that,

Lead Source - Most recent will always be set to your value, so will be updated 100% of the time.

Lead Source - Original will grab that value the first time a value is set, but never after that.

 

 

I hope that helps.

 

 

Andy Ball

Eloqua Principal Technical Account Manager,

Oracle Cloud Priority Support.

The thought of JavaScript & coding in HTML on Lading pages & web pages can often be daunting. But it needn't be,

Here is a short guide on how to use JQuery (a simple JavaScript library) to grab a value from your URL & drop that into a hidden form field ready for form submission.

 

Example: - your user clicks through to your form at http://www.google.com?LeadSource=DOIEmail

 

Note the bit after the .com ?LeadSource=DOIEmail - this is what we call a query string parameter. - it's extra text that wont affect the visit to http://www.google.com, but you can use in some way once the visitor arrives.

 

It is what's called a key value pair. - the key(before the equals sign) is linked to the value ( after the equals sign).

We can string many together with the '&' character.

the '?' character just tells the browser to stop rendering the URL at that point.

 

What I mean by that is that

http://www.google.com Is exactly the same as http://www.google.com?this=that&another=one&yetAnother=one&more=data&so=on (...go on, try it!)

 

All of the text this=that&another=one&yetAnother=one&more=data&so=on that occurs after the ? in the URL is ignored. but we can use it upon page visit if we so choose.

 

So here we go.

 

In your HTML, within the Head tags (the bits that go <head > .... </head>) you're going to add a reference to JQuery.

We're going to use a Google hosted version as that will always be accessible & it saves us hosting a file & keeping it up to date.

 

Google libraries can be found here:  https://developers.google.com/speed/libraries/

 

The JQuery link looks like this: <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

 

So we add that between the Head Tags:

 

JQuery call

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

</head>

 

 

 

Now we add a GetParameters function to do the work for us.

 

JQuery call + Get URL function.

<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

<script>

      $.urlParam = function(name){

    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);

    if (results==null) {

       return null;

    }

    return decodeURI(results[1]) || 0;

}

    </script>

</head>

 

That is going to do the heavy lifting when we ask it to.

 

Now on our form we have a hidden form field with an ID of LeadSourceFormField - like this: <input name=leadSource id="LeadSourceFormField">

This field will capture the value we supply & we can use this id to target the field with JQuery.

 

Lastly we're going to add a short script just before the closing </body> tag to run once the page loads, It will look into the URL for our query string parameter & grab the value to put it in the form field:

 

Call to get Parameter & posting it into the form field

<script>

      $( document ).ready(function() {

        $('#LeadSource').val($.urlParam('LeadSource'));

        ;

});

    </script>

</body>

 

And that's it!

So that code will run on page load, - scan through the URL for the parameter with id=LeadSource. get the associated value, then put it into the form field with the ID LeadSourceFormField.

When the user submits the form, the hidden value will be submitted for you to track on your Eloqua form & to then post to the Lead Source fields as you see fit.

 

So now, - going back to our earlier example: - your user clicks through to your form at http://www.google.com?LeadSource=DOIEmail

If a user clicks through to our form, illustrated above as Google, our new code will capture the value 'DOIEmail' that is associated with the Key LeadSource in our Query String.

We capture that value to post it to Eloqua.

 

If someone else visits the same page with a different Query string value, like at http://www.google.com?LeadSource=WebinarInvite

The same code will captrue WebinarInvite and that will get posted instead.

 

I hope that all makes sense, please use the comments if there are follow up questions.

 

Here is a complete stripped back example of the Entire HTML page for you to examine: (the form is of course simplified for this example)

 

Example of HTML

<!DOCTYPE html>

<html>

  <head>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>

    <script>

      $.urlParam = function(name){

    var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href);

    if (results==null) {

       return null;

    }

    return decodeURI(results[1]) || 0;

}

    </script>

 

  </head>

  <body>

    <form>

      <input name=firstname><br>

      <input name=lasttname><br>

      <input name=emailAddress><br>

      <input name=leadSource id="LeadSourceFormField" type="hidden"><br>

      <button type="submit">Submit</button>

    </form>

 

 

    <script>

      $( document ).ready(function() {

        $('#LeadSourceFormField').val($.urlParam('LeadSource'));

        ;

});

    </script>

  </body>

</html>

 

 

I hope that helps.

 

 

Andy Ball

Eloqua Principal Technical Account Manager,

Oracle Cloud Priority Support.

OK, - So you've previously used my 'amazing' guide on Cleaning up Unmapped CDO records, right? (If not, be sure to check it out for a great technique to tidy up your old unmapped CDO records).

 

Good, - so if you did follow my previous guide you can be assured that your CDO's contain 100% mapped contacts and your Custom Data Objects overall are in great shape.

 

But Now you're getting GDPR 'right to be forgotten'  requests requiring you to delete contacts, along with all of their associated CDO data. How tricky is that going to be?

After all you have a whole bunch of CDO's, so that's going to take some time and effort to resolve isn't it?

 

Fortunately, I have the solution you've been looking for.

 

 

This guide is going to show you how to use Eloqua's Program canvas to automate this entire process for yourself...

 

Here's the ingredients you're going to need:

 

  • One free Contact table field, we'll call this Delete CDO records?
  • A segment which will listen for your above field to have the right 'trigger value'
  • One master Contact Program canvas.
  • One Custom data object Program canvas per Custom Data Object that you have.

 

and that's it.

 

so, now we'll put it all together.

 

The new contact field.

 

As stated, we're going to call this field:  'Delete CDO records'

 

For simplicity's sake I'm using a text field, but you could use a checkbox or a picklist if you wanted.

In this instance we'll use a Text field with a default value of N (as in No, don't delete the CDO records).

 

Here's how I set it up:

 

This gives us a new field that we can use in our new Segment (which I called the same thing)

This is where we will evaluate if our new field is equal to 'Y' - this will only happen when we choose it to, so initially the count of this segment will clearly be 0

 

 

Now to the meat of the programs.

 

So for the main Contact Program canvas it will have a very simple structure. - each contact is evaluated against to check if they have a record in the CDO. - if so, the associated record is pushed into a CDO program for that CDO, which will delete it.

 

Here's the flow of my main program:

 

OK, so let's break it down. - the decision steps basically look at the associated CDO (in this example, CDO1, CDO2, CDO3 etc....)

and it looks for an email address field value in the associated CDO. - If you aren't capturing email address in that record, then any other field which is constant for all records will work fine.

 

If this is true then we push the associated CDO record into one of the other 'deletion' Custom Object Program canvases that we're about to create.....

This is done by using the Add Linked Record to Program canvas step.

 

then we rinse & repeat for each CDO, so we have one 'evaluation' and one 'push to program' step for each CDO that we have.

 

Make your own life easier:
As stated above. you will need one 'deletion' Canvas for each CDO that you have. If you have 120 CDO's then you will need 120 of these programs, so to make your life easier you should first audit your CDO's and delete any that are redundant or no longer required.

 

Now you should have the framework of your Program a bit like the below, but you cannot configure the Add Linked Record to Program steps until you have actually made those canvases.

 

The deletion programs.

 

So the last step we have to do is to create the Custom Object Programs to handle the deletions.

 

fortunately these are VERY simple and only take a minute or so to build: - this is what they look like.

 

Very simple. - just create the Program & assign it to the CDO in question ( in my case it was CDO 1 for deletion Test)

 

Then add a listener, & add one Delete Custom Object Record step. Link the two & you're done. ... Onto the next one.

 

You can't copy & paste.

If you're thinking of cutting corners here & copying your canvas just to change the associated CDO, think again. - copying the canvas also copies the CDO association!  so you do in fact need to create a new one each time.

Luckily they are very easy to build!

So now you have one of these deletion Custom Object canvases for each of your CDO's so you can go back through your main Contact Program & tie all of the Send Linked Record steps to the correct Custom Object Program.

Don't forget to 'Choose' the right program & the Listener on that Program.

 

And then that's done.

 

you can now activate your program.

Now whenever you update the Delete CDO Records field of a contact to Y, it will be captured in the Segment in the next evaluation. thereafter flowing through your program and deleting all CDO records attached to that contact.

Note: Once you configure the segment, it is evaluated on a regular basis based on your configuration. The minimum time between evaluations is 1 day.

 

So if you have a list of 50 contacts that you are looking to delete from your instance, - you should upload these from an excel sheet with simply two fields - Email address & Delete CDO Record ( the latter will all be the value 'Y').

After the list is uploaded you can sit back & wait for all of the CDO records to be erased. after that ( and only after that), you can delete the contacts themselves. - if you delete them first they won't be able to flow through your contact Program!!

 

 

But Does it Work?

 

In order to test this, I created a simple Proof of concept, then created a Test matrix to highlight that some records in the CDO would be pushed through & some would not. - As you can see from the below image, - it worked exactly as planned.

 

 

Good Luck!!

 

 

Andy Ball

Eloqua Principal Technical Account Manager,

Oracle Cloud Priority Support.

The purpose of this article is to create a simple-to-follow guide to allow you to add a Datepicker widget into your Eloqua Landing pages.

 

The end result will look something like this:

I’m aiming this guide to be as simple as possible as I know that some people are not familiar with HTML at all. Hopefully with this step by step guide it’ll be made easy & worry free.

 

 

So if we make our basic form in Eloqua with email & a custom text field for date:

(Make sure you also set the HTML name of your date field to ‘date’ (all lower case))

We view HTML of the form by going to Actions > view Form HTML, & copying all of it from the form onto the clipboard.

 

We now create a new HTML Landing page, which will look like this:

<!DOCTYPE html>

<html>

  <head>  </head>

  <body>   

<-—form HTML goes here -->

  </body>

</html>

 

Paste the whole of your form code in between the body tags (as specified above).

 

You can now view your Landing page & it will just have the basic form on a white page.

For visual sake,  we’re now going to tidy it up to make it a bit neater.

On your Landing page scroll up in the code to find the closing </style> tag.

Just before it we add the following.

div{ width:300px; margin:0px auto;}

input{ border-radius:5px}

This sets the width to a more reasonable size & centralises the form.

The second line just softens the corners of the input boxes (it may add a shadow as well, depending on your browser).

 

Now we get to the meat of the tutorial: Adding the JQueryUI script onto the page to get the plugin working.

 

So essentially we need two script files added: the JQuery main JavaScript library & the JQueryUI script that will handle the datepicker widget.

We’ll also need to add the JQueryUI css file to handle the graphical element, - but worry not, I’m here to guide you through it....

 

So there’s two ways you can do this.

  1. Use the Google CDN versions that are available here: https://developers.google.com/speed/libraries/
  2. You can retrieve the raw files from http://jqueryui.com/ and https://jquery.com/ and you can host these files in your own instance’s file storage for personal use.

The first solution is much simpler & serves up the files pretty swiftly, however you are of course relying on Google for the files, and in some situations you might prefer to host the files so that you are totally self-reliant.

I personally have had no issue with the google served versions, so I will be stepping through that solution here.

From the google developers libraries you retrieve the JQuery .js file and the 2 JQueryUI files – the .js & .css one. They will look similar to the below.

 

JQuery

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

JQueryUI

<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

 

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">

 

So now you have these files, you’re going to insert them into your HTML, right before the closing </head> tag like this:

 

Now we’re nearly set.

 

Remember when I said to set the HTML name of your date field to ‘date’? Well that just makes it a bit easier to locate, and as now you need to find it, the easiest way is to do this is to perform a CTRL+F find on ‘name=”date”.

This will seek out the <input field in question. It will have a value id=”field1” or something similar & we are going to alter it to say id=”datepicker”

 

Your revised input should now say something similar to
<input id="datepicker" name="date" type="text" value="" class="field-size-top-large" />

 

OK, - last step.

So back in your HTML, again, just before the closing </head> tag you’re going to add this snippet:

 

<script>

  $( function() {

    $( "#datepicker" ).datepicker();

  } );

</script>

 

And that’s it! – save your file and go and try your new datepicker widget.

 

Good Luck!

With GDPR fast approaching, many customers will be wanting to tidy up orphaned CDO records in order to be as compliant as possible.

This guide aims to demonstrate how Oracle Eloqua can accomplish this for you.

To avoid the potential deletion of incorrect data, a backup of your CDO is recommended before any records are actually deleted.

 

To do this you will need 5 assets.

  • A program builder
  • A program canvas
  • An update rule
  • A shared Filter
  • your chosen CDO*

* this solution works 'per CDO' so if you have 10 CDO's you'll need 10 of the above (with the exception of the update rule & the shared filter).

 

  Here is an overview of the solution:

overview.PNG

What this demonstrates is that you add an extra field to your CDO titled Unmapped Record,

You then pass ALL records through a Program Builder program which updates any records NOT mapped to a contact in your shared Filter. (your update rule will set that field to 'true'.)

After that the CDO record services evaluates all updated records & sends matching ones to the program Canvas.

The Program canvas deletes any unmapped records passed into it.

 

The Shared Filter:

 

Very simply your shared Filter just contains All contacts in your contact table.

Most simply this is achieved by filtering on contacts whose Email Address contains '@', however if your instance is enabled for blank email addresses then also you should include all records whose email address field is blank.

full filter.PNG

 

The Update Rule:

 

Create an update Rule (Audience > Tools > Data tools) of entity Type Custom Object, which will be configured to set the 'Unmapped Record?' field in your Custom data Object to equal the value ‘true’

Update Rule.PNG

The Program Builder Program

 

Now you create a program Builder Program that takes Entity Type: CDO Records (selecting your chosen CDO) & the flow needs to be as follows:

Program Builder.PNG

The decision step verifies if the record has a mapped contact within the specified filter (Which should include all contacts.)

 

If the Record has no mapped contact then the Update Rule is run in Step 100, setting that record's value in the Unmapped Record field to 'true'

The CDO service will detect that the record was modified and because the condition is now met, the record will be pushed into your Program canvas.

 

The Program canvas.

 

Very simply, this receives the record passed into it, verifies if the record has a mapped contact (it should not have) & then deletes the record accordingly.

If any records happen to sneak in that still have mapped contacts, they are excluded (I added a week wait step just for testing purposes)

Program Canvas.PNG

 

The CDO Record Services

 

To configure your CDO record services within your CDO:

Choose Custom Object > Custom Object Record Services

Choose Modified Data

Choose ‘Add Processing step

From the Add single Processing step option choose ‘Add to step in Program’  (this will route to your Program Canvas)

On the setup screen name your service.

Choose Custom Object records from Entity Type

In ‘This Processing Step Gets Executed’ set it to conditional:  only when the field Unmapped Record = “true”

Once this is set up you need to remember to Enable the service.

Enable CDO service.PNG

Once this is all tied together, you should go to your Program builder & in the start step (Step 000), Add Members to step & add ALL CDO records.

To do this choose source: your CDO & do not restrict the members.

 

Due to the performance limitations of CDO services, if large volumes of records are involved. pushing these through during prime business hours could have a performance effect on your instance.
For very large volumes of records it is recommended to pass them through the program Builder in smaller batches.

Good Luck!

Filter Blog

By date: By tag: