skills/best-practices-for-creating/SKILL.md
# Best Practices for Creating Productions Development This topic is a general overview that prepares team members to work on production projects. It outlines development tasks and identifies sources of information about InterSystems IRIS® data platform and about enterprise inte gration. The information pertains to all types of production projects. ### 1.1 Project Goals The goal of any production development project is to connect two or more systems. A production is a specialized package of s
npx skillsauth add sorodriguezz/skills-objectscript skills/best-practices-for-creatingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Development
This topic is a general overview that prepares team members to work on production projects. It outlines development tasks and identifies sources of information about InterSystems IRIS® data platform and about enterprise inte gration. The information pertains to all types of production projects.
The goal of any production development project is to connect two or more systems. A production is a specialized package of software and documentation that solves a specific inte gration problem for an enterprise customer. For an overview, see Introducing Interoperability Productions.
This section describes InterSystems IRIS in terms of the software elements that application developers must create and configure in order to deli ver a solution. Project Delivery summarizes the sequence and outcome of an InterSystems IRIS development project.
The InterSystems IRIS product architecture supports various styles of delivery to the enterprise:
A production might comprise the entire integration solution for an enterprise, or the production can fit into e xisting solutions—or partial solutions—that are already in place at the enterprise.
A production can replace, upgrade, or add new features to a legacy system as needed, without requiring any part of the legacy system to be removed or changed.
InterSystems IRIS supports incremental development projects, so a development team can choose to advance the boundary between old and new systems as rapidly or as slowly as the enterprise requires.
Many InterSystems IRIS development projects follow a phase sequence similar to this one:
Best Practices for Production Development
Order
Phase
Goal
Focus
Specification
Specify the requirements for the production.
What must the production be able to do?
Design
Coding
Test
Design the production software.
How must the elements interact?
Build the production software.
Are additional elements needed?
Test the production software.
Does the production satisfy the requirements that you specified?
Deployment
Install the software in its target location.
Are you prepared to test, design, create, and rework as needed?
Release
Deliver software and project artifacts.
What will be useful to the system administration team?
It is a fundamental best practice to read the InterSystems IRIS documentation. Your best starting points are the following items. Each provides further cross-references:
Introducing Interoperability Productions introduces the terminology and basic concepts.
Developing Productions describes the development tasks.
Configuring Productions describes how to perform the configuration tasks related to creating a production.
Design Model for a Routing Production and Converting Interfaces to Production Elements apply to deploying interface routing solutions.
It is also important to understand the platform features of InterSystems IRIS that support productions. A useful starting point is the Orientation Guide for Server-Side Programming.
Helpful background materials include the following:
Defining and Using Classes
Using ObjectScript
Using the InterSystems SQL Gateway
Creating Web Services and Web Clients
Other useful development guides include:
Using InterSystems SQL
Using InterSystems IRIS Multidimensional Storage (Globals)
High Availability Guide
Language reference materials include:
For information about system utilities and security, consult the following documents:
System Administration Guide
About InterSystems Security
Documentation
This topic describes a design model that InterSystems customers have used successfully to build interface routing solutions. As such, it can be thought of as a collection of best practices for developing a routing production.
This topic describes only one approach. Other implementation strategies can be successful as well. Each organization has its own standards for writing code and conducting programming projects. This topic simply describes those aspects of a routing production that are unique to InterSystems IRIS® and that benefit from a carefully structured approach.
In general, the key to a good design is clarity and simplicity. Simplicity does not mean a small number of parts. Simplicity means that each part within the model has a clear function and is intuitively easy to find.
A production consists of configur ation items. There are three types of configuration item:
Business services accept incoming messages.
Business operations send outgoing messages.
Business processes direct all the work in between. There are some specialized types of business process:
A routing process routes and transforms messages by invoking these key components of a routing production:
–
–
Routing rules direct messages to their destinations based on message contents.
Schema categories provide a means to validate and access message contents.
– Data transformations apply changes to prepare messages for their destinations.
A sequence manager ensures that related messages arrive at their targets with the proper sequence and timing.
The following figure e xpands the diagram of a routing process to show how it uses routing rules to direct the flo w of information through the interface. The following figure includes details about the routing rules and data transformations that are only implied by the dotted circle in the diagram above.
A routing process has a routing rule set associated with it. Depending on how the rule set is defined, and depending on the type of message that arrives from the source application, the rule set identifies which of its rules should e xecute. More than one rule can execute, in sequence, but for simplicity the following figure sho ws the case where the rule set chooses only one rule. From this point, as shown, a rule can either delete the message or it can send the message to a destination within InterSystems IRIS. If this destination is a business operation, the message then leaves the production on its way to the target application.
Inside InterSystemsIRISOutsideInterSystemsIRISTargetTargetRoutingProc...BusinessServi...AdapterBusinessOpe...AdapterBusinessOpe...AdapterSourceRoutingRules...
Application Specification
Ideally, an application provides an application specification document, or implementation guide, that e xplains which types of messages the application can send (or receive), and which message segments and pieces of each segment the application sends (or expects) for these events.
A formal document of this kind is extremely detailed, and extremely useful. If a specification document is a vailable, the administrator for the application can show it to you, and can explain to you which of the many possible messages are actually in use in the enterprise.
Even if there is no application specification document, there is usually some informal documentation. Ask the application administrator to see any notes that are available.
As an alternative to documentation, or to validate that the existing documentation is correct, you can examine the messages themselves to determine which types the application sends or expects to receive. Ask the application administrator to provide you with a sampling of the message data, saved in files.
DataTransf...DataTransf...sendsendsendsendxdeleteInsideInterSystemsIRISOutsideInterSystemsIRISBusinessOperati...AdapterBusinessOpe...AdapterBusinessOpe...AdapterBusinessOperati...AdapterRuleRoutingProce...RoutingProce...DataTransf...DataTransf...BusinessOpe...AdapterBusinessOperati...AdapterRuleRoutingRuleS...RoutingRuleS...
Background information that supports these tasks can be found in these topics:
Creating Custom Schema Categories
Controlling Message Validation
Choosing Schema Categories
It is helpful to maintain a spreadsheet that organizes your information system, application by application. As a general guideline, you should provide a row for each application that provides an incoming or outgoing data feed. In each row, the following columns are useful:
Feed—An interface engine or server often feeds messages from several applications into the routing production. When this is the case, note the engine or server name here.
y issues Application—Briefly identify a specific application, its role in your system, and the person to contact about an or problems with this application. Ideally, this description makes sense to members of your organization who do not use InterSystems IRIS, but who are generally familiar with how the system works.
Name—A unique 3– to 6–character name for this application.
Type—The protocol that the application uses for external communications.
Connection—Connection details, such as an IP address and port number.
Sends—The message structures that this application contributes to the information system.
Consider the incoming message structure after it enters the information system. Does it need to be routed or transformed differently depending on the destination system or other factors? If so, list it multiple times, with a note regarding the differences. This way, your spreadsheet can serve as a checklist while you create the necessary routing rules, data transformations, and custom schemas for each case.
Receives—The message structures that this application consumes from the information system.
ACKs—Acknowledgment details. Are ACK and NACK messages expected? Is there a separate interface for sending and receiving them? Should the production generate the ACKs and NACKs, or will the receiving application do so?
When you begin the project, your initial spreadsheet does not need to describe every application in the information system. You can add to the spreadsheet as you deploy each new interface.
This topic outlines an effective way to keep interface designs modular so that your production remains easy to understand, scale, and maintain at each stage of its development:
One business service can receive all of the message structures for the same application. This is usually the appropriate design. When you set up a business service for this purpose you generally intend for it to stay connected to its application system all the time.
Interface Design
There might be aspects of the configuration that require you to pro vide additional business services connected to the same application. For example, if the source application is already configured to send messages to tw o different TCP/IP ports, you could set up one business service to receive all the messages from one port, and another business service for the other port. This is generally consistent with the model of one business service per application, since there is one business service per communication source.
Alternatively, when hundreds of users of the same clinical application are sending data into the enterprise, it can be useful to route all of these messages into InterSystems IRIS via one business service that may or may not stay permanently connected to any single instance of the application.
Provide one routing process for each business service. The routing process can route messages based on the contents of the message itself, or information stored in InterSystems IRIS. If the routing depends on the contents of other messages, or requires invocation of external applications to determine the routing, the routing process should be a BPL business process that calls out to other classes. However, in most cases a routing process based on the built-in routing rule engine is sufficient.
Provide one business operation for each application that receives messages from the production. This is an application that has at least one entry in the Receives column of the production spreadsheet.
One business operation can send all the different message structures for the same application. This is usually the appropriate design. When you set up a business operation for this purpose you generally intend for it to stay connected to its application system all the time. However, as for business services, there might be variations on this model.
The guiding principle is to keep your design modular. That is, develop one interface at a time and use one routing process for each interface. This contrasts with a model in which a single large routing process serves as the routing engine for all interfaces. There are a number of reasons why many routing processes are better than one:
Each routing rule set is simpler and easier to maintain because it only covers the cases required by one interface. It is easier to share and reuse work that is self-contained and solves a simple set of problems.
Interfaces become easy to develop, replace, and maintain individually. If the enterprise must remove or upgrade a particular application, only those routing processes that deal with that application need to be touched. If an interface goes down, only that interface needs to be disabled, diagnosed, repaired, and retested before you can bring it back up.
This is much cleaner than requiring you to retest and validate all of the rules in one large routing process every time you need to add, remove, or repair one interface. These considerations become especially important as some of your interfaces go live, while others are still in development. Each addition to a routing process that is already in production might require you to retest and validate hundreds of existing rules. The following figure sho ws a routing production with multiple interfaces:
Each configuration item in the production has a specific role to play
. Keep each item to its role:
Keep business services and business operations simple. In general, it is not necessary to write your own code for business services or business operations. Choose the built-in classes that InterSystems IRIS provides. This choice gives you the correct adapters automatically. Configure these classes using Management Portal settings.
Place all complex activities under control of a routing process. If an interface is simple, its routing processes need not be complex, but if complexity exists, it belongs in a routing process, not in a business service or business operation. To accomplish tasks, a routing process can chain to other routing processes, or it can invoke business rules, routing rules, data transformations, business processes, or custom code.
This topic explains the importance of naming conventions and provides examples.
Typically you will develop your production incrementally, one interface at a time. There is a temptation to name items “as you go,” and to allow naming conventions to grow incrementally along with the project. InterSystems recommends you do not take this incremental approach to naming conventions.
Remember that a full HIS system can involve hundreds of interfaces. Anticipate the task of managing the routing production once all of these interfaces are included. The name of each component should clearly identify its purpose. This way, developers and system administrators can easily predict a component’s name based on its function.
InterSystems recommends that you establish a full set of naming conventions at the start of the project, and then stick with them. This alleviates the need to backtrack into your production configuration just to correct names.
Any convention that clearly identifies components by function is fine. The following is a full set of naming conventions that several InterSystems customers have used successfully:
InsideInterSystemsIRISOutsideInterSystemsIRISBusinessSe...RoutingProcess...BusinessOp...PindexADT_A01ADT_A03ADT_A04ADT_A07ADT_A09FineORADT_A01ADT_A03SpellORADT_A01ADT_A03ImagitMDM_T01MDM_T02MDM_T04FineORADT_A07ADT_A01ADT_A03ADT_A07ERChartORM_O01ADT_A01ADT_A03DeskAdm
For rules on configuration item names, see Configuration Names .
List the individual segments that you will assemble to create names. These might include:
– Keywords:
From for incoming
To for outgoing
Router for routing
Rules for rule sets
A base schema category number—2.1, 2.2, 2.3, 2.3.1, 2.4, 2.5, 2.5.1, 2.6, 2.7, or 2.7.1— for schemas – A short name for each application – Keywords that identify a general class of message structures (ADT, ORM, etc.)
–
Full message structure names (ADT_A01, ADT_A04, ORM_O01, etc.)
Keep each segment of the name brief (3–6 characters)
Remember that names are case-sensitive
For each element of the production, assemble a name from the segments that you have defined:
Business services: FromSourceAppName
Business operations: ToTargetAppName
Routing processes: SourceAppNameRouter
Routing rule sets: SourceAppNameRules
Data transformations:
SourceAppNameSourceMessageTypeToTargetAppNameTargetMessageType
Custom schema categories: SourceAppNameBaseSchemaNumber
For more complex designs:
Business services: FromSourceAppNameMessageTypes
Business operations: ToTargetAppNameMessageTypes
Routing processes: SourceAppNameMessageTypesRouter
Routing rule sets: SourceAppNameMessageTypesRules
The following topics provide explanations and examples for these naming conventions.
Convention
Examples
FromERChart, FromFineOR, FromDeskAdm
Variation
If you have decided to organize an interface so that one application sends messages into InterSystems IRIS via more than one business service, also include a keyword that classifies the MessageTypes that pass through each business service. A typical MessageTypes keyword uses the first three letters of the message structure. In this case the con vention for the business service name is FromSourceAppNameMessageTypes.
Convention
Examples
ERChartRouter, FineORRouter, DeskAdmRouter
If you have decided to organize an interface so that one application sends messages into InterSystems IRIS via more than one business service, also include a keyword that classifies the MessageTypes that pass through each business service to its routing process. In this case the format for the routing process name is as follows:
FromERChartSourceAppNameFromADT_A01ADT_A03ORM_O01ORMADTERChartMessageTypesSourceAppNameERChartSourceAppNameRouter
Variation
Examples
ERChartADTRouter, ERChartORMRouter, ERChartOtherRouter
Convention
Each routing process has an associated rule set whose rules determine message destinations. The rules direct the messages to data transformations or business operations based on message type, message contents, time of day, or other factors. Name each rule set to match its routing process. That is, for each SourceAppNameRouter, call the rule set SourceAppNameRules. For each SourceAppNameMessageTypesRouter, call the rule set SourceAppNameMessageTypesRules.
Examples
DeskAdmRules
DeskAdmORMRules
Convention
Examples
ToImagit, ToFineOR, ToPindex
RouterADT_A01ADT_A03ORM_O01ORMADTERChartMessageTypesSourceAppNameTargetAppNameImagitTo
Variation
If you have decided to organize an interface so that one application receives messages from InterSystems IRIS via more than one business operation, also include a keyword that classifies the MessageTypes that passes through each business operation.
Remember that the SourceMessageType and TargetMessageType may have the same name, but represent the same message structure in different schema categories.
Convention
ApplicationName BaseSchemaNumber
The ApplicationName can represent a sending application or a receiving application.
ToTargetAppNameMessageTypesADT_A01ADT_A03ORM_O01ORMADTMainLab
Converting Interfaces to Production Elements
This topic assumes that for each application, you might need to define both inbound and outbound interf aces.
Often when you bring InterSystems IRIS® data platform into such a configuration, it is for the purpose of replacing an existing interface engine with InterSystems IRIS. In order to do this you must:
Use a production as a routing engine.
Convert each of the existing interfaces to use the InterSystems IRIS routing engine instead of the previous interface
engine.
The conversion approach leaves the existing interface engine in place and converts the interfaces one by one to use Inter- Systems IRIS. Unconverted interfaces continue to use the previous engine while you test and confirm that the ne w interface works properly using InterSystems IRIS. As soon as the converted interface works correctly, you begin work on the next unconverted interface. This incremental change policy ensures the best chance of uninterrupted, error-free service during the conversion.
You could take an approach that converts groups of related interfaces at the same time. Still, you may find that the w ork boils down to converting one interface at a time.
This topic explains how to convert one existing interface to use InterSystems IRIS. The general steps are as follows. Each section describes one of these steps in detail:
Back up the production
Describe the interface
Choose schema categories
Create data transformations
Define routing rule sets
Add business operations
Create or edit a routing process
Add business services
Test the interface
Deploy the interface
Converting Interfaces to Production Elements
The procedure reverses the order in which you would usually describe a production. (“A business service receives an incoming message...”) However, experience with interface conversion shows that if you develop the elements top-down, beginning with the business service and working down to the custom schema, you must often backtrack to previous steps to fill in or correct the names of the lo wer-level items, in the various forms where you have configured higher -level items.
The procedure takes a bottom-up approach, reducing backtracking to a minimum by creating the lower-level items first, so that their names are known when it is time to configure the higher -level items. Bottom-up order works as shown: Steps
You might have success performing this procedure in top-down order, especially if you have well-established naming conventions, which reduce simple errors. Top-down order works as follows: Steps 1 and 2; Steps 8, 7, 6, 5, 4, 3; Steps 9 and 10.
To perform a full backup, see Deploying a Production.
Note:
Regarding XML backup files: If you use a UNIX® system, ne ver FTP a backup XML file in binary mode. Re gular FTP will convert this file from DOS to UNIX® properly , but binary FTP might not.
Each application in use at the enterprise should provide its own application specification document. The specification document explains which types of messages the application can send (or receive), and which message segments and pieces of each segment the application sends (or expects) for these events. The information is extremely detailed. The administrator of each application can show you this document for his or her application.
The source and target applications should each have an application specification document. Ho wever, any single interface between these applications, such as the interface that you are converting, uses a small subset of the possibilities listed in the specification document. Your best source for a description of an interface is actually the interface definition that you are replacing.
Open the existing interface definition. With this definition in vie w, open a text file and type into it a brief description of what the interface does. Do not try to reproduce the coding conventions of the existing definition (LOOP , CASE, etc.) in detail. Simply identify:
The message segments that you expect to arrive from the source
How the interface changes them before sending them to the target
In this step, you must determine which schema will be used for the inbound and outbound sides of the interface. This begins with an approximate choice, which you refine by testing messages ag ainst that schema in the Management Portal.
Each application should have an application specification document that identifies the schema that it uses when sending messages, and that it expects when receiving messages.
Defining Routing Rule Sets
Create routing rule sets. For information, see Working with Rule Sets.
Create DTL data transformations. For information, see Developing DTL Transformations.
The business operation for an interface controls the outgoing message transmission to the target application. For information on adding business operations, see Adding Business Hosts.
For testing purposes, it is useful to configure a production with tw o business operations that have the same configuration name:
One is an FTP or TCP business operation that controls the FTP or TCP transmission of messages across the interface when the production is running normally.
The other is a File business operation that sends messages to a file during testing or troubleshooting of the interf ace.
By convention (the items have the same configured name) only one of these configuration items can be enabled at a time. Enable one or the other depending on whether you want a “test” environment (the File operation) or a “live” environment (the TCP or FTP operation).
The steps to create a “live” business operation and its “test” counterpart are as follows:
Examine the target application to see which separators it expects messages to contain.
Create the “ live ” (FTP or TCP) business operation.
Use similar steps to create a “test” (File) business operation.
Give the “test” (File) operation the same configuration Name as the “live” one.
Only one business service of the same name can be active at one time.
To enable your new interface to work with the routing engine, you must add a routing process to the production that:
Tells how to interpret data from the source (identifies a routing rule)
Tells where to send the interpreted data (identifies a b usiness operation)
You can create a new routing process.
Converting Interfaces to Production Elements
The business service for an interface receives the incoming messages from the source application.
For testing purposes, it is useful to configure a production with tw o business services that have the same configuration name:
One is an FTP or TCP business service that receives messages from the source application via FTP or TCP when the production is running normally.
The other is a File business service that receives messages from a file during testing or troubleshooting of the interf ace.
By convention (the items have the same configured name) only one of these configuration items can be enabled at a time. Enable one or the other depending on whether you want a “test” environment (the File service) or a “live” environment (the TCP or FTP service).
The steps to create a “live” business service and its “test” counterpart are as follows:
Create the “live” (FTP or TCP) business service.
Use similar steps to create a “test” (File) business service.
Give the “test” (File) service the same configuration Name as the “live” one.
Only one business service of the same name can be active at one time.
Generally you need to maintain a separate “test” production that is an exact copy of the production that runs “live”. Develop the new interface within the “test” production. When that is done, you can migrate a copy of the new interface to the “live” production.
To test a new interface:
Capture some sample messages from the source application in files.
In the “test” production, enable the File business service and the File business operation and send the messages as files.
Examine the resulting message data in the output files to see if it meets the requirements for the tar get application.
If necessary, adjust the interface elements and retest.
and business operation, still within the “test” production.
Once you have completed testing the interface in the test production, it is time to add the new interface elements to the production that you are running live. To do this:
Note:
Regarding XML backup files: If you use a UNIX® system, ne ver FTP a backup XML file in binary mode. Regular FTP will convert this file from DOS to UNIX® properly , but binary FTP might not.
For example, you might export the following items:
Deploying the Interface
The new classes for the interface: business process, data transformation(s), business operations, business services, and any utility classes
The business rule(s)
The custom schema(s) InterSystems IRIS creates a deployment package file in the location that you specify .
For instructions, see Deploying a Production on a Target System.
Business service and business operations have a configuration setting called Alert On Error. When Alert On Error is set to True, as soon as the item encounters any type of error condition it automatically triggers an alert. An alert writes a message to the Event Log and can also send notification to a user via email or other mechanism. Setting Alert On Error to False disables the option.
Alert Grace Period (for business services) and Alert Retry Grace Period (for business operations) provide useful constraints on the frequency of alerts when they are enabled.
Note:
To set up alerts for the production as a whole, see Monitoring Alerts.
Ensure that the new interface is processing all new messages.
Disable or clean up the previous interface technology:
Ensure that all previously pending requests are satisfied and all queues are empty .
Disable the old interface. Disable the “start automatically” option.
In order to develop a production, you will need to use or create an interoperability-enabled namespace. While you can rely on a single database for your production, it is often desirable to define a separate database to store the data associated with messages. This data has the potential to increase the database size rapidly during times with higher than usual traffic or if a purge process is not scheduled to run. This practice insulates the database associated with your production’s code from the database with your message data. This page describes the process, including the recommended globals that should be mapped and guidelines for mapping on both new and existing systems.
The following table contains the recommended globals which should be mapped to a separate messages database. Select the tab for the product you are using. Additionally, if you have any custom message classes that contain message data, you should consider mapping these to the same message database.
Table 4–1: InterSystems IRIS
^Ens.MessageHeaderD
^Ens.MessageHeaderI†
^Ens.MessageBodyD
^Ens.MessageBodyI†
^Ens.MessageBodyS
^EnsHL7.Segment
^EnsLib.H.MessageD
^Ens.Util.LogD
^Ens.Util.LogI†
Table 4–2: InterSystems IRIS for Health
^Ens.MessageHeaderD
^Ens.MessageHeaderI†
^Ens.MessageBodyD
^Ens.MessageBodyI†
^Ens.MessageBodyS
^EnsHL7.Segment
^EnsLib.H.MessageD
^Ens.Util.LogD
^Ens.Util.LogI†
Table 4–3: HealthConnect
^Ens.MessageHeaderD
^Ens.MessageHeaderI†
^Ens.MessageBodyD
^Ens.MessageBodyI†
^Ens.MessageBodyS
^EnsHL7.Segment
^EnsLib.H.MessageD
^Ens.Util.LogD
^Ens.Util.LogI†
^HS.Message.XMLMessageD
^HS.Message.XMLMessageS
Table 4–4: HealthShare
^Ens.MessageHeaderD
^Ens.MessageHeaderI†
^Ens.MessageBodyD
^Ens.MessageBodyI†
^Ens.MessageBodyS
^EnsHL7.Segment
^EnsLib.H.MessageD
^Ens.Util.LogD
Globals for Default Database
^Ens.Util.LogI†
^HS.Message.XMLMessageD
^HS.Message.XMLMessageS
^HS.IHE.Comm8F7E.MIMEAttachmentD
^HS.IHE.Comm8F7E.MIMEAttachmentS
^HS.IHE.Comm8F7E.MIMEAttachmentI†
Note:
†Globals that store indexes for classes cannot be mapped using subscript-level mapping on existing systems. For details, see Mapping Globals on an Existing System.
The following globals should NOT be mapped to the messages database and need to remain in the default database for the interoperability-enabled namespace. They are essential for interoperability to function properly:
^Ens.Runtime
^Ens.Queue
^Ens.JobLock
^Ens.JobStatus
^Ens.ActiveMessage
^Ens.JobRequest
^Ens.Suspended
^Ens.SuspendedAppData
^Ens.Alarm
^Ens.AppData
^Ens.Rule.Notification
If you set up a separate database for the data associated with messages during the initial configuration of your production, the process of mapping the relevant globals is straightforward. Simply create a new messages database and map all relevant globals to your newly created database. For details on mapping globals to a database, see Add Global, Routine, and Package Mapping to a Namespace.
If you already have a production in use, the process of mapping the existing globals to your new database is more involved. Again, you should start by creating a new messages database. For globals that feature an incrementing ID as the top-level subscript, you should perform a subscript-level mapping. Choose a higher subscript than the current highest subscript of the global. This will allow the global to roll over to the new database when it increments to the designated subscript. For details on subscript-level mapping, see Global Mapping and Subscript-Level Mapping.
For globals that do not have an incrementing ID as the top-level subscript, including globals that store indexes for a class and globals subscripted by $JOB, you can perform a DataMove to map the subscripts to the newly created database.
data-ai
# XDBC Gateway XDBC Gateway Overview The XDBC Gateway provides a single interface for connecting InterSystems IRIS® to an external database with JDBC or ODBC. It acts as the modern, streamlined successor to the SQL Gateway. The XDBC Gateway acts like a JDBC or ODBC driver and lets you perform any of the following operations: - Access data stored in third-party relational databases within InterSystems IRIS applications. - Store persistent InterSystems IRIS objects in external relational data
devops
# Windows Installation Guide Windows Installation Overview The Windows Installation Guide provides guidance on installing kit-based deployments on Microsoft Windows. ### 1.1 How to Use This Guide For all installations, you should begin with the Pre-Installation steps. You can then follow the steps for either an attended or unattended installation. The attended installation process is different depending on the setup type you choose. After following the steps for attended installations, use t
testing
# Windows Installation Details Windows User Accounts When installing InterSystems IRIS, you must choose the Windows user account to run the InterSystems service, InterSystems IRIS Controller for <instance-name>. There are two options: - The default SYSTEM account (Windows Local System account). This is used in Minimal security installations. - A defined Windows user account. This account must have interactive login privileges for the duration of the installation; they can be revoked after.
tools
# Web Gateway Guide C.2.1 Method 1: Building the CSP Module as Shared Object with apxs (APache eXtenSion) Appendix D: Add the Web Gateway to a Locked-Down Apache Installation (UNIX®/Linux/macOS) The Web Gateway: Serve InterSystems Web Applications and REST APIs to a Web Client An InterSystems IRIS® web application consists of code which provides content dynamically to a web client (usually a web browser) in response to a request. The InterSystems Web Gateway makes this possible: it is a soft