Search

Clear filter
Article
Eduard Lebedyuk · Feb 10, 2023

Encrypted JDBC connection between Tableau Desktop and InterSystems IRIS

In this article, we will establish an encrypted JDBC connection between Tableau Desktop and InterSystems IRIS database using a JDBC driver. While [documentation on configuring TLS with Java clients](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_javacli) covers all possible topics on establishing an encrypted JDBC connection, configuring it with Tableau might be a little bit tricky, so I decided to write it down. # Securing SuperServer Before we start with client connections, you need to configure SuperServer, which by default runs on port `1972` and is responsible for xDBC traffic to accept encrypted connections. This topic is described in the [documentation](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_superserver), but to summarise it, you need to do three things: 1. Generate CA and server cert/key. I use [easyRSA](https://github.com/OpenVPN/easy-rsa): ```bash mkdir /tls cd /easyrsa3 ./easyrsa init-pki # Prep a vars file https://www.sbarjatiya.com/notes_wiki/index.php/Easy-rsa#Initialize_pki_infrastructure # cp /tls/vars /opt/install/easy-rsa/easyrsa3/pki/vars ./easyrsa build-ca ./easyrsa gen-req IRIS nopass ./easyrsa sign-req server IRIS cp pki/issued/* /tls/ cp pki/private/* /tls/ cp pki/ca.crt /tls/ sudo chown irisusr:irissys /tls/* sudo chmod 440 /tls/* ``` Optionally, generate client cert/key for mutual verification. I recommend doing it after establishing an initial encrypted connection. 2. Create `%SuperServer` SSL Configuration, which uses server cert/key from (1). ```objectscript set p("CertificateFile")="/tls/IRIS.crt" set p("Ciphersuites")="TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256:TLS_AES_128_GCM_SHA256" set p("Description")="Autogenerated SuperServer Configuration" set p("Enabled")=1 set p("PrivateKeyFile")="/tls/IRIS.key" set p("PrivateKeyPassword")="" set p("PrivateKeyType")=2 set p("TLSMaxVersion")=32 set p("TLSMinVersion")=16 // Set TLSMinVersion to 32 to stick with TLSv1.3 set p("Type")=1 set sc = ##class(Security.SSLConfigs).Create("%SuperServer", .p) kill p ``` 3. Enable (or Require) SuperServer SSL/TLS support:: ``` set p("SSLSuperServer")=1 set sc = ##class(Security.System).Modify("SYSTEM", .p) kill p ``` Where: 0 - disabled, 1 - enabled, 2 - required. Before you Require SSL/TLS connections, remember to enable SSL/TLS connections to the SuperServer for [WebGateway](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_WEBGATEWAY) and [Studio](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_studio). I recommend first enabling SSL/TLS connections, then verifying that all clients (xDBC, WebGateway, Studio, NativeAPI, etc.) use encrypted SSL/TLS connections and requiring SSL/TLS connections only after that. Now we are ready to establish an encrypted JDBC connection from Tableau Desktop. # Configuring encrypted JDBC connection from Tableau Desktop 1. [Download JDBC drivers](https://intersystems-community.github.io/iris-driver-distribution/). 2. Place the JDBC driver into the correct folder: - Windows: `C:\Program Files\Tableau\Drivers` - Mac: `~/Library/Tableau/Drivers` - Linux: `/opt/tableau/tableau_driver/jdbc` 3. Create `truststore.jks` from the SuperServer CA certificate: `keytool -import -file CA.cer -alias CA -keystore truststore.jks -storepass 123456 -noprompt` 4. Create `SSLConfig.properties` file: ``` debug = false logFile = javatls.log protocol = TLSv1.3 cipherSuites = TLS_AES_256_GCM_SHA384 trustStoreType = JKS trustStore = truststore.jks trustStorePassword = 123456 trustStoreRecoveryPassword = 123456 ``` 5. Place `SSLConfig.properties` and `truststore.jks` in a working directory of your java program. Note that Tableau spawns several processes. You need a working directory for the Java process (which is not a root process or one of the QT processes). Here's how to find it on Windows with [ProcessExplorer](https://learn.microsoft.com/en-us/sysinternals/downloads/process-explorer): ![image](https://user-images.githubusercontent.com/5127457/218109251-a77bfc11-5a5c-42a6-a7e7-c6d153434cb1.png) and go to the java process properties and get the current directory: ![image](https://user-images.githubusercontent.com/5127457/218109489-a8ff2bc4-3354-4988-8e89-fd98b2aa10a5.png) So for Windows, for me it's `C:\Users\elebedyu\AppData\Local\Temp\TableauTemp`, or in general `%LOCALAPPDATA%\Temp\TableauTemp`. On Mac and Linux, you can figure it out using `lsof -d cwd`. Please write in comments if you determined the directory for Mac/Linux. 6. Create `.properties` file. This file contains JDBC customizations. Name it `IRIS.properties` and place it: - On Windows: `C:\Users\\Documents\My Tableau Repository` - On Mac and Linux: `~/Documents/My Tableau Repository` If you are using the Tableau version before 2020.3, you should use Java 8 for JDBC connections. Java 8 properties files require ISO-8859-1 encoding. As long as your properties file contains only ASCII characters, you can also save it in UTF-8. However, ensure that you don't save with a BOM (Byte order mark). Starting in Tableau version 2020.3, you can use UTF-8 encoded properties files, which are standard with Java 9+. In this file, specify your JDBC connection properties: ``` host= port= user= password= connection\ security\ level=10 ``` Note that Tableau uses `JDBCDriverManager`, all properties are [listed here](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BJAVA_refapi#BJAVA_refapi_connparms). As per the `.properties` [file spec](https://en.wikipedia.org/wiki/.properties), you must escape whitespaces in keys with a `\`. 7. Open Tableau and create a new JDBC connection, specifying the properties file. It should connect. ![image](https://user-images.githubusercontent.com/5127457/218100160-df31cb02-da86-40bd-8082-946d39546f3b.png) # Debugging connections First try establishing an unencrypted connection. If something does not work, go to `My Tableau Repository\Logs` and open `jprotocolserver.log`. In there, search for: ``` Connecting to jdbc:IRIS://host:port/DATABASE Connection properties {password=*******, connection security level=*******, port=*******, host=*******, user=_SYSTEM} Connected using driver {com.intersystems.jdbc.IRISDriver} from isolatedDriver. ``` If logged connection properties do not contain the properties you expect, Tableau is not seeing your `IRIS.properties` file. # Verifying that connection is encrypted 1. Close everything except for Tableau, which might communicate with IRIS. 2. Open WireShark and start capturing on the correct network interface. Set Capture Filter to: `host `. ![image](https://user-images.githubusercontent.com/5127457/218099263-ee159182-103d-4ec2-9622-fed1c61b00ba.png) 3. In Tableau, try to connect to IRIS, change the schema, or perform any other action requiring server communication. 4. If everything is properly configured, you should see Packets with Protocol `TLSv1.3`, and following a TCP stream should result in you looking at a ciphertext. ![image](https://user-images.githubusercontent.com/5127457/218099637-534f5251-9df2-411a-9f9c-24f6287d0080.png) # Conclusion Use the best security practices for xDBC connections. # Links - [SuperServer TLS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_superserver) - [WebGateway TLS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_WEBGATEWAY) - [Studio TLS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_studio) - [Java TLS](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GTLS_javacli) - [Java Connection Properties](https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=BJAVA_refapi#BJAVA_refapi_connparms) - [easyRSA](https://github.com/OpenVPN/easy-rsa) This helped me a lot, thanks!! I just want to note that in the section "Securing SuperServer" there is a typo where it says: set sc = ##class(Security.SSLConfig).Create("%SuperServer", .p) should say: set sc = ##class(Security.SSLConfigs).Create("%SuperServer", .p) Because it threw me a "Class Does Not Exists" error. Regards, Mauro Thanks! Fixed. Are you on Mac by any chance? No, Windows as the client and Linux as the server
Announcement
Laurel James (GJS) · Feb 15, 2023

[Webinar] Deltanji demo: source control tailored for InterSystems IRIS

How source control integrates with your system is imperative in ensuring it works seamlessly behind the scenes without interruption. Deltanji source control understands the internal workings of InterSystems IRIS and provides a solution that can seamlessly handle its unique needs, with client integrations for VS Code, Studio, Management Portal, and Management Portal Productions. You can find out more about the benefits of using a source control tailored for InterSystems IRIS at this webinar. This demo will show how Deltanji goes beyond the traditional CI/CD pipeline, automating the project lifecycle from development through to deployment, making it the perfect source control companion for organizations with continually evolving systems. 🗓 Thursday, February 23rd⏰ 4 pm GMT | 5 pm CET | 11 am ET Sign up here > http://bit.ly/40JOaxo
Announcement
Kristina Lauer · Sep 26, 2024

[Video Series] Learn how to use InterSystems Reports Designer

Hi, Community! Does your team need a graphical view of your data? See how to use the InterSystems Reports Designer to create helpful visualizations: In this video series, you will see how to: Use the Designer to create a banded report. Add formulas to a report. Export reports for sharing. Learn how to use the Reports Designer.
Article
Zacchaeus Chok · Sep 22, 2024

Deploying InterSystems WSGI Apps on AWS with Pulumi and Docker Compose

In this post, we'll discuss our project that leverages Pulumi and Docker Compose to automate the deployment of InterSystems WSGI applications on AWS. The focus is on simplicity and efficiency, using pre-built infrastructure templates for provisioning and scaling AWS resources. Overview This repository automates the deployment of a WSGI-based application using AWS infrastructure templates and Pulumi’s Python SDK. The infrastructure is provisioned with Pulumi's declarative approach, while Docker Compose handles application orchestration. The project is structured to minimize the manual effort of setting up complex AWS resources, offering a Python-first way to manage the entire process. Infrastructure Components The deployment pipeline focuses on a few key AWS services: EC2 Instances: The core of the deployment. EC2 instances are provisioned to host the WSGI application using Pulumi. These instances are created with Docker pre-installed, which will later handle the application container. VPC: A dedicated VPC is created to encapsulate all networking aspects of the deployment. Subnets, route tables, and an internet gateway are configured to ensure proper traffic routing. Security Groups: Security groups are configured to allow HTTP (port 80) and SSH (port 22) traffic, alongside custom ports for the InterSystems WSGI application. IAM Roles: Pulumi provisions an IAM role for EC2, granting the necessary permissions for accessing resources like S3 buckets or ECR (if needed). Pulumi + Python Pulumi's declarative style makes infrastructure management highly manageable in Python. Here’s how it works: Define AWS Resources: In __main__.py, Pulumi is used to define the core AWS resources such as EC2 instances, VPCs, and security groups. This is done by interacting with the pulumi_aws module to specify the configuration. Parameter Injection: The project accepts a repository URL (where the application’s Docker Compose file is hosted) as a configuration parameter. Pulumi’s config module pulls this value and integrates it into the deployment. Docker Compose for Application Management: Once the EC2 instance is created, Docker Compose is used to pull the application from the given repository, build it, and bring it up in a containerized environment. This isolates the application runtime and ensures consistency across environments. Test for yourself Our application can be found here: https://openexchange.intersystems.com/package/Irisheimer You can use the InterSystems WSGI project: https://github.com/grongierisc/iris-flask-template
Question
Qais Azam · Oct 16, 2024

Error Executing Stored Procedure in InterSystems Cache using SQL

I am experiencing an issue while executing a stored procedure in InterSystems Cache. Here’s the procedure I createdCREATE PROCEDURE Silk.sp_InsertRecord ( IN RecordDate TIMESTAMP, IN UserName VARCHAR(50), IN RecordType INT, IN RecordID VARCHAR(50), IN CategoryID INT, IN ApprovalDate TIMESTAMP, IN FileSize BIGINT, IN WorkstationName VARCHAR(50))BEGIN INSERT INTO DummyRecords ( RecordKey, FilePath, RecordDate, UserName, RecordType, RecordID, CategoryID, FileSize ) VALUES ( 'd4a4e44b-4b56-4a74-b7f5-e44716fa5a13', '', RecordDate, UserName, RecordType, RecordID, CategoryID, FileSize ); ENDThis creates an SP of Function type. Issue: I encounter the following error upon execution: Namespace: SILKProcess: 29088Error:2024-10-17 12:25:54 [SQLCODE: <-400>:<Fatal error occurred>] [Cache Error: <<UNDEFINED>zspInsertObject+50^Silk.procspInsertObject.1 *%ROWCOUNT>] [Location: <SPFunction>] [%msg: <Unexpected error occurred: <UNDEFINED>%0Ao+3^Silk.procspInsertObject.1 *%mmmsqld(3)>] However, when I execute the stored procedure without passing any parameters and hardcode the values directly, it executes without any errors. Then it usually creates a query type procedure. Additional Information: I am new to Cache and not entirely sure why I'm getting this error. The stored procedure compiles without any syntax errors. This is just an example.. Can someone help me understand why this error is occurring and how I can resolve it? Any guidance on how to properly debug or fix this issue would be greatly appreciated.
Question
Pavan Kumar Rayudu · Oct 15, 2024

Can InterSystems IRIS Data Platform 2019 be Integrated with Snowflake?

Can InterSystems IRIS Data Platform 2019 be Integrated with Snowflake? From InterSystems Do we have any predefined packages or Adapters available to Connect with Snowflake? Can InterSystems be Connected with Snowflake through Web Gateway Management? According to Snowflake documentation (https://docs.snowflake.com/en/user-guide/intro-key-concepts) is seems that you may use ODBC and JDBC, so SQL gateway can be used (SQL Gateway Connections | InterSystems Programming Tools Index | InterSystems IRIS Data Platform 2019.1) There are also native connectors (e.g. Python). embedded python is not available on IRIS 2019.2 you may consider an upgrade to IRIS 2021.2
Announcement
Anastasia Dyubaylo · Jan 10

[Video] Leveraging Automation Tools for Deploying InterSystems IRIS Applications

Hi Community, Enjoy the new video on InterSystems Developers YouTube: ⏯ Leveraging Automation Tools for Deploying InterSystems IRIS Applications @ Global Summit 2024 Automating configuration management, application deployment, and routine tasks reduces errors and saves time. This session highlights typical InterSystems IRIS system configuration and deployment tasks and how open-source tools can automate them. Ansible will be used as the primary example, and we will show you how to mix and match tools to make your InterSystems IRIS application deployments successful. Presenters: 🗣 @Murray.Oldfield, Principal Technology Architect, InterSystems🗣 @Mark.Bolinsky, Chief Technology Architect, InterSystems Watch now and let us know what you think — happy viewing! 👍
Announcement
Anastasia Dyubaylo · Sep 4, 2024

Kick-off Webinar for InterSystems Developer Tools Contest 2024

Hey Community, We're pleased to invite you all to the upcoming kick-off webinar for the InterSystems Developer Tools Contest 2024! During the webinar, you will discover the exciting challenges and opportunities that await IRIS enthusiasts in this contest. We'll discuss the topics we expect from participants and show you how to develop, build, and deploy applications using the InterSystems IRIS data platform. Date & Time: Tuesday, September 10 – 12:30 pm EDT | 6:30 pm CEST Speakers: 🗣 ​​​@Dean.Andrews2971, Head of Developer Relations🗣 ​​​@Evgeny.Shvarov, Senior Manager of Developer and Startup Programs🗣 @Raj.Singh5479, Product Manager ✅ Register for the kick-off today!
Article
Ben Spead · May 21

ISCLauncher - Get immediate access to InterSystems knowledge and support records!

For 15 over years I have been playing with ways to speed up the way I use InterSystems systems and technology via AutoHotkey scripting. As a power keyboard user (I avoid my mouse when possible) I found it very helpful to set up hotkeys to get to my most frequently accessed systems and research utilities as quickly as possible. While I have used this approach for many years, this is the first time that I am introducing my approach and a customer-facing hotkey script to the D.C. and OEx... ISCLauncher is a hotkey program based on AutoHotKey (Windows scripting language) which provides quick access a number of useful InterSystems resources and online systems (Windows OS only). Use it to quickly access the following InterSystems resources: Documentation Search Developer Community Search D.C. A.I. Online Learning WRC Issues iService Issues CCR records ... plus more! To try it out for yourself, use the "Download' button on the ISCLauncher Open Exchange listing, which will pull down a Zip file from which you can extract the contents. Run the ISCLauncher.exe and you will see the following in your Windows SysTray: To pull up the Help screen so you can see all of the things that it can do, once you are running ISCLauncher, press [Ctrl]+[Windows]+[?]: The power of ISCLauncher is that it can turn plain text into a hyperlink. E.g. If you have an ID from a WRC, iService or CCR record in an email, chat or notes, simply highlighting the record ID and using the appropriate hotkey will allow you to just directly to that record. See a demo for a CCR lookup below ([Ctrl]+[Windows]+[c]): To access a record even faster, use ISC Uber-Key ( [Ctrl]+[Windows]+[Space] ) to try to automatically determine the record type and navigate immediately there (credit to @Chad.Severtson for the original ISC Uber-Key code from years ago!). In addition to WRC, iService and CCR records - do quick searches against things like InterSystems Documentation ([Ctrl]+[Windows]+[b] ) or the Developer Community ([Ctrl]+[Windows]+[d]): Make this tool even more powerful by adding your own hotkeys for things that you frequently type or open on your desktop. For some inspiration, here is my personal launcher which I have tuned over the years: Have ideas how to make this more powerful? Add comments below. Also, once this is in GitHub you can feel free to create PRs with your suggestions. So cool 🤩
Announcement
Anastasia Dyubaylo · Feb 6, 2024

[Video] InterSystems Terminal Aliases and How To Have It In Docker Environment

Hey Community, Watch this video to learn how to use terminal aliases for InterSystems IRIS and also how to set it up with your Docker Developer Environment: ⏯ InterSystems Terminal Aliases and How To Have It In Docker Environment Enjoy watching and subscribe to the InterSystems Developers YouTube channel for other informative videos! 👍
Announcement
Bob Kuszewski · Feb 9, 2024

IKO (InterSystems Kubernetes Operator) 3.7 release Announcement

InterSystems Kubernetes Operator (IKO) 3.7 is now Generally Available. IKO 3.7 adds significant new functionality along with numerous bug fixes. Highlights include: When using IKO 3.7 with IRIS 2024.1+, the WebGateway can authenticate to IRIS via mutual TLS. Support for reporting asynchronous mirror members Resource requests can now be applied to IAM pods Improvements to iriscluster resource output Follow the Installation Guide for guidance on how to download, install, and get started with IKO. The complete IKO 3.7 documentation gives you more information about IKO and using it with InterSystems IRIS and InterSystems IRIS for Health. IKO can be downloaded from the WRC download page (search for Kubernetes). The container is available from the InterSystems Container Registry. IKO simplifies working with InterSystems IRIS or InterSystems IRIS for Health in Kubernetes by providing an easy-to-use irisCluster resource definition. See the documentation for a full list of features, including easy sharding, mirroring, and configuration of ECP.
Article
Maria Gladkova · May 15, 2024

Vector search + GenAI + InterSystems technologies with Banksia Global

Hi all! Here I would like to share how we use vector search and GenAI with InterSystems technology. As an example, I'll describe BG-AppealAI project, which our company submitted to the InterSystems Vector Search, GenAI and ML Contest. BG-AppealAI application can write an appeal if you upload an insurance contract and the insurance company’s letter with a refusal to pay medical expenses. Of course, we are aware that at the moment AI has not reached such a level as to create ready-made legal documents. However, it's already possible to create tools to serve as assistants for specialists or ordinary users. Likewise, our application is an AI assistant that answers the question: "Is an appeal possible?" and creates a draft letter of appeal, if possible. Explore our application in action by following this link: https://appealai.cloud.banksia.global/#/welcome We've also created a video showcasing our app: https://www.youtube.com/embed/0p6FvZpzaaA How BG-AppealAI works Insurance contracts and rejection letters vectorization: to be able to better assist with appeals, AI needs a context of the denial. One of the possible ways we can provide a context is by citing relevant parts of insurance contracts. Upon receiving an insurance contract, BG-AppealAI breaks it down into parts, converting each part into a multi-dimensional vector. These vectors are stored in an InterSystems IRIS database, allowing fast and accurate retrieval when needed. Vector Search: when you upload a rejection letter to the app, BG-AppealAI converts it to the vector, this is called the vectorization process. BG-AppealAI then uses IRIS vector search functionality to compare vectors extracted from the rejection letter with vectors extracted from the relevant insurance contract. AI-Powered Appeal Generation: having identified potential context for appeal, BG-AppealAI sends a request to the generative AI service to assess the possibility of drafting an appeal. If it is deemed appropriate, AppealAI sends a new request in order to create a draft letter of appeal. What's under the hood of the BG-AppealAI Traditionally, our application consists of backend and frontend parts, where the frontend is developed on Angular framework and the backend on InterSystems IRIS. The video about our application has already shown the work of the frontend part of the application and a brief overview of the product, here I want to focus on the implementation of Interoperability Production. This is where we can clearly see the application of vector search and generative AI. So, there are the following elements in our system:1) ConversionToVector - process that converts document text into vectors using LangChain, and invokes process GetText and operations SaveVector, SaveDocument for the corresponding actions. 2) GetText - process that parses data from a file into a stream, for further text processing and analysis. Here there is opportunity to work with 2 types of extensions: docx and pdf, as the most common ones for documents. 3) VectorSearch - process that performs a vector search and looks for matches between documents. Also, it is in this business process that methods are called to write promts to the AI and analyze rejection letters. Note, that here we used a language model developed by OpenAI and the LangChain framework. All business processes are implemented using embedded python as it provides easy access to utilization to use LangChain and write promts to OpenAI.4) AppealIn - service that receives the rejection file and sends it for analysis.5) DocumentIn - service that receives the insurance contract file and sends it for vectorization.6) OpenAiOut - operation that makes a request to a generative AI - OpenAI, receives promt, returns a response from GenAI.7) SaveDocument - operation that stores the document file in the database.8) SaveVector - operation that stores vectors in the database.9) SaveAppeal - operation that gets the text of the appeal and stores it in the database. The interaction of all the above elements is well shown by the visual trace. Visual trace of taking an insurance contract, dividing it into vectors, and storing the vectors in a database: Visual trace of receiving a rejection letter, sending requests to OpenAI, and saving the appeal letter if an appeal is possible: This is an example of a rejection letter: This is an example of an appeal written by BG-AppealAI: We hope that our open source project will be useful to this community and help you implement innovative technologies in your projects. Our team would like to thank InterSystems for the opportunity to work with cutting-edge technologies. We're eager to engage with your thoughts and questions in the comments below. Let's continue pushing the boundaries of what's possible with technology together! Stay tuned for more updates and insights from our team. If you enjoyed getting to know BG-AppealAI and its features and would like to support us, please take a moment to vote for our app here https://openexchange.intersystems.com/contest/36. Thank you! Hi Maria, Your video is available on InterSystems Developers YouTube: ⏯️ AppealAIMovie Thank you !! Great overview of a solid approach, thank you!!
Announcement
John McBride · Jul 24, 2024

VSCode extension for IPM (InterSystems Package Manager) Now Available

Overview The extension and source code are now availableAfter having some discussions at Global Summit and using a lot of package managers in my day to day development (npm,nuget,Chocolatey, etc) in addition to recently using the InterSystems Package Manager for some CICD process I'm building using Intersystems IRIS and IRIS 4 Health, I wanted an easy and integrated way to search/view/install packages related to the Intersystems tech stack. I recently built a VSCode extension for IPM repositories that I will be open sourcing and publishing to the marketplace but wanted create this post to get some feedback from the community. Download Information You can download the extension within VSCode or at https://marketplace.visualstudio.com/items?itemName=extensionsbyjohn.ipm-explorer. Just search for ipm.explorer Github respository Click here for the github repository Video Initial Screen Some features in the extension: VSCode setting for defining multiple repositories Activity Bar Icon/Explorer View List of packages in custom view List/Open github repository configured in package Details for package in a custom view Copy ZPM install command for use in IRIS terminal Setup/Settings: When you first start the extension, you will need to configure it. You can do this by accessing the settings.json file and adding something like the following. "ipm.repositories": [ { "name":"Public IPM", "url":"https://pm.community.intersystems.com" }, { "name":"Internal Packages", "url":"https://[insert private repo here]" }, { "name":"Test Packages", "url":"https://[insert private repo here]" } ] Screenshots: Ideas/Future After building this and working with the API, I'd like to propose a couple updates that potentially could be added to the manifest/API for packages to make integrations like this a little easier License field: (This will let the users know if the package license is compatable with their usage) Logo: encoded image for the package. Allow the developer of the package to specify an image Readme: Allow the developer of the package to include a readme markdown file in the package. This can then be displayed in the details section of the extension. Author: Include the author of the package (can be displayed the details view) Verified: Allow for an author to be verified. For example Intersystems could be a verified author Open Source: Click here for the github repository Comments/Suggestions Let me know what you think or if you have suggestions let me know. Would you be interested in using this? Hi John, Your video is available on InterSystems Developers YouTube: ⏯️InterSystems Package Manager VSCode Extension 👍 Is there a VSCode extension or tool to help build module.xml files for IPM?
Announcement
Anastasia Dyubaylo · Nov 26, 2024

Kick-off Webinar for InterSystems "Bringing Ideas to Reality" Contest

Hey Community, We're pleased to invite you all to the upcoming kick-off Webinar for InterSystems "Bringing Ideas to Reality" Contest! During the webinar, our speakers will explore the Community Opportunity Ideas from the InterSystems Ideas Portal, which are the topics of this programming contest. They will show how to develop, build, and deploy applications using the InterSystems IRIS data platform. Date & Time: Monday, December 2 – 10:00 am EST | 4:00 pm CET Speakers: 🗣 ​​​@Dean Andrews, Head of Developer Relations🗣 ​​​@Evgeny Shvarov, Senior Manager of Developer and Startup Programs🗣 @Raj Singh, Product Manager - Developer Experience ✅ Register for the kick-off today! Hi Devs!Please join the kick-off webinar in 15 minutes in Zoom:https://us06web.zoom.us/j/5635395305?pwd=mkfbpaSr5QotWR1JqKbAOm3PYPwwog.1Or enjoy watching the stream via YouTube: https://youtube.com/live/ORBgFlT7juY?feature=share
Announcement
Evgeny Shvarov · Dec 19, 2024

Technological Bonuses Results for the InterSystems "Bringing Ideas to Reality" Contest

Hi Developers! We are happy to present the bonuses page for the applications submitted to the InterSystems "Bringing Ideas to Reality" 2024 Contest! See the results below. Project Vector Search Embedded Python InterSystems Interoperability IRIS BI VSCode Plugin FHIR Tools Docker IPM Online Demo Find a bug Code quality First Article on DC Second Article on DC Video on YouTube YouTube Short First Time Contribution Total Bonus Nominal 3 3 3 3 3 3 2 2 2 2 1 2 1 3 1 3 37 IRIS WHIZ - HL7v2 Browser Extension 2 3 5 ServiceInspection 3 3 - - 6 vault-link 3 2 2 7 SharePoint Online SPO REST API 3 2 3 3 11 tz - ObjectScript Time Zone Conversion Library 3 3 2 2 1 2 3 16 iris-http-calls 3 3 2 2 2 2 1 3 18 ks-fhir-gen 3 3 2 1 9 Database-Size-Monitoring 2 2 2 6 iris-unit-test-dashboard 3 2 3 8 IRIS Global VSCode Editor 3 2 1 3 1 10 iris-HL7v2Gen 3 3 2 2 1 2 13 Doxygenerate 2 2 2 2 1 3 12 docs-intersystems 2 2 Please apply with your comments for new implementations and corrections to be made here in the comments or in Discord. Please accept the in-article links to examples of Doxygenerate's output as fulfilling the "Online Demo" item. Running the app itself isn't at all exciting - it's the output people surely want to explore online. Links (all to documents hosted on georgejames.com) are in these posts: https://community.intersystems.com/post/doxygenerate-new-tool-building-standalone-documentation-your-iris-applications-object-model https://community.intersystems.com/post/producing-pdf-class-documentation-using-doxygenerate https://community.intersystems.com/post/ipm-090-released#comment-277091 I published a short: https://youtu.be/cjbcEN-lBRk, so I claim the youtube short bonus. Thanks! I claim youtube short (https://community.intersystems.com/post/youtube-short-video-about-iris-globals-vscode) and second article (https://community.intersystems.com/post/learn-create-vscode-extensions-iris-global-editor-app) Hi Yuri! This is common video, not YouTube Short Hi, John! Could you please add this link as demo url to your app? I'll give you bonus after that Hi! About video, it must be in "shorts", e.g. this one. I've added bonus for the second article My tz - ObjectScript Time Zone Conversion Library project now supports Interoperability Rules/DTLs. Thanks! @John.Murray Thank you! Demo bonus have been approved Hi! Points were added. Thank you! YouTube video added to Doxygenerate Thank you! Bonus was added Hi, I claim youtube short, now it is a short: https://youtube.com/shorts/Cg_IukFo6HI?si=2TTloaKee0__KAds I just posted Time Zones and Offsets and ObjectScript, Oh My! article on DC. Thanks! Hi Eric! Bonus was added published a short: https://youtu.be/cjbcEN-lBRk, so I claim the youtube short bonus. Thanks! 00 Hi! I've just seen your comment. Bonus added. I have published the first article for the Database Sze Monitoring project. Thank you, Sara! Bonus was added