ORIGAM 2015 11 Release Notes

Release Goals

  • Performance improvements
  • Stabilization
  • Desktop Client stabilization
  • Improved Duplicity Error Message
  • Work queue improvements
  • Better login and sign-up support
  • Batch attachment download
  • TagInput usage in selection dialogs
  • Streamlining Architect workflows


This release has low migration demands.


The application server now requires .NET Framework 4.6. You can download it here.

Migration steps for Architect

  1. Download new version of the Setup package
  2. Run it and install complete Architect side-by-side to your old Architect (done automatically)
  3. Open AsapSettings.config from your old Architect and move the configurations you want to migrate to the new version to AsapSettings.config of your new Architect.
  4. Run new Architect (2015.11) and open your migrated configuration.
  5. There is no need to re-save your packages to GIT, there are no format changes.

Migration Steps For Application Server

  1. Download new version of the Application Server (update)
  2. Open the ZIP file and copy the contained files to your applications server folder, replacing the old files
  3. There is no need to run any scripts or to change configuration files.


  1. Download new version of the Desktop Client (update)
  2. Open the ZIP file and copy the contained files to your desktop-client folder, replacing the old files
  3. There is no need to run any scripts or to change configuration files

Performance Improvements

The web version is now up to 4x faster when loading screens with large amount of data (tens to hundreds of thousands of records). This is a result of several optimizations on different levels.

You can improve the performance even more:

When opening the screen (only screens with ListDataStructure set) only the primary key and all initially sorted columns from the root entity are loaded. If there is a lot of records to load, the sorting can take a while on the server. Therefore it helps that you create an index for the initially sorted columns for the root table in your database. Also include the primary key as an additional column. Then loading the initial columns will be very fast and the server will not be a bottleneck.


We fixed many bugs to make the application more stable.

Desktop Client Stabilization

We fixed several bugs resulting from porting the Desktop Client to the new .NET Framework version.

Improved Duplicity Error Message

When you had a unique index set up on your table and a user tried to enter a duplicate value, she just received a “You tried to enter a duplicate value” message without indicating exactly which value was duplicate.

Now the user gets a message indicating which value in which column has a duplicate.

Important: A unique index has to be modeled under the entity, it is not enough to have the index in the database only. The index definition in the model will be used for composing the error message to the user.

Work Queue Improvements

We are continuing to develop the work queues to be more capable and robust.

New Command Types

Archive To Queue - same as Move To Queue but will not reset the error text

Execute External Loader - will manually load data from the external source, not waiting for the scheduled run

Autoprocess With Errors Flag

When you set this flag on the queue command it will auto-process a message even though it has an error. Normally when autoprocessing results in an error the message is not processed anymore. You can use it in a scenario where you create auto-processed commands on error queues, e.g. trying to use a different way on how to process the message.

Executing Commands Via API

This powerful feature allows you to execute a command on a message. You can use this feature e.g. closely with work queue notifications.


  1. A message is created as a result of an Invoice state change
  2. A notification is sent to the customer with a link to “confirm” the invoice
  3. A customer clicks on the link resulting in a “confirm” command being executed (e.g. putting the invoice to the next state)


You need to add the following to your Startup.cs:

app.Map(new PathString("/WorkQueueCommand"), (application) =>


Depending on how you configured the handler. Default is /WorkQueueCommand?workQueueEntryId=xxx&commandId=yyy


workQueueEntryId Message id on which the command will be executed
commandId Id of the command that should be executed


Work queue has now a new field ApiAccessRoles. This way you can restrict the access to this queue separately. Only users having a correct role will be able to access the queue from the API. The old Roles field restricts access through the ORIGAM GUI.

Work QUeue Command Security

Using a new Roles field you can now set up roles access to each command within a queue. Before everybody had access to all the commands if he had an access to the queue.

Work QUeue Service Remove Method

The service which you use in the sequential workflows now has a new Remove method using which you can remove a message from the queue. This is useful e.g. when you want to “auto-destroy” messages after being processed with a sequential-workflow command. Then you execute this method in the end of the workflow so the message gets removed after processing.

Improved Login and Sign-Up Support

The user now gets a detailed error message when login fails on the reason of the failure, e.g. account is locked-out or e-mail has not been confirmed.

Unique E-Mail Set UP For ORIGAM Security Provider

OrigamUserManager has no option to force unique e-mails. You can now easily set up a unique e-mail check by running the following script on your data database:

CREATE UNIQUE INDEX ix_UniqueUserEmail ON [dbo].[BusinessPartner]
    [UserEmail] ASC
    [UserEmail] IS NOT NULL

Please keep the index name. Otherwise you will not get a correct error message when a new user is registered with a duplicate e-mail.

Batch Attachments Download

It is now possible to download all record’s attachments at once. When you click on the Download button on an attachment it now displays a drop-down allowing you to download all the attachments at once (in a zip archive).


TagInput usage in selection dialogs

You can now use a TagInput widget in pop-up selection dialogs (that you can define on your screen and report menus). As an example there is a new SD_Arrays entity which contains new a1-a10 fields. These can be used to base TagInput or CheckList widgets.

Streamlining Architect workflows

We streamlined some of the typical Architect workflows so you can work faster:

  • Architect now displays Output or Log pads automatically on actions which depend a lot on these.
  • New menu item Tools > Show Web Application now opens a web browser with the URL configured under ServerUrl in the config file. This is automatically set when running a New Project wizard but has to be configured by hand for old projects.
  • Deployment Script Generator will now generate a foreign key DDL together with the added column. Before it was necessary to run the Deployment Script Generator twice
  • Architect now asks the user to save model changes before executing the Tools > Set Server Restart command