I'm Gillian Bruce, Principal Admin Evangelist
at Salesforce, and you are watching "How I Solved It,"
where we dive into a business challenge
and show how one Awesome Admin chose to solve it.
Today we are joined by Awesome Admin, Jen Cole.
Thanks, Gillian, it's so great to be here.
So, Jen, as admins, we know that managing data
can sometimes be quite the challenge for organizations.
Yes, Gillian, especially the large organizations
or the businesses that are just using multiple systems
to manage their day-to-day operations.
Sounds like you have some experience in this arena, Jen.
Yes, so let me tell you about a time
when I was tasked with solving an inefficient sales
and fulfillment process for a small to medium business.
Part of this process required Salesforce orders
to be replicated into our
enterprise resource planning system,
and that's where the orders are shipped out.
The problem we uncovered was that the account model
in Salesforce, where we store the actual
brick and mortar addresses for those locations,
didn't match the billing and shipping addresses
for those same customers in the ERP.
And therefore it would be near impossible
to map the orders from Salesforce to the ERP,
without resolving this data hiccup.
Ah, yes, systems not correctly syncing.
Fairly common problem faced by a lot of businesses.
I built a solution using MuleSoft Composer,
and I'm using it to sync the billing
and the shipping addresses, between those two systems.
Great, well, we could talk a little bit more about this
but what I really want to see, is it in action.
Can you show me what you built?
Yes, Gillian, let me show you how I solved it.
Well, Gillian, let me start by telling you
As I mentioned, our ultimate goal was to replicate
the Salesforce orders into our ERP, for order fulfillment.
But the challenge we had within the solve,
was that the Salesforce account model
didn't match the ERP account model.
And that's not wrong, but on the Salesforce side,
where we have a true brick and mortar address,
parent-child relationship.
well that's built for order fulfillment.
So it has a billing customer
with designated shipping locations associated to it.
So this doesn't sound like a fairytale, Jen.
This is sounding a little bit more like a scary story.
It's not scary, I promise.
The strategy was to replicate our
ERP Customer Hierarchy in Salesforce,
to support our finance and sales teams.
So for the finance side of the house,
we actually start in the ERP.
And this is where our new customers are created,
following our finance processes.
And then using MuleSoft Composer,
I replicate that into Salesforce
using a dedicated account record type,
that I built just to store these billing customers
And then when it comes to the sales side of the process,
they're playing with orders.
So if an order has a new shipping address,
because we actually replicate it back over into our ERP,
to not only create that shipping address,
but then link it to the correct billing customer.
And then once it's an official new shipping address
inside the ERP, and approved,
we've replicated that right back into Salesforce
to create a child shipping record,
which is again, my custom object.
And then I parent it up to its parent account,
which is the billing customer.
Okay, this story is getting much better.
Creating a data model before building a thing
in either system, that is some strategic
Awesome Admin thinking, Jen.
And it makes it super clear
what you're trying to accomplish.
Yeah, well let's start here on the order record page,
where you can see we have a few address fields
for both billing and for shipping.
The billing address is pulled from the account record
and the shipping addresses are pulled from my child object,
or my custom object related to that account,
since one account can actually have
multiple shipping locations.
Okay, so that makes sense,
like how there's one headquarters for a business,
but many different office locations
which might order supplies.
Now, when someone is creating a new order in Salesforce,
how do they know which shipping address to choose?
Let's modify this draft order
and in it you can see that I have a dropdown menu,
to choose the shipping location,
with a few filtered options.
Now these results are only appearing
because I've limited what you can actually see,
based upon the parent that you've chosen.
I'm actually using one of the often forgotten features
Ooh, I love it, field filters.
Now what if they don't see the location they want listed?
Great question and one of my favorites.
They can add a new shipping location right here.
Now this is the Salesforce side of the ordering process
but remember we have an ERP side of the process,
where orders are coming from as well.
So how do those ERP orders get into Salesforce?
And how do the changes from Salesforce
get included in the ERP system?
Yeah, so this is where I'm using MuleSoft Composer.
Before we get into the flows, let me explain
how I translate the ERP data to Salesforce and vice versa.
The address data is scripted differently in each system,
so I created a custom object, ERP customers,
to store all of that ERP shipping information,
and then I map it to the billing account,
Aha, yes, your decoder ring.
Now, can I see what you built in Composer?
So Gillian, I want to start off with the first flow,
where I'm actually copying over the information
from the ERP into Salesforce.
It's kind of crazy to think about it
but this one flow actually does it all.
Whether I'm creating or updating a new billing account,
or creating or updating any child shipping addresses,
this one flow will manage it.
So first I'm listening for any events
that are happening in the ERP,
and whenever that record is updated or created,
The next thing the flow does is actually look to grab
the internal ID, because I want to make sure
that I match that between the two systems.
These are unique records and that prevents stamping
the wrong shipping address on the wrong billing account.
Yeah, so that internal ID is really the core
Yeah, so I'm actually going to run through
the address book of that billing customer
in the ERP, because I need to figure out
if I'm dealing with a billing address,
or if I'm dealing with a general shipping address.
If I'm dealing with a billing address,
then I know that I have to go in
and create that specific account record in Salesforce,
that represents the billing account.
From there, I'm going to create all my child shipping records.
The next thing I do is grab all of the shipping addresses
and then I create what I'm calling ERP customers,
my custom object in Salesforce.
Aha, that's the custom object you built
as part of your decoder ring.
You keep adding to that decoder ring bling.
Yeah, so this section here
allows me to update these records
when it's not the default billing address
that I've picked up from the ERP.
And the next, I'm going to get my account record
right in Salesforce, that I've either created or updated,
because later what I want to do is
actually parent and relate those records together,
because that's really important.
I'm creating all these bill to accounts
and I have all these child records floating around.
I need to marry them together.
So once I get my list of accounts
and I have my list of shipping locations,
I go through and I parent them right here.
Okay, this decoder ring bling is really blinding me
You did so much with that one Composer flow,
translating address data to and from each system.
Now, what happens when you get an order
with a new shipping address?
Such a great question, Gillian.
So in that unique scenario
where there's a brand new shipping address
for the customer we have, and it's not in our system yet,
that's when I'm actually leveraging the other flow
that I've got, that is actually replicating
the Salesforce orders over into the ERP.
So Gillian, this flow is really long
and it's full of a lot of information
to replicate the order over.
So I'm actually going to just jump to the section
that pertains to your question.
The triggering event is happening in Salesforce
because I'm passing over the approved Salesforce orders
And then once I do that, I actually jump through
a lot of if else statements, to make sure I'm grabbing
and I'm passing over the right information.
But what I want to show you
is the actual order creation piece.
That's what I'm here for.
Let's see that order creation piece.
Yeah, so do you remember that order
that we modified earlier, Gillian?
If I don't know the shipping location,
the shipping ID field is actually going to be blank,
and this flow evaluates if that field is blank or not.
So when that statement evaluates to true,
it will grab all of the address details
I've hand typed in, and then replicate them
And then from there we have an automation in our ERP,
to actually scoop up that shipping location
and make it a brand new record,
and marry it to the billing customer in the ERP.
Wow, Jen, that is some incredibly thoughtful
We just spent a lot of time in Composer.
Now that we've seen how you built the structure
can we see what it looks like for your end users?
So here we're back on the order page,
where you can see the shipping addresses updated
And when I click into that billing account,
you can see the multiple addresses related to it,
including the ones that have been recently added.
And all of these addresses are now in sync
Okay, I have to admit this story wasn't as scary
as it sounded at first, Jen.
I'd actually like to say that it has ended
Thank you Jen for showing us that great demo
and showing us how you solved it.
Now, Jen, we saw how you used MuleSoft
to build a solution and essentially get the systems
Salesforce also has a lot of other tools
across the platform, that admins can use
to drive success at their companies,
which is why developing product management skills
is so important for admins.
Can you talk us through your thoughts on this?
And what admins can do to help develop this skill?
In my book, it's crucial to have a basic understanding
of the platform's overall functionality.
I don't believe it's feasible to understand
every in and out of each feature,
but understanding its general function
will help you a lot when it comes to addressing
And to develop the skill,
I highly recommend starting with Trailhead.
It's a powerful place to learn more about the features,
and also a safe place to administer it.
They're a great place to put theory into practice.
I spend a lot of time breaking things in our sandboxes
because I love to play out our real life scenarios
with data that's real to my business,
and I'm not impacting the day-to-day business.
And then three, community.
That's a wonderful place because as admins,
we can't know every nitty gritty detail
of every feature, add-on, plugin, or app that's out there.
We'd get nothing else done if we tried.
So I'll often turn to the community and ask questions like,
how did you approach this?
Because I know I'm not the only one out there
trying to solve those problems.
In your demo, we saw some amazing automations.
What are some of the benefits for admins
when learning how to use automation tools?
For sure, so automation saves time,
and that means also improving the day-to-day experience
And along with this, it's saving you money.
So to me that smells like
the secret ingredients to adoption.
And then two, automation ensures
that we're just getting things done,
especially those really hard to remember business processes
that sometimes slip through the cracks,
like bumpers on a bowling lane,
it just keeps your business moving in the right direction.
And then three, a favorite, automation improves
Using automation to drive processes,
collect the information, and gather details
to improve our data quality,
and help users and execs make good business decisions,
and of course ultimately deliver success.
can you please share with everyone
your top three data management tips?
So the first one I like to think of is quality.
Ask yourself is how we're capturing the information
going to provide us with the best data for reporting?
Two, it's all about process.
Do the fields in the workflow you've built
support your business processes?
And are you using the same terminology?
Designing in reverse is great.
What does your business need to report on
in order to make thoughtful decisions
about the direction of the business?
Thank you so much, Jen, for being our guest today
If you'd like to learn more about what you saw
in today's episode, please visit admin.salesforce.com.
With that, I'm Gillian Bruce,
and I'll catch you next time in the cloud.