Must-Attend Sessions at Dreamforce 2015

Reading Time: 7 minutes

We are excited to be a part of Dreamforce 2015 this year – MuleSoft and Salesforce together are working to transform business. And Dreamforce itself is set to be an outstanding event. But with over 1600+ sessions and 400+ theaters, choosing the right sessions to attend at Dreamforce can be daunting. To help you create your best agenda, we’d like to share our picks, ranging from sessions we are presenting to thought leaders we follow.

Integration best practices

Connecting the Customer Success Platform: How Salesforce Approaches Integration

– Chris Tiernan, Director of Engineering, Salesforce.com

Tuesday, September 15, 4:30 – 5:10

Metreon AMC Theaters, Metreon Theater 12

Build Apps on Salesforce with MuleSoft’s Easy API-Led Connectivity to Any Data

– Adam Biehler, Dir. Global Strategic Alliances, MuleSoft

Thursday, September 17, 11:00 – 11:20

Cloud Expos, Partner Theater North 2

Build a Connected App in 10 Minutes or Less With Lightning + Data Gateway

– Bikram Sen, Sr. Solution Architect, MuleSoft

– Matias Coaker, Software Engineer, MuleSoft

Thursday, September 17, 12:45 – 1:15

Moscone West, Innovation Theater

Connect Salesforce and Transform Your Business

– Ron Wastal, VP of Strategic Alliances, MuleSoft

Thursday, September 17, 2:30 – 2:50

Moscone West, Analytics Cloud – Wave Theater (3rd Floor)

Transforming Experiences for Customers, Partners and Employees: A Strategy for the Digital Economy

– Adam Biehler, Dir. Global Strategic Alliances, MuleSoft

TBD – Date/Time

Deloitte’s Booth N1401

MuleSoft customer & partner sessions

Keynote: Precision is the Future of Healthcare + Life Sciences

– Mel Greene, Vice President, CareFirst Blue Cross Blue Shield

– Jennifer Lewis, Head of IS, Marketing and Franchises, Merck KGaA

– Joshua Newman, Salesforce

– Jim Rogers, Director, CenturaConnect, Centura Health

Tuesday, September 15, 1:00 – 2:00

San Francisco Marriott Marquis Hotel, Yerba Buena Salon 9

Who Wins When Sales & Service Teams Are on the Same Platform

– Bradford Cavanaugh, Process Automation & Solution Delivery, VMware

– Paul McConnon, Director of Solution Engineering, Service Cloud, Salesforce

Tuesday, September 15, 5:00 – 5:40

Metreon AMC Theaters, Metreon Theater 9

An Inside View at Box and Workday: Managing for Growth and Employee Success

– Craig Butler, VP, Information Systems, Workday

– Patrick Morrissey, Chief Revenue Officer, Simpplr

– Jess Liu, Salesforce

– Anisha Vaswani, Box

Wednesday, September 16, 10:00 – 10:40

InterContinental San Francisco Hotel, Union Square

AB InBev Radically Transforms How It Goes to Market with Salesforce

– Tom Clysner, Applications Project Director Europe, AB-InBev

– Alex Iordache, Customer Success Director, Salesforce

– Daan Santermans, Commercial IT manager, ABInBev

Wednesday, September 16, 10:30 – 11:10

InterContinental San Francisco Hotel, Grand Ballroom A-B

Customer Theater: Behind the Scenes on How UCSF Pioneered a Modern Health System

– Kristin Chu, Deputy Director of IS, UCSF

– Dr. Joshua Newman, Chief Medical Officer, Salesforce

Wednesday, September 16, 4:30 – 5:00

Moscone West, Customer Success Theater

Reimagine Patient Engagement: Improve Outcomes Before, During & After Care

– Melissa Boyle, Salesforce

– Allison Lewinson, Sr. Principal Customer Success Manager, Salesforce

– Jim Rogers, Director, CenturaConnect, Centura Health

– Fedor Vidal, IT Director, Johns Hopkins Medicine International

Thursday, September 17, 11:30 – 12:10

Century Theaters, Westfield Mall, Century Theater 3

HR Shared Services: Coca-Cola Refreshment’s Strategy with Salesforce

– Adam Bassett, Sr. Manager HR Customer Service, Coca-Cola Refreshments

– Jonathan Freel, HR Quality and Workforce Manager, Coca-Cola

– Beth Cord, Sr. Manager, HR Services Support, Coca-Cola Refreshments

– Lisa Gomez, Solutions Architect, Salesforce

Thursday, September 17, 3:30 – 4:10

Palace Hotel, Ralston Ballroom

Once you’ve chosen your favorite sessions, use the Dreamforce Agenda Builder to keep track of them all:

Don’t forget to register here using the promo-code EC15MLFT to receive $100 off a full conference pass, and don’t forget to use the MuleSoft Dreamforce 2015 landing page to make sure you can find us on-site.

Getting started with DataWeave: Part 1

Reading Time: 12 minutes

Data transformation is an inevitable component of connectivity, as most systems don’t speak the same language. Even when the format is similar, as when two RESTful Web APIs exchange JSON payloads, their message structure typically differs, making translation a necessity.

In this the first of a four-part series:

on our new data transformation engine, DataWeave, we will help you learn the basics of this elegant and lightweight expression language. We will first focus our attention on the canonical format which is the immediate result of every expression you execute in DataWeave. In the following posts, we will explore the power of DataWeave expressions and solve some real-world use cases.  You can also now view our DataWeave intro webinar available on demand below:

From DataMapper to DataWeave

Those of you familiar with Anypoint Platform will know DataMapper, our first solution for providing a graphical drag and drop approach to data transformation. We learned, based on customer feedback, that users were looking for a more powerful transformation engine.  With DataWeave, we coupled the transformation engine with the Mule runtime engine to ensure high performance, adopted a language first approach and designed the language with a simple JSON like syntax. As a result, it costs a fraction of the time to write a DataWeave expression compared to a similar use case in DataMapper.

Development Environment

Screen Shot 2015-08-30 at 6.21.46 PM
Screen Shot 2015-08-22 at 3.19.49 PM

As part of the design time experience for DataWeave you now have the facility to indicate to DataSense the structure of every message by explicitly setting it in the Metadata tab which is present in the other Message Processors. You should also be mindful of the mime-types of the Message data you have to transform. When this is not set explicitly at design time and when you use any of our Connectors, this will default to application/java. For HTTP requests and responses Mule will look at the Content-Type header and set it accordingly. You should set the mime-type explicitly when you are using the set-variable and set-payload processors. Failing to set the mime-type explicitly for xml content will result in it being interpreted as a mere Java string by the engine. Anypoint Studio presents a DataWeave editor with 3 panes. On the left, DataSense displays the structure of the incoming message, together with any example data you have provided. On the right pane, the expected outgoing structure is displayed as per DataSense as well as the design time result of your transformation which constantly refreshes itself as you write the expression. The middle pane is the transformation pane. This is divided into two sections. The header is where you declare the mime type of the output of your transformation. You can also declare reusable functions and global variables as also namespaces for xml use cases. At a minimum you must declare the %dw 1.0 header and the output mime-type. Below the dotted line is where you author your expression. You only need one expression. There are a number of expression types, but for the majority of your transformations, you will use a semi-literal expression of a DataWeave Object. The same DataWeave transformer can produce multiple outputs from the same incoming Message. You do this by clicking on the plus circle at the bottom right of the transformation pane. Doing so will present you with another transformation pane and you are free to specify a different target (flowVars, etc.) by choosing a different Output from the drop-down at the top of the transformation pane.

Literal Expressions

Screen Shot 2015-08-31 at 7.15.25 PM

There are only 3 data types that can result from any DataWeave expression: Simple Types, like Strings and numbers, Arrays and Objects. Each of these can be expressed literally: You will typically use semi-literal object expressions to define your transformation. To understand this, first consider the example object literal on row 2 above. A DataWeave object is a sequence of key:value pairs. The key is a string without the quotes and the value can be either a simple type, an array, or an object. However, you are not obliged to express the keys and values literally. You can use any expression that returns a string for the key and any expression at all for the value. There are a number of different expression types available to you. We will explore more of these in the next parts of this series. For now we concentrate on the combination of literal expressions and variable references.

Variable Reference Expressions

Screen Shot 2015-08-30 at 11.47.00 AM
Screen Shot 2015-08-30 at 8.36.33 PM
Screen Shot 2015-08-30 at 8.34.58 PM

Key to learning DataWeave is an understanding of the normalization of data which occurs whenever variable references are made to the payload or flowVars, sessionVars, recordVars, inboundProperties or outboundProperties. These expressions convert the incoming data into the canonical DataWeave format. Hence, it makes no difference if your incoming data is JSON or XML or CSV or Java, as these will always be resolved to DataWeave simple types, arrays or objects. You do well to think only in terms of DataWeave data types as these set the context for your expressions and are the result of each expression. Here is an example of how an incoming XML document is resolved to an object. Note the convenient learning experience afforded to you when you declare the output to be application/dw. Note how each element in the xml is normalized as a key:value pair in the object. When the content type of an element is complex, then its normalized value is itself an object. Note also that repeating elements are normalized as repeating key:value pairs. Consider the following CSV. It is normalized as an array of Objects with key:value pairs that correspond to the name of the header and column value respectively. Now, take a look at the result of using a semi-literal expression which wraps the same payload in an object which declares both the forecasts and the city for which they were made:

Output Rendering

Screen Shot 2015-08-30 at 11.07.17 PM

The DataWeave engine separates the actual transformation process within the canonical format from the final rendering of the same in the output mime type you defined in the header. It does not matter how complex your expression is. If it’s an object with deep nested structure and expressions and operators which combine expressions, all of these must be executed first and return their value before the outer expression returns its value. It is this final value which is rendered in the output mime-type. You need to be mindful of the constraints imposed by your choice of mime-type. Arrays will not be rendered in xml. You should choose to repeat keys instead. Likewise, repeating keys cannot be rendered in Json. You should generate arrays instead. To render an object to XML, in line with the rule that XML documents may only contain one root element, the object may only contain one key:value pair. Its value can, as we have seen, itself be an object of any complexity. Consider the above transformation, modified accordingly to render a valid XML document.

Watch our DataWeave webinar

In the Next Post…

With these basics in mind, our next post, Getting Started with DataWeave: Part 2, will delve into the powerful Selector expression for object and array navigation and we will look into iteration and conditional logic for dynamic data generation.


MuleSoft and Salesforce Health Cloud: Transforming Healthcare at Cloud Speed

Reading Time: 3 minutes

Salesforce’s Health Cloud announcement today is exciting for patients and clinicians, for healthcare technologists and for integration nerds alike.

For patients and clinicians, Salesforce Health Cloud brings the possibility of precision medicine closer to reality: by delivering proactive patient care coordination, Health Cloud will allow healthcare providers to increase patient satisfaction, improve outcomes and reduce avoidable care.

For healthcare technologists, Salesforce Health Cloud shows how technology can be used to transform how patients and clinicians interact. Health Cloud serves as a single engagement platform which provides a complete view of the patient. By leveraging cloud and mobile technologies it also allows patients and clinicians to collaborate seamlessly everywhere.

And finally, for integration nerds, Salesforce’s Health Cloud highlights how critical connectivity is to pushing forwards what’s possible in Healthcare. A single patient record can only be achieved by bringing together multiple systems in real-time, normalizing and enriching that data, and exposing it in a secure way to across desktop, cloud and mobile platforms.

MuleSoft is both excited and humbled to be Salesforce’s integration launch partner for Salesforce Health Cloud. MuleSoft’s Anypoint Platform for Salesforce Health Cloud marries the power of Anypoint Platform with a set of integration templates that seamlessly brings Epic Bridges and Epic Interconnect as well as HL7 v2, HL7 FHIR and SOAP data into Health Cloud. Built in partnership with our own customers, these templates provide pre-built data mappings, error handling and user security and authorization.

Come and visit us at Dreamforce at Booths N1831 and N1829 to see MuleSoft and Salesforce Health Cloud in action, and pre-book your meeting time here! See you in San Francisco!