{ DreamFactory: 'Blog' }

Modus Create welcomes Dreamfactory in Romania

Posted by Jessica Rose

Thu, Jul 21, 2016

One of the most important parts of building great software is listening to your users and the wider developer community. We're always excited to get the chance to go out into the community to learn more about what you all are working on.

Last week I got the chance to speak at the Javascript meetup in Cluj, Romania, hosted by Modus Create.  Speaking at the Modus hosted meetup was a great fit for the company, as DreamFactory and Modus Create have partnered to deliver some great demos and features. Our engineering team is working closely with Modus right now, to deliver some exciting new features for the DreamFactory platform. Getting to come back to Cluj to speak was a great fit for me personally, as I have a great love of Romania’s beautiful second city.

I attended on behalf of the DreamFactory team, giving a short talk on how automation can be leveraged to help smaller, leaner teams of developers scale and win against established technology players. As one of Romania’s tech hubs, Cluj delivered an audience with a wide range of experience. I enjoyed taking part in the debate around the value of automation in JavaScript development processes and hearing more about the range of tools recommended. With backend JavaScript developers being well represented at the event, most reported their primary experience with automation was in-house testing processes. We can’t wait to hear how they use DreamFactory, BuildBot and the other great tools we talked about.

A warm thank you to the Modus Create team for inviting me and to the Cluj JavaScript community for the lively discussion around the value of automation. We love any excuse to get out and mingle, so say hello in the comments if you know of a meetup or event that you would like to see us at. If you want to chat with the team online, head over to our community forums!










DreamFactory's first New York City meetup was a success

Posted by Tracy Osborn

Thu, Jul 21, 2016


Alex Bowen leading an overview of DreamFactory.

Last Thursday we had our first official meetup in New York City! DreamFactory partnered with Clarifai, a visual recognition with artificial intelligence API provider, for a evening of fun and informative tech talks in the heart of Manhattan.

Starting the night off, our DevRel Alex Bowen gave a brief overview of DreamFactory’s API automation platform. She was really excited to share how DreamFactory can be installed on any server, connect to any data source and be developed for almost any device. As one of Dreamfactory’s community leaders, she also offered a rundown of the DreamFactory community and free resources folks can use. She can be found regularly on our community forum and is available to chat or answer your questions!




Next up was Cassidy Williams of Clarifai. Cassidy was featured in Glamour magazine as one of the "35 Women Under 35 Who Are Changing the Tech Industry," and she gave an engaging and fascinating talk about visual recognition and Clarifai’s high-performance deep-learning technology.

We ended the night with a talk by another of DreamFactory’s developer relations team, Tracy Osborn, who chatted about creating engaging and readable content and documentation. Tips included creating personas so you can imagine and “talk directly to” your reader and including helpful links and explanation in your writing and documentation so it’s accessible to all levels.


More photos from this meetup can be found here. Want to attend a future meetup? We’d love to have you! DreamFactory holds meetups worldwide and another might be scheduled soon for your area — keep an eye on our Meetup account for future events!


Meet our 100,000th admin, Blaine from Vodori

Posted by Alex Bowen

Wed, Jul 20, 2016

We’ve seen some incredible growth of the DreamFactory community over the past few years. That’s why we’re especially thrilled to announce our 100,000th admin sign up, Blaine Willhoft, and share his DreamFactory story!


Willhoft is the Consulting Engineering Manager at Vodori, a hybrid consulting and product company that focuses on providing digital solutions to companies in the health and well-being industries. He's always looking for new tools to help Vodori build better applications and will use DreamFactory to help him react effectively to the needs of their clients and provide the most value.

Our clients generally ask us to store and manage data when it supports information shown on one of their websites or portals, so we may for instance have to store a database of all their products for display on their public-facing website.

If we can write the code that supports this more quickly, we can spend more time building richer applications, not just writing data manipulation code. Furthermore, if the cost to store and manage data goes down, our clients will be able to afford to integrate more data into the applications we build for them, which then increases the value they provide to their customers. It's a positive feedback loop in some ways.

Above all, Willhoft cites responsiveness as his main goal.

It’s really all about reacting to what the needs of the client are. We want to be nimble and provide the most value, so we choose our architecture carefully based on what will provide the most value.

Today, we write all of the code that reads and writes from those other data sources manually (we use Hibernate on Java, primarily), which while it does provide high quality and ensures we always get the capabilities we need, can often be time-consuming and fairly repetitive.

Our data access code today has to sometimes perform fairly complex data transformations. Being able to write scripts to augment basic read/write operations allows us to more quickly create rich data layers that can replace what we write directly within our applications today.

A product that could potentially remove the need to write data access code by hand in many circumstances could have tremendous value for our ability to deliver richer functionality to our customers.


Leading the Consulting Engineering team, Blaine is responsible for making sure Pepper handles this combination of services in the most effective way possible. Such as building custom digital products for websites, mobile applications and custom data solutions. DreamFactory helps the Vodori team do their best work and refine how they technically build their products to ensure growth, and deliver better, faster results to their customers.

Our core product, Pepper, offers tools out of the box to manage web content (web pages, images, and other supporting assets). However, our clients often also require us to interact with or manage other related data (often relational, which doesn’t easily lend itself to a CMS) - product databases, form responses, and other data like that.

I heard about DreamFactory online. The value proposition stuck with me enough that I was reminded of it by another article I stumbled across about a week later, leading to me beginning to research the product. The ability to construct APIs out of our data makes it easier to integrate as we work with APIs all the time - both on the user end, as well as being a provider of APIs. In fact, Pepper’s interaction with our client applications is founded upon APIs.


Other framework or middleware solutions usually require too much time investment with the time needed to ramp up new team members and costs associated with paying for and maintaining new technology. DreamFactory will help address all of these concerns and increases the potential value and time savings of the investment for Vodori.

Like many technology companies, we’re often exploring other frameworks and middleware. For instance, Vodori was an early adopter of ElasticSearch, which was a core part of our product for many years. We’ve also recently been investing into containerization technologies such as Kubernetes and Docker to host much of our middleware.

We use both cloud and on-site services, depending on the nature of the service. Since we work almost exclusively with users in the healthcare industries, our clients are subject to a relatively large amount of regulatory and legal oversight, which trickles down to us in the form of increased requirements around custody and security of data.

Without the ability to secure our clients' data, we wouldn't be able to store it at all. Having a platform that has a foundation of strong user management and security is critical given the security scrutiny placed on our clients.

As a result, for data management pieces of our stack, on-site installations generally are required to maintain custody and security of our customers’ data.


Once Blaine decided to try Dreamfactory out, he was impressed by the quick setup and was up and running quickly.

Since I started from a tutorial, I was able to get something up and running in not much time, an hour or two.

Getting a DreamFactory instance up and running fast significantly cuts down on the cost and time investment needed to code those features from scratch.  DreamFactory also has a very strong community forum and resources to help cut down on support costs and get you up and running as soon as possible.

We’re excited to welcome Willhoft into the thriving Dreamfactory community and look forward to following Vodori’s progress.To learn more about Vodori, connect with them via their website.

Do you have a DreamFactory story? Tell us your story!


DreamFactory Community User Stories

Exploring the new options for stored procedures

Posted by Lee Hicks

Fri, Jul 15, 2016

The ability to discover and execute stored procedures and functions has been available in DreamFactory's REST API for a while now. With the 2.2.1 release, we have enhanced the usability of these resources quite a bit, adding the ability to retrieve their parameter information, as well as, simplifying the way you call them.

Parameter details and return type now available

You have always been able to list the stored procedures by name using the GET verb on the _proc resource of the database service, and likewise for functions with the _func resource. Now using the same API with an additional URL parameter ("ids"), you can get additional details on the desired procedures or functions. Here is the format of the API call...

GET http[s]://<server>/api/v2/<service>/_proc?ids=proc1,proc2,proc3
GET http[s]://<server>/api/v2/<service>/_func?ids=func1,func2,func3

The ids URL parameter takes a comma-delimited list of resource (procedure/function) names to retrieve. The details returned include things like the function's return type, if any, and details on each of the parameters required. So a GET call to http://example.com/api/v2/db/_proc/?ids=search_todos would retrieve the following...

    "resource": [
            "name": "search_todos_by_name",
            "returns": null,
            "params": [
                    "name": "search",
                    "position": 1,
                    "param_type": "IN",
                    "type": "string",
                    "dbType": "varchar",
                    "length": 128,
                    "precision": null,
                    "scale": null,
                    "default": null
                    "name": "inc",
                    "position": 2,
                    "param_type": "INOUT",
                    "type": "integer",
                    "dbType": "int",
                    "length": null,
                    "precision": 10,
                    "scale": 0,
                    "default": null
                    "name": "total",
                    "position": 4,
                    "param_type": "OUT",
                    "type": "integer",
                    "dbType": "int",
                    "length": null,
                    "precision": 10,
                    "scale": 0,
                    "default": null

Calling a stored procedure or function made easier

Procedures and functions can be called in two ways, using either the GET verb or the POST verb as before, but now you do not need to pass in every detail about the parameters themselves. All that is required are the values for IN and INOUT parameters, unless there are defaults defined (not commonly supported). The INOUT and OUT parameter values are formatted to the correct types upon return.

Passing parameter values inline with GET

When passing no payload is required, any IN or INOUT parameter values can be sent by passing the values in the order required inside parentheses...

GET http[s]://<server>/api/v2/<service>/_proc/<proc_name>[(<value>,<value>)]
GET http[s]://<server>/api/v2/<service>/_func/<func_name>[(<value>,<value>)]

For example,

http://example.com/api/v2/db/_proc/search_todos(test, 0)

Passing parameters and values as URL parameters with GET

You can also send each parameter as a URL name-value pair the way you would typically for HTTP calls...

GET http[s]://<server>/api/v2/<service>/_proc/<proc_name>[?<parameter_name>=<value>]
GET http[s]://<server>/api/v2/<service>/_func/<func_name>[?<parameter_name>=<value>]

For example,


Passing parameters as a payload with POST

When a payload is required, i.e. passing values that are not URL compliant, etc., or passing schema formatting data, use the API format below...

POST http[s]://<server>/api/v2/<service>/_proc/<proc_name>
POST http[s]://<server>/api/v2/<service>/_func/<func_name>

and include the parameter values directly in order as an array in the params element...

    "params": ["test%", 0]

...or in any order using an object with name-value pairs...

    "params": {
        "search": "test%",
        "inc": 0

...or, for backwards compatibility, in any order using array of parameter objects...

    "params": [
            "name": "search",
            "value": "test%"
            "name": "inc",
            "value": 0

We hope that makes using your stored procedures and functions easier through the DreamFactory REST API. For more information on this topic, check out the wiki entry.



Product Announcements Tutorial

DreamFactory 2.2.1 released, includes major enhancements to stored procedures

Posted by Ben Busse

Wed, Jul 13, 2016


DreamFactory version 2.2.1 has shipped. v2.2.1 includes major enhancements to stored procedures, API improvements, UI improvements, and a number of bug fixes. See all the details below and grab the latest from Bitnami or GitHub.

New features in Version 2.2.1:
  • Major improvements to stored procedures support!
    • HTTP GET using the "ids" parameter returns details about procedure and function requirements
    • Call procedures and functions with just the required parameters 
    • Added the ability to pass procedure and function parameters as URL parameters, inline, or via a "params" array in the payload
  • API improvements
    • Enhanced error message for some APIs, particularly in authentication and authorization areas
    • Fixed encoding of resources forwarded on in HTTP Services
    • Added event support for individual SOAP methods defined in the given WSDL
    • General cleanup of Swagger API Docs
    • Fixed Swagger model generation for SOAP service, now supports WSDL enumerations in types
    • Added event matching from Swagger documentation paths to support event firing on exact and matching paths for HTTP Services
  • UI Improvements
    • End-to-end cosmetic cleanup of the Admin application UI
    • Admin application UI tooltip enhancements
  • Packages improvements
    • Fixed role exporting in packages
    • Fixed table export issue in packages
    • Added data import support for packages
  • Other important enhancements
    • Added Active Directory support for group hierarchy when mapping to DreamFactory roles
    • Added event modification configuration setting to pre- and post-process scripts, replacing usage of "content-changed" flag in the script itself
    • Caching fixes and speed improvements
    • General cleanup of usage of utility functions
    • Fixed file streaming using file service over CORS connections




Weekly Digest