Unsupported Velocity Tools Disabled in June 2019 Release

No ratings

To enhance the stability of Marketo’s email assembly infrastructure, we are disabling some Velocity Script functionality on June 14, 2019.

What change is being made?

The following Velocity Tools will permanently be disabled for use in email script, on June 14, 2019.

My Tokens:

  • classTool
  • contextTool
  • resourceTool

Some common use examples of these tools include:

  • $class.
  • getClass()
  • $context.

When are these changes taking effect?

These changes will take effect in the June 2019 Release on June 14, 2019.

How did it work before?

The way Velocity Tools are used in your email scripts is highly dependent on the structure of your code and varies on a case-by-case basis. To identify how you are currently utilizing Velocity Tools in your email design, please consult directly with your developer. Documentation on each tool can be found on Apache’s website at the links below:

classTool : https://velocity.apache.org/tools/devel/apidocs/org/apache/velocity/tools/generic/ClassTool.html

contextTool: https://velocity.apache.org/tools/devel/apidocs/org/apache/velocity/tools/generic/ContextTool.html

resourceTool: https://velocity.apache.org/tools/devel/apidocs/org/apache/velocity/tools/generic/ResourceTool.html

Why is this changing?

We regularly review our infrastructure to ensure it meets the highest standards for stability and security. During a recent review, we identified that a small subset of Velocity Tools could potentially impact the health of our message assembly servers, and as a result, we made the decision to disable these permanently.

What do I need to do?

If you are currently using Velocity Tools in your email scripting, you will need to review and update your script to use alternate methods before June 14, 2019. Documentation on supported Velocity Scripting can be found on our Developers’ site at http://developers.marketo.com/email-scripting/. Any email script tokens still referencing Velocity Tools after the June 14, 2019 deadline could fail to compile, resulting in emails not rendering as expected or complete send failure.

We have identified impacted customers using these Velocity Tools and will alert them individually via Marketo Notifications.

Considering the customized nature of Velocity Scripting, Marketo Support is not able to assist with the authoring or troubleshooting of custom code. Please reach out to your developer for assistance. If you no longer have access to a technical resource, you may also contact your CSM to coordinate a scoping call with our Professional Services team.

Labels (1)

When you say you will alert customers "individually via Marketo Notifications", you mean in platform notifications right?


If so, how soon can we expect to receive those and how specific will they be? Will they name the specific tokens that need to be updated?

We have a number of tokens that may or may not be impacted which I scripted myself, so I'm just trying to determine whether I should start scouring my code for these references or if these notifications are going to help me do some of that work.

Thursday Evening (US time) is when the notifications should start to appear in instances currently using these tools.


I guess I can wait until then to see what's included in those notifications.

Thanks, Steven!

Hi Osman,

We are needing a bit more time on the notification end.  Likely will go out early next week.  I'll reply here to confirm.

Okay. Thank you, Steven! Really appreciate the update! Have a great weekend!

Hey, Steven!

Just wondering if there's any timeline on these notifications yet.

Or maybe they were already pushed out and our instance wasn't one of those impacted by these changes?

One can always hope. 

Hi Osman,

I'm sorry!  They were pushed out last week.  If you didn't get one, you should be unaffected.

No trouble at all! we received no notification, so it looks like we have been "granted clemency". 

Thanks, Steven! 


Any chance on telling us some of the alternatives to the 3 tools that will depreciate after the June update?

Thank you,


We'rd stuck in this boat, too.

We're using the "context" tool to help generate a date format.  Can anyone help us figure out a way around using that tool?  Script is below.

#set ( $inTimeZone = $date.getTimeZone().getTimeZone('America/Los_Angeles') )
#set ( $outTimeZone = $date.getTimeZone().getTimeZone('America/Los_Angeles') )
#set ( $locale = $date.getLocale() )
#set ( $String = $context.getClass().forName("java.lang.String") )
#set ( $LocaleFrom2Part = $locale.getClass().getConstructor($String,$String) )
#set ( $locales = {
   "en_US" : $LocaleFrom2Part.newInstance("en","US"),
   "es_ES" : $LocaleFrom2Part.newInstance("es","ES")
#set ( $myDate=$convert.parseDate($lead.mcmnextpaymentduedate,'yyyy-MM-dd',$locale,$inTimeZone) )
${date.format("d 'de' MMMM 'de' yyyy",$myDate,$locales.es_ES,$outTimeZone)}#else
${date.format("MMM d, yyyy",$myDate,$locales.en_US,$outTimeZone)}#end

That's not the only thing that's now broken in your code, so I don't want to give you false hope, Annette.

Another way to instantiate a locale is with

#set( $locales = {
"en_US" : $convert.toLocale("en_US"),
"es_ES" : $convert.toLocale("es_ES")
} )‍‍‍‍‍‍‍‍‍‍‍‍

But your code will simply break on another line now.

Does this change now mean that Sanford WhitemanUse JavaScript within Velocity script won't work? Is there a workaround for this?

Yes. No workaround for JS, but quite possibly another way to get the output your want, as I mentioned on your other thread.