Clear filter
Announcement
Evgeny Shvarov · Jan 26, 2023
Here're the technology bonuses for the InterSystems Developer Tools Contest 2023 that will give you extra points in the voting:
Embedded Python usage
Docker container usage
ZPM Package Deployment
Online Demo
Code Quality pass
Article on Developer Community
The second article on Developer Community
Video on YouTube
First Time Contribution
Community Idea Implementation
See the details below.
Embedded Python - 3 points
Use Embedded Python in your application and collect 3 extra points. You'll need at least InterSystems IRIS 2021.2 for it.
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(ObjectScript 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 3 more bonus points if you provision your project to the cloud as an online demo. You can do it on your own or you can use this template - here is an Example. Here is the video on how to use it.
Code quality pass with zero bugs - 1 point
Include the code quality Github action for code static control and make it show 0 bugs for ObjectScript.
Article on Developer Community - 2 points
Post an article on Developer Community that describes the features of your project. Collect 2 points for each article. Translations to different languages work too.
The Second article on Developer Community - 1 point
You can collect one more bonus point for the second article or the translation regarding the application. The 3rd and more will not bring more points but the attention will all be yours.
Video on YouTube - 3 points
Make the Youtube video that demonstrates your product in action and collect 3 bonus points per each. Examples.
First Time Contribution - 3 points
Collect 3 bonus points if you participate in InterSystems Open Exchange contests for the first time!
Community Idea Implementation - 3 points
You can get 3 extra bonus points if the dev tool implements one of the ideas listed as Community Opportunity on the InterSystems Idea portal.
The list of bonuses is subject to change. Stay tuned!
Good luck with the competition! Bonus for the Community Idea implementation is introduced Rules changing to get additional points halfway through the contest period?
Hi Stefan! Usually not. We know, that rules changing doesn’t help.
But sometimes, very rarely, we add bonuses on-the-go. Like this time we believe that this bonus will help to pay attention to ideas, published by community members, and implement solutions, that community requested and voted for. And there is still 10 days to submit the app and one week more to polish it. We believe this bonus will not harm anyone. If it does - we can discuss it. Hi Evgeny,
As you can see in the article below, we used one idea from InterSystems Idea.
https://community.intersystems.com/post/iris-tripleslash-lets-rock-together
We only saw this additional (and very welcome) bonus now. Here it's the idea that inspired us, as mentioned in the article: https://ideas.intersystems.com/ideas/DP-I-175
Announcement
Anastasia Dyubaylo · Jan 17, 2023
Hey Community,
We are glad to invite you to the upcoming kick-off webinar on the InterSystems Developer Tools Contest.
In this webinar, we'll talk about how to choose a project and show you how to develop, build and deploy applications on InterSystems IRIS data platform. Also, there will be information about the hot internal projects at the moment (SQL client, VS Code unit tests and Jupyter notebooks), how to look at community opportunities in the Ideas portal, and what InterSystems would like to do with the management portal.
Date & Time: Monday, January 23 – 12 pm EST | 6 PM CET
Speakers: 🗣 @Raj.Singh5479, InterSystems Product Manager 🗣 @Dean.Andrews2971, InterSystems Head of Developer Relations 🗣 @Evgeny.Shvarov, InterSystems Developer Ecosystem Manager
>> Register here <<
Developers!
Don't miss the opportunity to register for the upcoming webinar!
The webinar will start tomorrow at 12 pm EST | 6 PM CET. Hi dear community,
If you lack inspiration for the contest, here are some ideas:
* A tool to improve the load of DDL or SQL statements in IRIS.
* Why, because for now, we have to run an iris terminal then run an objectscritp command to load the DDL or SQL statements.
* I wish a way that we can have a tool that bring the ability to parse a DDL or SQL file from a shell.
* Example : iris load -f /path/to/file.sql
* A tool to automatically export objectscript classes to the local folder
* I know we can do it with Timothy's tool, but I wish a simple hook that just export new classes or modified classes to the local folder. Not the whole source control system.
Announcement
Anastasia Dyubaylo · Feb 14, 2023
Hi Community,
Let's meet together at the online meetup with the winners of the InterSystems Developer Tools Contest – a great opportunity to have a discussion with the InterSystems Experts team as well as our contestants.
Winners' demo included!
Date & Time: Thursday, February 16, 5 PM GMT | 12 PM EST
Join us to learn more about winners' applications and to have a talk with our experts.
➡️ REGISTER TODAY
See you all at our virtual meetup!
Announcement
Anastasia Dyubaylo · Jul 13, 2023
Hi Community!
🎆 We're stoked to share the fantastic news with you! Our ❤️🔥 InterSystems Developer Hub ❤️🔥 is up and running and ready to welcome its users!
There's loads of helpful info there:
InterSystems tutorials
Explanations on how to use different tools
Info about contests
much more
And in general most of what you may need to start working with InterSystems technologies!
Check it out!
As usual, all your input is very welcome in the comments. Tell us what you think ;) very nice hotsite nice landing page! InterSystems Developer Hub - best place for developers!) Cool!
Announcement
Anastasia Dyubaylo · Mar 24, 2023
Hey Developers,
We'd like to invite you to join our next contest dedicated to creating AI/ML solutions that use Cloud SQL to work with data:
🏆 InterSystems IRIS Cloud SQL and IntegratedML Contest 🏆
Duration: April 3 - April 23, 2023
Prize pool: $13,500
The topic
💡 InterSystems IRIS Cloud SQL with IntegratedML Contest 💡
In this contest, we expect to see applications full-stack, frontend, or backend applications that make use of InterSystems IRIS Cloud SQL to work with data and optionally will utilize its IntegratedML option to create AI/ML solutions. Your application could be a library, package, tool, or any SQL or/and AI/ML solution which uses InterSystems IRIS Cloud SQL on a backend.
Basically, we invite you to use InterSystems IRIS in this contest as a 100% SQL engine with an AutoML option via IntegratedML offering.
Here you can deploy InterSystems IRIS Cloud SQL.
Here you can get information on InterSystems IRIS Cloud SQL product along with the IntegratedML feature.
General Requirements:
Accepted applications: new to Open Exchange apps or existing ones, but with a significant improvement. Our experts will review all applications before approving them for the contest.
The application should use InterSystems IRIS Cloud SQL instance as a backend. Deploy it here.
Types of applications that match: - anything. Any business solution, technology example, backend, frontend or full-stack application.
The application should be an Open Source and published on GitHub.
The README file to the application should be in English, contain the installation steps, and contain either the video demo or/and a description of how the application works.
One developer can enter the competition with a maximum of 3 applications.
Prizes
1. Experts Nomination - a specially selected jury will determine the winners:
🥇 1st place - $5,000
🥈 2nd place - $3,000
🥉 3rd place - $1,500
🏅 4th place - $750
🏅 5th place - $500
🌟 6-10th places - $100
2. Community winners - an application that will receive the most votes in total:
🥇 1st place - $1000
🥈 2nd place - $750
🥉 3rd place - $500
If several participants score the same amount of votes, they all are considered winners, and the money prize is shared among the winners.
Important Deadlines:
🛠 Application development and registration phase:
April 3, 2023 (00:00 EST): Contest begins.
April 16, 2023 (23:59 EST): Deadline for submissions.
✅ Voting period:
April 17, 2023 (00:00 EST): Voting begins.
April 23, 2023 (23:59 EST): Voting ends.
Note: Developers can improve their apps throughout the entire registration and voting period.
Who can participate?
Any Developer Community member, except for InterSystems employees. Create an account!
👥 Developers can team up to create a collaborative application. Allowed from 2 to 5 developers in one team.
Do not forget to highlight your team members in the README of your application – DC user profiles.
Helpful resources
✓ Documentation:
InterSystems IRIS Cloud SQL
InterSystems IRIS Cloud IntegratedML
✓ Tools:
irissqlcli - python SQL terminal for InterSystems IRIS
Connect to IRIS Cloud SQL:
irissqlcli -h your-iris-cloud-sql-server -p 1972 -u SQLAdmin -n USER -W
Connect to IRIS Cloud SQL via SSL:
irissqlcli -h your-iris-cloud-sql-server -p 1972 -u SQLAdmin -c certificateSQLaaS.pem -n USER -W
DBeaver - SQL-driven database tool. DBeaver and IRIS.
Using docker container with iris-sql locally for development purposeses:
Start IRIS in docker container locally:
docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community
And connect via irissqlcli:
irissqlcli iris://demo:demo@localhost:9091/USER
You can connect also via other SQL tools.
✓ Example applications:
iris-cloud-sql-demo
✓ Online Learning Material:
Connect to InterSystems IRIS Cloud SQL via Python, C++, Java, .NET.
✓ How to submit your app to the contest:
How to publish an application on Open Exchange
How to submit an application for the contest
Need Help?
Join the contest channel on InterSystems' Discord server or talk with us in the comment to this post.
We can't wait to see your projects! Good luck 👍
By participating in this contest, you agree to the competition terms laid out here. Please read them carefully before proceeding.
NB Dear contestants, please take into consideration that support for the contest cloud sql environment is only available during business hours M-F 9-5 US Eastern Time. We seem to be experiencing a failure of the cloud environment such that deployments are stuck in Pending status for some users.
Yay!
This time you can develop the solution for the contest in ANY language that understands SQL!
Python, java, .NET, js, C++, Rust, Go, ObjectScript - anything!
Looking forward! Looking forward to this one! ;-) Have a look at some of my projects which can help with this contest
irissqlcli - REPL for IRIS SQL
sqlalchemy-iris dialect for SQLAlchemy, can be used with Pandas, Flask or FastAPI
django-iris driver for Django
dbt-iris adapter for dbt
Give it a try and let me know if you have any issues with them, I can help to solve  Hi, Developers!
The cloud portal of InterSystems IRIS Cloud SQL is now available!
Feel free to launch deployments and prepare to the contest!
Example of using SQLAlchemy+Pandas, works with this Cloud SQL as well
from sqlalchemy import create_engine
import pandas as pd
server = '<your-server-hostname>'
port = 1972
namespace = 'USER'
username = 'SQLAdmin'
password = '<YOUR_PASSWORD>'
url = f"iris://{username}:{password}@{server}:{port}/{namespace}"
print(url)
engine = create_engine(url)
df = pd.DataFrame({
'int': [1, 2, 3, 4, 5],
'float': [1.1, 2.2, 3.3, 4.4, 5.5],
'string': ['a', 'b', 'c', 'd', 'e'],
'datetime': pd.date_range('20130101', periods=5),
'bool': [True, False, True, False, True]
})
# create a table in IRIS
df.to_sql('iris_table', engine, if_exists='replace', schema='sqlalchemy')
# read the table back from IRIS
df2 = pd.read_sql_table('iris_table', engine, schema='sqlalchemy')
# print the dataframe
print(df2)
Added a small cheat sheet for IRIS SQL Hey Devs!
The recording of the "[Kick-off Webinar] InterSystems IRIS Cloud SQL and IntegratedML Contest" is on InterSystems Developers YouTube!
I tried to create an account on https://portal.sql-contest.isccloud.io/account/login
Just the welcome mail never arrived.the page proposed to contact admin in this case
Note: If you do not receive an email, it might be that the username or email address entered is not registered for an account. If you are unable to remember the username or email address you used to sign up for an account, please contact your system administrator for assistance.
No further notice. Who is that system admin? Which mail ?Not so impressive ACCOUNT SOLVED: with a new account name. may be a typo in the e-mailTHOUGH OPEN: where is the admin contact Thanks, Robert -- we will look into that and see what the problem is. Granted, it is Easter Sunday so my apologies that our team will likely get to it at some point tomorrow
Note: Our InterSystems IRIS Cloud SQL service is not yet publicly available, and we hope this contest uncovers bugs -- so we encourage all the participants in the contest to let us know when they see anything that doesn't match their expectations, no matter how trivial!
Good luck hacking! Often we need to clean-up IRIS and start from a clear page with empty database. Docker containers could be an ideal option for that.
Start IRIS in docker container locally:
docker run --rm --name iris-sql -d --publish 9091:1972 --publish 9092:52773 intersystemsdc/iris-community -a "iris session iris -U%SYS '##class(Security.Users).UnExpireUserPasswords(\"*\")'"
And connect via irissqlcli:
irissqlcli iris://_SYSTEM:SYS@localhost:9091/USER
You can connect also via other SQL tools.
Use the approach only for development purposes.
other SQL tools.
confirmed: I used ODBC + SQLGateway for access and operation from local IRISworks perfectly. There are already many useful suggestions and tools on display here... amazing community! Thank you!
There was a new release of intersystemsdc vanilla images.
Now you can use ENV variables to start IRIS with user, pass and namespace created.
E.g. here is how to start:
docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community
Here is how to connect via irissqlcli:
irissqlcli iris://demo:demo@localhost:9091/USER
Hey, Devs!
There are three articles have been added to the contest!
IntegratedML-IRIS-Cloud-Height-prediction by @珊珊.喻audit-consolidator by @Oliver.Wilms Tokenizator by @Yuri.Gomes
Developers today is the last day for submissions!Don't miss your chance to join! I try to test contributions to the contestbut IRIS Cloud SQL just shows Deployment Pendingfor HOURS !!And no contact or mail to report this breakdownIt is really disappointing!
I see that it's a known situation, they even added a NB in the post:
NB Dear contestants, please take into consideration that support for the contest cloud sql environment is only available during business hours M-F 9-5 US Eastern Time. We seem to be experiencing a failure of the cloud environment such that deployments are stuck in Pending status for some users.
Article
Anastasia Dyubaylo · Apr 14, 2023
Hey Community!
There are occasions when you really need to get in touch with a member of our Community a.k.a. author of a post or developer of a particular project, to discuss something, catch up, or whatever. And exactly for this reason, we have Direct Messages where you can send a message directly to a specific person or even have a group chat!
Accessing Direct Messages is easy. Just click on the Envelope button near your profile picture:
And you will get lots of options:
First of all, you can see all the messages you've received in the Inbox section, all the unread messages in the Unread, and all the bookmarked - you guessed it - in Bookmarks. Also, via this left menu you can set the settings for direct messages using the Settings section:
Getting back to the Inbox section, if you select one or several (or Select all) messages you can Delete, Mark as unread / read, or Add to bookmarks the whole batch. And if you add a message to bookmarks you will be able to quickly find it in the Bookmarks section.
Another way to add a message to bookmarks is to hover your mouse over it and click the star that appears near the date:
Messages that are in bookmarks will have a green star in this line.
There are a few more ways to quickly send a DM to a Community member:
go to the profile of the member you want to contact
you can also quickly start a private discussion from the post page on a specific topic described in the post – the post title will automatically pull up as the subject of the DM
This is it, easy-peasy. Happy messaging!
Article
Yuri Marx · Apr 13, 2023
It is a recommended security practice to login into sensitive Administrator Portals without any input passwords. Thus, it is necessary to identify and authenticate the users correctly. A common technique employed by web portals and mobile applications is to use Google social login. Today, Google Gmail has 2 billion users (source: https://www.usesignhouse.com/blog/gmail-stats). Therefore, it is a perfect shared login service to utilize to login InterSystems IRIS users when they need to manage their instances. This article will detail all the steps to embed Google Login into your InterSystems Management Portal.
Register your InterSystems instance in the Google Console
1. Go to https://console.cloud.google.com and log in with your Google user account.2. On the header click Select a project:
3. Click the button NEW PROJECT:
4. Create a sample project for this article called InterSystemsIRIS and click the button CREATE:
5. Go to the Header again and select the created project InterSystemsIRIS hyperlink in the table:
6. Now the selected project is the working one:
7. In the header look for credentials on the Search field and choose API credentials (third option for this image):
8. On the top of the screen, click the + CREATE CREDENTIALS button and select OAuth 2.0 Client ID option:
9. Now click CONFIGURE CONSENT SCREEN:
10. Choose External (any person who has Gmail is able to use it) and click the CREATE button:
11. In Edit app registration, complete the field values as follow:App Information (use your email for user support email):
App Logo (save any vertical InterSystems Logo on your computer and use it here):
App Domain (set home page with the value http://localhost:52773/csp/sys/%25CSP.Portal.Home.zen)
For Authorized domains, it is not necessary to set anything because this sample will use localhost. Set the developer contact information with your email and click the SAVE AND CONTINUE button:
12. Click ADD OR REMOVE SCOPES and select the following scopes, scroll the dialog, and click the UPDATE button:
13. Your non-sensitive, sensitive, and restricted scopes are listed. Accept all of them and click the SAVE AND CONTINUE button:
14. Include your email into the Test users list (using the +ADD USERS button) and click the SAVE AND CONTINUE button:
15. The wizard shows you the Summary of the filled fields. Scroll the screen and click the BACK TO DASHBOARD button.16. Now, it is time to configure the credentials for this new project. Select the option Credentials:
17. Click the button +CREATE CREDENTIALS and select OAuth client ID (we need to take this step again because now we have OAuth consent screen defined):
18. Select Web application in the Application Type and InterSystems IRIS in the Name field:
19. Configure JavaScript origins and redirects (click +ADD URI to get more fields) as follows and click the SAVE button:
JavaScript URI 1: http://localhost:52773
JavaScript URI 2: http://localhost
Redirect URI 1: http://localhost:52773
Redirect URI 2: http://localhost
Redirect URI 3: http://localhost:52773/csp/sys/dc.login.GoogleLogin.cls
20. Now we have a Client ID and a Client Secret. You should copy them to a text file on your disk or save the data using DOWNLOAD JSON:
Now we will embed Google Login to our local InterSystems IRIS instance.
InterSystems IRIS Delegated Authentication Mechanism to the Management Portal
InterSystems IRIS allows us to use a few authentication options, including Instance Authentication (a default option that uses a user and a password managed by the IRIS instance), LDAP (users managed by an enterprise repository), and Delegated Authentication (for customized authentication mechanism).We will choose Delegated Authentication because this is the option where the login uses OAuth and a custom code to get user credentials and authenticate users without the input passwords. When using OAuth, the OAuth server (Google in our use case) will authenticate and return to the InterSystems IRIS (OAuth client) the user details logged in.In our example, we want to set up Delegated Authentication to the Management Portal (csp/sys application). To make it happen, you need to take the following steps:
Create a class extending %CSP.Login and write the custom HTML, JavaScript, and CSS code for the customized login. In this article sample we will embed a Google button to log in with the Google user.
Create and write Object Script in the macro ZAUTHENTICATE.mac with the custom backend authentication login logic.
Enable Delegated Authentication to the InterSystems IRIS.
Set up Delegated authentication and the custom login page (the class extending %CSP.Login) for the /csp/sys web application (Management Portal web application).
All these steps should be done in the %SYS namespace.
Using a sample application to learn how to embed Google Login into Management Portal
To learn how to embed Google Social Login into an instance of the InterSystems IRIS, we will use the application Google IRIS Login (https://openexchange.intersystems.com/package/Google-IRIS-Login). Follow these steps in order to get it:
1. Clone/git pull the repo into any local directory:
git clone https://github.com/intersystems-community/intersystems-iris-dev-template.git
2. Go to the .env file and input your CLIENT_ID generated in your Google Cloud Console in the first part of this article.3. Open the terminal in this directory and call the command to build InterSystems IRIS in a container
docker-compose build
4. To run the InterSystems IRIS in a container, do the next:
$ docker-compose up -d
5. Access the Management Portal (http://localhost:52773/csp/sys/%2525CSP.Portal.Home.zen) and use your Google user to enter:
Ready! In the upcoming sections, we will see all the steps one needs to configure and develop inside IRIS to embed Google Social Login.
Creating a custom Login Page extended from %CSP.Login
To embed the Google Login into the Management Portal we need to create a new Login page extending from %CSP.Login. This allows us to reuse the default Login Page but requires adding the necessary source code for supporting Google Login. The custom login page will override the following class methods:
OnLoginPage: used to write the HTML and JavaScript code to render the login form with the Google Login button.
DrawHead: employed to add JavaScript code that will persist Google Login credentials returned into cookies for the backend logic use.
GoogleLogin.cls source code
Important actions on this page:1. We got CLIENT_ID and LOGIN_URI from the env file to use as parameters for the Google Login button:
Set envClientId = ##class(%SYSTEM.Util).GetEnviron("CLIENT_ID")
Set envLoginURI = ##class(%SYSTEM.Util).GetEnviron("LOGIN_URI")
2. Before the content, we needed to load the Google JavaScript library
<script src="https://accounts.google.com/gsi/client" async defer></script>
3. Our next step was to write the HTML code to render the Google button using LOGIN_URI and CLIENT_ID environment variables collected from the .env file:
<div id="g_id_onload"
data-client_id="#(envClientId)#"
data-context="signin"
data-ux_mode="popup"
data-callback="handleCredentialResponse"
data-login_uri="#(envLoginURI)#"
data-auto_prompt="false">
</div>
<div class="g_id_signin"
data-type="standard"
data-shape="rectangular"
data-theme="outline"
data-text="signin_with"
data-size="large"
data-onsuccess="onSignIn"
data-logo_alignment="left">
</div>
4. On the DrawHead class method, we wrote JavaScript functions to get the Google user credentials and store them in cookies for the backend use:
function setCookie(name,value,days) {
var expires = "";
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days*24*60*60*1000));
expires = "; expires=" + date.toUTCString();
}
document.cookie = name + "=" + (value || "") + expires + "; path=/";
}
function newSession() {
eraseCookie('email');
window.location.reload();
}
function eraseCookie(name) {
// This function will attempt to remove a cookie from all paths.
var pathBits = location.pathname.split('/');
var pathCurrent = ' path=';
// do a simple pathless delete first.
document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;';
for (var i = 0; i < pathBits.length; i++) {
pathCurrent += ((pathCurrent.substr(-1) != '/') ? '/' : '') + pathBits[i];
document.cookie = name + '=; expires=Thu, 01-Jan-1970 00:00:01 GMT;' + pathCurrent + ';';
}
}
function deleteAllCookies() {
const cookies = document.cookie.split(";");
for (let i = 0; i < cookies.length; i++) {
const cookie = cookies[i];
const eqPos = cookie.indexOf("=");
const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
// called when page is loaded
function pageLoad()
{
// see if we can give focus to the UserName field:
if (self.document.Login && self.document.Login.IRISUsername) {
self.document.Login.IRISUsername.focus();
self.document.Login.IRISUsername.select();
}
return true;
}
function decodeJwtResponse(token) {
var base64Url = token.split('.')[1];
var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');
var jsonPayload = decodeURIComponent(window.atob(base64).split('').map(function(c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
}).join(''));
return JSON.parse(jsonPayload);
}
function handleCredentialResponse(response) {
const responsePayload = decodeJwtResponse(response.credential);
console.log("ID: " + responsePayload.sub);
console.log('Full Name: ' + responsePayload.name);
console.log('Given Name: ' + responsePayload.given_name);
console.log('Family Name: ' + responsePayload.family_name);
console.log("Image URL: " + responsePayload.picture);
console.log("Email: " + responsePayload.email);
setCookie('email', responsePayload.email);
setCookie('googleToken', response.credential);
if(responsePayload.email !== null) {
document.getElementsByName('Login')[0].submit();
}
}
5. To see all the content for the Login Page go to src > cls > dc > login > GoogleLogin.cls file.
Creating the backend code to authenticate Google users
To write the backend logic to handle custom login using delegated mechanism, it is necessary to apply a macro with the name ZAUTHENTICATE.mac into %SYS namespace.
ZAUTHENTICATE.mac source code
Important actions in this file:1. Define and store an encrypted password for the new user selected in the Google Login prompt:
Set GooglePassword = $SYSTEM.Util.GetEnviron("GOOGLE_PASSWORD")
Set GlobalPassword = $EXTRACT(##class(dc.login.CypherUtil).DoAESCBCEncrypt(GooglePassword),1,20)
2. Refer to the Management Portal application (csp/sys) for Google Login:
Set App = $SYSTEM.Util.GetEnviron("ISC_App")
Set:App="" App = "/csp/sys"
Set GN = "^%ZAPM.AppsDelegate"
If $EXTRACT(App,*)'="/" {
Set App=App_"/"
}
3. Get the Google user selected and stored in the email cookie:
Set Email = %request.GetCookie("email")
4. Test if the user already exists. If not, create the user as a Superuser (My choice is the %All role, but you can pick another option, for example, the %Developer role). If the user already exists, just log in:
Set EmailUser = $PIECE(Email,"@")
Set qry = "select * from Security.Users where EmailAddress = ?"
Set tStatement = ##class(%SQL.Statement).%New()
Set qStatus = tStatement.%Prepare(qry)
Set rset = tStatement.%Execute(Email)
While rset.%Next() {
Set UserExists = 1
}
If UserExists = 1 {
Set Username = rset.Name
Set Password = GlobalPassword
Quit $SYSTEM.Status.OK()
} Else {
Set $nameSpace = "%SYS"
if '##class(Security.Users).Exists($PIECE(Email,"@")) {
Set status = ##class(Security.Users).Create($PIECE(Email,"@"),"%ALL",GlobalPassword,$PIECE(Email,"@"),"","","",0,1,"",1,0,"","","","")
Set status = ##class(Security.Users).Get($PIECE(Email,"@"),.properties)
Set properties("EmailAddress")=Email
Set status = ##class(Security.Users).Modify($PIECE(Email,"@"), .properties)
If status = 1 {
Set Username = $PIECE(Email,"@")
Set Password = GlobalPassword
Quit $SYSTEM.Status.OK()
}
}
}
5. Compile these files into the “%SYS” namespace.
It is time to set some parameters to ensure the delegated authentication using the custom source code written above.
Adjust the settings to ensure delegated login
1. Go to the Management Portal (http://localhost:52773/csp/sys/%2525CSP.Portal.Home.zen) and log in with _system/sys credentials.2. Proceed to System Administration > Security > System Security > Authentication/Web Session Options:
3. The option “Allow Delegated authentication” must be checked:
4. Now go to System Administration > Security > Users and select the user CSPSystem. The user must have the role DB_IRISSYS or %All role (it is necessary because this user is utilized to run the login page and the authenticate.mac logic with the permissions required to execute it):
5. Move to the System Administration > Security > Applications > Web Applications and select the /csp/sys application.6. In the "Allowed Authentication Methods" field, check the option "Delegated.7. The Login Page field must have dc.login.GoogleLogin.cls as a value (we need it to call our custom login page, instead of the IRIS default page):
8. Now to ensure the correct functioning, attach Shell to your IRIS docker instance:
9. Now restart the page from the prompt writing and execute the command "iris restart iris":
10. Finally, go to the Login page again.
Now you have Google as an option to log in. Enjoy it! wow - what an incredibly in-depth tutorial! thank you @Yuri.Gomes for the time you took putting this together for the Community! Many thanks! @Yuri.Gomes Thank you so much for this great work - tutorial, and application! 👏👏
Looks like you implemented the idea:
💡Please add google oauth authorization to login to the management portal💡
from Ideas Portal ✨
Many thanks!👏 Thanks! Yes, I implemented it. Thank you, @Yuri.Gomes! Can we have the similar implementation for GitHub OAuth too? Github is the most popular site for developers, so authentication via GItHub will be very handy for developers. Yes, I will work on Github too.
Announcement
Anastasia Dyubaylo · Jul 12, 2023
Hey Developers,
Enjoy watching the new video on InterSystems Developers YouTube:
⏯ Projecting Data into InterSystems IRIS with Foreign Tables
See the benefits of projecting data into InterSystems IRIS® data platform using Foreign Tables. This feature allows you to access external data without loading it into your instance, saving on storage space and guaranteeing your data is up to date.
Subscribe to our channel to stay tuned!
Announcement
Anastasia Dyubaylo · Jul 18, 2023
Hi Community,
Watch this video to learn how InterSystems software enables both horizontal and vertical scaling:
⏯ Scaling for User and Data Volume in InterSystems IRIS
Stay tuned and subscribe to InterSystems Developers YouTube!
Announcement
Jessica Simmons · Nov 1, 2022
VetsEZ is looking for an InterSystems Technology Platform - Practice Lead to serve our Federal healthcare customers. As a lead systems integrator, VetsEZ has been delivering large-scale implementations for various federal customers, including the Department of Veterans Affairs (VA), with the world's largest footprint of InterSystems technologies. InterSystems Technology Platform comprises core technologies, including HealthShare, Caché, IRIS, Ensemble, DeepSee, and iKnow. The ideal candidate will possess the required technical knowledge and the leadership skills necessary for leading and growing our practice. We aim to become a certified InterSystems partner and achieve the Unified Care Record (UCR) certification. We value candidates with solid communication skills who can work in a fast-paced, challenging environment.
The candidate must reside within the continental US.
Responsibilities:
• Engage with clients at the senior leadership level to understand unique business drivers, pain points, overall technology landscape, timeline, and priorities; understand what success looks like to the client; and, most importantly, how our services can help fill that need
• Grow strong clientele and partner relationships through regular communication, reliable expectation management, and delivering on promises
• Identify skill sets and timing for resource needs and help to shepherd resources in and out of projects
• Act as a technical lead, and mentor team members while maintaining a hands-on role. Subject-matter expertise in healthcare interoperability and InterSystems Technology Platform
• Understand complex technical and business requirements and translate them into highly scalable, robust integration architectures
• Architect and configure the InterSystems HealthShare / IRIS platform with a focus on Automation and CI/CD
• Utilize Healthcare Interoperability Standards (HL7v2, FHIR, CCDA, IHE, X12) appropriately in solution designs.
• Lead development teams in building solutions and automating processes
• Utilize CI/CD technologies and processes including but not limited to Git, Jenkins, Docker
• Use AWS-based cloud architectures, VM and Containers, and deployment strategies to Architect solutions
• Utilize Enterprise Integration Patterns in solution designs.
Required Skills and Abilities:
• Hands-on Architect with leadership experience to guide and mentor a team
• Flexible and able to adapt to frequently changing standards and priorities
• Customer advocate, working hard to ensure customer success and satisfaction
• Proven experience developing and implementing highly scalable enterprise-level interoperability solutions
• Passion for deploying scalable, robust solutions with an eye toward futureproofing
• Strong interpersonal skills, with a desire to interact with various team members, customers, and end-users.
Qualifications:
• Bachelor's Degree in Computer Science or equivalent area. Master's degree preferred.
• Experience in the VA, specifically with VA VistA and FileMan, is a plus.
• Background in healthcare preferred.
• 5+ years of experience
• Must be able to obtain and maintain public trust clearance
• Team-oriented contributor with excellent interpersonal skills
Additional Qualifications:
Must be able to obtain and maintain Public Trust Clearance
Team-oriented contributor with excellent interpersonal skills
Must have reliable internet service for remote work
Background in the Department of Veterans Affairs and healthcare preferred
Benefits:
Medical/Dental/Vision
401k with Employer Match
Corporate Laptop
PTO + Federal Holidays
Training opportunities
Remote work options
Qualified applicants will receive consideration for employment regardless of race, color, religion, sex, national origin, sexual orientation, gender identity, disability, or protected veteran status.
Sorry, we are unable to offer sponsorship currently.
https://vetsez.breezy.hr/p/edb1586759dc01-intersystems-technology-platform-practice-lead-remote-opportunity?state=published
Announcement
Bob Kuszewski · Nov 22, 2022
Announcing the InterSystems Container Registry web user interface
InterSystems is pleased to announce the release of the InterSystems Container Registry web user interface. This tool is designed to make it easier to discover, access, and use the many Container images hosted on ICR.
The InterSystems Container Registry UI is available at: https://containers.intersystems.com/contents
Community Edition Containers
When you visit the ICR user interface, you’ll have access to InterSystems' publicly available containers, including the IRIS community edition containers. Use the left-hand navigation to select the product family that interests you, then the container, and finally select the specific version.
Enterprise Edition Containers
You can see the private containers, including the IRIS enterprise edition, by clicking on the Login button. Once logged in, the left-hand navigation will include all the containers you have access to.
Enjoy!
That great, can be very useful to just check if a version is still available or the one that just came out. A great resource for our community - thanks! This is nice !! Thank you @Robert.Kuszewski !! SUPER !!!
Article
Anastasia Dyubaylo · Mar 30, 2023
Hi Community,
Some of you would like to share an event (online or offline) with others on our Community and here is a how-to on how to actually create an Event to invite your fellow members.
The main challenge when creating an event is to fill in all the necessary pieces of information in the right places. So let's look at what needs to be done.
First of all, you need to choose the tag Events
After you've done it, you'll see that a new form appeared at the bottom of the page:
When filling in the form please follow the instruction provided. Click Publish as usual and your event will become visible on the main page of the Community. And this is it.
If you have any comments or questions, please don't hesitate to ask them in the Comments section.
Announcement
Bob Kuszewski · Jun 2, 2023
We often get questions about recent and upcoming changes to the list of platforms and frameworks that are supported by the InterSystems IRIS data platform. 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…
IRIS Production Operating Systems and CPU Architectures
Red Hat Enterprise Linux
Recent Changes
RHEL 9.2 & RHEL 8.8 were released in May, 2023. Red Hat is planning to support these releases for 4 years. InterSystems is planning to do additional testing of IRIS on RHEL 9.2 through a new process we’re calling “Minor OS version certification” that is intended to provide additional security that a minor OS update didn’t break anything obvious.
With the release of RHEL 9.2, Red Hat has ended support for RHEL 9.1. This is consistent with the “odd/even” support cycle that Red Hat has been using since RHEL 8.0.
RHEL 8.4 extended maintenance ends 5/31/2023, which means that IRIS will stop supporting this minor version at that time as well.
Upcoming Changes
RHEL 9.3 is planned for later in the year. This will be a short-term-support release from Red Hat, so InterSystems won’t be recommending it for production deployments.
Previous Updates
IRIS 2022.1.2 adds support for RHEL 9.0. 9.0 is a major OS release that updates the Linux Kernel to 5.14, OpenSSL to 3.0, and Python 3.9
IRIS 2022.2.0 removes support for RHEL 7.x. RHEL 7.9 is still supported in earlier versions of IRIS.
Further reading: RHEL Release Page
Ubuntu
Recent Changes
Ubuntu 22.04.02 LTS was released February 22, 2023. InterSystems is currently performing additional testing of IRIS on 22.04.02 LTS through a new process we’re calling “Minor OS version certification”. So far, so good.
Upcoming Changes
The next major update of Ubuntu is scheduled for April, 2024
Previous Updates
IRIS 2022.1.1 adds support for Ubuntu 22.04. 22.04 is a major OS release that updates the Linux Kernel to 5.15, OpenSSL to 3.0.2, and Python 3.10.6
IRIS 2022.2.0 removes support for Ubuntu 18.04. Ubuntu 18.04 is still supported in earlier versions of IRIS.
IRIS 2022.1.1 & up containers are based on Ubuntu 22.04.
Further Reading: Ubuntu Releases Page
SUSE Linux
Upcoming Changes
SUSE Linux Enterprise Server 15 SP5 is currently in public beta testing. We expect SUSE to release 15 SP5 late Q2 or early Q3 with support added to IRIS after that. SP5 will include Linux Kernel 5.14.21, OpenSSL 3.0.8, and Python 3.11
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.
Previous Updates
IRIS 2022.3.0 adds support for SUSE Linux Enterprise Server 15 SP4. 15 SP4 is a major OS release that updates the Linux Kernel to 5.14, OpenSSL to 3.0, and Python 3.9
Further Reading: SUSE lifecycle
Oracle Linux
Upcoming Changes
Based on their history, Oracle Linux 9 will include RHEL 9.2 sometime in the second half of 2023.
Previous Updates
IRIS 2022.3.0 adds support for Oracle Linux 9. Oracle Linux 9 is a major OS release that tracks RHEL 9, so it, too, updates the Linux Kernel to 5.14, OpenSSL to 3.0, and Python 3.9
Further Reading: Oracle Linux Support Policy
Microsoft Windows
Upcoming Changes
Windows Server 2012 will reach its end of extended support in October, 2023. If you’re still running on the platform, now is the time to plan migration. IRIS 2023.2 will not be available for Windows Server 2012.
Previous Updates
We haven’t made any changes to the list of supported Windows versions since Windows Server 2022 was added in IRIS 2022.1
Further Reading: Microsoft Lifecycle
AIX
Upcoming Changes
InterSystems is working closely with IBM to add support for OpenSSL 3.0. This will not be included in IRIS 2023.2.0 as IBM will need to target the feature in a further TL release. The good news is that IBM is looking to release OpenSSL 3.0 for both AIX 7.2 & 7.3 and the timing looks like it should align for IRIS 2023.3.
Previous Updates
We haven’t made any changes to the list of supported AIX versions since AIX 7.3 was added and 7.1 removed in IRIS 2022.1
Further Reading: AIX Lifecycle
Containers
Upcoming Changes
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 are also adding “latest-em” and “latest-cd” tags for the most recent extended maintenance and continuous distribution IRIS release. These will be good for demos, examples, and development environments.
We will also start to tag the preview containers with “-preview” so that it’s clear which container is the most recent GA release.
These changes will all be effective the 2023.2 GA release. We’ll be posting more about this in June.
Previous Updates
We are now publishing multi-architecture manifests for IRIS containers. This means that pulling the IRIS container tagged 2022.3.0.606.0 will download the right container for your machine’s CPU architecture (Intel/AMD or ARM).
IRIS Development Operating Systems and CPU Architectures
MacOS
Recent Changes
We’ve added support for MacOS 13 in IRIS 2023.1
Upcoming Changes
MacOS 14 will be announced soon and expect it will be GA later in the year.
CentOS
We are considering removing support for CentOS/CentOS Stream. See reasoning below.
Red Hat has been running a developer program for a few years now, which gives developers access to free licenses for non-production environments. Developers currently using CentOS are encouraged to switch to RHEL via this program.
CentOS Stream is now “upstream” of RHEL, meaning that it has bugs & features not yet included in RHEL. It also updates daily, which can cause problems for developers building on the platform (to say nothing of our own testing staff).
We haven’t made any changes to the list of supported CentOS versions since we added support for CentOS 8-Stream and removed support for CentOS 7.9 in IRIS 2022.1
InterSystems Components
InterSystems API Manager (IAM)
IAM 3.2 was released this quarter and it included a change to the container’s base image from Alpine to Amazon Linux.
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 source for definitive list of supported technologies.
IRIS 2020.1 Supported Server Platforms
IRIS 2021.1 Supported Server Platforms
IRIS 2022.1 Supported Server Platforms
IRIS 2023.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.
AIX 7.3 TL 1 and later has OpenSSL 3.X
From the linked IBM page AIX 7.3 TL1 was released six months ago.$oslevel -s7300-01-02-2320$openssl versionOpenSSL 3.0.8 7 Feb 2023 (Library: OpenSSL 3.0.8 7 Feb 2023) Unfortunately, there are significant bugs in the OpenSSL 3 available for AIX 7.3 that make running IRIS (or any other high user of OpenSSL) impossible. We have a build in-house from IBM that has fixed the problems that should be available to the public later in the year.
Announcement
Anthony Jackson · Jun 3
Summary:
Duties and Responsibilities:
Design and implement healthcare data integration solutions using the InterSystems platform /HealthShare platform, ensuring data interoperability across various healthcare systems.
Develop and maintain data mappings and transformations to ensure accurate data exchange between systems, leveraging IRIS API’s, HL7, FHIR, and other healthcare data standards.
Build and maintain interfaces to connect health information systems, including clinical applications, EHR, and other healthcare data sources.
Work closely with cross-functional teams, including developers, business analysts, and healthcare professionals, to gather requirements, design solutions, and implement integrations.
Create and maintain comprehensive documentation for integration solutions, including interface specifications, data mappings, and test plans.
Identify opportunities to improve integration processes and solutions, contributing to the overall efficiency and effectiveness of healthcare data exchange.
Education and Skills:
Experience with interoperability tools (like InterSystems), such as NextGen Mirth or "Availity" or "Infor" or "IRIS" or Cloverleaf or Rhapsody or Ensemble etc.
Experience and expertise with InterSystems IRIS, InterSystems HealthShare.
Familiarity / Experience working with Medical Claims data
Experience with Amazon Web Services (AWS).
Experience developing Continuous Integration / Continuous Delivery (CI/CD).
Knowledge and understanding of agile methodologies
Please send your profile to : Antony.Jackson@infinite.com
antonyjacks@gmail.com
Announcement
Anastasia Dyubaylo · Jun 10
Hi Community,
Our Project Managers created a series of videos to highlight some of the interesting features of the new 2025.1 release. Please welcome the first one of them:
⏯ Foreign Tables in InterSystems IRIS 2025.1
The InterSystems IRIS 2025.1 release introduces powerful new features for data management, including full support for foreign tables in production. It adds fine-grained privileges for managing access to foreign servers and querying them, plus a new command for sending direct SQL queries to external relational databases. New table conversion options also allow switching between row and column layouts for better analytics performance.
🗣 Presenter: @Benjamin.DeBoe, Manager, Analytics Product Management, InterSystems
Want to stay up to date? Watch the video and subscribe for more!