Filtering by Tag: technical

Joining tables with Envision

Published on by Joannes Vermorel.

When it comes to supply chain optimization, it’s important to accommodate the challenges while minimizing the amount of reality distortion that get introduced in the process. The tools should embrace the challenge as it stands instead of distorting the challenge to make it fit within the tools.

Two years ago, we introduced Envision, a domain-specific language, precisely intended as a way to accommodate the incredibly diverse range of situations found in supply chain. From day 1, Envision was offering a programmatic expressiveness which was a significant step forward compared to traditional supply chain tools. However, this flexibility was still limited by the actual viewpoint taken by Envision itself on the supply chain data.

A few months ago, we have introduced a generic JOIN mechanism in Envision. Envision is no more limited by natural joins as it was initially, and offers the possibility to process with a much broader range of tabular data. In supply chain, arbitrary table joins are particularly useful to accommodate complex scenarios such as multi-sourcing, one-way compatibilities, multi-channels, etc.

For the readers who may be familiar with SQL already, joining tables feels like a rather elementary operation; however, in SQL, combining complex numeric calculation with table joins rapidly end up with source code that looks obscure and verbose. Moreover, joining large tables also raises quite a few performance issues which need to be carefully addressed either by adjusting the SQL queries themselves, or by adjusting the database itself throught the introduction of table indexes.

One of the key design goals for Envision was to give up on some of the capabilities of SQL in exchange of a much lower coding overhead when facing supply chain optimization challenges. As a result, the initial Envision was solely based on natural joins, which removed almost entirely the coding overhead associated to JOIN operations, as it is usually done in SQL.

Natural joins have their limits however, and we lifted those limits by introducing the left-by syntax within Envision. Through left-by statements, it becomes possible to join arbitrary tables within Envision. Under the hood, Envision takes care of creating optimized indexes to keep the calculations fast even when dealing with giganormous data files.

From a pure syntax perspective, the left-by is a minor addition to the Envision language, however, from a supply chain perspective, this one feature did significantly improve the capacity of Lokad to accommodate the most complex situations.

If don’t have a data scientist in-house that happens to be a supply chain expert too, we do. Lokad can provides an end-to-end service where we take care of implementing your supply chain solution.

Categories: Tags: envision technical release No Comments

Document your folders with MarkDown

Published on by Joannes Vermorel.

Whenever Lokad produces a dashboard or a forecasting report, under the hood, the input data is stored as tabular files within your Lokad account. Those files are accessible through the Files tab of the top navbar.

Screenshot file listing

However, when you're account grow large, with many files and many folders, it might also become a bit messy too. Keeping the data well organized and well documented is a critical part of a good data-driven commerce optimization initiative. Thus, we have been working new features to make it easier.

All the folders of your Lokad account can now be documented with notes written in the CommonMark flavor of MarkDown. When a file named is found in a folder, then its content gets displayed just above the list of files, as illustrated above.

Screenshot MarkDown editor

Then, if you click the file, you get a MarkDown editor where you can see side-by-side your notes and their rendered counterpart. If you folder don't have a, you can create one just by clicking the button Add button that appears below the file list when your folder doesn't contain such a file yet.

Categories: Tags: bigfiles markdown technical release No Comments

Local management of inventory settings

Published on by Joannes Vermorel.

As far as data management is concerned, Lokad's philosophy is to keep data centralized in the original business app whenever this is possible. We do not want to be an ABC management software (replace ABC by commerce, warehouse, store or entreprise), because our clients already have this software in place. Yet, it is not always possible - or practical - to stick to this principle; so we need to adjust.

More specifically, in order to generate an inventory forecasting report, Lokad needs domain-specific settings such as the desired service level and the applicable lead time, which are typically not built-in within most business apps. Certain apps like Brightpearl or Linnworks already support the notion of custom properties to enrich existing data with domain-specific settings, but many other apps do not support such a feature.

So far, companies using TradeGecko, Unleashed Software or Vend could only rely on the Salescast default inventory settings, which are rather crude as they apply to all of the data if no alternative settings are provided.

Yesterday, we have released an updated version of Salescast which now offers the possibility to manage the inventory settings within your Lokad account by uploading a specific Excel sheet acting as the repository of your settings. It is now possible to manage fine-grained inventory settings for all of our supported apps.

Categories: Tags: release salescast inventory optimization technical No Comments

Scheduling your Salescast executions

Published on by Joannes Vermorel.

Update 2015-02-10: we have now a built-in WebCron integration which is now the approach we recommend as it is more secure.

Inventory optimization should be business as usual. Yet, Salescast, our inventory forecasting app, does not natively support scheduled executions yet. However, it is possible to obtain scheduled executions with 15min setup. In order to do that, we are going to combine the API of Salescast which offers a programmatic control on Salescast with webcron service.

A webcron is a generic name to refer to an app that behaves like an online task scheduler. If you look for webcron on your favorite search engine, you will get plently of software companies who support such a service. In this post, we will use that comes with a free subscription plan (as of January 2015) vastly sufficient for our need.

Thus, in order to get daily or weekly execution of Salescast, you should start by creating an account on Once, you have your SetCronJob account, go to the Users page whithin your Lokad account, and then click on then Add user button. Creating a distinct Lokad user dedicated to the webcron is important for security purposes. Lokad will offer you two options, click Enter Username and Passwordand proceed. Then you can create a new user with:

  • SetCronJob Robot for the full name
  • for the login. You should replace example with the actual domain name of your company. It does not matter if the email address does not actual exists.
  • a long random password. Just stick to number and letters for simplicity, but make the password long (say 20 characters long). You won't have to actually every type this password, so keeping it short and practical is irrelevant.

Click Add user, and now that you have created a dedicated Lokad user, go back to and log into your account. Here click Create CronJob. In the field Url to call, enter the following URL (detailed below):

Finally pick Every day or Every week in SetCronJob to run Salescast with the desired frequency. You can also adjust the actual time of the day when Salescast will be run if you click the More options button.

Composing this URL is a bit tricky, let's have a look at the detail. The first part is Notice that the @ sign of the email address has been replaced by %40. It's because characters in the URL needs to be URL-encoded. In practice, latin letters and numbers remain the same, but more advance characters like the @ are replaced by their encoded counterparts.

The second part that comes after the semicolon (:) is pwd. Replace this part with your actual password. If your password is just letters and numbers as suggested above, then the password does not need any special URL-encoding treatment, so cut-and-paste should work just fine.

Finally, the last part fld should be replaced with the output folder of your Salescast project. The output folder is displayed in your Salescast page. If your Salescast project is loading its files from the root folder, then your URL should just end with ?folder= (with nothing after the = sign).

Once you have finalized your CronJob, just run it once to make sure it's working. You should be able to see Salescast running in your Lokad account.

You're done. Congratulations! From now on, Salescast will be executed according the schedule.

Caveat: SetCronJob let you pick executing frequencies like Every minute; yet make sure not to pick a for Salescast that is shorter than 1 execution per day, as this would most likely result having your Lokad account put on hold. If this were to happen, just mail us at and we will help you restore the access to your Lokad acccount.

Categories: Tags: salescast technical No Comments

Java Forecasting SDK released

Published on by Joannes Vermorel.

Our technology is designed for easy integration within any business app. In particular, our Forecasting API comes as REST, and it requires little coding to start toying with it.

In order to make the process even easier, we have just released our Forecasting SDK for Java. This SDK comes a tiny JAR - nearly stand-alone, just a single dependency toward XStream, a handy utility for XML serialization. The SDK is released as open source under the liberal BSD license.

Want to power-up your Java ERP / CRM / BI app?
Don't hesitate to let us know.

Categories: community, developers, open source, release, web services Tags: api forecasting java sdk technical No Comments

Lokad.CQRS v1.0 for Windows Azure released

Published on by Joannes Vermorel.

(disclaimer: post below is rather technical stuff targeting a developer audience)

Lokad.CQRS for Windows Azure is a guidance and framework on efficiently building solutions for the cloud. It fits distributed and scalable enterprise scenarios as well as small and cost-effective solutions.

Our forecasting technology is not open source, but we are very eager to share our experience, and get feedback too, about the building blocks that support our technology.

Lokad.CQRS is based on our experience at running apps on the cloud and on our R&D investments (we did win the first Windows Azure Partner Award 2010 from Microsoft), a lot of existing theory (i.e.: Efficient Development series, CQRS, etc) and numerous production-proven .NET building blocks.

First release manifests an important milestone for us. It includes Azure Starter binaries (available in the downloads), tutorials with samples (1-4) and a large list of reference materials.

Read more about Lokad.CQRS v1.0 release...

Categories: community, open source, release, technical Tags: azure cloud computing cqrs opensource technical No Comments

Forecasting in .NET with the Lokad SDK 2.0

Published on by Joannes Vermorel.

The version 2.0 of our Software Development Kit (SDK) for Microsoft .NET is now available. This SDK helps developers to enhance their .NET applications providing with the forecasting services offered by Lokad.

The first version of the SDK focused on providing a simple and efficient way to communicate with Lokad Forecasting API without worrying about SOAP, web services or networking problems.

Second release builds up on this foundation and starts adding components and samples to build the actual client applications for your customers. These are the highlights of this version:

More details are available at the Lokad SDK page.

Categories: developers, open source, release Tags: .net c# forecasting release sdk technical No Comments