Business Rules

Every business process inside an organization should be sketched out - for internal documentation and training of new employees.

  • How is new content for the website created?

  • How is the product information data updated?

  • Where does the shop data coming from?

  • How to deal with end-of-life-products?

All of those processes involving content like imagery, videos, text and pure data require a business process engine. Picturepark offers a business process engine with a set of business rules which allow automation and more sophisticated integrations. Specific business rules like approval workflows or life cycles can be developed to run in Picturepark only or communicate with external systems via API using service providers. Business rules in Picturepark combined with service providers allow to convert your content platform into a content hub, that connects your required business systems and send data where it is needed or required.

The current setup is in JSON only. An interface for configuration should be available in the next major release. The business rules always run in the context of the service user which is the Super Admin. Therefore only Super Admins have access to Business Rules in the Settings Menu. Otherwise users can configure actions as business rules they are not allowed to perform.

In the meantime please contact if you have questions or would like to discuss possible business rules for your Picturepark.

If available please send over your documented workflows and business processes (BPMN) so we can validate the setup in Picturepark Content Platform.

Example Actions

  • Assigning or unassigning permission sets: Removing all or specific permission sets assigned to a content item when a layer is added to the content item. For example, if a user were to add a layer for archiving purposes to a content item, this could then trigger the content to become inaccessible for select user groups.

  • Assigning or unassigning layers and entering field values: This is helpful if, for example, a photographer uploads files and sets certain tags which then in turn add a tag such as “To be approved”. Or, a “multimedia” layer for capturing video-specific information could be added automatically on the upload of video or audio files, already populated with default values such as copyright mentions. This feature only supports static values at the moment, no dynamic values are resolved via the lookup of referenced items; which is scheduled for a later release.

  • Sending messages to an integration if particular conditions are met. For example, once the above bespoke photographer has completed his upload, an integrated system can become notified about new content that requires approval, e.g tasking a user user with approval via a third party system.

Possible Use Cases

  • Content used in campaigns may become inappropriate and access to the specific content must be removed to ensure that no further marketing material is created using the specific content. Therefore the Layer "ContentStop" can be assigned and triggering a business rule that removes all permission sets, which makes the content only available to content owners.

  • For videos the YouTube team must always get access. A business rule can be used to always assign "YouTube"-All-Access for videos only.

  • Ensure correct permissions for specific teams based on the specific content e.g. access for the multimedia team for multimedia files.

  • Updates to product images trigger a business process that assigns a "PIM review"-layer which will trigger a service provider that can connect to the PIM system to get updated product information and another service procider can then send the updated image to the PIM.

  • Legal department must recall content after a complaint and assigns a "Stop Now"-Layer. The business rule engine can directly restrict access to content and trigger a potential service provider that removes the content from all online sources.

  • Content suppliers assign a layer to content where copyright information is missing. This layer holds a trigger called "Get Copyright Details" which can be used to trigger a service provider that would then go and fetch copyright details like source and original title and usage restrictions from the corresponding websites. The business rule can be triggered automatically or the content creator can trigger the copyright update when the content is used to avoid copyright infringements.

  • The service provider for image tagging (AI-powered Clarifai) will assign a layer on import that will hold all automatic tags. Those tags require human review and cleanup. After manual cleanup and removal of wrong tag assignments a trigger field will start a business rule that copies the reviewed and correct tags into the real metadata layers that are used in the search.

  • Production process where a storyboard layer contains all information about the next Instagram stories where a trigger button can then start a business process that informs the story creator inside the story creation tool using a service provider from where it is then uploaded back to Picturepark linked to the storyboard information.

  • Content uploaded to Picturepark is automatically tagged with the correct location tag (if available) based on GPS metadata available on the content. This ensures that 47.3939904,8.0411453,17 is shown as Aarau.

Available Conditions

  • OR, AND (also nested)

    • Using these operators it is possible to check for different conditions e.g. Check for a specific layer AND a tagbox item that is assigned OR a specific layer and a permission set.

  • LayerAssigned

    • Checks if a layer with a specific ID is assigned to a content item e.g. Check if layer with ID " ProductInformation " is assigned to find all product related content.

  • LayerUnassigned

    • Checks if a layer is unassigned e.g. Check whether an embargo layer ("LegalApprovalPending") is lifted which then allows to use and publish the content.

  • TagboxItemAssigned

    • Checks if a specific tagbox item ("a tag") is assigned in a specific field e.g. Check if the tag "Twitter" is assigned in the field "SocialMediaPlatforms" on Layer "CopyrightUsages" to then use this image on Twitter.

  • TagboxItemUnassigned

    • Checks if a specific tagbox item ("a tag") is unassigned in a specific field e.g. Check if the tag "Twitter" is unassigned in the field "SocialMediaPlatforms" on Layer "CopyrightUsages" to then remove this image from Twitter.

  • FieldValueChange

    • Checks if a value in a specific field changed e.g. Check if the checkbox "LegalConcerns" changes which may require the removal of the content.

  • ContentPermissionSetAssigned

    • Checks if a permission set is assigned, which will give access to specific user roles e.g. Check if permission set "SocialMedia-AllAccess" is assigned to ensure that publication information (platform, date, tags, post) is updated.

  • ContentPermissionSetUnassigned

    • Checks if a permission set is unassigned, which removes access e.g. Check if permission set "PartnerAccess" is removed to inform partners about usage restrictions for this specific content.

  • MatchRegex

    • Checks the input value for a specific field for a pattern, defined as Regex e.g. Check if the input is a valid email address or product code and otherwise remove access until this information is correct.

  • ContentSchemaAvailable

    • Checks if the content schema is matching a specific schema e.g. Check if for audio and video files the permission set is assigned that gives access to the multimedia team.

Available Actions

  • AssignLayer

    • Assign a specific layer to content if the condition is met. This requires the layer to be available to the specific content type.

  • UnassignLayer

    • Unassign a specific layer from content if the condition is met.

  • AssignTagboxItems

    • Assign tagbox items ("tags") to a specific field of a specific layer. This requires the layer with the field to be present on the content.

  • UnassignTagboxItems

    • Unassign tagbox items ("tags") from a specific field of a specific layer. This requires the layer with the field and the tag to be present on the content (obviously images/s/en_US/8100/5084f018d64a97dc638ca9a178856f851ea353ff/_/images/icons/emoticons/wink.svg ).

  • AssignContentPermissionSet

    • Assign a permission set to content e.g. give access to suppliers.

  • UnassignContentPermissionSet

    • Unassign a permission set from content e.g. remove access for partners.

  • ProduceMessage

    • Produce a message via API, mainly to inform an external system.

  • AssignValue

    • Insert a static value if a condition is met. Depending the type of field the value is added or overwrites the existing value (see details below).


Business rules always run in the context of the service user (so FULL privileges), an indication that a business rule might have changed a content can be found in the activity panel where the updating user would be the service user.

Debugging Tips:

  • If your business rule isn't working first check the platform kibana logs.

  • You always have to assign a layer before adding text to it, or you provide the to-be-assigned-data in the default values for the layer.

  • Are there any default json reserved characters in default value fields that you need to escape? The following characters must be properly escaped to be used in strings:

    • Backspace is replaced with \b

    • Form feed is replaced with \f

    • Newline is replaced with \n

    • Carriage return is replaced with \r

    • Tab is replaced with \t Double quote is replaced with \"

    • Backslash is replaced with \\

  • Required fields need to be added to business rule - if not the business rule process will fail and Kibana logs an error

  • Check that you don't have a duplicate action twice in the same rule, i.e assigning the same tagbox to the same field.

  • Make sure you are using the correct json for translated vs not translated fields.

  • Are your refids in the business rule correct?

  • If you have entered text into a field is it the same case as in the business rule? I.e Title vs title.

Fieldtype Hints

A date time field condition must have the expected value expressed in YYYY-MM-DD and date time as 2019-09-12T17:03:34.5293947Z for example

For Multi Fieldsets or Relationship fields you can add to the condition that the value you are looking for is in the first fieldset by adding the [0] to specify the first fieldset. If you want to search through the second fieldset use [1] e.g:

"kind" : "FieldValueChangedCondition" ,
"fieldPath" : "layerWaft.multiFieldsetField[0].street" ,
"expectedValue" : "StreetName"

If you would like the condition to be checked against any of the fieldsets in that field you can use:

"kind" : "FieldValueChangedCondition" ,
"fieldPath" : "layerWaft.multiFieldsetField..street" ,
"expectedValue" : "StreetName"