Clear filter
Article
Vinicius Maranhao Ribeiro de Castro · Apr 2, 2020
In this 3-part series of articles, is shown how you can use IAM to simply add security, according to OAuth 2.0 standards, to a previously unauthenticated service deployed in IRIS.
In the first part, was provided some OAuth 2.0 background together with some IRIS and IAM initial definitions and configurations in order to facilitate the understanding of the whole process of securing your services.
This part will now discuss and show in detail the steps needed to configure IAM to validate the access token present in the incoming request and forward the request to the backend if the validation succeeds.
The last part of this series will discuss and demonstrate the configurations needed to IAM generate an access token (acting as an authorization server) and validate it, together with some important final considerations.
If you want to try IAM, please contact your InterSystems Sales Representative.
Scenario 1: IAM as an access token validator
In this scenario, it will be used an external authorization server that generates an access token in a JWT (JSON Web Token) format. This JWT is signed using the algorithm RS256 together with a private key. In order to verify the JWT signature, the other party (in this case IAM) needs to have the public key, provided by the authorization server.
This JWT generated by the external authorization server also includes, in its body, a claim called “exp” containing the timestamp of when this token expires, and another claim called “iss” containing the address of the authorization server.
Therefore, IAM needs to verify the JWT signature with the authorization server’s public key and the expiration timestamp contained in the “exp” claim inside the JWT before forwarding the request to IRIS.
In order to configure that in IAM, let’s start by adding a plugin called “JWT” to our “SampleIRISService” in IAM. To do so, go to the Services page in IAM and copy the id of the “SampleIRISService”, we are going to use that later.
After that, go to Plugins, click the “New Plugin” button, locate the “JWT” plugin and click Enable.
In the following page, paste the “SampleIRISService” id in the “service_id” field and select the box “exp” in the “config.claims_to_verify” parameter.
Note the value of the parameter “config.key_claim_name” is “iss”. We are going to use that later.
Then, hit the “Create” button.
Done that, go to the “Consumers” section in the left menu and click in our previously created “ClientApp”. Go to the “Credentials” tab and click the button “New JWT Credential”.
In the following page, select the algorithm used to sign the JWT (in this case RS256) and paste the public key in the field “rsa_public_key” (this is the public key provided to you by the authorization server in PEM format).
In the “key” field, you need to insert the contents of the JWT claim that you entered in the field “config.key_claim_name” when adding the JWT plugin. Therefore, in this case, I need to insert the content of the iss claim of my JWT, which, in my case, is the address of the authorization server.
After that, click on “Create” button.
Hint: For debugging purposes, there is an online tool to decode JWT so you can check the claims and its values and verify its signature by pasting the public key. Here is the link of this online tool: https://jwt.io/#debugger
Now, with the JWT plugin added, it is no longer possible to send the request with no authentication. As you can see below, a simple GET request, with no authentication, to the URL
http://iamhost:8000/event/1
return an unauthorized message together with the status code “401 Unauthorized”.
In order to get the results from IRIS, we need to add the JWT to the request.
Therefore, first we need to request the JWT to the authorization server. The custom authorization server that we are using here, returns a JWT if a POST request is made together with some key-value pairs in the body, including user and client information, to the following URL:
https://authorizationserver:5001/auth
Here is what this request and its response looks like:
Then, you can add the JWT obtained from the response below in the authorization header as a Bearer Token and send a GET request to the same URL previously used:
http://iamhost:8000/event/1
Or you can also add it as a querystring parameter, with the querystring key being the value specified in the field “config.uri_param_names” when adding the JWT plugin which, in this case, is “jwt”:
Finally, there is also the option to include JWT in the request as a cookie, if any name is entered in the field “config.cookie_names”.
Continue reading to the third and last part of this series to understand the configurations needed to IAM generate an access token and validate it, together with some important final considerations.
Article
Vinicius Maranhao Ribeiro de Castro · Apr 2, 2020
In this 3-part series of articles, is shown how you can use IAM to simply add security, according to OAuth 2.0 standards, to a previously unauthenticated service deployed in IRIS.
In the first part, was provided some OAuth 2.0 background together with some IRIS and IAM initial definitions and configurations in order to facilitate the understanding of the whole process of securing your services.
The second part discussed and showed in detail the steps needed to configure IAM to validate the access token present in the incoming request and forward the request to the backend if the validation succeeds.
This last part of the series will discuss and demonstrate the configurations needed to IAM generate an access token (acting as an authorization server) and validate it, together with some important final considerations.
If you want to try IAM, please contact your InterSystems Sales Representative.
Scenario 2: IAM as an authorization server and access token validator
In this scenario, differently from the first scenario, we are going to use a plugin called “OAuth 2.0 Authentication”.
In order to use IAM as the authorization server in this Resource Owner Password Credentials flow, the username and password must be authenticated by the client application. The request to get the access token from IAM should be made only if the authentication is successful.
Let’s start by adding it to our “SampleIRISService”. As you can see in the screenshot below, we have some different fields to fill up in order to configure this plugin.
First of all, we are going to paste the id of our “SampleIRISService” into the field “service_id” to enable this plugin to our service.
In the field “config.auth_header_name” we are going to specify the header name that will carry the authorization token. In this case, I’ll leave the default value of “authorization”.
The “OAuth 2.0 Authentication” plugin supports the Authorization Code Grant, Client Credentials, Implicit Grant or Resource Owner Password Credentials Grant OAuth 2.0 flows. As we are using the Resource Owner Password Credentials flow in this article, we will check the box “config.enable_password_grant”.
In the “config.provision_key” field, enter any string to be used as the provision key. This value will be used to request an access token to IAM.
In this case, I left all the other fields with the default value. You can check the full reference for each field in the plugin documentation available here.
Here is how the plugin configuration looks like at the end:
Once the plugin is created, we need to create the credentials to our “ClientApp” consumer.
To do so, go to “Consumers” on the left menu and click on “ClientApp”. Next, click on “Credentials” tab and then on “New OAuth 2.0 Application” button.
On the following page, enter any name to identify your application on the field “name”, define a client id and a client secret, respectively, on the fields “client_id” and “client_secret” and lastly, enter the URL in your application where users will be sent after authorization on the field “redirect_uri”. Then, click on “Create”.
Now, you are ready to send requests.
The first request that we need to make is to obtain the access token from IAM. The “OAuth 2.0 Authentication” plugin automatically create an endpoint appending the path “/oauth2/token” to the already created route.
Note: Make sure that you use HTTPS protocol and IAM’s proxy port listening to TLS/SSL requests (the default port is 8443). This is an OAuth 2.0 requirement.
Therefore, in this case, we would need to make a POST request to the URL:
https://iamhost:8443/event/oauth2/token
In the request body, you should include the following JSON:
{
"client_id": "clientid",
"client_secret": "clientsecret",
"grant_type": "password",
"provision_key": "provisionkey",
"authenticated_userid": "1"
}
As you can see, this JSON contains values defined both during “OAuth 2.0 Authentication” plugin creation, such as “grant_type” and “provision_key”, and during Consumer’s credentials creation, such as “client_id” and “client_secret”.
The parameter “authenticated_userid” should also be added by the client application when the username and password provided are successfully authenticated. Its value should be used to uniquely identify the authenticated user.
The request and its respective response should look like this:
With that, we can now make a request to get the event data including the “access_token” value from the response above as a “Bearer Token” in a GET request to the URL
https://iamhost:8443/event/1
If your access token expires, you can generate a new access token using the refresh token that you received together with the expired access token by making a POST request to the same endpoint used to get an access token, with a slightly different body:
{
"client_id": "clientid",
"client_secret": "clientsecret",
"grant_type": "refresh_token",
"refresh_token": "E50m6Yd9xWy6lybgo3DOvu5ktZTjzkwF"
}
The request and its respective response should look like this:
One interesting feature of the “OAuth 2.0 Authentication” plugin is the ability to view and invalidate access tokens.
To list the tokens, send a GET request to the following endpoint of IAM’s Admin API:
https://iamhost:8444/{workspace_name}/oauth2_tokens
where {workspace_name} is the name of the IAM workspace used. Make sure to enter the necessary credentials to call IAM’s Admin API in case if you have enabled RBAC.
Note that “credential_id” is the id of the OAuth application that we created inside the ClientApp consumer (in this case is called SampleApp) and “service_id” is the id of our “SampleIRISService” which this plugin is applied to.
To invalidate a token, you can send a DELETE request to the following endpoint
https://iamhost:8444/Sample/oauth2_tokens/{token_id}
where {token_id} is the id of the token to be invalidated.
If we try to use the invalidated token, we get a message saying that the token is invalid or expired if we send a GET request containing this invalidated token as a Bearer Token to the URL:
https://iamhost:8443/event/1
Final Considerations
In this article was demonstrated how you can add OAuth 2.0 authentication in IAM to an unauthenticated service deployed in IRIS. You should keep in mind that the service itself will continue to be unauthenticated in IRIS. Therefore, if anyone calls the IRIS service endpoint directly, bypassing the IAM layer, will be able to see the information without any authentication. For that reason, it is important to have security rules in a network level to prevent unwanted requests to bypass IAM layer.
You can learn more about IAM here.
If you want to try IAM, please contact your InterSystems Sales Representative. Great article, Vinicius! It surely helps to get an idea of how OAuth works on IAM.
I have been trying to setup the OAuth plugin to implict grant, but every time I send a post message, I get the "invalid grant type" even sending the grant type as implicit. Do we have some material or documentation to study on how should we do it?
Article
Evgeny Shvarov · May 25, 2020
Hi ObjectScript developers!
InterSystems ObjectScript is perhaps the best language on the planet to deal with globals - and it is an interpretable language.
Yes, it has a compiler. But even the compiler can compile some lines in ObjectScript which will then fire as bugs during the runtime.
There are some technics on how to avoid that such as unit testing, coding guidelines and your coding experience, of course ;)
Here I want to present to you the yet another approach to how you can reduce the number of errors in your ObjectScript runtime and enforce coding guidelines - it's an ObjectScript Quality tool developed by Lite Solutions, InterSystems solution partner.
See the details below.
We requested Lite Solutions to set up the analysis for the following 17 rules, which we find the most common "misses" of the compiler and which could be considered as possible bugs and "code smells" - violations of coding guidelines and deprecated functions.
You can check how this rules work against the ObjectScript class (probably the worst ObjectScript class ever), where each method represents a certain problem the tool recognizes. And here is the analysis of this artificially introduced class.
Here you can check other projects which already being analyzed by ObjectScriptQ tool.
How can you add the ObjectScript analysis to your project?
This is very easy. Lite Solutions provides free-of-charge analysis for all the Open Source Github repositories with ObjectScript. Introduce this workflow.yml file in
.github/workflows
folder of your public GitHub repository. After that every push to the repository will trigger a new analysis and you will get a newly made report on investigated issues in the repository.
This tool can work with private repositories too - you can examine the possible options and pricing plans on ObjectScriptQ site.
Collaboration and Evolution
If you find some false-positives or if you want to add a new rule to make ObjectScript better submit the issue to the Lite Solutions repository or discuss here on Developer Community, e.g. right in this post.
Happy coding and have your ObjectScript cleaner and healthier!
Announcement
Anastasia Dyubaylo · Mar 13, 2020
Hi Community!
New "Coding Talk" video is already on InterSystems Developers YouTube:
⏯ How to Enable Docker and VSCode to Your InterSystems IRIS Solution
In this video, presented by @Evgeny Shvarov, you will learn how to add InterSystems IRIS Docker and VSCode environment to your current repository with InterSystems ObjectScript using iris-docker-dev-kit project on Open Excahnge.
➡️ iris-docker-dev-kit – a set of files to facilitate development with InterSystems IRIS using Docker and VSCode. It gives you the option to develop your InterSystems ObjectScript solution in IRIS Community Edition or IRIS Community Edition for Health on your laptop using VSCode ObjectScript extension.
And...
You're very welcome to watch all Coding Talks in a dedicated "Coding Talks" playlist on our InterSystems Developers YouTube Channel.
Stay tuned! 👍🏼
Announcement
Anastasia Dyubaylo · Apr 20, 2020
Hi Community,
New "Coding Talk" video was specially recorded by @Evgeny.Shvarov for the second IRIS Programming Contest:
⏯ Creating CRUD REST API for InterSystems IRIS in 5 minutes
In this video, presented by @Evgeny Shvarov, you'll learn how to create your own basic CRUD API for InterSystems IRIS using the GitHub template and expose it with Open API spec.
➡️ Check out the app used in this demo: objectscript-rest-docker-template
And...
You're very welcome to join the second IRIS Programming Contest! Show your best coding skills and win cool prizes!
Stay tuned! 👍🏼
Announcement
Thomas Carroll · Feb 14, 2019
Breaking news!
InterSystems just announced the availability of the InterSystems IRIS for Health™ Data Platform across the Amazon Web Services, Google Cloud, and Microsoft Azure marketplaces.
With access to InterSystems unified data platform on all three major cloud providers, developers and customers have flexibility to rapidly build and scale the digital applications driving the future of care on the platform of their choice.
To learn more please follow this link.
Announcement
Anastasia Dyubaylo · May 13, 2019
Hey Community!
The latest webinar, recorded by InterSystems Sales Engineers @Sergey Lukyanchikov and @Eduard Lebedyuk, is already on InterSystems Developers YouTube! Please welcome:
"Machine Learning Toolkit (Python, ObjectScript, Interoperability, Analytics) for InterSystems IRIS"
Big applause to these speakers, thank you guys!
Want more?
Please find all the details in this post.
Enjoy watching the webinar! Please don't forget to check out additional materials for this webinar:Python Gateway Part I: IntroductionPython Gateway Part II: InstallationIn addition, try out the apps on Open Exchange Marketplace:PythonGateway AppRGateway AppStay tuned! Great webinar, machines learning are high in the market, knowledge is always good.
Announcement
Evgeny Shvarov · Sep 27, 2019
Hi Developers!
Just want to share the information with you that we support TechCrunch Disrupt Hackathon 2019 this year!
It will take place from 2-4 of October in San Francisco, CA.
We introduced InterSystems special prizes for participants which solutions will use InterSystems IRIS $4,000 and InterSystems IRIS for Health 4,000.
Learn more here.
If you happen to participate we wish you luck and hope you'll leverage InterSystems IRIS data platform functionality to win Disrupt Hackathon 2019!
Announcement
Anastasia Dyubaylo · Feb 5, 2021
Hi Developers,
Please welcome the new video on InterSystems Developers YouTube:
⏯ Building REST API with InterSystems IRIS Docker Container in 5 Minutes
See the process of creating a new REST API back end for an application using development tools like GitHub, Docker, VS Code, and the ZPM package manager in InterSystems IRIS data platform. Learn about using OpenAPI specifications for ground-up and API-first development approaches.
🗣 Presenter: @Sergei.Shutov, Principal Applications Developer, InterSystems
Useful links:
ObjectScript REST Docker template
OpenAPI Examples
AppS.REST framework
Enjoy watching this video! 👍🏼
Article
Tomohiro Iwamoto · Dec 24, 2020
## About this article:
In InterSystems IRIS, the default form of access to the management portal is HTTP, which means that if the client is in the office and the server is in the cloud, many clients probably desire to encrypt their traffic in some way.
Thus, we would like to show you some ways to encrypt your traffic to and from the IRIS management portal (or various REST services) running on AWS.
> This article uses the IRIS built-in apache server for access. It should not be used for benchmarking purposes or as a method of access from production environments applications.
> It is designed to encrypt access for development, operation verification, and quick management and with a small number of people.
The best solution would be to prepare a domain name and an SSL server certificate issued by a central certification authority. However, in the case of the aforementioned applications, it would not be easy in terms of cost.
Therefore, the following certificates are assumed to be used:
- Self-signed (a Japanese so-called “ore ore” certificate)
- A certificate issued by a self-built certification authority (a Japanese so-called “ore ore” Certification Authority)
We additionally assume the following running environment:
| The PC environment ||
| ------------- | -------------:|
| O/S | Windows 10 |
| Browser | Chrome/FireFox/Edge |
| IDE | vscode+ObjectScript Extension |
| Unused port number in the local PC | 8888 |
| The secret key of the key pair used during the creation of the EC2 Instance | aws-secret.pem |
| AWS Environment ||
| ------------- | -------------:|
| IRIS host's public hostname | ec2-54-250-169-xxx.ap-northeast-1.compute.amazonaws.com |
| IRIS webserver port number | 52773 |
| O/S | Ubuntu 18.04LTS |
| O/S User name | ubuntu |
* * *
## Direct Access
### 1) Using Port Forwarding
This is the easiest way.
In the security group, the port for SSH (22) must be allowed inbound from the Internet.
C:\Users\xxxx>ssh -i aws-secret.pem -L 8888:localhost:52773 ubuntu@ec2-54-250-169-xxx.ap-northeast-1.compute.amazonaws.com
While running this command from the PC, you can access the IRIS host through the link below.
http://localhost:8888/csp/sys/%25CSP.Portal.Home.zen
Since you are logged in with ssh, you can use it for terminal operations such as those performed during the development process (starting and stopping IRIS, starting an IRIS session, etc.).
This method is also useful for the super-server port (51773), so it can encrypt the communication with Studio.
Note: For Windows, if you do not place the private key for ssh (aws-secret.pem) in %USERPROFILE%\, you will get an error.
C:\Users\xxxx>dir %USERPROFILE%\aws-secret.pem
2020/07/14 17:10 1,692 aws-secret.pem
1 File(s) 1,692 bytes
0 Dir(s) 100,576,694,272 bytes free
The vscode settings (settings.json) should look like the one below.
{
"objectscript.conn": {
"host": "localhost",
"https": false,
"port": 8888,
"ns": "USER",
"username": "xxx",
"password": "xxx",
"active": true
}
}
### 2) Using a Reverse Proxy with SSL configuration
In this case, you deploy a self-certified apache or Nginx with a reverse proxy configuration and access the IRIS host through it.
In the security group, a port for HTTPS (443) must be allowed inbound from the Internet.
A script to configure apache and Nginx is available in the [link](https://github.com/IRISMeister/apache-ssl.git). This will allow you to access the IRIS host from your browser through the link below.
https://ec2-54-250-169-xxx.ap-northeast-1.compute.amazonaws.com/csp/sys/%25CSP.Portal.Home.zen
The vscode settings (settings.json) should look like the following:
{
"objectscript.conn": {
"host": "ec2-54-250-169-xxx.ap-northeast-1.compute.amazonaws.com",
"https": true,
"port": 443,
"ns": "USER",
"username": "xxx",
"password": "xxx",
"active": true
}
}
* * *
## Via Bastion host
Suppose you are uncomfortable about letting user data, EC2 instance of SSH (including code) or HTTPS ports be published on the Internet, despite being for verification purposes. In that case, you can use a Bastion Host.
The security group must allow inbound TCP traffic between the Bastion Host and the IRIS host.
It is assumed that the execution environment is as follow:
| AWS Environment ||
| ------------- | -------------:|
| IRIS host's public hostname | none |
| Internal IP address of the IRIS host | 10.0.1.81 |
| Public hostname of the Bastion host | ec2-54-250-169-yyy.ap-northeast-1.compute.amazonaws.com |
### 1) Using Port Forwarding
In the security group, the port for SSH (22) must be allowed inbound to the Internet.
The following commands are executed against the Bastion host:
C:\Users\xxxx>ssh -i aws-secret.pem -L 8888:10.0.1.81:52773 ubuntu@ec2-54-250-169-yyy.ap-northeast-1.compute.amazonaws.com
Ditto.
### 2) Using a Reverse Proxy with SSL configuration
In the security group, the HTTPS port (443) must be allowed inbound to the Internet.
Do the same task (deploy apache/Nginx) on the Bastion host.
Change the [destination URL](https://github.com/IRISMeister/apache-ssl/blob/master/apache-conf/other/iris.conf) to the internal IP address of the IRIS host: 10.0.1.81.
ProxyRequests Off
ProxyPass / http://10.0.1.81:52773/
ProxyPassReverse / http://10.0.1.81:52773/
Ditto. (Except that now using the bastion hostname as URL)
* * *
## Via AWS/ALB
It is not something people typically do, but you can apply a self-certification to AWS/ALB. In this case, the ALB will be SSL-terminated, saving you the trouble of preparing a separate SSL-enabled apache.
Since creating an ALB requires at least two AZs, I have used mirrored DMs created by ICM (InterSystems Cloud Manager).
(For more information about ICM, see [How to Configure an IRIS Cluster with ICM](https://jp.community.intersystems.com/post/icm%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6iris%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%83%BC%E3%82%92%E6%A7%8B%E6%88%90%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95))
default.json (excerpt)
{
"Zone": "ap-northeast-1a,ap-northeast-1c",
"Mirror": "true",
}
definitions.json
[
{
"Role": "DM",
"Count": "2",
"MirrorMap": "primary,backup",
"ZoneMap": "0,1"
}
]

Use the certificate files you created in [setup.sh](https://github.com/IRISMeister/apache-ssl/blob/master/setup.sh).
Import these files to ACM (AWS Certificate Manager).
Certificate: contents of the server.crt
Certificate of the Private key: contents of the server.key
Certificate Chain: contents of the inca.pem
Tip) If you have access to awscli, uncomment the last line of [setup.sh](https://github.com/IRISMeister/apache-ssl/blob/master/setup.sh), then it will be registered automatically.
Create a new ALB with the following settings:
Step 1: Configure Load Balancer
Name: anything
Scheme: For Internet
IP address type: ipv4
Listeners: https (port: 443)
Availability Zones: ap-northeast-1a,ap-northeast-1c
Step 2: Configuration of Security Settings
Selecting a default certificate: Selecting a certificate from ACM
Certificate Name: (Select the certificate you have just imported into ACM)
Step 3: Configure Security Groups
Security group settings: Create a new security group →that Allows only HTTPS (port:443).
Step 4: Configure Routing
Target group: New target group
Name: anything
Target Type: Instance
Protocol: HTTP
Port: 52773
Health Checks
Protocol: http
Path: /csp/bin/Mirror_status.cxw
Health Check Advanced Settings
Port: Overwrite →52773
Step 5: Register Targets
"Add to registered" the EC2 Instance you've just provisioned.
After the ALB status become active, you can use HTTPS with DNS name of the ALB.
> https://[ALB DNS Name]/csp/sys/exp/%25CSP.UI.Portal.SQL.Home.zen
Question
Eduard Lebedyuk · Jan 24, 2022
I'm using this Dockerfile to build .Net Gateway with my PEX BS. It works fine. If I change the image reference here to store/intersystems/iris-community:2021.2.0.617.0 in line 8 (so update from 2020.2 to 2021.2) it fails to build with:
KafkaConsumer.cs(4,20): error CS0234: The type or namespace name 'EnsLib' does not exist in the namespace 'InterSystems' (are you missing an assembly reference?) [/source/KafkaConsumer.csproj]
KafkaConsumer.cs(9,34): error CS0246: The type or namespace name 'BusinessService' could not be found (are you missing a using directive or an assembly reference?) [/source/KafkaConsumer.csproj]
On this line:
RUN dotnet publish -c release -o /app
Any idea why this might happen? Add to csproj
<PackageReference Include="IRISUtilsCore21" Version="1.0.0" />
Announcement
Jiahao Song · Oct 7, 2021
Hello All,
InterSystems Certification has redesigned their IRIS Integration certification exam, and we again need input from our community to help validate the topics. Here's your chance to have your say in the knowledge, skills, and abilities that a certified InterSystems IRIS Integration Specialist should possess. And, yes, we'd like to hear from you Ensemble users as well!
Here's the exam title and the definition:
InterSystems IRIS Integration Specialist
An IT professional who:
designs and builds integrations for various industries, and
manages and configures productions using InterSystems IRIS interoperability tools.
So, how can you help? If you have 30-45 minutes to fill out a task survey, you can help us rate each exam topic based on your experience.
Interested? Please contact the Certification Team at certification@intersystems.com.
Thank you!Jiahao Song, Certification Exam Developer, InterSystems
Announcement
Jacquie Clermont · Jun 16, 2022
Hi Community:
I'm flying out to Seattle tomorrow to set up. Can't wait to see the city again; it's really beautiful.
We just finalized the conference guide, which is being printed now. I am attaching a PDF.
Announcement
Anastasia Dyubaylo · Aug 15, 2022
Hello, Members of the Community!
We're so proud to announce that our InterSystems Developer Community has reached a couple of HUGE milestones:
📝 10,000 published posts
👥 11,000 registered members
👁 5,000,000 reads (it's five million!)
We'd like to congratulate you, our dear members, and us (admins, content managers, and moderators) on reaching 11K members, 10K posts, and 5M 🍋🍋🍋🍋🍋 views! We are so proud to be part of this success, that has been created solely by and thanks to you!
We'd like to thank each and every one of you for being part of our group of like-minded people! Thank you for asking questions and starting conversations! For sharing your knowledge and your successes! For giving us suggestions and making us think and thus become better and more useful to you! You're keeping this Community alive and thriving! We are very glad to have you with us! ❤️
And to make this occasion even more festive...
The Developer Community Discord channel reached 500 members! 🎉 Still have a lot of work in front of us in this direction, but we're up to the challenge. And we're hoping you will join us there as well to get even more useful info and ideas. Join here >>
Thanks again! And let's grow together! Wow! It's awesome! Great to see that the Community is growing! Congratulations on such an amazing set of milestones!! Great work everyone :)
I do have a question about the Discord channel ... wouldn't Q&A on the Discord channel dilute content on the D.C.? Or is the Discord channel for a different purpose than asking questions and sharing knowledge about InterSystems products? I see discord as an additional way to get in touch with the community. And there is possible to be online and get answers a bit faster. @Dmitry.Maslennikov - does the knowledge that is captured in Discord make its way back into the D.C.? If not then I think the rest of our users are missing out (and joining Discord shouldn't be a requirement for all D.C. members) Congrats! 👏🏽🥳 🎉 Congrats! I am proud to be part of this history. I love the Dev Community and how we all help each other learn more and more! It's great to see large numbers of Developers joining the Community. Here's to you and your success in building amazing solutions that have great impact in the world! Hi @Benjamin.Spead! Discord gives the pleasure of instant conversation and audio/video calls. It can save hours of time for developers, helps to learn faster and gives extra experience and knowledge.
So, yes, Discord is not a requirement and it doesn’t ideally suite as a knowledge base but it shows itself as a helpful tool for the developer community as a perfect tool for communication. Congratulations, Great milestones!! Nice work everyone :) Congratulation... next challenge... 15,000 members and 10,000,000 views 🥳🥳🥳🥳🥳 accepted 😏😏😏 Thanks for the clarification! So Discord is more for synchronous communication while the D.C. is Async and long-term knowledge repository? If so, please be encouraging people to share their answers on the D.C. if they find them on Discord via real time conversations :) Congratulations! The Developer Community is a invaluable tool for InterSystems customers.
Announcement
Anastasia Dyubaylo · Jul 20, 2022
Hi Community!
We are proud to announce that InterSystems will be hosting the Women's Health - FemTech: Much More than A Niche Market!
⏱ Time: July 28, 6:00 PM – 7:00 PM EDT📍 Location: Online event
This event is organized by HealthTech Build whose mission is to create opportunities for medical providers, biotech digital innovators, health data scientists, digital therapeutics developers, and software engineers to work towards common goals in disruptively productive ways. For this event, the goal will be to exchange ideas and address unmet women's health needs in new ways.
The highlight of the event will be a HealthTech Build panel with:
Janine Kopp, Investor & Head of Venture Studio, Takeda Digital Ventures
Uros Kuzmanovic, CEO, Biosens8
Mary Beth Cicero, CEO, 3Daughters
Thom Busby, Senior Vice President, Outcome Capital
Don't miss out on this excellent opportunity to discover challenges and discuss new solutions in a great company of like-minded peers!
>> REGISTER HERE <<