Visual Workflow Live! Complete Task and Notify

After wrestling with YouTube, I FINALLY have this video up and ready. Needless to say, I have learned a few important things from my first live-streaming experience:

  1. Do not play background music. Chances are it’s copyrighted, and YouTube will either restrict it or block it. Sorry, Salesforcers in Deutschland, this video won’t work for you. ūüė¶ It also means the last few minutes of audio got muted forceably by YouTube, ¬†so I had to annotate it manually.
  2. Do not check your own stream on the same computer you’re recording on. It’ll pick up and audio and you’ll have two audio streams being recorded simultaneously. It’s kind of like a time machine, thanks to the 20 second delay, but not as cool.
  3. YouTube’s built-in video editor is OK. It works for what I need. Might need something more advanced someday, but for now, it’s good.
  4. Need more people in the chat! Had at least one person in the chat contributing, and it was a big help. Thanks lifewithryan!

So without further ado, here’s the video from last week, and look forward to more video coming soon!

Live broadcasting tonight!



Let’s try a little experiment, shall we?

Tonight, starting at 9pm Central Time, I’m going to be working on a redesign of a Visual Workflow for tasks to deploy to production. The twist? I’m going to be doing my work LIVE on the air for everyone to see!

I’ll be using a site called, which is specifically designed for this sort of thing. Many different kinds of artists and designers use to broadcast their creation process, and so I shall be doing the same.

I’ll be talking through my visual workflow work, as well as taking questions, so consider this a two-birds-one-stone kind of event; you can watch how visual workflow is made, and/or take the opportunity to ask an experienced Salesforce admin and visual workflow designer any questions you might have. The questions don’t even have to be visual workflow related! I’ll help out any way I can, if I can.

If you want to ask questions, you’ll have to create an account on, but the good news is that accounts are free. If you get routed to a page asking if you want to pay for a Pro account for $9.99 a month, this is NOT NECESSARY, so don’t feel obligated.

When 9pm rolls around, click this link ( OR the logo at the top of this article, and it will take you there.

And now, a little FAQ:

  • What is

Well, have you heard of If you have, is the predecessor to, and is run by the same people. It’s basically the same thing as Twitch, but for things that are not games.

If you haven’t heard of Twitch, is a live-streaming site. It lets people from around the world broadcast whatever they want (within moral guidelines of course) for free, for other people to watch. People can broadcast for free, and people can watch for free. And I mean free as in beer!

  • But the¬†site is asking me for money…

Don’t worry about it. Click back and find the Sign In button at the top. I make no money from this, and in no other way get any reimbursement from Salesforce or Yes, and Twitch have subscriber options where the broadcasters can make money, but I am not using that functionality.

  • If you’re not getting anything for doing this, why are you doing it?

Multiple reasons in this answer. One, I really like helping people, and having an “open office hours” of sorts appeals to me. I may not be the best admin, but I’m no slouch, if I may¬†say so myself. This is my way of contributing.

Two, people love to watch people. It’s in our natures. And we love watching people do things that we do. I know that I would love to watch someone work in Salesforce; I looked to see if anyone was doing this sort of thing, because I wanted to see it! Since I couldn’t find anyone, I figured, why the hell not.

Three, visual workflow is a bit of a beast. It’s difficult to explain how you put a Flow¬†together with text alone. By livestreaming it, people can watch and understand the process, and ask questions if they see something they don’t quite get.

  • How do I do (X) in Visual Workflow?

Woah there, Silver. Save your questions for the livestream.

  • How do I talk to you or ask questions once you’re streaming?

You’ll have to sign up for a account, but once you do, you’ll be able to post in the Chat on the right side of the screen.

  • Why so late at night?

Believe me, trying to livestream with a toddler demanding your attention is not really possible. Trust me when I say it’s best to wait until after her bedtime.

  • If you’re doing your work live, doesn’t that put your company’s data at risk?

That’s why I’ll be working in a non-full sandbox. Cuz I’m smaahhht, see? Smaaahhht.

  • Ok, Mr. Smarty-Pants, what if we see you doing something dumb in the livestream?

Oh, I’m definitely human. I make mistakes. If you see me doing something in Salesforce that you think would be better done in another way, or is something that is just plain stupid, call it out! Let me know! I’m a big boy, I can take it. Even the best have their off moments, and I’m not even the best, so I expect my off-moment quotient to be higher.

Did you know…? Account Names

The character limit on the Account Name field is actually 255 characters, not the standard 80 found on custom objects. This is not stated in the UI, but can be found in documentation

Just remember that if you use workflow to populate any custom object name fields with the Account Name, that any account with more than 80 characters will break your workflow! (I say this, because I’ve done it.)

So if this question appears on your Salesforce Certification exam, you will now know the answer! And knowing is… well, you know.


Random Discovery – Record Type Fields in Formulas

If you’re like me, it’s sometimes easy to forget what options and services are available to you if you can’t see them. Case in point: being able to use Record Type fields in formulas.

This is a feature that was released only a year ago, but yesterday, I discovered that it’s not readily apparent EVERYwhere.

Here’s what the interface looks like when making a formula on a custom object:


But here’s what it looks like when making a formula in Case:


Wait, what’s missing here? There’s no Record Type > ! And upon further research, I found it was not present in any of the Standard Objects I looked in: Cases, Accounts, Opps.

Does this mean that the functionality was not present in those Standard Objects? Breathe a sigh of relief, for the answer is, you CAN still use it. To test this, I manually typed in “RecordType.Name”, hit the Check Syntax button, and got the following result:


So there you have it. It WORKS, but it’s just not in the UI for Standard Objects. And frankly, it’s telling, regarding the overwhelming number of things we can do in Salesforce, the sheer scope of possibility, that only a year after release it’s so easy to forget that this feature was released.

Here are the values you can manually type into Standard Object formulas, validation rules, and workflow to reference Record Type information:

RecordType.Id (but avoid this one whenever possible!)
RecordType.DevName (I prefer using this one over RecordType.Name, because this is the API name and as a result, is in far less danger of being changed by a well-meaning admin.)

Post to Chatter from Visual Workflow


One of the most marvelous aspects of Visual Workflow is the fact that you can hit any API-based object from it. If it’s listed here, you can generally read, create or delete from it (with a few exceptions on protected objects, of course). It’s a surprising amount of power, once you dive into it. Today we’ll look at one of those possibilities: making Chatter posts from Flow. If you’re hip on upcoming events, you’ll know that the Salesforce product team is working on adding a new regular workflow action to post to Chatter (SAFE HARBOR!), but until that day comes, welcome to your one-and-only method of Chatter automation.

Well, you could always code something in Apex. And I suppose you could find something on AppExchange. Ok, it’s not your ONLY solution but it’s a pretty damn good one.

The key to creating a Chatter post is using the object “FeedItem”. “FeedPost” sounds more applicable, but it’s actually counter-intuitive; FeedItem is a newer object that replaced FeedPost (I believe this was done to enable other types of posts, like polls and dashboard components).

You can use the Create Record element, and only a few fields are required for your post.


The field “Body” is absolutely necessary. I highly recommend making a Text Template in your Flow and calling it for your Body. If your post is super-short, though, you can just type in what you like.

ParentId is also necessary; this is the Salesforce ID of the record that this Chatter post should be on. You can make it a User ID to post it on their wall, but best practice is to place it on any object that has Chatter Feed turned on. (You may also see a field called RelatedRecordId; this is actually a field only used when attaching Content to a Chatter post!)

LinkUrl and Title are optional; they are used if you wish to post link in your Chatter post. You can type in both of these fields manually, and you can even merge in Flow variables by manually typing in {!variableName}, as shown above.

There are other fields, and some of them may seem necessary, like Type. However, these fields are set to contain default values, and almost always, those default values are what you will want to use, so really the above fields are all you need to worry about.

Other Considerations

  • At this time it is not possible to do @ mentions in your posts. Sad face.
  • Historically, you can use topics, albeit with limitations. If you put a # sign in your post body, the word immediately following it will be marked as a topic. However, it’ll just use one word, so you can’t do topics with spaces in them. I have not tested this in a Spring 14 setup, though, so I am unsure how this will work with the new Topics system.
  • BEWARE THE SPAM. If the Flow that makes a Chatter post is used frequently throughout the day, this will make a LOT of Chatter posts. This can be a good thing, but it can also be an extremely bad thing. If one use uses the Flow 10 times a day, those 10 posts are going to show up in the digests of every user that is following the user. If the follower is also following someone else who is doing the same thing, they now have 20 posts in their digests. If there was only 1 or 2 posts that actually contain something the user needs to see, and they get mixed in with the 10-20 other posts that, frankly, become very samey and ‘boy-who-cried-wolf’ after weeks or months of repetition, the Chatter digests will come to be ignored. I HAVE SEEN THIS FIRSTHAND. Nothing will kill Chatter usage and adoption like Chatter spam.

There you have it! Chatter post automation from Flows! Easy peasy! Now, because there has not been nearly enough levity in this blog post… narwhals.


The Dreamforce 2013 Presentation with the Very Generic Name

Some of the sessions from Dreamforce 2013 have gone up on Youtube, and today my session went up!

Dan Harrison, Salesforce Senior Engineer, and I go over some advanced use cases for Visual Workflow. We’re looking into putting together a package with the flows that were demo’d, so hopefully that will go up soon.

Look for my post-Dreamforce post coming soon!

Flow Tools – The Best Plug-ins To Date, by Rajaram

A while back, the product manager for Flow, Varadarajan Rajaram, published on GitHub a series of Flow-based plug-ins and tools to make life easier using Flow. Truly, they were some of the best plug-ins ever made to facilitate Flow in Salesforce. Why they never made it into Salesforce’s core Flow offering, I’ll never know.

Now, however, Rajaram is no longer with Salesforce, and the GitHub page has been taken down. Thankfully, I did manage to download some of the source code, so I am making it available to the public here. It’s in the form of Apex classes and plug-ins, so you’ll likely have to use something like Eclipse and the good ol’ fashioned copy-paste to get them into your system. ANT can also be used, if you know those ropes.

I repeat: All of the following content is Varadarajan Rajaram’s, and not mine. I did not write any of this; I am just making it available in his stead.

And as always, install into your sandbox first!

FlowPicklistSync – Allows you to use existing Picklist definitions without re-creating them as Choices in Flow.

FlowShowAsYouGo – Shows how to create a dynamic Visualforce page that can get information from the flow as the flow progresses.

FlowPluginPack – Contains some of the plugins found in the AppExchange pack, plus a couple others: Submit for Approval, and Zip Code Verification.

Know Your Flow: Post-Its for Beginners

So here’s the thing. I WAS going to write a short series of blog posts on How to Get Started on Visual Workflow. It was to be a Great Work, a definitive treatise bringing clarity, insight and edification to the lay user, its sole purpose being to exist in this world as an utter personification of knowledge.

Then I saw Keith Sadler had beaten me to it.

Check out his awesome Part 1 and Part 2 blog posts over at to learn how to use Flow and get started on your very own real-world very-useful sample Flow. I’ve had some conversations with Keith, and I know first-hand that he really knows his stuff.

I LOVE Post-It Notes. I don’t use them as much as I should, due to an overwhelming and logic-disregarding need to use as little paper as possible. I mean, come on, this is the future, right? The only thing we’re missing is flying cars. Paper is soooo 2nd Century BC. Even¬†Evernote is trying to digitize them.

Post-It Notes serve many functions, but one of the most useful ones is to serve as not just task reminders, but as impromptu cubicle posters: tiny pastel-colored mantras that remind us not just to pick up the milk, but to think or act in certain ways. An inspirational poster with your favorite motivational quote will often cost upwards of $5-10, but writing it in pen on a Post-It and sticking it on the edge of your monitor costs pennies at most, with the added bonus of taking up less space!


Many such mantras are important for Salesforce Admins, or even for working people in general. I’m sure each of us knows at least one co-worker who would have benefited from having Wheaton’s Law permanently affixed to a prominent location in their workspace. And then there are the timeless admin Rules of Being Awesome put forth by Mike Gerholdt and the other MVPs; edicts like “Always build in the sandbox first”, or “Create trust in your data”, or “Communicate all changes!” These are, and shall ever be, key to success as an admin.

As such, I have come to call mantras like these “Post-Its”. They are friendly reminders on how best to work, and when it comes to Flow, there are certain “Post-Its” that one must remember as they begin their Flow journey. These are things that are not necessarily apparent, but crucial to keep in mind as you build your first Flows.

1. It’s Like a Flowchart, But It Does Stuff

Ok, you'll probably have more branching than this. Doesn't make it any less true.

Ok, you’ll probably have more branching than this. Doesn’t make it any less true.

If you ever have trouble wrapping your head around how exactly to build your Flow, the thing to remember is that it is, at its heart, a flowchart. If you’ve ever used Visio, OmniGraffle, Diagramly, or any of the myriad of programs that allow you to drop in shapes, write text, and draw arrows, you’ve done half of the work in Visual Workflow. The difference is, each of those Visio boxes can now be set up to DO something. ANYTHING. It’s extremely powerful!

Conversely, Flow works just like those charts do. It will only do things in the order in which you set them, and it will do things EXACTLY as you tell it to. Quite honestly, it is usually a great help to FIRST write out the flow you are thinking of, on paper or even in Visio, just to wrap your head around the logic, branching, assignments, and general order of things.

2. Screens Not Necessary (Mostly)

Almost every example or sample flow that you’ll see will have a Screen in it. And for the most part, great. Awesome. Communication is good. Generally speaking, you want to talk to your users as much as possible.

But what if you really don’t need to tell the user anything?

Notice there are no Screen objects here, except for the Fault error screen. We're doing a lot here, but it's all automation. There's no need to tell the user "Job done" and make them click another Finish button when they already know what's going to happen.

Notice there are no Screen objects here, except for the Fault error screen. We’re doing a lot here, but it’s all automation. There’s no need to tell the user “Job done” and make them click another Finish button when they already know what’s going to happen.

The thing to remember is that Visual Workflow has Workflow as its base. It can do nearly everything Workflow can, except that it has to fire off of a link or button. But in that sense, it can be treated like workflow.

Workflow doesn’t tell you when it’s completed successfully, does it? It just works. The same can apply to Visual Workflow as well. If you’re completing some simple automation with your link or button and you don’t need to obtain any additional information along the way,

Now I say this, but remember, my young Padawan, that only a Sith deals in absolutes. There are exceptions to every rule. Even if you don’t need to get any information or show a Finish screen, ALWAYS put in at least one Screen as an Error message/Fault. Generally speaking, each Record Create or Record Update should go to a Fault of some kind, even if they just share one.

3. Affect as Much as You Can

Some say that Admins have a God complex. And my response to that is, of course we do. Why do you think we always capitalize the word "Admins"?

Flow is powerful, and frankly it can sometimes be easy to forget just how powerful it is. So you’ve finished that Flow that updates a Case from a custom object. Why stop there? You could update that Account field which tracks your overall Case status, make a Chatter post, send a Task to a manager to follow-up, and make a new Idea record, all with one click.

Obviously, you won’t necessarily want to go crazy with it. THE major hallmark of a solid project is a clearly-defined scope, and in any project your goal should be to stick to that scope. But thinking along these lines can help you to plan ahead of time, to (quite literally) go with the Flow. On more than one occasion, I’ve found myself listening to the request of a director or manager, and the more I think about all the different ways in which their department touches other departments, the more ways I find to connect the objects through synchronized cross-object data updates. Those connections create extra value in your system, leading to easier reporting and more complete data!

4. Install the Getting Started Pack (and filter out most of it)


On the AppExchange, you’ll find a hidden gem from Salesforce Labs called Visual Workflow Getting Started Pack. My advice: get this installed as soon as possible. Even once you do, you’ll have to sieve away a good amount of what is included to get to the gold nugget inside. That nugget is a little Apex plug-in that lets you send emails from Visual Workflow, an invaluable tool for communication in any organization that hasn’t fulled embraced Chatter or is trying to reduce Chatter clutter.

The one problem with this pack is all of the other things that come with it. There are a few other plugins that may or may not see any use, and a lot of sample plugins that, quite honestly, cease to be of any use after a certain point. Do yourself a favor and make a Flow view that filters out all the flows you no longer need.

5. Think Outside the Flow


I absolutely ADORE Flow like it was one of my children, but even the most loving parent should be aware of their loved one’s limitations. It is but one tool in the toolbox, and as powerful as it is, it’s no good at things like simple math or formula functions (e.g. LEFT, YEAR, SUBSTITUTE). You want to include the year of the created date in the name of your newly created record? Sorry chum.¬†You want to create a Task, but you want that due date to be two weeks from the date the user specified in the Flow’s Screen questions? Good luck.

BUT there are ways of getting around those limitations. The key is to remember that Flow is but part of the Wide World of Salesforce, and it can interact with the other parts. Let’s look at the first problem: somehow parsing out just the year of the created date.

  1. Set up a workflow that fires off when this type of record is created. Make it perform a Field Update that does the concatenation onto the record name, pulling whatever naming data you need. You can easily do the YEAR method on the CreatedDate as part of your Field Update; it’ll calculate it on the fly for you.
  2. If a user creates the record manually, you can still have this apply. Just be sure to tell your users that the Name field will be filled in automatically, but because it’s a universally-required field (being a Name field core to all Salesforce objects), they’ll have to put something in before hitting Save. Anything will do. Hit the letter A and call it good. It’ll just get overwritten by your Workflow, as it should!
  3. If you need it to only do this update on records created by the Flow, create a new checkbox field (not on any page layout, your users don’t need to be able to mess with this one!) called Generated by Flow. Have the Flow mark this as True when it runs, and edit the Workflow rule so that it only goes off when Generated by Flow is True.

See? We’ve combined Workflow and Flow seamlessly. Now let’s look at the other problem: adding days to a date specified during the Flow.

  1. Get the date from the user in a Screen. Simple enough.
  2. Immediately do a Record Update after the Screen, pushing the entered date into a new field. (Again, you can simply not put this on a page layout, if users don’t need to see it and you don’t want them tinkering with it after the fact.)
  3. Here, you can go two different ways. You could A) make Workflow that created a Task and added the time as needed, or B) create a new formula field that simply does the addition of the days to that given date.
  4. Make a Record Lookup to pull that formula field back into your flow, and make your Task as needed! (Remember that Tasks created with Flow can be assigned to a dynamically-determined user, rather than being stuck on a single name like Workflow does.)

Because Flow runs in order and doesn’t have to finish to do its work, your data can hop in and out of Flow! Anything that you can’t do in Flow, you can pass outside to the tools that CAN. Then pass it back and it’s like automagic!

The key in all of this is to make Flow work for you. The possibilities are nearly endless, and often it’s just a matter of figuring out the right path. Unless you’re talking about firing Flow without a button or link, don’t EVER let yourself think that something can’t be done in Flow!

P.S. Document and Communicate Like Your Life Depends On It!

OH one more thing! As a good admin, what should you do every time you release new functionality or replace old functionality? And when you release a new Flow, aren’t you usually releasing new functionality or replacing old?

The same thing applies here. ALWAYS document your new Flow, distribute that documentation to all relevant users, and do training/Q&A sessions to ensure that your users are properly able to use what you’ve given them. I’m not always the best at this, like a lot of admins, but I can tell you firsthand that the surest way to letting your users believe that you just sit and twiddle your thumbs all the ding-dong day is to not tell them what you HAVE done.¬†Plus, you’ll alleviate the eventual head-hit-desk migraine and drive-to-drink, that you’ll undoubtedly encounter when you find that they’re using your carefully-crafted ¬†tool in¬†entirely the wrong way.


Accidentally Leaked? What is the Device Cloud? (UPDATE: Perhaps Not)

Accidentally Leaked? What is the Device Cloud?

The preceding is a screenshot captured from the newly-released Agenda Builder for Dreamforce 2013. But to my knowledge there are no products announced by Salesforce currently called the “Device Cloud”. Given the large amount of sessions at Dreamforce alluding to the “Internet of Things”, this makes a lot of sense! Seems like we’ll get an announcement on this…

UPDATE (10/10/2013 20:07PM CST):¬†A tweet from Adam Seligman, VP of Dev Relations for Heroku and Salesforce, says that no, this is just a typo. One way or another, it’s sure to be a very interesting session!

Admin’s Best Friend, Part 2


Aaaaaaaaaaaaaaaaaaaand we’re back.

In case you missed the last post, we are discussing the advantages of Visual Workflow, or Flow, over other Salesforce automation tools. Also, if you missed the last post, you can, y’know… scroll down. It’s still there. Oh no, don’t worry, I’ll wait.

Just in case your scroll wheel is broken, here’s a quick refresher? We covered that Flow can:

  1. Create Records – One of the only bits of Salesforce automation that can create a record, and it can create more than one at a time too.
  2. Perform If, Then, Else functionality, with Nesting – Branching logic that can make different things happen based on looking up data in Salesforce.

So now let’s move on to…

3. Work with Objects and Fields that Workflow Cannot

Ever wanted to do cross-object workflow from Case to Contact? How about workflow that creates an Event instead of a Task? Workflow that filters based on what department the User is in? Workflow that creates tasks with the owner being retrieved from a User lookup field? Workflow that makes a Chatter post? Workflow that refers to the Record Owner’s manager? Workflow that can do something as FREAKING SIMPLE as fill in a lookup field? (This is a personal point of frustration for yours truly.)

Welcome to the wild, winsome, wicked, and wonderful world of Flow.

Flow can access data from any point in Salesforce, provided you can give it a frame of reference. And it can create data anywhere as well. It can create any type of record, including some that aren’t quite obvious, like Chatter posts, Private Messages, Contact Roles, Case Team members, Opportunity Team members, Account Team members, Public Groups… The list goes on and on.

Within all of the objects available, you can create data and filter choices based on data you wouldn’t have been able to access otherwise. Not only can you access any data in the system to determine your actions (e.g. only creating a record if the Salesperson who clicked it is in a certain territory), but you can use it to access other data that workflow would normally be able to access, but just can’t. Have you ever tried to use workflow to populate the email of the $User’s manager for an approval process? I have. You can’t do it. Not without visual workflow.

Nope, no Manager >> present. I had to make the Manager Email Address field!
Nope, no Manager >> present. I had to make the Manager Email Address field!

4. Make a Single Click into a Workhorse Woolly Mammoth!

Each non-code automation tool in Salesforce has its strengths and weaknesses. Workflow can be chained to run one after another, but using it to move large amounts of data becomes cumbersome and unmanageable. Custom URLs can create records, though they can only do it once. But what if you wanted to do all of those things?

As far as I have found in my work, there is no upper limit on what can be done in Flow. I mean, I’m sure there is a limit SOMEWHERE, but I have yet to hit it, with my wild and woolly adventures therein.

As an example, let’s say you wanted to clone a record 5 times, bringing over 30 fields into the clone each time. Now let’s say it’s a DIFFERENT 30 fields in each clone. Sure, this is a pretty wacky hypothetical that generally falls beyond the realm of what one might ACTUALLY be asked to set up, but I have been asked to set up things that are not too far off. With workflow, you could have the fields populated when the records are created manually, but you’d have to set up 30+ field updates, one for each field that gets brought over. With a custom URL, you would need 5 separate URLs, as you could not create multiple records nor implement the branching.


5. Automate / Drive / Force Process

To be fair, other kinds of button-click automation are also quite adept at providing this kind of service. But stop. Close your eyes. Think about driving process (or as Salesforce evangelist¬†David Schach refers to it, “forcing function”), and think of all the things we just talked about.

Ok, yes, you can open your eyes if you need to go back and read what they were again.

Flow presents, by default, a Wizard-type interface. But what if it was your only method of making something happen?

  • What if you locked down your Opportunity’s Stage field and required the user to click a Flow button to make a change? You can filter it down different paths: if they’re changing the stage to Negotiation, you can ask and require certain information which then gets pushed into Opp fields, or if they’re changing it to Closed Won, you can require different information and even generate other records based on that, like tickets to setup your customer or other custom object records.
  • Do the same thing for Case Status, where if the owner is on your Retention team, you can require him to put in 3 dates for scheduled follow-up calls, and then create those Events for him!
  • Turn your User creation into a guided wizard process, to be sure that every step of the process is covered. (Because we Admins have a TON of things to think and worry about every day, and sometimes those little details just slip our minds, don’t they? Plus it can be a huge time-saver!)
  • Require that a date field be updated through a Flow (I’ll go into this in an upcoming post) so that the date field’s value can be copied into another record in another custom object. If these custom objects are not Master-Detail, you won’t be able to use regular Workflow for those!


When you can drive your Users to work down certain paths:

  • You minimize the demons of procrastination, obstinance, forgetfulness and human error.
  • You ensure a higher standard of work and customer interaction.
  • You ensure higher data quality.
  • You ensure quality metrics and analytics.
  • And you then become able to give your executive team whatever data they need without worrying about how reliable the data is.

Don’t think of it as being authoritarian or restrictive;¬†think of it as ensuring job security for yourself.

Because when you become indispensable to your executives, they’ll do anything to keep you, and keep you happy! And Visual Workflow brought you there. I’d say that’s a tool worth learning, wouldn’t you?

Check it out! Joe Executive likes the cut of our jib! Eiffel Tower.

Check it out! Joe Executive likes the cut of our jib! Eiffel Tower.