Clear filter
Article
Mihoko Iijima · Feb 22, 2024
InterSystems FAQ rubric
To remove InterSystems products installed on your Windows system, use Add or Remove Programs in Control Panel (in Windows 10, select Apps from Windows Settings).
Since we will be making changes to the system, you will need to log in as a user with administrator privileges.
1) Log in to the system as an administrator.
2) From the system tray, exit the launcher of the InterSystems product instance you want to uninstall (click launcher → exit).
3) Add or Remove Programs in the Control Panel (for Windows 10, select Apps from Windows Settings)
Delete <InterSystems product> instance [xxxx] (where xxxx is the instance name).
Example: InterSystems IRIS instance [IRIS]
4) Delete the InterSystems product installation directory (C:\InterSystems\<InterSystems product> by default) using Windows Explorer.
After you uninstall all InterSystems product instances from your system using the steps above, you can remove any remaining information using the steps below.
<Complete deletion>
a. Delete related registry keys
Delete the following registry key(*).
[HKEY_LOCAL_MACHINE\SOFTWARE\InterSystems]
[HKEY_CURRENT_USER\SOFTWARE\InterSystems]
[HKEY_USER\xxxxxxxx\SOFTWARE\InterSystems] (If this key exists, also delete it)
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Intersystems] (64bit system only)
Caution: Incorrect registry operations can seriously affect your system. We strongly recommend that you perform a backup such as creating a restore point before performing this task.
b. Delete common files
Instance common files are stored in the following folder, so delete them using Windows Explorer, etc.
C:\Program Files\Common Files\Intersystems
c. Remove IIS additional components
If IIS (Internet Information Services) is installed on your Windows system and additional components for IIS (CSP Gateway/Web Gateway) are installed, the following folder will exist, so delete it.
C:\Inetpub\CSPGateway
d.Remove VC++ runtime library
The following redistributed runtime libraries can be deleted if they are not referenced or used by other applications.
Microsoft Visual C++ 2008 Redistributable - x86 xxxx
*Delete using Apps and Features in Windows Settings.
Announcement
Olga Zavrazhnova · Oct 19, 2023
Hi Developers,
Join our next online Developer Roundtable on October 31 at 10 am ET | 3 pm CET. Our experts will cover two topics:
"Deploying Python Applications" - by @Evgeny.Shvarov, Senior Manager of Developer and Startup Programs, InterSystems
"Deploying Java project + InterSystems IRIS in Docker" - by @LuisAngel.PérezRamos, Sales Engineer, InterSystems
We will have time for Q&A and open discussion.
Update: Watch the recording below.
Not a Global Masters member yet? Log in using your InterSystems SSO credentials to join the program. I think that I have too many names and last names... Hi all! Tomorrow Luis will be covering "Deploying Java project + InterSystems IRIS in Docker" - register for our roundtable to learn and prepare for Java programming contest! 🔥
Announcement
Evgeny Shvarov · Nov 13, 2023
Hi Developers!
Here are the technology bonuses for the InterSystems Java Programming Contest 2023 that will give you extra points in the voting:
Java Gateway usage - 2
Java Native API usage - 2
Java PEX Interoperability - 4
Java XEP Usage- 2
LLM AI or LangChain usage: Chat GPT, Bard and others - 3
InterSystems IRIS Cloud SQL Usage - 3
Community Java libs: Hibernate and Liquibase - 2
Questionnaire - 2
Docker container usage - 2
IPM Package deployment - 2
Online Demo - 2
Implement InterSystems Community Idea - 4
Find a bug in InterSystems IRIS Java Offerings - 2
New First Article on Developer Community - 2
New Second Article on Developer Community - 1
First Time Contribution - 3
Video on YouTube - 3
See the details below.
Java Gateway - 2 pointsInterSystems IRIS has Java Gateway which provides an easy way for IRIS to interoperate with Java components.
Java Native API - 2 points
InterSystems IRIS introduces a Java Native API library that helps to interact with InterSystems IRIS from java. Use it and collect 2 extra points for your application.
Java Pex Interoperability - 4 points
InterSystems IRIS has Java Pex Interoperability module that provides the option to develop InterSystems Interoperability productions from Java. Use it and collect 4 extra points for your application. Here is a pex-demo application.
Java XEP Usage- 2
Java XEP is an InterSystems Java library that introduces high-performance persistence technology for Java object hierarchies. Use it and collect 2 more bonus points. Learn more on JAVA XEP.
Community Java libs: Hibernate and Liquibase - 2
Use Community Hibernate and Liquibase libs and collect 2 additional bonus points for each.
LLM AI or LangChain usage: Chat GPT, Bard and others - 3 points
Collect 3 bonus expert points for building a solution that uses LangChain libs or Large Language Models (LLM) such as ChatGPT, Bard and other AI engines like PaLM, LLaMA and more. AutoGPT usage counts too.
A few examples already could be found in Open Exchange: iris-openai, chatGPT telegram bot.
Here is an article with langchain usage example.
IRIS Cloud SQL Usage -3 points
Use InterSystems IRIS Cloud SQL in your solution and get 3 points more. You can deploy IRIS Cloud server here.
Questionnaire - 2
Share your feedback in the questionnaire(TBD) and collect 2 extra points.
Docker container usage - 2 points
The application gets a 'Docker container' bonus if it uses InterSystems IRIS running in a docker container. Here is the simplest template to start from.
ZPM Package deployment - 2 points
You can collect the bonus if you build and publish the ZPM(InterSystems Package Manager) package for your Full-Stack application so it could be deployed with:
zpm "install your-multi-model-solution"
command on IRIS with ZPM client installed.
ZPM client. Documentation.
Online Demo of your project - 2 pointsCollect 2 more bonus points if you provision your project to the cloud as an online demo at any public hosting.
Implement Community Opportunity Idea - 4 points
Implement any idea from the InterSystems Community Ideas portal which has the "Community Opportunity" status. This will give you 4 additional bonus points.
Find a bug in InterSystems IRIS Java Offerings - 2 pointsWe want the broader adoption of InterSystems Java offerings so we encourage you to report the bugs you will face during the development of your java application with IRIS in order to fix it. Please submit the bug here in a form of issue and how to reproduce it. You can collect 2 bonus points for the first reproducible bug.
New First Article on Developer Community - 2 points
Write a brand new article on Developer Community that describes the features of your project and how to work with it. Collect 2 points for the article.
New Second Article on Developer Community - 1 point
You can collect one more bonus point for the second new article or the translation regarding the application. The 3rd and more will not bring more points but the attention will all be yours.
First-Time Contribution - 3 points
Collect 3 bonus points if you participate in InterSystems Open Exchange contests for the first time!
Video on YouTube - 3 points
Make new YouTube videos that demonstrate your product in action and collect 3 bonus points per each.
The list of bonuses is subject to change. Stay tuned!
Good luck in the competition! Hello Evgeny Shvarov, a question: we are thinking of participating in a group of 5 people, 4 of them have never contributed to InterSystems Open Exchange contests, in this case, are the points cumulative? Hi Ana,
No, the points are awarded per team :) Looks like there are some conflicts in the points...Java Native has 2 and then 3 points.Here the LLM has 3, 4 and 6 points...
LLM AI or LangChain usage: Chat GPT, Bard and others - 3LLM AI or LangChain usage: Chat GPT, Bard and others - 4 pointsCollect 6 bonus expert points for building a solution that uses LangChain libs or Large Language Models (LLM) Thank you, Sean!
this is fixed. We know it is late, but we missed Java Gateway bonus - are you Ok if we add it? -
Announcement
Anastasia Dyubaylo · Nov 27, 2023
Hi Community,
It's voting time! Cast your votes for the best applications in our InterSystems Java Programming Contest 2023:
🔥 VOTE FOR THE BEST APPS 🔥
How to vote? Details below.
Experts nomination:
InterSystems experienced jury will choose the best apps to nominate the prizes in the Experts Nomination. Please welcome our experts:
⭐️ @Guillaume.Rongier7183, Sales Engineer⭐️ @Sylvain.Guilbaud, Sales Engineer⭐️ @akoblov, Senior Support Specialist⭐️ @Eduard.Lebedyuk, Senior Cloud Engineer⭐️ @Steve.Pisani, Senior Solution Architect⭐️ @Alex.Woodhead, Senior Systems Developer⭐️ @Andreas.Dieckow , Principal Product Manager⭐️ @Aya.Heshmat, Product Manager⭐️ @Benjamin.DeBoe, Product Manager⭐️ @Robert.Kuszewski, Product Manager⭐️ @Carmen.Logue , Product Manager⭐️ @Luca.Ravazzolo, Product Manager⭐️ @Raj.Singh5479, Product Manager⭐️ @Patrick.Jamieson3621, Product Manager⭐️ @Stefan.Wittmann, Product Manager⭐️ @tomd, Product Manager⭐️ @Daniel.Franco, Senior Manager - Interoperability Product Management⭐️ @Timothy.Leavitt, Development Manager⭐️ @Evgeny.Shvarov, Senior Manager of Developer and Startup Programs⭐️ @Dean.Andrews2971, Head of Developer Relations⭐️ @Jeffrey.Fried, Director of Product Management
Community nomination:
For each user, a higher score is selected from two categories below:
Conditions
Place
1st
2nd
3rd
If you have an article posted on DC and an app uploaded to Open Exchange (OEX)
9
6
3
If you have at least 1 article posted on DC or 1 app uploaded to OEX
6
4
2
If you make any valid contribution to DC (posted a comment/question, etc.)
3
2
1
Level
Place
1st
2nd
3rd
VIP Global Masters level or ISC Product Managers
15
10
5
Ambassador GM level
12
8
4
Expert GM level or DC Moderators
9
6
3
Specialist GM level
6
4
2
Advocate GM level or ISC Employees
3
2
1
Blind vote!
The number of votes for each app will be hidden from everyone. Once a day we will publish the leaderboard in the comments to this post.
The order of projects on the contest page will be as follows: the earlier an application was submitted to the competition, the higher it will be on the list.
P.S. Don't forget to subscribe to this post (click on the bell icon) to be notified of new comments.
To take part in the voting, you need:
Sign in to Open Exchange – DC credentials will work.
Make any valid contribution to the Developer Community – answer or ask questions, write an article, contribute applications on Open Exchange – and you'll be able to vote. Check this post on the options to make helpful contributions to the Developer Community.
If you change your mind, cancel the choice and give your vote to another application!
Support the application you like!
Note: contest participants are allowed to fix the bugs and make improvements to their applications during the voting week, so don't miss and subscribe to application releases! So! After the first day of the voting we have:
Expert Nomination, Top 4
presto-iris by @Dmitry.Maslennikov
iris-parquet by @Yuri.Gomes
iris-dmn by @Alexey.Nechaev
InterLang by Zacchaeus Chok
➡️ Voting is here.
Community Nomination, Top 5
presto-iris by @Dmitry.Maslennikov
iris-parquet by @Yuri.Gomes
iris-dmn by @Alexey.Nechaev
StarChat by Anna Diak
quiz-app by @Andrii.Mishchenko
➡️ Voting is here.
Experts, we are waiting for your votes! 🔥
Participants, improve & promote your solutions! Here are the results after 2 days of voting:
Expert Nomination, Top 4
presto-iris by @Dmitry Maslennikov
iris-parquet by @yurimarx Marx
iris-dmn by @Alexey Nechaev
InterLang by Zacchaeus Chok
➡️ Voting is here.
Community Nomination, Top 5
presto-iris by @Dmitry Maslennikov
quiz-app by @Andrii Mishchenko
fhir-pex by @Flavio.Neubauer
iris-parquet by @yurimarx Marx
StarChat by Anna Diak
➡️ Voting is here.
So, the voting continues.
Please support the application you like! Voting for the InterSystems Java Programming Contest 2023 goes ahead!
And here're the results at the moment:
Expert Nomination, Top 4
presto-iris by @Dmitry Maslennikov
iris-parquet by @yurimarx Marx
iris-dmn by @Alexey Nechaev
InterLang by Zacchaeus Chok
➡️ Voting is here.
Community Nomination, Top 5
presto-iris by @Dmitry Maslennikov
quiz-app by @Andrii Mishchenko
fhir-pex by @Flavio Neubauer
StarChat by Anna Diak
InterLang by Zacchaeus Chok
➡️ Voting is here. Since the beginning of the voting we have the results:
Expert Nomination, Top 4
presto-iris by @Dmitry Maslennikov
iris-parquet by @yurimarx Marx
iris-dmn by @Alexey Nechaev
InterLang by Zacchaeus Chok
➡️ Voting is here.
Community Nomination, Top 5
presto-iris by @Dmitry Maslennikov
quiz-app by @Andrii Mishchenko
fhir-pex by @Flavio Neubauer
StarChat by Anna Diak
iris-parquet by @yurimarx Marx
➡️ Voting is here.
And don't forget! You can use your Technology bonuses to gain more points for your application! Hey devs!Today is the last day of the voting!Please support participants! They need your votes!
➡️ Voting is hereLet's wish them good luck😎
Announcement
Jaceita Chilton- Walker · Oct 24, 2023
If interested email to me at jwalkerbdrsolutionsllc.com
Ensemble/IRIS Developer to join our growing team! This position will be performed virtually from the individual's home office working on EST time schedule. This position requires US Citizenship with a Public Trust or the ability to obtain one.(Military Veterans are highly encouraged to apply)Role OverviewBDR is in search of a proficient InterSystems Ensemble/IRIS developer to contribute to our Department of Veterans Affairs (VA) contract. The ideal candidate will have a solid background in InterSystems IRIS development within a healthcare setting. Key responsibilities include crafting documentation for VA-crafted software applications, and comprehensive IRIS coding, SQL queries, Object Oriented Programming, documentation, and IRIS system administration. Responsibilities
IRIS and SQL Development:
Detailed IRIS coding.
Writing SQL queries.
Object-Oriented Programming.
Validate and update data integration reports in support of the VA's software.
Validate load of Caché/IRIS Objects, SQL Tables, or other storage structures (Historical Pulls) in all regions/districts for classes in all environments with VistA or Data Syndication data.
Documentation:
Write documentation for VA-developed software applications.
Write up procedures and documentation targeted towards software developers, system administrators, and database architects.
Author technical documents illustrating data-center architecture and engineering.
Data Analysis and Management:
Review error and trace logs.
Monitor Queue Depth by service/process/operation.
Review Domain adds to Ensemble Production.
Validate edits made to Domain record type, schema version, status, and payload size via the GUI Interface and Rule Builder.
Validate Ensemble data flows built using VX130 ClassBuilder.
Review, update, and maintain Cerner to CDW, VistA, Millennium or Cloud Database data mappings for potential data migrations.
Evaluate and integrate data from multiple sources, which requires data mapping from one data source to another minimizing any data loss.
Document VistA Extraction and monitoring process.
Interpret Cerner's Data model to be used for the construction of APIs, queries, and reports that will be consumed by internal or external applications.
Communication and Coordination:
Able to coordinate with development and user teams to assess risks, goals, and needs and ensure that all are adequately addressed.
Effective communication skills with both technical and non-technical audiences.
Problem-Solving and Risk Management:
Track messages by domain and reconcile table counts with Cerner.
Track the number of records sent per message by domain.
Track retry attempts and suspended messages.
Experienced in introducing new hardware or software into a new or existing environment while minimizing disruption and mitigating risks.
Experience in high-volume environments.
Motivation to drive tasks to completion and take ownership of projects.
Required Minimum Qualifications
15+ years of professional experience, including InterSystems IRIS in healthcare.
Bachelor's degree in Computer Science, Engineering, Math, or equivalent (8 years of relevant experience can be substituted).
Previous work experience in the VA.
Experience with Electronic Health Record (EHR) implementation.
Familiarity with VA legacy and private sector health data.
Experience with ETL data processes.
Knowledge of VistA data handling.
Ability to obtain and maintain a VA Public Trust.
Eligibility to work in the United States without sponsorship.
Prior successful remote work experience.
Code samples or GitHub link must be provided upon application.
In addition, U.S Citizenship is required.
Announcement
Anastasia Dyubaylo · Mar 15, 2024
Hey Developers,
Watch this video to explore InterSystems TotalView For Asset Management, the fully managed cloud software that unifies data, automates data processing tasks, and empowers asset management firms with seamless data integration and flexibility.
⏯ What is InterSystems TotalView For Asset Management
Subscribe to our YouTube channel InterSystems Developers to stay in the know! 👍
Announcement
Bob Kuszewski · Nov 22, 2023
It’s hard to believe that this wraps up our first year of quarterly platform updates. Thank you for making this a great first year. Today’s update talks about the planned Minimum Supported CPU list, OpenSSL 3.0 for AIX reaching GA, and a bit more. We’ll be back for 2024!
This update aims to share recent changes as well as our best current knowledge on upcoming changes, but predicting the future is tricky business and this shouldn’t be considered a committed roadmap.
With that said, on to the update…
InterSystems IRIS Production Operating Systems and CPU Architectures
Minimum Supported CPU Models
We’ve recently announced that InterSystems IRIS will start to have minimum required CPU functionality for Intel/AMD-based systems. This allows IRIS to rely on certain CPU instruction extensions, such as AVX, that will result in significantly better performance of certain operations.
This change will take effect with IRIS 2024.1 and the minimum CPUs will be reviewed on an annual basis thereafter. For more information, please see my InterSystems IRIS Minimum Supported CPU Models developer community post.
Red Hat Enterprise Linux
Recent Changes
Minor OS Certification has been completed for RHEL 9.2 & 8.8 on IRIS 2023.1. “Minor OS version certification” is a new process that is intended to provide additional security that a minor OS update didn’t break anything obvious and indeed both RHEL 9.2 & 8.8 passed our tests.
Upcoming Changes
RHEL 9.3 was released on November 7 and RHEL 8.9 is expected to be released shortly. InterSystems is scheduling performing Minor OS Certification for these platforms in the near future.
Further reading: RHEL Release Page
Ubuntu
Recent Changes
Ubuntu released 22.04.2 LTS & 20.04.6 LTS in February and March, respectively. InterSystems has completed performing additional testing of IRIS on 22.04.02 LTS through Minor OS version certification.
Upcoming Changes
The next major update of Ubuntu is 24.04 is on-schedule for April, 2024
Further Reading: Ubuntu Releases Page
SUSE Linux
Recent Changes
InterSystems has deprecated support for the VxFS filesystem. I’m unaware of any customers still using VxFS, but if you are, please upgrade to a XFS or one of our other supported filesystems.
Upcoming Changes
SUSE Linux Enterprise Server 15 SP5 was released June 20, 2023. SP5 includes Linux Kernel 5.14.21, OpenSSL 3.0.8, and Python 3.11. We’re currently working on Minor OS certification.
Previous Updates
General Support from SUSE for Linux Enterprise Server 15 SP3 came to an end on 12/31/2022, but extended security support will continue until December, 2025.
Further Reading: SUSE lifecycle
Oracle Linux
Upcoming Changes
Oracle surprised us by releasing Oracle Linux 9.2 right around the same time as RHEL 9.2. We’re currently starting Minor OS certification.
Further Reading: Oracle Linux Support Policy
Microsoft Windows
Previous Changes
Windows Server 2012 has reached its end of extended support. IRIS 2023.1 is the last release to support the OS.
Further Reading: Microsoft Lifecycle
AIX
Upcoming Changes
IRIS 2023.3 adds support for OpenSSL 3.0 for both AIX 7.2 & 7.3. OpenSSL 3.0 is a significant improvement in overall security when compared with OpenSSL 1.0.
Minor OS Certification has been completed for AIX 7.2 TL5-04 and TL5-05 on IRIS 2023.1.
Further Reading: AIX Lifecycle
Containers
Upcoming Changes
An early warning that we are planning to change the base container image from Ubuntu 22.04 to Ubuntu 24.04 with IRIS 2024.2
We will soon begin regular updates of IRIS containers containing patches to the base container image and third-party dependencies. The new container labeling (below) should make picking up these updates something you don’t even need to think about.
Previous Updates
From IRIS 2023.2 onward, IRIS containers will only be tagged with the year and release, such as “2023.2” instead of the full build numbers we’ve been using in the past. This way, your application can, by default, pick up the latest maintenance build of your release.
We’ve also added “latest-em” and “latest-cd” tags for the most recent extended maintenance and continuous distribution IRIS release. These are good for demos, examples, and development environments.
We have started to tag the preview containers with “-preview” so that it’s clear which container is the most recent GA release versus a preview of an upcoming release.
InterSystems IRIS Development Operating Systems and CPU Architectures
MacOS
Recent Changes
We’ve added support for MacOS 13 in IRIS 2023.1
Upcoming Changes
Apple has released MacOS 14 with IRIS support to follow, likely in IRIS 2024.1
CentOS
IRIS 2023.2 is the last release that supports CentOS as a development platform.
Red Hat has been running a developer program for a few years now, which gives developers access to free licenses for non-production environments.
InterSystems Components
InterSystems System Alerting & Monitoring (SAM) has been deprecated.
The monitor API, which includes the Open Metrics compatible endpoint, is not impacted by this change.
Caché & Ensemble Production Operating Systems and CPU Architectures
Previous Updates
Cache 2018.1.7 adds support for Windows 11
InterSystems Supported Platforms Documentation
The InterSystems Supported Platforms documentation is the definitive source information on supported technologies.
IRIS 2023.1 Supported Server Platforms
IRIS 2022.1 Supported Server Platforms
IRIS 2021.1 Supported Server Platforms
Caché & Ensemble 2018.1.7 Supported Server Platforms
… and that’s all folks. Again, if there’s something more that you’d like to know about, please let us know.
Question
William Liu · Jan 17, 2024
Hi,
To integrate InterSystems IRIS for Health with Open Source Drools(as rules engine), any advice? Thank you!
William @William.Liu you can post an idea on the InterSystems Ideas to implement this integration. Hope it will help. @William Liu thank you so much for posting the idea. Here is a link for voting for this idea to promote it:
To integrate InterSystems IRIS for Health with Open Source Drools
Announcement
Olga Zavrazhnova · Jan 15, 2024
InterSystems will participate in TreeHacks 2024, Stanford's premier hackathon, taking place from February 16 to 18 2024.We are excited to present a challenge for hackers along with attractive prizes.
We look forward to witnessing the innovative projects emerging from this event!
Apply now to hack with us!
What to be a mentor and join InterSystems team at this event? Drop us a line!
Date: February 16 - 18 2024Venue: Stanford’s campus, San Francisco, USAWebsite: https://www.treehacks.com/
Announcement
Anastasia Dyubaylo · Apr 12, 2023
Hey Developers,
Enjoy watching the new video on InterSystems Developers YouTube:
⏯ System Performance Review for InterSystems IRIS Applications @ Global Summit 2022
If you hit a bottleneck in system resources, your users will suffer. So to ensure your systems are the right size, you need to understand how your InterSystems IRIS applications use system resources. This is even more important when you move applications to the cloud, where vendors impose strict limits on capacity and throughput. In this session, you'll learn the key metrics and how to collect them.
🗣 Presenter: @Murray.Oldfield, Principal Technology Architect, InterSystems
Hope you like it and stay tuned! 👍
Question
Humza Arshad · May 5, 2023
I'm working with a client who has InterSystems in his hospital to the management of patients and nurses. Now he want to develop a web app which can schedule nurse sift. Is there any way I can authenticate the user from his hospital InterSystems and get data from the system when ever the user login through the web app. @Humza.Arshad
You can create a REST API/ SOAP API, or any other kind of protocol/technology, to get authentication, retrieve and send data to IRIS.
See the documentation:
REST
SOAP
These other two link are two Open Exchange apllication to create Rest Services and Form UI.
RESTForms2
RESTFormsUI2
Search in the Leraning Portal for some course that help you.
Best Regards.
Announcement
Olga Zavrazhnova · Feb 8, 2024
Hi Developers,
Our first Online Developer Roundtable of 2024 will take place on March 5th at 9 am ET | 3 pm CET.
Tech talks:
ObjectScript Unit Testing Tools, Techniques and Best Practices - by @Timothy Leavitt , Development Manager, Application Services, InterSystems
Monitoring and Alerting Capabilities of InterSystems IRIS - by @Mark.Bolinsky , Principal Technology Architect, InterSystems Mark's presentation is rescheduled for the roundtable in April.
▶ Update: watch the recording of the roundtable below:
📅 Date: March 5
🕑 Time: 9:00 am ET | 3:00 pm CET
Do you have additional questions which you'd like to discuss on this roundtable? Please share them in the comments to this post.
Not a Global Masters member yet? Sign in with your InterSystems SSO credentials. Hi Developers, don't forget to register for this event. After you register, I will send you a calendar hold. >> RVSP in this Global Masters challenge << Is a recording available, @Olga.Zavrazhnova2637? I'm also interested, @Olga.Zavrazhnova2637 :) Hi @Raj.Singh5479. @José.Pereira yes, just published in this post - and here on YouTube channel Mentioned links/comments during the call: Added product idea "Implement or incorporate a mocking framework to complement %UnitTest class" please upvote 👍 if you support the idea.Article: Unit Tests and Test Coverage in the InterSystems Package Manager by Tim LeavittEvgeny Shvarov: "if you want unittest for irisbi you can leverage isc-dev module
UnitTest_RuleSet Open Exchange solution, Unit Tests for HL7 Routing in IRIS Integration
Article
José Pereira · Sep 1, 2021
This article explains how to use the InterSystems IRIS platform to write a basic IMAP client. First, we present an overview of IMAP, then we discuss the main IMAP commands and client implementation. Finally, we offer a simple use of this IMAP client on the IRIS interoperability application.
Note that this article isn’t a detailed IMAP explanation. For more detailed information, please check the references of this article.
IMAP Overview
The Internet Message Access Protocol (IMAP) lets users retrieve emails. Mark Crispin proposed IMAP in the 1980s, and since then, the protocol has been published and revised in RFC 3501. At the time of writing this article, its current version is IMAP4rev1.
It’s important to note that this protocol is designed for retrieving only. You must use another protocol, the Simple Mail Transfer Protocol (SMTP), if you need to send emails. There’s also an older protocol for email retrieval that’s as popular as IMAP, called Post Office Protocol version 3 (POP3).
Trying Basic IMAP Commands
Like POP3, IMAP is a plaintext protocol. You can easily try some of its commands by yourself, using a TCP client like Telnet or OpenSSL.
First, you need your IMAP host and email server port. For instance, at the time of writing this article, this is the host and port to connect to the Microsoft Outlook service:
outlook.office365.com:993
Let’s connect to this server using our TCP client. Enter the command below and hit ENTER. Note the use of the -crlf flag. This flag is mandatory for IMAP as carriage return and line feed (CRLF) is its line terminator.
$ openssl s_client -connect outlook.office365.com:993 -crlf -quiet
After you hit enter, the IMAP server shows you some information and stays waiting for input.
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert ...
* OK The Microsoft Exchange IMAP4 service is ready. [...]
Now we can perform our first IMAP command: CAPACITY. As its name suggests, this command presents features that the server can provide. Note that the first line is the IMAP command itself, and the others lines are its output - this is the same for all other IMAP commands presented here.
TAG1 CAPABILITY
* CAPABILITY IMAP4 IMAP4rev1 AUTH=PLAIN AUTH=XOAUTH2 SASL-IR UIDPLUS ID UNSELECT CHILDREN IDLE NAMESPACE LITERAL+
TAG1 OK CAPABILITY completed.
Note the token before the CAPABILITY command: TAG1. A tag must precede every IMAP command and is any string you want. They identify what command instance the server is responding to. Generally, a simple counter with a prefix fits all your needs.
The IMAP server finishes the response with the tag you used to issue the command and a flag indicating the command’s status, followed by miscellaneous information related to the command and status. The statuses allowed are: OK (success), NO (failure), and BAD (wrong command).
The command LOGIN expects user and password as arguments. First, let’s check how the server responds if someone gives an invalid username and password:
TAG2 LOGIN user@outlook.com wrong-password
TAG2 NO LOGIN failed.
Note the NO status after the command tag.
Now, let’s proceed to a valid login:
TAG3 LOGIN user@outlook.com password
TAG3 OK LOGIN completed.
Now we’re logged in. To finish our session, we use the LOGOUT command:
TAG4 LOGOUT
* BYE Microsoft Exchange Server IMAP4 server signing off.
TAG4 OK LOGOUT completed.
We need other commands to implement our IMAP client, so we need to reconnect and log into our IMAP server again.
Let’s get some information about the inbox next.
First, we must tell the server which mailbox we want to access, INBOX in this case.
TAG5 SELECT "INBOX"
* 14 EXISTS
* 0 RECENT
...
TAG5 OK [READ-WRITE] SELECT completed.
Now we are ready to access messages in our inbox, but we need a way to refer to them first. There are two ways to do that: by message number or by a unique identifier (UID).
Message numbers are just counters, starting from 1 and going up to the number of messages within the inbox. When you delete a message, all following messages have their numbers decremented by 1. You can think of this as an array that has one of its elements removed.
UIDs, on the other hand, keep their value whatever happens to the other messages.
You can get UIDs using the UID SEARCH command. This command accepts a message number if you'd like to get a specific UID or the ALL parameter to get all UIDs in the directory.
In the example below, we search for UID for message number 1, which is 483.
TAG6 UID SEARCH 1
* SEARCH 483
TAG6 OK SEARCH completed.
Now let’s retrieve message information, like headers, body, and attachments. We use the FETCH command for this. This command has plenty of parameters, which you can explore in detail on RFC 3501. In this article, we only address parameters related to the needs of the IMAP client implementation.
The first information we need for this demonstration is the message size. We can get this information using the RFC822.SIZE parameter:
TAG7 FETCH 1 RFC822.SIZE
* 1 FETCH (RFC822.SIZE 70988)
TAG7 OK FETCH completed.
This indicates that the size of message number 1 is 70,988 bytes.
Note that it’s also possible to use UIDs rather than message numbers to fetch message information:
TAG8 UID FETCH 483 RFC822.SIZE
* 1 FETCH (RFC822.SIZE 70988 UID 483)
TAG8 OK FETCH completed.
You can also get the basic From, To, Date, and Subject message headers:
TAG9 FETCH 1 (FLAGS BODY[HEADER.FIELDS (FROM TO DATE SUBJECT)])
* 1 FETCH (FLAGS (\Seen) BODY[HEADER.FIELDS (FROM TO DATE SUBJECT)] {157}
Date: Thu, 22 Apr 2021 15:49:05 +0000
From: Another User <anotheruser@outlook.com>
To: user@outlook.com
Subject: Greetings from Another User!
FLAGS (\Seen))
TAG9 OK FETCH completed.
Now let’s retrieve the message body. We can retrieve all the body content using this command:
TAG10 FETCH 1 BODY[]
* 1 FETCH (BODY[] {9599}
...
MIME-Version: 1.0
--00000000000041bd3405c3403048
Content-Type: multipart/alternative; boundary="00000000000041bd3205c3403046"
--00000000000041bd3205c3403046
Content-Type: text/plain; charset="UTF-8"
...
--00000000000041bd3405c3403048
Content-Type: image/png; name="download.png"
Content-Disposition: attachment; filename="download.png"
...
TAG10 OK FETCH completed.
We can see in this code that some blocks are delimited by hex numbers between -- --, called parts. A message with parts is called a multipart message. It’s possible to get such parts directly by passing the part index to the command.
In order to delete messages, the protocol has the commands STORE and EXPUNGE, which mark a message as deleted and commit such an operation.
TAG11 STORE 1 +FLAGS (\Deleted)
* 0 EXISTS
* 0 RECENT
TAG11 OK [READ-WRITE] SELECT completed; now in selected state
TAG12 EXPUNGE
EXPUNGE: TAG12 OK EXPUNGE completed
The last command is simple: NOOP. This command does nothing but is used to implement a keep-alive strategy. By default, the IMAP session closes after 30 minutes without commands. So, issuing the NOOP command keeps the connection active.
TAG17 NOOP
TAG17 OK NOOP completed.
And this finishes our IMAP overview. If you’d like more information, there are a lot of good articles on the Web (I've selected some in resources section), and of course always remember the RFC 3501.
Resources
Atmail’s IMAP 101: Manual IMAP Sessions
Fastmail’s Why is IMAP better than POP?
IETF’s Internet Message Access Protocol
IETF’s Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies
Nylas’ Everything you need to know about IMAP
Next part, you'll use those commands within IRIS and see them in action!
See you!
Announcement
Anastasia Dyubaylo · Dec 9, 2021
Hey Developers,
Learn about the recent changes to InterSystems HealthShare Unified Care Record and what is coming next:
⏯ InterSystems HealthShare Unified Care Record
Presenters:🗣 @Sebastian.Musielak, Product Manager, HealthShare Operations, InterSystems🗣 Melanie Davies, Product Manager, Unified Care Record, InterSystems
Subscribe to the InterSystems Developers YouTube channel and stay tuned!
Announcement
Anastasia Dyubaylo · Dec 27, 2021
Hey everyone,
Lots of new content to read! Thanks to our wonderful participants of the 2nd InterSystems Tech Article Contest!
🌟 25 AMAZING ARTICLES 🌟
So it's time to announce the best of them!
Let's meet the winners and their articles:
⭐️ Expert Awards – winners selected by InterSystems experts:
🥇 1st place: Data anonymization, introducing iris-Disguise by @henry
🥈 2nd place: IntegratedML hands-on lab by @José.Pereira
🥉 3rd place and two winners:
VSCode-ObjectScript on GitHub by @Dmitry.Maslennikov
Invite the FHIR® Accelerator Service to your Kubernetes Microservice Party by @sween
⭐️ Community Award – winner selected by Community members, article with the most likes:
🏆 Data anonymization, introducing iris-Disguise by @henry
Hope this win will be a great Christmas present for all of the winners!
⭐️ This time, we'd like to reward some more authors for the number of contributions:
@Yuri.Gomes: 4 articles!
@MikhailenkoSergey: 3 articles!
These guys will get Apple AirPods Pro OR Amazon Kindle 8G Paperwhite OR Raspberry Pi 4 8GB with InterSystems IRIS Community Edition ARM installed!
And...
Let's congratulate all our heroes at https://community.intersystems.com/contests/2:
@Robert.Cemper1003
@Henrique
@Muhammad.Waseem
@Rob.Tweed
@John.Murray
@alex.kosinets
@Iryna.Mykhailova
@Oliver.Wilms
@Rizmaan.Marikar2583
THANK YOU ALL! You have made an incredible contribution to our Dev Community!
Happy Holidays to everyone! 🎅
The prizes are in production now. We will contact all the participants when they are ready to ship Thanks my reward and congrats for the participants, great articles! Congratulations everyone. Very impressive! 
What a wonderful surprise!!
Thank you all community and congratulations to all participants Congratulations all, and happy new year Congratulations to ALL. It was nice competition Congratulations to the authors :-) Thanks everybody!!! Congratulations!
We're lucky to have airpods as the third place prize. Those were easy to split equally between the tied contestants :-) Congratulations! Well done everyone! And now we have beautiful badges for all the winners on Global Masters tied to levels - so these badges will help you to move up through GM levels! Congrats and Happy New Year! Dear participants, regarding prizes and swag delivery: we will be in touch with you at the beginning of January - shortly after the Holidays.