#Business Service

4 Followers · 218 Posts

A business service is part of InterSystems Ensemble interoperability production which is responsible for accepting requests from external applications.

Question Robert Hildebrand · Feb 5

Hi,

I want to consume an API that provides HL7 messages. To achieve this, I have thought of the following workflow:

I have created a business service that periodically triggers a business process. The trigger request is forwarded to a business operation. There, a %Net.HttpRequest is assembled from scratch and then sent to the API endpoint. The corresponding HttpResponse then contains several HL7 messages encoded in UTF-8 in the message body. To further process the HL7 messages, the operation sends the HttpResponse back to the business process as EnsLib.HTTP.GenericMessage.

3
0 90
Question Kurro Lopez · Oct 21, 2025

Hi community,

I have a service that uses EnsLib.RecordMap.Service.FTPService to capture files in an FTP directory.

Instead of uploading them all at once, I would need to do so one at a time.

I have a class that extends this class because it preprocesses, saves everything in the RecordMap class, and then processes all the records at once.

When I invoke the BP, it does so through the method set tStatus = ..SendRequest(message, 1).

1
0 93
Question Dmitrii Baranov · Oct 12, 2025

I need to build an integration solution that reads messages from a Kafka topic. The topic has 3 partitions and contains several million messages.

For certain reasons, I can only use the standard EnsLib.Kafka.Service class and cannot use either KafkaClient or Python.

To measure performance and collect statistics I created a simple key + timestamp table with no indexes (so it is unlikely to be a bottleneck). Next, I started an instance of EnsLib.Kafka.Service. In the OnProcessInput method, I receive a message, extract the key from it, get the current time, and write the row to the table.

5
0 94
Question Sizwe Hlatshwayo · Jun 21, 2025

Good day 

I am trying to connect a business service to fileZilla using FTP on my local PC Win 11.

I am trying to setup my training after attending the Building HL7 interfaces course with ISC.

The connection is failing. He is the error below

ERROR <Ens>ErrOutConnectFailed: FTP Connect failed for localhost:21//SSL=' with error ERROR <Ens>ErrFTPConnectFailed: FTP: Failed to connect to server 'localhost:21//SSL='/' (msg='Missing required argument',code=501)

1
0 114
Question Thembelani Mlalazi · Apr 16, 2025

I need to connect to a SFTP server and I seem to connect and timeout have tested the connection using File-zilla and the connection was successful but the problem is when I try to connect using the FTP in bound adapter service I get the following errors.

ERROR <Ens>ErrOutConnectExpired: FTP Connect timeout period (120) expired for ***************.com:990/******/SSL='********* + ERROR <Ens>ErrFTPConnectFailed: FTP: Failed to connect to server ***************.

1
0 189
Question Colin Brough · May 9, 2024

We have a custom business service that is triggered by a scheduled task. The service queries a table, iterates over the result set and sends a message on to a business process for each result. Happy path functionality is all fine.

However, when there is an error detected in the business service code, neither throwing an exception nor returning an error %Status behaves as we'd expect.

Our error handling scheme, which is working for the other business processes and operations, is to throw an exception on error.

1
0 203
Question Fahima Ansari · Apr 1, 2024

In The Business Process and the Business Operation, I am using the following code to get the value of TimeCreated and TimeProcessed 

BP:

%Ensemble("Process").%PrimaryRequestHeader.TimeCreated

%Ensemble("Process").%PrimaryRequestHeader.TimeProcessed

BO:

..%RequestHeader.TimeCreated

..%RequestHeader.TimeProcessed

But I am trying to use ..%RequestHeader.TimeCreated in Business Service it is not storing any value.

How to get the value of TimeCreated and TimeProcessed in Business Service?

5
0 198
Question Smythe Smythee · Feb 17, 2024

Hi Community,

Is there a way to call HL7 Data transformation directly from Business service without using Rule functionality in the production

In this scenario i need to call a data transformation in directly in business service and give the transformed message to Business operation 

Please share if you have any ideas to implement this.

Thanks,
Smythee

6
0 309
Question Rizki Okta Alhadi · Jan 25, 2024

Hi All,

I have ROUTINE for Get Data end of day. Routine Name is "getTicket.mac" . previously i execute at studio using this command to get data 

w $$getTicket^production.etl.getTicket() and the result success as we want, in this case i want execute routine using BS ( Business Service ) and i want this routine execute every night at 12.00 AM

how to implement this condition.

Thanks For your help and time

3
0 285
Question Ryan Hulslander · Apr 13, 2023

Curious if anyone has modified the HL7 TCP/IP Service and adapter class to receive an HL7 message, ACK it, and just dump it straight to a file? I don't want the messages in the engine at all - just receive and dump. Has anyone done this before and have code you're willing to share?

Thank you very much in advance!

3
0 458
Question Joe Jones · Jan 24, 2023

Hi Community,

I have created a HL7 production in my working environment, Ens.Alert ,EMailAlert, PagerAlert, and  BadMessageHandler are created.

Can anyone explain how Ens.Alert and BadMessageHandler will work when an HL7 message in Passed in Business service and how these 2 are related when any error occurs in the Production envinorment?

1
0 357
Question Eduard Lebedyuk · Jan 19, 2023

I have a production with one Business Host - a Business Service which I need to scale automatically to consume ~80% of CPU time.
Business Service pulls data from a (non-FIFO) queue so that I can adjust pool size without any issues.

So far, I'm planning a different BS running every X seconds and sampling CPU with $system.Process.GetCPUTime() and scaling the pool size of the main BS up/down based on that metric.

Has anyone tried something similar? Any advice/code samples would be appreciated.

6
0 368
Question Joe Jones · Jan 18, 2023

Hi community,

I am working on Converting Non HL7 message (Using record maps) into HL7 message.

1.Can anyone share few details how to save Non HL7 message into SQL table and the converted HL7 message into SQL table

2.In Message Viewer is there any SQL tables are linked to the session id or where the information regarding the message will be stored? Will the message trace details are stored in globals or in SQL table,If yes can anyone share the details in which tables or globals will it be stored?

Joe

2
0 463
Question Robert Wang · Jan 10, 2023

Currently we have an SOAP bussiness service "Calculator" in production and this "Calculator" service has following settings:

  • Service class: CustomPackage.Calculator (Extends EnsLib.SOAP.Service)
  • Service name: "Calculator"
  • Basic settings -- Port 8088
Class DemoPackage.Caculator.CalculatorService Extends EnsLib.SOAP.Service
{

Parameter ADAPTER = "EnsLib.SOAP.InboundAdapter";

Parameter SERVICENAME = "CalculatorService";

Parameter NAMESPACE = "http://test.
2
0 291
Question gerald hanford · Apr 5, 2022

Hello Community,

I am still pretty new to Ensemble, Cashé, or ObjectScript. My question is this how can I tell when a file was finished and read fully? Currently, I have an EnsLib.FilePassthroughService reads a file from a designated file path and moves it to an archive file path. I need to set up an alert or a notification that can tell me once the file has been read in its entirety and has been moved out of its current file path.

Any help you can give me would be greatly appreciated, or if you need further clarification I can do my best to answer any question you have. Thank you. 

3
0 319
Question Kevin Kindschuh · Mar 4, 2022

The Complex Recordmapper specify a map for headers, body, and trailers, but it expects all three to have fixed Leading Data to identify the record type. But what if the Header and Trailer have Leading Data, but not the body records? I can't seem to find a way to do this.  For example:

HEADER|194|2012|Fall|20
12345|Adams|John|Michael|2|john.michael.adams@example.com|617-999-9999
12347|Jones|Robert|Alfred|1|bobby.jones@example.com|
TRAILER|8|100

Ideas?

2
0 426
Question Felipe Quezada · Jan 26, 2022

Hello guys! I need some assistance with these problems I have.

The first one is that I need to execute a Python file, which is at /XY path. This PY is supposed to read an excel file and create a CSV version in /XZ path.

I am quite sure that the PY file is correct, but when using this function I get nothing but this error:

SET tSC = $ZF(-100,"/ASYNC /SHELL ", "python", "/data/InterSystems/IRIS/mgr/TEST01CODE/ExcelReading/ExcelToCSV.py")

ConfigItem 'FJ EXCEL READING' (FJ.BS.ExcelReading) started in job 3164

ERROR #00: (sin descripción de error)

Any ideas or suggestions?

2
1 697
Question Eduard Lebedyuk · Jan 24, 2022

I'm using this Dockerfile to build .Net Gateway with my PEX BS. It works fine. If I change the image reference here to store/intersystems/iris-community:2021.2.0.617.0 in line 8 (so update from 2020.2 to 2021.2) it fails to build with:

KafkaConsumer.cs(4,20): error CS0234: The type or namespace name 'EnsLib' does not exist in the namespace 'InterSystems' (are you missing an assembly reference?) [/source/KafkaConsumer.csproj]

KafkaConsumer.cs(9,34): error CS0246: The type or namespace name 'BusinessService' could not be found (are you missing a using directive or an assembly reference?
1
0 270
Question James Westley-Farrell · Dec 9, 2021

I've experienced this problem several times recently. I go to a production in my development instance and click on the (+) to add a new service. A pop-up appears with the message "An error occurred with the CSP application and has been logged to system error log (^ERRORand nothing else. Examining ^ERRORS is of no help. There's a lot of gibberish there that isn't informative in the least.

I can add processes and operations just fine.

The last two times this happened I had to re-install HealthShare from scratch.

5
0 461
Question Omar Ali Ateen · Nov 9, 2021

Dear All

I am trying to interface LAB instruments with LAB System using ASTM over TCP. I read the documentation here . But I can't understand how to connect instrument and LAB system in same port, please see the screenshot of interface below. Please help.

Details:

  • For Servece I use "EnsLib.EDI.ASTM.Service.TCPService" class.
  • For Proccess I use "EnsLib.MsgRouter.VDocRoutingEngine" class.
  • For Operation I use "EnsLib.EDI.ASTM.Operation.TCPOperation" class.

4
0 415
Question Nicky Zhu · Jun 3, 2021

Hi guys,

How can we remove a business host from a running production?

I've read and tested how to add it to a production, while when I try to remove it from the production with the following codes:

Set tSC = $$$OK
    Set prodName = "CDRDemo.DemoProduction"
    Set confName = "TEST1"
    Set className = "Demo.LISClient.Operation.PatientOperation"
    #Dim prodConf As Ens.Config.Production = ##class(Ens.Config.Production).%OpenId(prodName)
    Set itemId = ""
    &SQL(Select ID into :itemId from Ens_Config.
1
0 309
Question Purushothaman Thirugnanasambandam · May 11, 2021

I have a requirement to update the Ensemble Host Settings Programmatically.  Mainly the  "AlertOnError,QueueCountAlert,QueueWaitAlert,InactivityTimeout" settings.
I used Ens_Config.Item (persistent) class to get the settings (list object) and then update it. But for some of the Business Host's, I dont see the above settings in the table, but present in Settings of that particular Host in Ensemble Management Portal. So my logic is not working.

Why is that and how to write a code to update the above settings for all the hosts ?

Please let me know the way to achieve my requirement.

My code.

11
0 807