#Business Rules

4 Followers · 128 Posts

Business rules are the part of InterSystems Ensemble production solution which allow nontechnical users to change the behavior of Ensemble business processes at specific decision points.

Article Yuri Marx · Dec 11, 2025 8m read

Supply Chain refers to a set of processes and activities performed by the company's business areas and its suppliers and partners (stakeholders), from the acquisition of raw materials, through production, to delivery to the end consumer. It can be better managed using SCM solutions with the orchestration of the InterSystems IRIS:

 

0
5 180
Article Muhammad Waseem · Nov 20, 2025 13m read

Hi Community,

In the first part of this series, we examined the fundamentals of Interoperability on Python (IoP), specifically how it enables us to construct such interoperability elements as business services, processes, and operations using pure Python.

Now, we are ready to take things a step further. Real-world integration scenarios extend beyond simple message handoffs.They involve scheduled polling, custom message structures, decision logic, filtering, and configuration handling.In this article, we will delve into these more advanced IoP capabilities and demonstrate how to create and run a more complex interoperability flow using only Python.

To make it practical, we will build a comprehensive example: The Reddit Post Analyzer Production. The concept is straightforward: continuously retrieving the latest submissions from a chosen subreddit, filtering them based on popularity, adding extra tags to them, and sending them off for storage or further analysis.

The ultimate goal here is a reliable, self-running data ingestion pipeline. All major parts (the Business Service, Business Process, and Business Operation) are implemented in Python, showcasing how to use IoP as a Python-first integration methodology.

2
1 238
Question Thomas Haig · Oct 21, 2025

Hi all,
Recently we were experimenting with having a variable target on a routing rule and noticed some interesting behaviour, code below.

<rulename="My Rule"disabled="false"><constraintname="docCategory"value="Generic.2.3.1"></constraint><whencondition="((Document.{MSH:MessageType.triggerevent}=&quot;A43&quot;))"><sendtransform=""target="To&quot; _(pContext.Document.GetValueAt(&quot;MSH:SendingFacility&quot;))_&quot;FromServiceTCPOpr"></send></when></rule>


This code compiles and works.

1
1 118
Question PaulSomebody · Oct 3, 2025

How do you assign a property in a RUL (not a DTL or BPL) from a function value?  I've tried with the package/classname, without, with .., without and even looked all the way down to the parser but still can't see how.  There is no examples and the documentation doesn't help

So this works

<assign property="RuleActionUserData" value="&quot;A01&quot;"></assign>
 

This doesn't complile

<assign property="RuleActionUserData" value="##class(SomePackage.SomeClass).EventTypeToHL7Type(Document)"></assign>

SomePackage.SomeClass extends EnsRules and the method is a classmethod and final

2
0 95
Question Scott Roth · Aug 28, 2025

I had a need for a Filter, but did not want to recreate the wheel by creating another Data Lookup Table, so instead I created a Linked Table that points to a MS SQL Table outside of IRIS.

Once I had the Linked Table, I created a Class Method Function that would query the Linked Table and return a 1 if a result came back.

ClassMethod CheckPDMProviderType(pInput As%String) As%Boolean
{
    set ExtDisplay = ""
 		&sql(SELECT SecurityGroup_k INTO :ExtDisplay
        FROM osuwmc_CPD_SQL.
1
0 112
Question Lewis Houlden · Jul 8, 2025

Hi Community

I'm working on a complex piece of rules that needs to check each OBX and evaluate if 3 of the fields match certain criteria. I've tried to achieve this using a Foreach loop, which does work, however it is not as clean as I wanted it. I was hoping I could assign temp variables inside the foreach loop to make the rules more easier to read, for example @testCode @resultText. This is not support as you can only assign inside a when condition. Before I raise this as an idea, i wondered if there was an alternative way to achieve the same thing?

1
0 122
Question Ewan Whyte · May 8, 2025

I'm trying to use the assign option within a ruleset. I can trace the value with no issues but when I try to assign the same value to a variable of Namespace I get an error.
Ideally I would like to use a variable instead of repeating the Piece repeatedly throughout the rules.
Ruleset


And this is the error that I am getting.
ERROR <Ens>ErrException: <PROPERTY DOES NOT EXIST>zevaluateRuleDefinition+14^SFT.RoutingRules.AlertManCreationRule.1 *Namespace,Ens.Alerting.Context.CreateAlert -- logged as '-' number - @' set pContext.Namespace=##class(Ens.Rule.FunctionSet).Piece((pContext.AlertRequest.

4
0 173
Question Juan Mota Sanchez · May 3, 2025

Hi,

I've been working on a very basic Interoperability production in my computer. I followed one of the examples in the courses and created a TEST.FileRouterRoutingRule, but when trying to edit this rule, it takes me to the Rule Editor Login Page, where I can't get in (Not even with the _SYSTEM credentials) - Is this functionality unavailable in the community edition?

2
0 139
Discussion Benny Verhamme · Apr 11, 2025

Hello 

We are pretty new to Ensemble and we are considering on using a default setup for our production. Let me explain the situation. We have one sender that sends HL7 ADT messages to our system. We have 60+ other systems that need to recieve ADT messages. We where thinking on a few ways on how to do the setup. 

Setup1:

We create one big ADTRouter that contains a first mapping. The result is send to another big ADTRouter that contains all the filters/expressions and mappings for the recieving systems.

4
0 258
Question Scott Roth · Apr 9, 2025

I have a segment within a Group (grp) that needs to be validated that it is populated within the message. 

When you use a Foreach within a Business Rule how should you account for the counter in the group?

For example, Epic sends their MFN message in the following format.

MSH~MFI~[~{~MFE~STF~PRA~[~ZPR~]~[~ZLK~]~[~CER~]~[~ZMG~]~[~ZTF~]~[~ZGP~]~[~ZDD~]~}~]

so, the ZLK segment might not exist until the last MFEgrp that is in the message. I need to verify if there is an Employee ID associated with the Provider in the HL7 message before I run it through the translation.

1
0 124