/bin:$PATH
+```
+
+By default, the `pg_hba.conf` file for the RPM installer enforces `IDENT` authentication. Before invoking EDB*Plus, you must either modify the `pg_hba.conf` file, changing the authentication method to a form other than `IDENT` (and restarting the server), or perform the following steps to ensure that an `IDENT` server is accessible:
+
+You must confirm that an `identd` server is installed and running. You can use the `yum` package manager to install an `identd` server by invoking the command:
+
+- On RHEL or CentOS 7:
+
+ ```text
+ yum install xinetd authd
+ ```
+
+- On RHEL or CentOS 8:
+
+ ```text
+ dnf install xinetd authd
+ ```
+
+The command should create a file named ``/etc/xinetd.d/auth`` that contains:
+
+```text
+service auth
+{
+ disable = yes
+ socket_type = stream
+wait =no
+user = ident
+cps = 4096 10
+instances = UNLIMITED
+server = /usr/sbin/in.authd server_args = -t60 --xerror -os
+}
+```
+
+!!! Note
+ If the file includes a `-E` argument at the end of the server arguments, please erase `-E`.
+
+Then, to start the `identd` server, invoke the following commands:
+
+```text
+systemctl enable xinetd
+systemctl start xinetd
+```
+
+Open the `pg_ident.conf` file and create a user mapping:
+
+```
+# map_name system_username postgres_username
+ edbas enterprisedb enterprisedb
+```
+
+Where:
+
+- The name specified in the `map_name` column is a user-defined name that will identify the mapping in the `pg_hba.conf` file.
+- The name specified in the `system_username` column is `enterprisedb`.
+- The name specified in the `postgres_username` column is `enterprisedb`.
+
+Then, open the `pg_hba.conf` file and modify the `IDENT` entries:
+
+- If you are using an IPv4 local connection, modify the file entry to read:
+
+ `host all all 127.0.0.0/0 ident map=edbas`
+
+- If you are using an IPv6 local connection, modify the file entry to read:
+
+ `host all all ::1/128 ident map=edbas`
+
+You must restart the Advanced Server service before invoking EDB\*Plus. For detailed information about controlling the Advanced Server service, see the *EDB Postgres Advanced Server Installation Guide*, available at:
+
+
+
+
+
diff --git a/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/03_using_gui.mdx b/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/03_using_gui.mdx
new file mode 100644
index 00000000000..9c9e77a7871
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/03_using_gui.mdx
@@ -0,0 +1,49 @@
+---
+title: "Using the Graphical Installer"
+legacyRedirects:
+ - "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/39/installing_edb_plus.html"
+---
+
+
+
+Graphical installers for EDB\*Plus are available via StackBuilder Plus; you can access StackBuilder Plus through your Windows or Linux start menu. After opening StackBuilder Plus and selecting the installation for which you wish to install EDB\*Plus, expand the component selection screen tree control to select and download the EDB\*Plus installer.
+
+![The EDB\*Plus Welcome window](../images/edb_plus_welcome_1.png)
+
+ Fig. 1: The EDB*Plus Welcome window
+
+
+The EDB\*Plus installer welcomes you to the setup wizard, as shown in the figure below.
+
+![The Installation Directory window](../images/installation_directory.png)
+
+ Fig. 2: The Installation Directory window
+
+
+Use the `Installation Directory` field to specify the directory in which you wish to install the EDB\*Plus software. Then, click `Next` to continue.
+
+![The Advanced Server Installation Details window](../images/advanced_server_installation_details.png)
+
+ Fig. 3: The Advanced Server Installation Details window
+
+
+Use fields on the `EDB Postgres Advanced Server Installation Details` window to identify the location of the Advanced Server host:
+
+- Use the `Host` field to identify the system on which Advanced Server resides.
+- Use the `Port` field to identify the listener port that Advanced Server monitors for client connections.
+
+Then, click `Next` to continue.
+
+![The Ready to Install window](../images/ready_to_install.png)
+
+ Fig. 4: The Ready to Install window
+
+
+The `Ready to Install` window notifies you when the installer has all of the information needed to install EDB\*Plus on your system. Click `Next` to install EDB\*Plus.
+
+![The installation is complete](../images/installation_complete.png)
+
+ Fig. 5: The installation is complete
+
+
+The installer notifies you when the setup wizard has completed the EDB\*Plus installation. Click `Finish` to exit the installer.
diff --git a/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/index.mdx b/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/index.mdx
new file mode 100644
index 00000000000..9f951cd7871
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/03_installing_edb_plus.mdx/index.mdx
@@ -0,0 +1,15 @@
+---
+title: "Installing EDB*Plus"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/installation-getting-started/edb-plus/12/installing_edb_plus.html"
+---
+
+You can use an RPM installer or a graphical installer to add EDB*Plus to your Advanced Server installation.
+
+
+
+installing_prereq rpm_installation using_gui
+
+
\ No newline at end of file
diff --git a/product_docs/docs/epas/11/edb_plus/04_using_edb_plus.mdx b/product_docs/docs/epas/11/edb_plus/04_using_edb_plus.mdx
new file mode 100644
index 00000000000..bab4690fb20
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/04_using_edb_plus.mdx
@@ -0,0 +1,147 @@
+---
+title: "Using EDB*Plus"
+legacyRedirects:
+ - "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/39/using_edb_plus.html"
+---
+
+
+
+
+
+To open an EDB\*Plus command line, navigate through the `Applications` or `Start` menu to the Advanced Server menu, to the `Run SQL Command Line` menu, and select the EDB\*Plus option. You can also invoke EDB\*Plus from the operating system command line with the following command:
+
+```text
+edbplus [ -S[ILENT ] ] [ | /NOLOG ] [ @[. ] ]
+```
+
+`SILENT`
+
+ If specified, the EDB\*Plus sign-on banner is suppressed along with all prompts.
+
+`login`
+
+ Login information for connecting to the database server and database. `login` takes the following form; there must be no white space within the login information.
+
+```text
+[/][@{ | } ]
+```
+
+ Where:
+
+ `username` is a database username with which to connect to the database.
+
+ `password` is the password associated with the specified `username`. If a `password` is not provided, but a password is required for authentication, a password file is used if available. If there is no password file or no entry in the password file with the matching connection parameters, then EDB\*Plus will prompt for the password.
+
+ `connectstring` is the database connection string with the following format:
+
+```text
+[:][/][?ssl={true | false}]
+```
+
+ Where:
+
+- `host` is the hostname or IP address on which the database server resides. If neither `@connectstring` nor `@variable` nor `/NOLOG` is specified, the default host is assumed to be the localhost.
+
+- `port` is the port number receiving connections on the database server. If not specified, the default is `5444`.
+
+- `dbname` is the name of the database to connect to. If not specified the default is `edb`.
+
+- If `Internet Protocol version 6` (IPv6) is used for the connection instead of IPv4, then the IP address must be enclosed within square brackets (that is, `[ipv6_address]`). The following is an example using an IPv6 connection:
+
+```text
+edbplus.sh enterprisedb/password@[fe80::20c:29ff:fe7c:78b2]:5444/edb
+```
+
+ The `pg_hba.conf` file for the database server must contain an appropriate entry for the IPv6 connection. The following example shows an entry that allows all addresses:
+
+```text
+# TYPE DATABASE USER ADDRESS METHOD
+host all all ::0/0 md5
+```
+
+For more information about the `pg_hba.conf` file, see the PostgreSQL core documentation at:
+
+
+
+ If an SSL connection is desired, then include the `?ssl=true` parameter in the connection string. In such a case, the connection string must minimally include `host:port`, with or without `/dbname`. If the `ssl` parameter is not specified, the default is `false`. See [Using a Secure Sockets Layer (SSL) Connection](05_using_edb_plus_with_ssl/#using_edb_plus_with_ssl) for instructions on setting up an SSL connection.
+
+ `variable` is a variable defined in the `login.sql` file that contains a database connection string. The `login.sql` file can be found in the `edbplus` subdirectory of the Advanced Server home directory.
+
+`/NOLOG`
+
+ Specify `/NOLOG` to start EDB\*Plus without establishing a database connection. SQL commands and EDB\*Plus commands that require a database connection cannot be used in this mode. The `CONNECT` command can be subsequently given to connect to a database after starting EDB\*Plus with the `/NOLOG` option.
+
+`scriptfile[.ext ]`
+
+ `scriptfile` is the name of a file residing in the current working directory, containing SQL and/or EDB\*Plus commands that will be automatically executed after startup of EDB\*Plus. `ext` is the filename extension. If the filename extension is `sql`, then the `.sql` extension may be omitted when specifying `scriptfile`. When creating a script file, always name the file with an extension, otherwise it will not be accessible by EDB\*Plus. (EDB\*Plus will always assume a `.sql` extension on filenames that are specified with no extension.)
+
+The following example shows user `enterprisedb` with password `password`, connecting to database `edb` running on a database server on the `localhost` at port `5444`.
+
+```text
+C:\Program Files\edb\as11\edbplus>edbplus enterprisedb/password
+Connected to EnterpriseDB 11.0.1 (localhost:5444/edb) AS enterprisedb
+
+EDB*Plus: Release 11 (Build 37.0.0)
+Copyright (c) 2008-2021, EnterpriseDB Corporation. All rights reserved.
+
+SQL>
+```
+
+The following example shows user `enterprisedb` with password, `password`, connecting to database `edb` running on a database server on the `localhost` at port `5445`.
+
+```text
+C:\Program Files\edb\as11\edbplus>edbplus enterprisedb/password@localhost:5445/edb
+Connected to EnterpriseDB 11.0.1 (localhost:5445/edb) AS enterprisedb
+
+EDB*Plus: Release 11 (Build 37.0.0)
+Copyright (c) 2008-2021, EnterpriseDB Corporation. All rights reserved.
+
+SQL>
+```
+
+Using variable `hr_5445` in the `login.sql` file, the following illustrates how it is used to connect to database `hr` on localhost at port `5445`.
+
+```text
+C:\Program Files\edb\as11\edbplus>edbplus enterprisedb/password@hr_5445
+Connected to EnterpriseDB 11.0.1 (localhost:5445/hr) AS enterprisedb
+
+EDB*Plus: Release 11 (Build 37.0.0)
+Copyright (c) 2008-2021, EnterpriseDB Corporation. All rights reserved.
+
+SQL>
+```
+
+The following is the content of the `login.sql` file used in the previous example.
+
+```text
+define edb="localhost:5445/edb"
+define hr_5445="localhost:5445/hr"
+```
+
+The following example executes a script file, `dept_query.sql` after connecting to database `edb` on server localhost at port `5444`.
+
+```text
+C:\Program Files\edb\as11\edbplus>edbplus enterprisedb/password @dept_query
+Connected to EnterpriseDB 11.0.1 (localhost:5444/edb) AS enterprisedb
+
+SQL> SELECT * FROM dept;
+
+DEPTNO DNAME LOC
+------ -------------- -------------
+10 ACCOUNTING NEW YORK
+20 RESEARCH DALLAS
+30 SALES CHICAGO
+40 OPERATIONS BOSTON
+
+SQL> EXIT
+Disconnected from EnterpriseDB Database.
+```
+
+The following is the content of file `dept_query.sql` used in the previous example.
+
+```text
+SET PAGESIZE 9999
+SET ECHO ON
+SELECT * FROM dept;
+EXIT
+```
diff --git a/product_docs/docs/epas/11/edb_plus/05_using_edb_plus_with_ssl.mdx b/product_docs/docs/epas/11/edb_plus/05_using_edb_plus_with_ssl.mdx
new file mode 100644
index 00000000000..e9a0cc4544d
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/05_using_edb_plus_with_ssl.mdx
@@ -0,0 +1,326 @@
+---
+title: "Using a Secure Sockets Layer (SSL) Connection"
+legacyRedirects:
+ - "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/39/using_edb_plus_with_ssl.html"
+---
+
+
+
+
+
+An EDB\*Plus connection to the Advanced Server database can be accomplished using secure sockets layer (SSL) connectivity.
+
+Using SSL requires various prerequisite configuration steps performed on the database server involved with the SSL connection as well as creation of the Java truststore and keystore on the host that will run EDB\*Plus.
+
+The Java *truststore* is the file containing the Certificate Authority (CA) certificates with which the Java client (EDB\*Plus) uses to verify the authenticity of the server to which it is initiating an SSL connection.
+
+The Java *keystore* is the file containing private and public keys and their corresponding certificates. The keystore is required for client authentication to the server, which is used for the EDB\*Plus connection.
+
+The following is material to which you can refer to for guidance in setting up the SSL connections:
+
+- For information on setting up SSL connectivity to the Advanced Server database, see the section about secure TCP connections with SSL in Chapter 18 “Server Setup and Operation” in the PostgreSQL Core Documentation located at:
+
+
+
+- For information on JDBC client connectivity using SSL, see the section on configuring the client in Chapter 4 “Using SSL” in The PostgreSQL JDBC Interface located at:
+
+
+
+The following sections provide information for the configuration steps of using SSL.
+
+- Configuring SSL on Advanced Server
+- Configuring SSL for the EDB\*Plus client
+- Requesting SSL connection to the Advanced Server database
+
+## Configuring SSL on Advanced Server
+
+This section provides an example of configuring SSL on a database server to demonstrate the use of SSL with EDB\*Plus. A self-signed certificate is used for this purpose.
+
+**Step 1:** Create the certificate signing request (CSR).
+
+In the following example the generated certificate signing request file is `server.csr`. The private key is generated as file `server.key`.
+
+```text
+$ openssl req -new -nodes -text -out server.csr \
+> -keyout server.key -subj "/CN=enterprisedb"
+Generating a 2048 bit RSA private key
+.............................+++
+....................................................................+++
+writing new private key to 'server.key'
+-----
+```
+
+!!! Note
+ When creating the certificate, the value specified for the common name field (designated as `CN=enterprisedb` in this example) must be the database user name that is specified when connecting to EDB\*Plus.
+
+In addition, user name maps can be used as defined in the `pg_ident.conf` file to permit more flexibility for the common name and database user name. Steps 8 and 9 describe the use of user name `maps`.
+
+**Step 2:** Generate the self-signed certificate.
+
+The following generates a self-signed certificate to file `server.crt` using the certificate signing request file, `server.csr`, and the private key, `server.key`, as input.
+
+```text
+$ openssl x509 -req -days 365 -in server.csr -signkey server.key \
+> -out server.crt
+Signature ok
+subject=/CN=enterprisedb
+Getting Private key
+```
+
+**Step 3:** Make a copy of the server certificate (`server.crt`) to be used as the root Certificate Authority (CA) file (`root.crt`).
+
+```text
+$ cp server.crt root.crt
+```
+
+**Step 4:** Delete the now redundant certificate signing request (`server.csr`).
+
+```text
+$ rm -f server.csr
+```
+
+**Step 5:** Move or copy the certificate and private key files to the Advanced Server data directory (for example, `/opt/edb/as11/data`).
+
+```text
+$ mv root.crt /opt/edb/as11/data
+$ mv server.crt /opt/edb/as11/data
+$ mv server.key /opt/edb/as11/data
+```
+
+**Step 6:** Set the file ownership and permissions on the certificate files and private key file.
+
+Set the ownership to the operating system account that owns the data sub-directory of the database server. Set the permissions so that no other groups or accounts other than the owner can access these files.
+
+```text
+$ chown enterprisedb root.crt server.crt server.key
+$ chgrp enterprisedb root.crt server.crt server.key
+$ chmod 600 root.crt server.crt server.key
+$ ls -l
+total 152
+ .
+ .
+ .
+-rw------- 1 enterprisedb enterprisedb 985 Aug 22 11:00 root.crt
+-rw------- 1 enterprisedb enterprisedb 985 Aug 22 10:59 server.crt
+-rw------- 1 enterprisedb enterprisedb 1704 Aug 22 10:58 server.key
+```
+
+**Step 7:** In the `postgresql.conf` file, make the following modifications.
+
+```text
+ssl = on
+ssl_cert_file = 'server.crt'
+ssl_key_file = 'server.key'
+ssl_ca_file = 'root.crt'
+```
+
+**Step 8:** Modify the `pg_hba.conf` file to enable SSL usage on the desired database to which EDB\*Plus is to make the SSL connection.
+
+In the `pg_hba.conf` file, the `hostssl` type indicates the entry is used to validate SSL connection attempts from the client (EDB\*Plus).
+
+The authentication method is set to cert with the option `clientcert=1` in order to require an SSL certificate from the client against which authentication is performed using the common name of the certificate (`enterprisedb` in this example).
+
+The `map=sslusers` option specifies that a mapping named `sslusers` defined in the `pg_ident.conf` file is to be used for authentication. This mapping allows a connection to the database if the common name from the certificate and the database user name attempting the connection match the `SYSTEM-USERNAME/PG-USERNAME` pair listed in the `pg_ident.conf` file.
+
+The following is an example of the settings in the `pg_hba.conf` file if the database `(edb)` must use SSL connections.
+
+```text
+# TYPE DATABASE USER ADDRESS METHOD
+
+# "local" is for Unix domain socket connections only
+local all all md5
+# IPv4 local connections:
+hostssl edb all 192.168.2.0/24 cert clientcert=1 map=sslusers
+```
+
+**Step 9:** The following shows the user name maps in the `pg_ident.conf` file related to the `pg_hba.conf` file by the `map=sslusers` option. These user name maps permit you to specify database user names `edbuser`, `postgres`, or `enterprisedb` when connecting with EDB\*Plus.
+
+```text
+# MAPNAME SYSTEM-USERNAME PG-USERNAME
+ sslusers enterprisedb edbuser
+ sslusers enterprisedb postgres
+ sslusers enterprisedb enterprisedb
+```
+
+**Step 10:** Restart the database server after you have made the changes to the configuration files.
+
+## Configuring SSL for the EDB\*Plus Client
+
+After you have configured SSL on the database server, the following steps provide an example of generating certificate and keystore files for EDB\*Plus (the JDBC client).
+
+**Step 1:** Using files `server.crt` and `server.key` located under the database server data sub-directory, create copies of these files and move them to the host where EDB\*Plus is to be running.
+
+Store these files in the desired directory to contain the trusted certificate and keystore files to be generated in the following steps. The suggested location is to create a `.postgresql` sub-directory under the home user account that will invoke EDB\*Plus. Thus, these files will be under the `~/.postgresql` directory of the user account that will run EDB\*Plus.
+
+For this example, assume file `edb.crt` is a copy of `server.crt` and `edb.key` is a copy of `server.key`.
+
+**Step 2:** Create an additional copy of `edb.crt`.
+
+```text
+$ cp edb.crt edb_root.crt
+$ ls -l
+total 12
+-rw-r--r-- 1 user user 985 Aug 22 14:17 edb.crt
+-rw-r--r-- 1 user user 1704 Aug 22 14:18 edb.key
+-rw-r--r-- 1 user user 985 Aug 22 14:19 edb_root.crt
+```
+
+**Step 3:** Create a Distinguished Encoding Rules (DER) format of file `edb_root.crt`. The generated DER format of this file is `edb_root.crt.der`. The DER format of the file is required for the `keytool` program used in Step 4.
+
+```text
+$ openssl x509 -in edb_root.crt -out edb_root.crt.der -outform der
+$ ls -l
+total 16
+-rw-r--r-- 1 user user 985 Aug 22 14:17 edb.crt
+-rw-r--r-- 1 user user 1704 Aug 22 14:18 edb.key
+-rw-r--r-- 1 user user 985 Aug 22 14:19 edb_root.crt
+-rw-rw-r-- 1 user user 686 Aug 22 14:21 edb_root.crt.der
+```
+
+**Step 4:** Use the `keytool` program to create a keystore file `(postgresql.keystore)` using `edb_root.crt.der` as the input. This process adds the certificate of the Postgres database server to the keystore file.
+
+!!! Note
+ The file name `postgresql.keystore` is recommended so that it can be accessed in its default directory location `~/.postgresql postgresql.keystore`, which is under the home directory of the user account invoking EDB\*Plus. Also note that the file name suffix can be `.jks` instead of `.keystore` (thus, file name `postgresql.jks`). However, in the remainder of these examples, file name `postgresql.keystore` is used.
+
+**For Windows only:** The path is `%APPDATA%\.postgresql\postgresql.keystore`
+
+The `keytool` program can be found under the `bin` subdirectory of the Java Runtime Environment installation.
+
+You will be prompted for a new password. Save this password as it must be specified with the PGSSLCERTPASS environment variable.
+
+```text
+$ /usr/java/jdk1.8.0_131/jre/bin/keytool -keystore postgresql.keystore \
+> -alias postgresqlstore -import -file edb_root.crt.der
+Enter keystore password:
+Re-enter new password:
+Owner: CN=enterprisedb
+Issuer: CN=enterprisedb
+Serial number: c60f40256b0e8d53
+Valid from: Tue Aug 22 10:59:25 EDT 2017 until: Wed Aug 22 10:59:25 EDT 2018
+Certificate fingerprints:
+ MD5: 85:0B:E9:A7:6E:4F:7C:B0:9B:D6:3A:44:55:E2:E9:8E
+ SHA1: DD:A6:71:24:0B:6C:F8:BC:7A:4C:89:9B:DC:22:6A:6C:B0:F5:3F:7C
+ SHA256:
+DC:02:64:E2:B0:E9:6F:1C:FC:4F:AE:E6:18:85:0B:79:57:43:C3:C5:AE:43:0D:37
+:49:53:6D:11:69:06:46:48
+ Signature algorithm name: SHA1withRSA
+ Version: 1
+Trust this certificate? [no]: yes
+Certificate was added to keystore
+```
+
+**Step 5:** Create a `PKCS #12` format of the keystore file `(postgresql.p12)` using files `edb.crt` and `edb.key` as input.
+
+!!! Note
+ The file name `postgresql.p12` is recommended so that it can be accessed in its default directory location `~/.postgresql/postgresql.p12`, which is under the home directory of the user account invoking EDB\*Plus.
+
+**For Windows only:** The path is `%APPDATA%\.postgresql\postgresql.p12`
+
+You will be prompted for a new password. Save this password as it must be specified with the PGSSLKEYPASS environment variable.
+
+```text
+$ openssl pkcs12 -export -in edb.crt -inkey edb.key -out postgresql.p12
+Enter Export Password:
+Verifying - Enter Export Password:
+$ ls –l
+total 24
+-rw-rw-r-- 1 user user 985 Aug 24 12:18 edb.crt
+-rw-rw-r-- 1 user user 1704 Aug 24 12:18 edb.key
+-rw-rw-r-- 1 user user 985 Aug 24 12:20 edb_root.crt
+-rw-rw-r-- 1 user user 686 Aug 24 12:20 edb_root.crt.der
+-rw-rw-r-- 1 user user 758 Aug 24 12:26 postgresql.keystore
+-rw-rw-r-- 1 user user 2285 Aug 24 12:28 postgresql.p12
+```
+
+**Step 6:** If the `postgresql.keystore` and `postgresql.p12` files are not already in the `~/.postgresql` directory, move or copy them to that location.
+
+**For Windows only:** The directory is `%APPDATA%\.postgresql`
+
+**Step 7:** If the default location `~/.postgresql` is not used, then the full path (including the file name) to the `postgresql.keystore` file must be set with the `PGSSLCERT` environment variable, and the full path (including the file name) to file `postgresql.p12` must be set with the `PGSSLKEY` environment variable before invoking EDB\*Plus.
+
+In addition, if the generated file from Step 4 was not named `postgresql.keystore` or `postgresql.jks` then, use the `PGSSLCERT` environment variable to designate the file name and its location. Similarly, if the generated file from Step 5 was not named `postgresql.p12` then, use the `PGSSLKEY` environment variable to designate the file name and its location.
+
+## Requesting an SSL Connection between EDB\*Plus and the Advanced Server Database
+
+Be sure the following topics have been addressed in order to perform an SSL connection:
+
+- The trusted certificate and keystore files have been generated for both the database server and the client host to be invoking EDB\*Plus.
+- The `postgresql.conf` file for the database server contains the updated configuration parameters.
+- The `pg_hba.conf` file for the database server contains the required entry for permitting the SSL connection.
+- For the client host, either the client’s certificate and keystore files have been placed in the user account’s `~/.postgresql` directory or the environment variables `PGSSLCERT` and `PGSSLKEY` are set before invoking EDB\*Plus.
+- The `PGSSLCERTPASS` environment variable is set with a password.
+- The `PGSSLKEYPASS` environment variable is set with a password
+
+When invoking EDB\*Plus, include the `?ssl=true` parameter in the database connection string as shown for the `connectstring` option in [Using EDB\*Plus](04_using_edb_plus/#using_edb_plus).
+
+The following is an example where EDB\*Plus is invoked from a host that is remote to the database server.
+
+The `postgresql.conf` file of the database server contains the following modified parameters:
+
+```text
+ssl = on
+ssl_cert_file = 'server.crt'
+ssl_key_file = 'server.key'
+ssl_ca_file = 'root.crt'
+```
+
+The `pg_hba.conf` file of the database server contains the following entry for connecting from EDB\*Plus on the remote host:
+
+```text
+# TYPE DATABASE USER ADDRESS METHOD
+
+# "local" is for Unix domain socket connections only
+local all all md5
+# IPv4 local connections:
+hostssl edb all 192.168.2.24/32 cert clientcert=1
+```
+
+On the remote host where EDB\*Plus is to be invoked, the Linux user account named `user` contains the certificate and keystore files in its `~/.postgresql` directory:
+
+```text
+[user@localhost ~]$ whoami
+user
+[user@localhost ~]$ cd .postgresql
+[user@localhost .postgresql]$ pwd
+/home/user/.postgresql
+[user@localhost .postgresql]$ ls -l
+total 8
+-rw-rw-r-- 1 user user 758 Aug 24 12:37 postgresql.keystore
+-rw-rw-r-- 1 user user 2285 Aug 24 12:37 postgresql.p12
+```
+
+Logged into Linux with the account named `user`, EDB\*Plus is successfully invoked with the `ssl=true` parameter:
+
+```text
+$ export PGSSLCERTPASS=keypass
+$ export PGSSLKEYPASS=exppass
+$ cd /opt/edb/as11/edbplus
+$ ./edbplus.sh enterprisedb/password@192.168.2.22:5444/edb?ssl=true
+Connected to EnterpriseDB 11.0.1 (192.168.2.22:5444/edb) AS enterprisedb
+
+EDB*Plus: Release 11 (Build 37.0.0)
+Copyright (c) 2008-2021, EnterpriseDB Corporation. All rights reserved.
+
+SQL>
+```
+
+Alternatively, without placing the certificate and keystore files in `~/.postgresql`, but in a different directory, EDB\*Plus can be invoked in the following manner:
+
+```text
+$ export PGSSLCERT=/home/user/ssl/postgresql.keystore
+$ export PGSSLKEY=/home/user/ssl/postgresql.p12
+$ export PGSSLCERTPASS=keypass
+$ export PGSSLKEYPASS=exppass
+$ cd /opt/edb/as11/edbplus
+$ ./edbplus.sh enterprisedb/password@192.168.2.22:5444/edb?ssl=true
+Connected to EnterpriseDB 11.0.1 (192.168.2.22:5444/edb) AS enterprisedb
+
+EDB*Plus: Release 11 (Build 37.0.0)
+Copyright (c) 2008-2021, EnterpriseDB Corporation. All rights reserved.
+
+SQL>
+```
+
+Note that in both cases the database user name used to log into EDB\*Plus is `enterprisedb` as this is the user specified for the common name field when creating the certificate in Step 1 of [Configuring SSL on Advanced Server](#using_ssl_connection).
+
+Other database user names can be used if the `pg_hba.conf` file with the `map` option and the `pg_ident.conf` file are used.
diff --git a/product_docs/docs/epas/11/edb_plus/06_command_summary.mdx b/product_docs/docs/epas/11/edb_plus/06_command_summary.mdx
new file mode 100644
index 00000000000..2a73c94dad7
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/06_command_summary.mdx
@@ -0,0 +1,999 @@
+---
+title: "Command Summary"
+legacyRedirects:
+ - "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/39/command_summary.html"
+---
+
+
+
+The following sections contains a summary of EDB\*Plus commands.
+
+## ACCEPT
+
+The `ACCEPT` command displays a prompt and waits for the user’s keyboard input. The value input by the user is placed in the specified variable.
+
+```text
+ACC[EPT ] variable
+```
+
+The following example creates a new variable named `my_name`, accepts a value of John Smith, then displays the value using the `DEFINE` command.
+
+```text
+SQL> ACCEPT my_name
+Enter value for my_name: John Smith
+SQL> DEFINE my_name
+DEFINE MY_NAME = "John Smith"
+```
+
+## APPEND
+
+`APPEND` is a line editor command that appends the given text to the end of the current line in the SQL buffer.
+
+```text
+A[PPEND ] text
+```
+
+In the following example, a `SELECT` command is built-in the SQL buffer using the `APPEND` command. Note that two spaces are placed between the `APPEND` command and the `WHERE` clause in order to separate `dept` and `WHERE` by one space in the SQL buffer.
+
+```text
+SQL> APPEND SELECT * FROM dept
+SQL> LIST
+ 1 SELECT * FROM dept
+SQL> APPEND WHERE deptno = 10
+SQL> LIST
+ 1 SELECT * FROM dept WHERE deptno = 10
+```
+
+## CHANGE
+
+`CHANGE` is a line editor command performs a search-and-replace on the current line in the SQL buffer.
+
+```text
+C[HANGE ] FROM [ TO ]
+```
+
+If `TO/` is specified, the first occurrence of text `FROM` in the current line is changed to text `TO`. If `TO/` is omitted, the first occurrence of text `FROM` in the current line is deleted.
+
+The following sequence of commands makes line 3 the current line, then changes the department number in the `WHERE` clause from 20 to 30.
+
+```text
+SQL> LIST
+ 1 SELECT empno, ename, job, sal, comm
+ 2 FROM emp
+ 3 WHERE deptno = 20
+ 4* ORDER BY empno
+SQL> 3
+ 3* WHERE deptno = 20
+SQL> CHANGE /20/30/
+ 3* WHERE deptno = 30
+SQL> LIST
+ 1 SELECT empno, ename, job, sal, comm
+ 2 FROM emp
+ 3 WHERE deptno = 30
+ 4* ORDER BY empno
+```
+
+## CLEAR
+
+The `CLEAR` command removes the contents of the SQL buffer, deletes all column definitions set with the `COLUMN` command, or clears the screen.
+
+```text
+CL[EAR ] [ BUFF[ER ] | SQL | COL[UMNS ] | SCR[EEN ] ]
+```
+
+`BUFFER | SQL`
+
+ Clears the SQL buffer.
+
+`COLUMNS`
+
+ Removes column definitions.
+
+`SCREEN`
+
+ Clears the screen. This is the default if no options are specified.
+
+## COLUMN
+
+The `COLUMN` command controls output formatting. The formatting attributes set by using the `COLUMN` command remain in effect only for the duration of the current session.
+
+```text
+COL[UMN ]
+ [ column
+ { CLE[AR ] |
+ { FOR[MAT ] spec |
+ HEA[DING ] text |
+ { OFF | ON }
+ } [...]
+ }
+ ]
+```
+
+If the `COLUMN` command is specified with no subsequent options, formatting options for current columns in effect for the session are displayed.
+
+If the `COLUMN` command is followed by a column name, then the column name may be followed by one of the following:
+
+1. No other options
+2. `CLEAR`
+3. Any combination of `FORMAT`, `HEADING`, and one of `OFF` or `ON`
+
+`column`
+
+ Name of a column in a table to which subsequent column formatting options are to apply. If no other options follow `column`, then the current column formatting options if any, of `column` are displayed.
+
+`CLEAR`
+
+ The `CLEAR` option reverts all formatting options back to their defaults for `column`. If the `CLEAR` option is specified, it must be the only option specified.
+
+`spec`
+
+ Format specification to be applied to `column`. For character columns, `spec` takes the following format:
+
+`n`
+
+ `n` is a positive integer that specifies the column width in characters within which to display the data. Data in excess of `n` will wrap around with the specified column width.
+
+ For numeric columns, `spec` is comprised of the following elements.
+
+ Table - Numeric Column Format Elements
+
+| Element | Description |
+| ------- | ------------------------------------------ |
+| `$` | Display a leading dollar sign. |
+| `,` | Display a comma in the indicated position. |
+| `.` | Marks the location of the decimal point. |
+| `0` | Display leading zeros. |
+| `9` | Number of significant digits to display. |
+
+ If loss of significant digits occurs due to overflow of the format, then all #’s are displayed.
+
+`text`
+
+ Text to be used for the column heading of `column`.
+
+`OFF | ON`
+
+ If `OFF` is specified, formatting options are reverted back to their defaults, but are still available within the session. If `ON` is specified, the formatting options specified by previous `COLUMN` commands for `column` within the session are re-activated.
+
+The following example shows the effect of changing the display width of the `job` column.
+
+```text
+SQL> SET PAGESIZE 9999
+SQL> COLUMN job FORMAT A5
+SQL> COLUMN job
+COLUMN JOB ON
+FORMAT A5
+wrapped
+SQL> SELECT empno, ename, job FROM emp;
+
+EMPNO ENAME JOB
+----- ---------- -----
+ 7369 SMITH CLERK
+ 7499 ALLEN SALES
+ MAN
+
+ 7521 WARD SALES
+ MAN
+
+ 7566 JONES MANAG
+ ER
+
+ 7654 MARTIN SALES
+ MAN
+
+ 7698 BLAKE MANAG
+ ER
+
+ 7782 CLARK MANAG
+ ER
+
+ 7788 SCOTT ANALY
+ ST
+
+ 7839 KING PRESI
+ DENT
+
+ 7844 TURNER SALES
+ MAN
+
+ 7876 ADAMS CLERK
+ 7900 JAMES CLERK
+ 7902 FORD ANALY
+ ST
+
+ 7934 MILLER CLERK
+
+14 rows retrieved.
+```
+
+The following example applies a format to the `sal` column.
+
+```text
+SQL> COLUMN sal FORMAT $99,999.00
+SQL> COLUMN
+COLUMN JOB ON
+FORMAT A5
+wrapped
+
+COLUMN SAL ON
+FORMAT $99,999.00
+wrapped
+SQL> SELECT empno, ename, job, sal FROM emp;
+
+EMPNO ENAME JOB SAL
+----- ---------- ----- -----------
+ 7369 SMITH CLERK $800.00
+ 7499 ALLEN SALES $1,600.00
+ MAN
+
+ 7521 WARD SALES $1,250.00
+ MAN
+
+ 7566 JONES MANAG $2,975.00
+ ER
+
+ 7654 MARTIN SALES $1,250.00
+ MAN
+
+ 7698 BLAKE MANAG $2,850.00
+ ER
+
+ 7782 CLARK MANAG $2,450.00
+ ER
+
+ 7788 SCOTT ANALY $3,000.00
+ ST
+
+ 7839 KING PRESI $5,000.00
+ DENT
+
+ 7844 TURNER SALES $1,500.00
+ MAN
+
+ 7876 ADAMS CLERK $1,100.00
+ 7900 JAMES CLERK $950.00
+ 7902 FORD ANALY $3,000.00
+ ST
+
+ 7934 MILLER CLERK $1,300.00
+
+14 rows retrieved.
+```
+
+## CONNECT
+
+Change the database connection to a different user and/or connect to a different database. There must be no white space between any of the parameters following the `CONNECT` command.
+
+```text
+CON[NECT] [/][@{ | } ]
+```
+
+Where:
+
+ `username` is a database username with which to connect to the database.
+
+ `password` is the password associated with the specified `username`. If a `password` is not provided, but a password is required for authentication, a search is made for a password file, first in the home directory of the Linux operating system account invoking EDB\*Plus (or in the `%APPDATA%\postgresql\` directory for Windows) and then at the location specified by the `PGPASSFILE` environment variable. The password file is `.pgpass` on Linux hosts and `pgpass.conf` on Windows hosts. The following is an example on a Windows host:
+
+```text
+C:\Users\Administrator\AppData\Roaming\postgresql\pgpass.conf
+```
+
+ If a password file cannot be located, or it does not have an entry matching the EDB\*Plus connection parameters, then EDB\*Plus will prompt for the password. For more information about password files, see the PostgreSQL core documentation at:
+
+
+
+!!! Note
+ When a password is not required, EDB\*Plus does not prompt for a password such as when the `trust` authentication method is specified in the `pg_hba.conf` file.
+
+For more information about the `pg_hba.conf` file and authentication methods, see the PostgreSQL core documentation at
+
+ `connectstring` is the database connection string. See [Using EDB\*Plus](04_using_edb_plus/#using_edb_plus) for further information on the database connection string.
+
+ `variable` is a variable defined in the `login.sql` file that contains a database connection string. The `login.sql` file can be found in the `edbplus` subdirectory of the Advanced Server home directory.
+
+In the following example, the database connection is changed to database `edb` on the localhost at port `5445` with username `smith`.
+
+```text
+SQL> CONNECT smith/mypassword@localhost:5445/edb
+Disconnected from EnterpriseDB Database.
+Connected to EnterpriseDB 11.0.1 (localhost:5445/edb) AS smith
+```
+
+From within the session shown above, the connection is changed to username `enterprisedb`. Also note that the host defaults to the localhost, the port defaults to `5444` (which is not the same as the port previously used), and the database defaults to `edb`.
+
+```text
+SQL> CONNECT enterprisedb/password
+Disconnected from EnterpriseDB Database.
+Connected to EnterpriseDB 11.0.1 (localhost:5444/edb) AS enterprisedb
+```
+
+## DEFINE
+
+The `DEFINE` command creates or replaces the value of a *user variable* (also called a *substitution variable*).
+
+```text
+DEF[INE ] [ variable [ = text ] ]
+```
+
+If the `DEFINE` command is given without any parameters, all current variables and their values are displayed.
+
+If `DEFINE variable` is given, only `variable` is displayed with its value.
+
+`DEFINE variable = text` assigns `text` to `variable.text` may be optionally enclosed within single or double quotation marks. Quotation marks must be used if `text` contains space characters.
+
+The following example defines two variables, `dept` and `name`.
+
+```text
+SQL> DEFINE dept = 20
+SQL> DEFINE name = 'John Smith'
+SQL> DEFINE
+DEFINE EDB = "localhost:5445/edb"
+DEFINE DEPT = "20"
+DEFINE NAME = "John Smith"
+```
+
+!!! Note
+ The variable `EDB` is read from the `login.sql` file located in the `edbplus` subdirectory of the Advanced Server home directory.
+
+## DEL
+
+`DEL` is a line editor command that deletes one or more lines from the SQL buffer.
+
+```text
+DEL [ n | n m | n * | n L[AST ] | * | * n | * L[AST ] | L[AST ] ]
+```
+
+The parameters specify which lines are to be deleted from the SQL buffer. Two parameters specify the start and end of a range of lines to be deleted. If the `DEL` command is given with no parameters, the current line is deleted.
+
+`n`
+
+ n is an integer representing the `n`th line
+
+`n m`
+
+ `n` and `m` are integers where `m` is greater than `n` representing the `n`th through the `m`th lines
+
+`*`
+
+ Current line
+
+`LAST`
+
+ Last line
+
+In the following example, the fifth and sixth lines containing columns `sal` and `comm`, respectively, are deleted from the `SELECT` command in the SQL buffer.
+
+```text
+SQL> LIST
+ 1 SELECT
+ 2 empno
+ 3 ,ename
+ 4 ,job
+ 5 ,sal
+ 6 ,comm
+ 7 ,deptno
+ 8* FROM emp
+SQL> DEL 5 6
+SQL> LIST
+ 1 SELECT
+ 2 empno
+ 3 ,ename
+ 4 ,job
+ 5 ,deptno
+ 6* FROM emp
+```
+
+## DESCRIBE
+
+The `DESCRIBE` command displays:
+
+- A list of columns, column data types, and column lengths for a table or view
+- A list of parameters for a procedure or function
+- A list of procedures and functions and their respective parameters for a package
+
+The `DESCRIBE` command will also display the structure of the database object referred to by a synonym. The syntax is:
+
+```text
+DESC[RIBE] [ schema.]object
+```
+
+`schema`
+
+ Name of the schema containing the object to be described.
+
+`object`
+
+ Name of the table, view, procedure, function, or package to be displayed, or the synonym of an object.
+
+## DISCONNECT
+
+The `DISCONNECT` command closes the current database connection, but does not terminate EDB\*Plus.
+
+```text
+DISC[ONNECT ]
+```
+
+## EDIT
+
+The `EDIT` command invokes an external editor to edit the contents of an operating system file or the SQL buffer.
+
+```text
+ED[IT ] [ filename[.ext ] ]
+```
+
+`filename[.ext ]`
+
+ `filename` is the name of the file to open with an external editor. `ext` is the filename extension. If the filename extension is `sql`, then the `.sql` extension may be omitted when specifying `filename`. `EDIT` always assumes a `.sql` extension on filenames that are specified with no extension. If the filename parameter is omitted from the `EDIT` command, the contents of the SQL buffer are brought into the editor.
+
+## EXECUTE
+
+The `EXECUTE` command executes an SPL procedure from EDB\*Plus.
+
+```text
+EXEC[UTE ] spl_procedure [ ([ parameters ]) ]
+```
+
+`spl_procedure`
+
+ The name of the SPL procedure to be executed.
+
+`parameters`
+
+ Comma-delimited list of parameters. If there are no parameters, then a pair of empty parentheses may optionally be specified.
+
+## EXIT
+
+The `EXIT` command terminates the EDB\*Plus session and returns control to the operating system. `QUIT` is a synonym for `EXIT`. Specifying no parameters is equivalent to `EXIT SUCCESS COMMIT`.
+
+```text
+{ EXIT | QUIT }
+[ SUCCESS | FAILURE | WARNING | value | variable ]
+[ COMMIT | ROLLBACK ]SUCCESS | FAILURE |WARNING]
+```
+
+Returns an operating system dependent return code indicating successful operation, failure, or warning for `SUCCESS, FAILURE`, and `WARNING`, respectively. The default is `SUCCESS`.
+
+`value`
+
+ An integer value that is returned as the return code.
+
+`variable`
+
+ A variable created with the `DEFINE` command whose value is returned as the return code.
+
+`COMMIT | ROLLBACK`
+
+ If `COMMIT` is specified, uncommitted updates are committed upon exit. If `ROLLBACK` is specified, uncommitted updates are rolled back upon exit. The default is `COMMIT`.
+
+## GET
+
+The `GET` command loads the contents of the given file to the SQL buffer.
+
+```text
+GET filename[.ext ] [ LIS[T ] | NOL[IST ] ]
+```
+
+`filename[.ext ]`
+
+ `filename` is the name of the file to load into the SQL buffer. `ext` is the filename extension. If the filename extension is `sql`, then the `.sql` extension may be omitted when specifying `filename`. `GET` always assumes a `.sql` extension on filenames that are specified with no extension.
+
+`LIST | NOLIST`
+
+ If `LIST` is specified, the content of the SQL buffer is displayed after the file is loaded. If `NOLIST` is specified, no listing is displayed. The default is `LIST`.
+
+## HELP
+
+The `HELP` command obtains an index of topics or help on a specific topic. The question mark `(?)` is synonymous with specifying `HELP`.
+
+```text
+{ HELP | ? } { INDEX | topic }
+```
+
+`INDEX`
+
+ Displays an index of available topics.
+
+`topic`
+
+ The name of a specific topic – e.g., an EDB\*Plus command, for which help is desired.
+
+## HOST
+
+The `HOST` command executes an operating system command from EDB\*Plus.
+
+```text
+HO[ST ] [os_command]
+```
+
+`os_command`
+
+ The operating system command to be executed. If you do not provide an operating system command, EDB\*Plus pauses execution and opens a new shell prompt. When the shell exits, EDB\*Plus resumes execution.
+
+## INPUT
+
+The `INPUT` line editor command adds a line of text to the SQL buffer after the current line.
+
+```text
+I[NPUT ] text
+```
+
+The following sequence of `INPUT` commands constructs a `SELECT` command.
+
+```text
+SQL> INPUT SELECT empno, ename, job, sal, comm
+SQL> INPUT FROM emp
+SQL> INPUT WHERE deptno = 20
+SQL> INPUT ORDER BY empno
+SQL> LIST
+ 1 SELECT empno, ename, job, sal, comm
+ 2 FROM emp
+ 3 WHERE deptno = 20
+ 4* ORDER BY empno
+```
+
+## LIST
+
+`LIST` is a line editor command that displays the contents of the SQL buffer.
+
+```text
+L[IST] [ n | n m | n * | n L[AST] | * | * n | * L[AST] | L[AST] ]
+```
+
+The buffer does not include a history of the EDB\*Plus commands.
+
+`n`
+
+ `n` represents the buffer line number.
+
+`n m`
+
+ `n m` displays a list of lines between `n` and `m`.
+
+`n *`
+
+ `n *` displays a list of lines that range between line `n` and the current line.
+
+`n L[AST]`
+
+ `n L[AST]` displays a list of lines that range from line `n` through the last line in the buffer.
+
+`*`
+
+ `*` displays the current line.
+
+`* n`
+
+ `* n` displays a list of lines that range from the current line through line `n`.
+
+`* L[AST]`
+
+ `* L[AST]` displays a list of lines that range from the current line through the last line.
+
+`L[AST]`
+
+ `L[AST]` displays the last line.
+
+## PASSWORD
+
+Use the `PASSWORD` command to change your database password.
+
+```text
+PASSW[ORD] [user_name]
+```
+
+You must have sufficient privileges to use the `PASSWORD` command to change another user's password. The following example demonstrates using the `PASSWORD` command to change the password for a user named `acctg`:
+
+```text
+SQL> PASSWORD acctg
+Changing password for acctg
+ New password:
+ New password again:
+Password successfully changed.
+```
+
+## PAUSE
+
+The `PAUSE` command displays a message, and waits for the user to press `ENTER`.
+
+```text
+PAU[SE] [optional_text]
+```
+
+`optional_text` specifies the text that will be displayed to the user. If the `optional_text` is omitted, Advanced Server will display two blank lines. If you double quote the `optional_text` string, the quotes will be included in the output.
+
+## PROMPT
+
+The `PROMPT` command displays a message to the user before continuing.
+
+```text
+PRO[MPT] [message_text]
+```
+
+`message_text` specifies the text displayed to the user. Double quote the string to include quotes in the output.
+
+## QUIT
+
+The `QUIT` command terminates the session and returns control to the operating system. `QUIT` is a synonym for `EXIT`.
+
+```text
+QUIT
+
+[SUCCESS | FAILURE | WARNING | value | sub_variable]
+
+[COMMIT | ROLLBACK]
+```
+
+The default value is `QUIT SUCCESS COMMIT`.
+
+## REMARK
+
+Use `REMARK` to include comments in a script.
+
+```text
+REM[ARK] [optional_text]
+```
+
+You may also use the following convention to include a comment:
+
+```text
+/*
+ * This is an example of a three line comment.
+ */
+```
+
+## SAVE
+
+Use the `SAVE` command to write the SQL Buffer to an operating system file.
+
+```text
+SAV[E] file_name
+[CRE[ATE] | REP[LACE] | APP[END]]
+```
+
+`file_name`
+
+ `file_name` specifies the name of the file (including the path) where the buffer contents are written. If you do not provide a file extension, `.sql` is appended to the end of the file name.
+
+`CREATE`
+
+ Include the `CREATE` keyword to create a new file. A new file is created *only* if a file with the specified name does not already exist. This is the default.
+
+`REPLACE`
+
+ Include the `REPLACE` keyword to specify that Advanced Server should overwrite an existing file.
+
+`APPEND`
+
+ Include the `APPEND` keyword to specify that Advanced Server should append the contents of the SQL buffer to the end of the specified file.
+
+The following example saves the contents of the SQL buffer to a file named `example.sql`, located in the `temp` directory:
+
+```text
+SQL> SAVE C:\example.sql CREATE
+File "example.sql" written.
+```
+
+## SET
+
+Use the `SET` command to specify a value for a session level variable that controls EDB\*Plus behavior. The following forms of the `SET` command are valid:
+
+**SET AUTOCOMMIT**
+
+Use the `SET AUTOCOMMIT` command to specify commit behavior for Advanced Server transactions.
+
+```text
+SET AUTO[COMMIT]
+
+{ON | OFF | IMMEDIATE | statement_count}
+```
+
+Please note that EDB\*Plus always automatically commits DDL statements.
+
+`ON`
+
+ Specify `ON` to turn `AUTOCOMMIT` behavior on.
+
+`OFF`
+
+ Specify `OFF` to turn `AUTOCOMMIT` behavior off.
+
+`IMMEDIATE`
+
+ `IMMEDIATE` has the same effect as `ON`.
+
+`statement_count`
+
+ Include a value for `statement_count` to instruct EDB\*Plus to issue a commit after the specified count of successful SQL statements.
+
+**SET COLUMN SEPARATOR**
+
+Use the `SET COLUMN SEPARATOR` command to specify the text that Advanced Server displays between columns.
+
+```text
+SET COLSEP column_separator
+```
+
+The default value of `column_separator` is a single space.
+
+**SET ECHO**
+
+Use the `SET ECHO` command to specify if SQL and EDB\*Plus script statements should be displayed onscreen as they are executed.
+
+```text
+SET ECHO {ON | OFF}
+```
+
+The default value is `OFF`.
+
+**SET FEEDBACK**
+
+The `SET FEEDBACK` command controls the display of interactive information after a SQL statement executes.
+
+```text
+SET FEED[BACK] {ON | OFF | row_threshold}
+```
+
+`row_threshold`
+
+ Specify an integer value for `row_threshold`. Setting `row_threshold` to `0` is same as setting `FEEDBACK` to `OFF`. Setting `row_threshold` equal `1` effectively sets `FEEDBACK` to `ON`.
+
+**SET FLUSH**
+
+Use the `SET FLUSH` command to control display buffering.
+
+```text
+SET FLU[SH] {ON | OFF}
+```
+
+Set `FLUSH` to `OFF` to enable display buffering. If you enable buffering, messages bound for the screen may not appear until the script completes. Please note that setting `FLUSH` to `OFF` will offer better performance.
+
+Set `FLUSH` to `ON` to disable display buffering. If you disable buffering, messages bound for the screen appear immediately.
+
+**SET HEADING**
+
+Use the `SET HEADING` variable to specify if Advanced Server should display column headings for `SELECT` statements.
+
+```text
+SET HEA[DING] {ON | OFF}
+```
+
+**SET HEAD SEPARATOR**
+
+The `SET HEADSEP` command sets the new heading separator character used by the `COLUMN HEADING` command. The default is `'|'`.
+
+```text
+SET HEADS[EP]
+```
+
+**SET LINESIZE**
+
+Use the `SET LINESIZE` command to specify the width of a line in characters.
+
+```text
+SET LIN[ESIZE] width_of_line
+```
+
+`width_of_line`
+
+ The default value of `width_of_line` is `132`.
+
+**SET NEWPAGE**
+
+Use the `SET NEWPAGE` command to specify how many blank lines are printed after a page break.
+
+```text
+SET NEWP[AGE] lines_per_page
+```
+
+`lines_per_page`
+
+ The default value of `lines_per_page` is `1`.
+
+**SET NULL**
+
+Use the `SET NULL` command to specify a string that is displayed to the user when a `NULL` column value is displayed in the output buffer.
+
+```text
+SET NULL null_string
+```
+
+**SET PAGESIZE**
+
+Use the `SET PAGESIZE` command to specify the number of printed lines that fit on a page.
+
+```text
+SET PAGES[IZE] line_count
+```
+
+Use the `line_count` parameter to specify the number of lines per page.
+
+**SET SQLCASE**
+
+The `SET SQLCASE` command specifies if SQL statements transmitted to the server should be converted to upper or lower case.
+
+```text
+SET SQLC[ASE] {MIX[ED] | UP[PER] | LO[WER]}
+```
+
+`UPPER`
+
+ Specify `UPPER` to convert the command text to uppercase.
+
+`LOWER`
+
+ Specify `LOWER` to convert the command text to lowercase.
+
+`MIXED`
+
+ Specify `MIXED` to leave the case of SQL commands unchanged. The default is `MIXED`.
+
+**SET PAUSE**
+
+The `SET PAUSE` command is most useful when included in a script; the command displays a prompt and waits for the user to press `Return`.
+
+```text
+SET PAU[SE] {ON | OFF}
+```
+
+If `SET PAUSE` is `ON`, the message `Hit ENTER to continue…` will be displayed before each command is executed.
+
+**SET SPACE**
+
+Use the `SET SPACE` command to specify the number of spaces to display between columns:
+
+```text
+SET SPACE number_of_spaces
+```
+
+**SET SQLPROMPT**
+
+Use `SET SQLPROMPT` to set a value for a user-interactive prompt:
+
+```text
+SET SQLP[ROMPT] "prompt"
+```
+
+By default, `SQLPROMPT` is set to `"SQL> "`
+
+**SET TERMOUT**
+
+Use the `SET TERMOUT` command to specify if command output should be displayed onscreen.
+
+```text
+SET TERM[OUT] {ON | OFF}
+```
+
+**SET TIMING**
+
+The `SET TIMING` command specifies if Advanced Server should display the execution time for each SQL statement after it is executed.
+
+```text
+SET TIMI[NG] {ON | OFF}
+```
+
+**SET TRIMSPOOL**
+
+Use the `SET TRIMSPOOL` command to remove trailing spaces from each line in the output file specified by the `SPOOL` command.
+
+```text
+SET TRIMS[POOL] {ON | OFF}
+```
+
+The default value is `OFF`.
+
+**SET VERIFY**
+
+Specifies if both the old and new values of a SQL statement are displayed when a substitution variable is encountered.
+
+```text
+SET VER[IFY] { ON | OFF }
+```
+
+## SHOW
+
+Use the `SHOW` command to display current parameter values.
+
+```text
+SHO[W] {ALL | parameter_name}
+```
+
+Display the current parameter settings by including the `ALL` keyword:
+
+```Text
+SQL> SHOW ALL
+autocommit OFF
+colsep " "
+define "&"
+echo OFF
+FEEDBACK ON for 6 row(s).
+flush ON
+heading ON
+headsep "|"
+linesize 78
+newpage 1
+null " "
+pagesize 14
+pause OFF
+serveroutput OFF
+spool OFF
+sqlcase MIXED
+sqlprompt "SQL> "
+sqlterminator ";"
+suffix ".sql"
+termout ON
+timing OFF
+verify ON
+USER is "enterprisedb"
+HOST is "localhost"
+PORT is "5444"
+DATABASE is "edb"
+VERSION is "11.0.0"
+```
+
+Or display a specific parameter setting by including the `parameter_name` in the `SHOW` command:
+
+```text
+SQL> SHOW VERSION
+VERSION is "11.0.0"
+```
+
+## SPOOL
+
+The `SPOOL` command sends output from the display to a file.
+
+```text
+SP[OOL] output_file | OFF
+```
+
+Use the `output_file` parameter to specify a path name for the output file.
+
+## START
+
+Use the `START` command to run an EDB\*Plus script file; `START` is an alias for `@` command.
+
+```text
+STA[RT] script_file
+```
+
+Specify the name of a script file in the `script_file` parameter.
+
+## UNDEFINE
+
+The `UNDEFINE` command erases a user variable created by the `DEFINE` command.
+
+```text
+UNDEF[INE] variable_name [ variable_name...]
+```
+
+Use the `variable_name` parameter to specify the name of a variable or variables.
+
+## WHENEVER SQLERROR
+
+The `WHENEVER SQLERROR` command provides error handling for SQL errors or PL/SQL block errors. The syntax is:
+
+```text
+WHENEVER SQLERROR
+ {CONTINUE[COMMIT|ROLLBACK|NONE]
+ |EXIT[SUCCESS|FAILURE|WARNING|n|sub_variable]
+ [COMMIT|ROLLBACK]}
+```
+
+If Advanced Server encounters an error during the execution of a SQL command or PL/SQL block, EDB\*Plus performs the action specified in the `WHENEVER SQLERROR` command:
+
+ Include the `CONTINUE` clause to instruct EDB\*Plus to perform the specified action before continuing.
+
+ Include the `COMMIT` clause to instruct EDB\*Plus to `COMMIT` the current transaction before exiting or continuing.
+
+ Include the `ROLLBACK` clause to instruct EDB\*Plus to `ROLLBACK` the current transaction before exiting or continuing.
+
+ Include the `NONE` clause to instruct EDB\*Plus to continue without committing or rolling back the transaction.
+
+ Include the `EXIT` clause to instruct EDB\*Plus to perform the specified action and exit if it encounters an error.
+
+ Use the following options to specify a status code that EDB\*Plus will return before exiting:
+
+```text
+[SUCCESS|FAILURE|WARNING|n|sub_variable]
+```
+
+ Please note that EDB\*Plus supports substitution variables, but does not support bind variables.
diff --git a/product_docs/docs/epas/11/edb_plus/images/advanced_server_installation_details.png b/product_docs/docs/epas/11/edb_plus/images/advanced_server_installation_details.png
new file mode 100755
index 00000000000..3638e7d551f
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/advanced_server_installation_details.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a9c152dfd15132f11750917e10b0a8dd3646bfcf5f4d9a3525066f68ebd807d3
+size 19239
diff --git a/product_docs/docs/epas/11/edb_plus/images/edb_logo.png b/product_docs/docs/epas/11/edb_plus/images/edb_logo.png
new file mode 100644
index 00000000000..f4a93cf57f5
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/edb_logo.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:07423b012a855204780fe5a2a5a1e33607304a5c3020ae4acbf3d575691dedd6
+size 12136
diff --git a/product_docs/docs/pem/7.16/pem_online_help/images/edb_logo.svg b/product_docs/docs/epas/11/edb_plus/images/edb_logo.svg
similarity index 100%
rename from product_docs/docs/pem/7.16/pem_online_help/images/edb_logo.svg
rename to product_docs/docs/epas/11/edb_plus/images/edb_logo.svg
diff --git a/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome.png b/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome.png
new file mode 100755
index 00000000000..c526c78eabf
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4f557131b686992e3d8a9f7d0f40ddd14dcdde8a6ee7fb90af3ef57860194024
+size 56911
diff --git a/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome_1.png b/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome_1.png
new file mode 100755
index 00000000000..ea2a26270ab
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/edb_plus_welcome_1.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2b1c56ab042cb3f2ea94a6fc8177bb9176fdd0bc42ca36e23c43594993dd6637
+size 34974
diff --git a/product_docs/docs/epas/11/edb_plus/images/installation_complete.png b/product_docs/docs/epas/11/edb_plus/images/installation_complete.png
new file mode 100755
index 00000000000..30281ba5583
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/installation_complete.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3836a996fa7052af22f4a23e24903594d4edf866c3e2696a6cbc0de8f1db4e03
+size 37674
diff --git a/product_docs/docs/epas/11/edb_plus/images/installation_directory.png b/product_docs/docs/epas/11/edb_plus/images/installation_directory.png
new file mode 100755
index 00000000000..0e4ab726341
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/installation_directory.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7c9a3d397f6c345f80a95362c407c1b72b0414c5934a8e8ef20d6c04a4980469
+size 71722
diff --git a/product_docs/docs/epas/11/edb_plus/images/ready_to_install.png b/product_docs/docs/epas/11/edb_plus/images/ready_to_install.png
new file mode 100755
index 00000000000..a73f573adc5
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/images/ready_to_install.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:ddd7dc4e8a4a8e40f9194e5f7971d3fc01c9c6130de1d3a62fc528a2a018c666
+size 15785
diff --git a/product_docs/docs/epas/11/edb_plus/index.mdx b/product_docs/docs/epas/11/edb_plus/index.mdx
new file mode 100644
index 00000000000..f70ddcd686d
--- /dev/null
+++ b/product_docs/docs/epas/11/edb_plus/index.mdx
@@ -0,0 +1,31 @@
+---
+navTitle: EDB*Plus — CLI
+title: "EDB*Plus User's Guide"
+
+#legacyRedirects:
+ #- "/edb-docs/p/edbplus/37"
+ #- "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/37/introduction.html"
+ #- "/edb-docs/d/edbplus/user-guides/edbplus-users-guide/37/conclusion.html"
+
+directoryDefaults:
+ description: "EDB*Plus Documentation and release notes."
+---
+
+This guide describes how to connect to an Advanced Server database using EDB\*Plus. EDB\*Plus provides a command line user interface to EDB Postgres Advanced Server that accepts SQL commands that allow you to:
+
+- Query certain database objects
+- Execute stored procedures
+- Format output from SQL commands
+- Execute batch scripts
+- Execute OS commands
+- Record output
+
+For detailed information about the features supported by Advanced Server, consult the complete library of Advanced Server guides available at:
+
+
+
+
+
+introduction edb_plus installing_edb_plus using_edb_plus using_edb_plus_with_ssl command_summary conclusion
+
+
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/01_package_components.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/01_package_components.mdx
new file mode 100644
index 00000000000..c9121f99266
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/01_package_components.mdx
@@ -0,0 +1,380 @@
+---
+title: "Package Components"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/package_components.html"
+---
+
+Packages consist of two main components:
+
+- The *package specification*: This is the public interface, (these are the elements which can be referenced outside the package). We declare all database objects that are to be a part of our package within the specification.
+- The *package body*: This contains the actual implementation of all the database objects declared within the package specification.
+
+The package body implements the specifications in the package specification. It contains implementation details and private declarations which are invisible to the application. You can debug, enhance or replace a package body without changing the specifications. Similarly, you can change the body without recompiling the calling programs because the implementation details are invisible to the application.
+
+## Package Specification Syntax
+
+The package specification defines the user interface for a package (the API). The specification lists the functions, procedures, types, exceptions and cursors that are visible to a user of the package.
+
+The syntax used to define the interface for a package is:
+
+```text
+CREATE [ OR REPLACE ] PACKAGE
+ [ ]
+ { IS | AS }
+ [ ; ] ...
+ [ ] ...
+END [ ] ;
+```
+
+Where `authorization_clause` :=
+
+```text
+{ AUTHID DEFINER } | { AUTHID CURRENT_USER }
+```
+
+Where `procedure_or_function_declaration` :=
+
+```text
+procedure_declaration | function_declaration
+```
+
+Where `procedure_declaration` :=
+
+```text
+PROCEDURE proc_name [ argument_list ];
+[ restriction_pragma; ]
+```
+
+Where `function_declaration` :=
+
+```text
+FUNCTION func_name [ argument_list ]
+ RETURN rettype [ DETERMINISTIC ];
+[ restriction_pragma; ]
+```
+
+Where `argument_list` :=
+
+```text
+( argument_declaration [, ...] )
+```
+
+Where `argument_declaration` :=
+
+```text
+argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
+```
+
+Where `restriction_pragma` :=
+
+```text
+PRAGMA RESTRICT_REFERENCES(name, restrictions)
+```
+
+Where `restrictions` :=
+
+```text
+restriction [, ... ]
+```
+
+**Parameters**
+
+`package_name`
+
+ `package_name` is an identifier assigned to the package - each package must have a name unique within the schema.
+
+`AUTHID DEFINER`
+
+ If you omit the `AUTHID` clause or specify `AUTHID DEFINER`, the privileges of the package owner are used to determine access privileges to database objects.
+
+`AUTHID CURRENT_USER`
+
+ If you specify `AUTHID CURRENT_USER`, the privileges of the current user executing a program in the package are used to determine access privileges.
+
+`declaration`
+
+ `declaration` is an identifier of a public variable. A public variable can be accessed from outside of the package using the syntax `package_name.variable`. There can be zero, one, or more public variables. Public variable definitions must come before procedure or function declarations.
+
+ `declaration` can be any of the following:
+
+- Variable Declaration
+- Record Declaration
+- Collection Declaration
+- `REF CURSOR` and Cursor Variable Declaration
+- `TYPE` Definitions for Records, Collections, and `REF CURSORs`
+- Exception
+- Object Variable Declaration
+
+`proc_name`
+
+ The name of a public procedure.
+
+`argname`
+
+ The name of an argument. The argument is referenced by this name within the function or procedure body.
+
+`IN | IN OUT | OUT`
+
+ The argument mode. `IN` declares the argument for input only. This is the default. `IN OUT` allows the argument to receive a value as well as return a value. `OUT` specifies the argument is for output only.
+
+`argtype`
+
+ The data type(s) of an argument. An argument type may be a base data type, a copy of the type of an existing column using `%TYPE`, or a user-defined type such as a nested table or an object type. A length must not be specified for any base type - for example, specify `VARCHAR2`, not `VARCHAR2(10`).
+
+ The type of a column is referenced by writing `tablename.columnname` `%TYPE`; using this can sometimes help make a procedure independent from changes to the definition of a table.
+
+`DEFAULT value`
+
+ The `DEFAULT` clause supplies a default value for an input argument if one is not supplied in the invocation. `DEFAULT` may not be specified for arguments with modes `IN OUT` or `OUT`.
+
+`func_name`
+
+ The name of a public function.
+
+`rettype`
+
+ The return data type.
+
+`DETERMINISTIC`
+
+ `DETERMINISTIC` is a synonym for `IMMUTABLE`. A `DETERMINISTIC` function cannot modify the database and always reaches the same result when given the same argument values; it does not do database lookups or otherwise use information not directly present in its argument list. If you include this clause, any call of the function with all-constant arguments can be immediately replaced with the function value.
+
+`restriction`
+
+ The following keywords are accepted for compatibility and ignored:
+
+ `RNDS`
+
+ `RNPS`
+
+ `TRUST`
+
+ `WNDS`
+
+ `WNPS`
+
+## Package Body Syntax
+
+Package implementation details reside in the package body; the package body may contain objects that are not visible to the package user. Advanced Server supports the following syntax for the package body:
+
+```text
+CREATE [ OR REPLACE ] PACKAGE BODY
+ { IS | AS }
+ [ ; ] ...
+ [ ] ...
+ [ ]
+END [ ] ;
+```
+
+Where `procedure_or_function_definition` :=
+
+```text
+procedure_definition | function_definition
+```
+
+Where `procedure_definition` :=
+
+```text
+PROCEDURE proc_name[ argument_list ]
+ [ options_list ]
+ { IS | AS }
+ procedure_body
+ END [ proc_name ] ;
+```
+
+Where `procedure_body` :=
+
+```text
+[ PRAGMA AUTONOMOUS_TRANSACTION; ]
+[ declaration; ] [, ...]
+BEGIN
+ statement; [...]
+[ EXCEPTION
+ { WHEN exception [OR exception] [...]] THEN statement; }
+ [...]
+]
+```
+
+Where `function_definition` :=
+
+```text
+FUNCTION func_name [ argument_list ]
+ RETURN rettype [ DETERMINISTIC ]
+ [ options_list ]
+ { IS | AS }
+ function_body
+ END [ func_name ] ;
+```
+
+Where `function_body` :=
+
+```text
+[ PRAGMA AUTONOMOUS_TRANSACTION; ]
+[ declaration; ] [, ...]
+BEGIN
+ statement; [...]
+[ EXCEPTION
+ { WHEN exception [ OR exception ] [...] THEN statement; }
+ [...]
+]
+```
+
+Where `argument_list` :=
+
+```text
+( argument_declaration [, ...] )
+```
+
+Where `argument_declaration` :=
+
+```text
+argname [ IN | IN OUT | OUT ] argtype [ DEFAULT value ]
+```
+
+Where `options_list` :=
+
+```text
+option [ ... ]
+```
+
+Where `option` :=
+
+```text
+STRICT
+LEAKPROOF
+PARALLEL { UNSAFE | RESTRICTED | SAFE }
+COST execution_cost
+ROWS result_rows
+SET config_param { TO value | = value | FROM CURRENT }
+```
+
+Where `package_initializer` :=
+
+```text
+BEGIN
+ statement; [...]
+END;
+```
+
+**Parameters**
+
+`package_name`
+
+ `package_name` is the name of the package for which this is the package body. There must be an existing package specification with this name.
+
+`private_declaration`
+
+ `private_declaration` is an identifier of a private variable that can be accessed by any procedure or function within the package. There can be zero, one, or more private variables. `private_declaration` can be any of the following:
+
+- Variable Declaration
+- Record Declaration
+- Collection Declaration
+- `REF CURSOR` and Cursor Variable Declaration
+- `TYPE` Definitions for Records, Collections, and `REF CURSORs`
+- Exception
+- Object Variable Declaration
+
+`proc_name`
+
+ The name of the procedure being created.
+
+`PRAGMA AUTONOMOUS_TRANSACTION`
+
+ `PRAGMA AUTONOMOUS_TRANSACTION` is the directive that sets the procedure as an autonomous transaction.
+
+`declaration`
+
+ A variable, type, `REF CURSOR`, or subprogram declaration. If subprogram declarations are included, they must be declared after all other variable, type, and `REF CURSOR` declarations.
+
+`statement`
+
+ An SPL program statement. Note that a `DECLARE - BEGIN - END` block is considered an SPL statement unto itself. Thus, the function body may contain nested blocks.
+
+`exception`
+
+ An exception condition name such as `NO_DATA_FOUND, OTHERS`, etc.
+
+`func_name`
+
+ The name of the function being created.
+
+`rettype`
+
+ The return data type, which may be any of the types listed for `argtype`. As for `argtype`, a length must not be specified for `rettype`.
+
+`DETERMINISTIC`
+
+ Include `DETERMINISTIC` to specify that the function will always return the same result when given the same argument values. A `DETERMINISTIC` function must not modify the database.
+
+ **Note**: The `DETERMINISTIC` keyword is equivalent to the PostgreSQL `IMMUTABLE` option.
+
+ **Note**: If `DETERMINISTIC` is specified for a public function in the package body, it must also be specified for the function declaration in the package specification. (For private functions, there is no function declaration in the package specification.)
+
+`PRAGMA AUTONOMOUS_TRANSACTION`
+
+ `PRAGMA AUTONOMOUS_TRANSACTION` is the directive that sets the function as an autonomous transaction.
+
+`argname`
+
+ The name of a formal argument. The argument is referenced by this name within the procedure body.
+
+`IN | IN OUT | OUT`
+
+ The argument mode. `IN` declares the argument for input only. This is the default. `IN OUT` allows the argument to receive a value as well as return a value. `OUT` specifies the argument is for output only.
+
+`argtype`
+
+ The data type(s) of an argument. An argument type may be a base data type, a copy of the type of an existing column using `%TYPE`, or a user-defined type such as a nested table or an object type. A length must not be specified for any base type - for example, specify `VARCHAR2`, not `VARCHAR2(10)`.
+
+ The type of a column is referenced by writing `tablename.columnname%TYPE`; using this can sometimes help make a procedure independent from changes to the definition of a table.
+
+`DEFAULT value`
+
+ The `DEFAULT` clause supplies a default value for an input argument if one is not supplied in the procedure call. `DEFAULT` may not be specified for arguments with modes `IN OUT` or `OUT`.
+
+ Please note: The following options are not compatible with Oracle databases; they are extensions to Oracle package syntax provided by Advanced Server only.
+
+`STRICT`
+
+ The `STRICT` keyword specifies that the function will not be executed if called with a `NULL` argument; instead the function will return `NULL`.
+
+`LEAKPROOF`
+
+ The `LEAKPROOF` keyword specifies that the function will not reveal any information about arguments, other than through a return value.
+
+`PARALLEL { UNSAFE | RESTRICTED | SAFE }`
+
+ The `PARALLEL` clause enables the use of parallel sequential scans (parallel mode). A parallel sequential scan uses multiple workers to scan a relation in parallel during a query in contrast to a serial sequential scan.
+
+ When set to `UNSAFE`, the procedure or function cannot be executed in parallel mode. The presence of such a procedure or function forces a serial execution plan. This is the default setting if the `PARALLEL` clause is omitted.
+
+ When set to `RESTRICTED`, the procedure or function can be executed in parallel mode, but the execution is restricted to the parallel group leader. If the qualification for any particular relation has anything that is parallel restricted, that relation won't be chosen for parallelism.
+
+ When set to `SAFE`, the procedure or function can be executed in parallel mode with no restriction.
+
+`execution_cost`
+
+ `execution_cost` specifies a positive number giving the estimated execution cost for the function, in units of `cpu_operator_cost`. If the function returns a set, this is the cost per returned row. The default is `0.0025`.
+
+`result_rows`
+
+ `result_rows` is the estimated number of rows that the query planner should expect the function to return. The default is `1000`.
+
+`SET`
+
+ Use the `SET` clause to specify a parameter value for the duration of the function:
+
+ `config_param` specifies the parameter name.
+
+ `value` specifies the parameter value.
+
+ `FROM CURRENT` guarantees that the parameter value is restored when the function ends.
+
+`package_initializer`
+
+ The statements in the `package_initializer` are executed once per user’s session when the package is first referenced.
+
+!!! Note
+ The `STRICT, LEAKPROOF, PARALLEL, COST, ROWS` and `SET` keywords provide extended functionality for Advanced Server and are not supported by Oracle.
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/02_creating_packages.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/02_creating_packages.mdx
new file mode 100644
index 00000000000..d009f08287b
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/02_creating_packages.mdx
@@ -0,0 +1,136 @@
+---
+title: "Creating Packages"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/creating_packages.html"
+---
+
+A package is not an executable piece of code; rather it is a repository of code. When you use a package, you actually execute or make reference to an element within a package.
+
+## Creating the Package Specification
+
+The package specification contains the definition of all the elements in the package that can be referenced from outside of the package. These are called the public elements of the package, and they act as the package interface. The following code sample is a package specification:
+
+```text
+--
+-- Package specification for the 'emp_admin' package.
+--
+CREATE OR REPLACE PACKAGE emp_admin
+IS
+ FUNCTION get_dept_name (
+ p_deptno NUMBER DEFAULT 10
+ )
+ RETURN VARCHAR2;
+ FUNCTION update_emp_sal (
+ p_empno NUMBER,
+ p_raise NUMBER
+ )
+ RETURN NUMBER;
+ PROCEDURE hire_emp (
+ p_empno NUMBER,
+ p_ename VARCHAR2,
+ p_job VARCHAR2,
+ p_sal NUMBER,
+ p_hiredate DATE DEFAULT sysdate,
+ p_comm NUMBER DEFAULT 0,
+ p_mgr NUMBER,
+ p_deptno NUMBER DEFAULT 10
+ );
+ PROCEDURE fire_emp (
+ p_empno NUMBER
+ );
+END emp_admin;
+```
+
+This code sample creates the `emp_admin` package specification. This package specification consists of two functions and two stored procedures. We can also add the `OR REPLACE` clause to the `CREATE PACKAGE` statement for convenience.
+
+## Creating the Package Body
+
+The body of the package contains the actual implementation behind the package specification. For the above `emp_admin` package specification, we shall now create a package body which will implement the specifications. The body will contain the implementation of the functions and stored procedures in the specification.
+
+```text
+--
+-- Package body for the 'emp_admin' package.
+--
+CREATE OR REPLACE PACKAGE BODY emp_admin
+IS
+ --
+ -- Function that queries the 'dept' table based on the department
+ -- number and returns the corresponding department name.
+ --
+ FUNCTION get_dept_name (
+ p_deptno IN NUMBER DEFAULT 10
+ )
+ RETURN VARCHAR2
+ IS
+ v_dname VARCHAR2(14);
+ BEGIN
+ SELECT dname INTO v_dname FROM dept WHERE deptno = p_deptno;
+ RETURN v_dname;
+ EXCEPTION
+ WHEN NO_DATA_FOUND THEN
+ DBMS_OUTPUT.PUT_LINE('Invalid department number ' || p_deptno);
+ RETURN '';
+ END;
+ --
+ -- Function that updates an employee's salary based on the
+ -- employee number and salary increment/decrement passed
+ -- as IN parameters. Upon successful completion the function
+ -- returns the new updated salary.
+ --
+ FUNCTION update_emp_sal (
+ p_empno IN NUMBER,
+ p_raise IN NUMBER
+ )
+ RETURN NUMBER
+ IS
+ v_sal NUMBER := 0;
+ BEGIN
+ SELECT sal INTO v_sal FROM emp WHERE empno = p_empno;
+ v_sal := v_sal + p_raise;
+ UPDATE emp SET sal = v_sal WHERE empno = p_empno;
+ RETURN v_sal;
+ EXCEPTION
+ WHEN NO_DATA_FOUND THEN
+ DBMS_OUTPUT.PUT_LINE('Employee ' || p_empno || ' not found');
+ RETURN -1;
+ WHEN OTHERS THEN
+ DBMS_OUTPUT.PUT_LINE('The following is SQLERRM:');
+ DBMS_OUTPUT.PUT_LINE(SQLERRM);
+ DBMS_OUTPUT.PUT_LINE('The following is SQLCODE:');
+ DBMS_OUTPUT.PUT_LINE(SQLCODE);
+ RETURN -1;
+ END;
+ --
+ -- Procedure that inserts a new employee record into the 'emp' table.
+ --
+ PROCEDURE hire_emp (
+ p_empno NUMBER,
+ p_ename VARCHAR2,
+ p_job VARCHAR2,
+ p_sal NUMBER,
+ p_hiredate DATE DEFAULT sysdate,
+ p_comm NUMBER DEFAULT 0,
+ p_mgr NUMBER,
+ p_deptno NUMBER DEFAULT 10
+ )
+ AS
+ BEGIN
+ INSERT INTO emp(empno, ename, job, sal, hiredate, comm, mgr, deptno)
+ VALUES(p_empno, p_ename, p_job, p_sal,
+ p_hiredate, p_comm, p_mgr, p_deptno);
+ END;
+ --
+ -- Procedure that deletes an employee record from the 'emp' table based
+ -- on the employee number.
+ --
+ PROCEDURE fire_emp (
+ p_empno NUMBER
+ )
+ AS
+ BEGIN
+ DELETE FROM emp WHERE empno = p_empno;
+ END;
+END;
+```
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/03_referencing_a_package.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/03_referencing_a_package.mdx
new file mode 100644
index 00000000000..c2f3c6b5106
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/03_referencing_a_package.mdx
@@ -0,0 +1,23 @@
+---
+title: "Referencing a Package"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/referencing_a_package.html"
+---
+
+To reference the types, items and subprograms that are declared within a package specification, we use the dot notation. For example:
+
+`package_name.type_name`
+
+`package_name.item_name`
+
+`package_name.subprogram_name`
+
+To invoke a function from the `emp_admin` package specification, we will execute the following SQL command.
+
+```text
+SELECT emp_admin.get_dept_name(10) FROM DUAL;
+```
+
+Here we are invoking the `get_dept_name` function declared within the package `emp_admin`. We are passing the department number as an argument to the function, which will return the name of the department. Here the value returned should be `ACCOUNTING`, which corresponds to department number `10`.
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/04_using_packages_with_user_defined_types.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/04_using_packages_with_user_defined_types.mdx
new file mode 100644
index 00000000000..328388a8908
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/04_using_packages_with_user_defined_types.mdx
@@ -0,0 +1,182 @@
+---
+title: "Using Packages With User Defined Types"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/using_packages_with_user_defined_types.html"
+---
+
+The following example incorporates the various user-defined types discussed in earlier chapters within the context of a package.
+
+The package specification of `emp_rpt` shows the declaration of a record type, `emprec_typ`, and a weakly-typed `REF CURSOR, emp_refcur`, as publicly accessible along with two functions and two procedures. Function, `open_emp_by_dept`, returns the `REF CURSOR` type, `EMP_REFCUR`. Procedures, `fetch_emp` and `close_refcur`, both declare a weakly-typed `REF CURSOR` as a formal parameter.
+
+```text
+CREATE OR REPLACE PACKAGE emp_rpt
+IS
+ TYPE emprec_typ IS RECORD (
+ empno NUMBER(4),
+ ename VARCHAR(10)
+ );
+ TYPE emp_refcur IS REF CURSOR;
+
+ FUNCTION get_dept_name (
+ p_deptno IN NUMBER
+ ) RETURN VARCHAR2;
+ FUNCTION open_emp_by_dept (
+ p_deptno IN emp.deptno%TYPE
+ ) RETURN EMP_REFCUR;
+ PROCEDURE fetch_emp (
+ p_refcur IN OUT SYS_REFCURSOR
+ );
+ PROCEDURE close_refcur (
+ p_refcur IN OUT SYS_REFCURSOR
+ );
+END emp_rpt;
+```
+
+The package body shows the declaration of several private variables - a static cursor, `dept_cur`, a table type, `depttab_typ`, a table variable, `t_dept`, an integer variable, `t_dept_max`, and a record variable, `r_emp`.
+
+```text
+CREATE OR REPLACE PACKAGE BODY emp_rpt
+IS
+ CURSOR dept_cur IS SELECT * FROM dept;
+ TYPE depttab_typ IS TABLE of dept%ROWTYPE
+ INDEX BY BINARY_INTEGER;
+ t_dept DEPTTAB_TYP;
+ t_dept_max INTEGER := 1;
+ r_emp EMPREC_TYP;
+
+ FUNCTION get_dept_name (
+ p_deptno IN NUMBER
+ ) RETURN VARCHAR2
+ IS
+ BEGIN
+ FOR i IN 1..t_dept_max LOOP
+ IF p_deptno = t_dept(i).deptno THEN
+ RETURN t_dept(i).dname;
+ END IF;
+ END LOOP;
+ RETURN 'Unknown';
+ END;
+
+ FUNCTION open_emp_by_dept(
+ p_deptno IN emp.deptno%TYPE
+ ) RETURN EMP_REFCUR
+ IS
+ emp_by_dept EMP_REFCUR;
+ BEGIN
+ OPEN emp_by_dept FOR SELECT empno, ename FROM emp
+ WHERE deptno = p_deptno;
+ RETURN emp_by_dept;
+ END;
+
+ PROCEDURE fetch_emp (
+ p_refcur IN OUT SYS_REFCURSOR
+ )
+ IS
+ BEGIN
+ DBMS_OUTPUT.PUT_LINE('EMPNO ENAME');
+ DBMS_OUTPUT.PUT_LINE('----- -------');
+ LOOP
+ FETCH p_refcur INTO r_emp;
+ EXIT WHEN p_refcur%NOTFOUND;
+ DBMS_OUTPUT.PUT_LINE(r_emp.empno || ' ' || r_emp.ename);
+ END LOOP;
+ END;
+
+ PROCEDURE close_refcur (
+ p_refcur IN OUT SYS_REFCURSOR
+ )
+ IS
+ BEGIN
+ CLOSE p_refcur;
+ END;
+BEGIN
+ OPEN dept_cur;
+ LOOP
+ FETCH dept_cur INTO t_dept(t_dept_max);
+ EXIT WHEN dept_cur%NOTFOUND;
+ t_dept_max := t_dept_max + 1;
+ END LOOP;
+ CLOSE dept_cur;
+ t_dept_max := t_dept_max - 1;
+END emp_rpt;
+```
+
+This package contains an initialization section that loads the private table variable, `t_dept`, using the private static cursor, `dept_cur.t_dept` serves as a department name lookup table in function, `get_dept_name`.
+
+Function, `open_emp_by_dept` returns a `REF CURSOR` variable for a result set of employee numbers and names for a given department. This `REF CURSOR` variable can then be passed to procedure, `fetch_emp`, to retrieve and list the individual rows of the result set. Finally, procedure, `close_refcur`, can be used to close the `REF CURSOR` variable associated with this result set.
+
+The following anonymous block runs the package function and procedures. In the anonymous block's declaration section, note the declaration of cursor variable, `v_emp_cur`, using the package’s public `REF CURSOR` type, `EMP_REFCUR. v_emp_cur` contains the pointer to the result set that is passed between the package function and procedures.
+
+```text
+DECLARE
+ v_deptno dept.deptno%TYPE DEFAULT 30;
+ v_emp_cur emp_rpt.EMP_REFCUR;
+BEGIN
+ v_emp_cur := emp_rpt.open_emp_by_dept(v_deptno);
+ DBMS_OUTPUT.PUT_LINE('EMPLOYEES IN DEPT #' || v_deptno ||
+ ': ' || emp_rpt.get_dept_name(v_deptno));
+ emp_rpt.fetch_emp(v_emp_cur);
+ DBMS_OUTPUT.PUT_LINE('**********************');
+ DBMS_OUTPUT.PUT_LINE(v_emp_cur%ROWCOUNT || ' rows were retrieved');
+ emp_rpt.close_refcur(v_emp_cur);
+END;
+```
+
+The following is the result of this anonymous block.
+
+```text
+EMPLOYEES IN DEPT #30: SALES
+EMPNO ENAME
+----- -------
+7499 ALLEN
+7521 WARD
+7654 MARTIN
+7698 BLAKE
+7844 TURNER
+7900 JAMES
+**********************
+6 rows were retrieved
+```
+
+The following anonymous block illustrates another means of achieving the same result. Instead of using the package procedures, `fetch_emp` and `close_refcur`, the logic of these programs is coded directly into the anonymous block. In the anonymous block’s declaration section, note the addition of record variable, `r_emp`, declared using the package’s public record type, `EMPREC_TYP`.
+
+```text
+DECLARE
+ v_deptno dept.deptno%TYPE DEFAULT 30;
+ v_emp_cur emp_rpt.EMP_REFCUR;
+ r_emp emp_rpt.EMPREC_TYP;
+BEGIN
+ v_emp_cur := emp_rpt.open_emp_by_dept(v_deptno);
+ DBMS_OUTPUT.PUT_LINE('EMPLOYEES IN DEPT #' || v_deptno ||
+ ': ' || emp_rpt.get_dept_name(v_deptno));
+ DBMS_OUTPUT.PUT_LINE('EMPNO ENAME');
+ DBMS_OUTPUT.PUT_LINE('----- -------');
+ LOOP
+ FETCH v_emp_cur INTO r_emp;
+ EXIT WHEN v_emp_cur%NOTFOUND;
+ DBMS_OUTPUT.PUT_LINE(r_emp.empno || ' ' ||
+ r_emp.ename);
+ END LOOP;
+ DBMS_OUTPUT.PUT_LINE('**********************');
+ DBMS_OUTPUT.PUT_LINE(v_emp_cur%ROWCOUNT || ' rows were retrieved');
+ CLOSE v_emp_cur;
+END;
+```
+
+The following is the result of this anonymous block.
+
+```text
+EMPLOYEES IN DEPT #30: SALES
+EMPNO ENAME
+----- -------
+7499 ALLEN
+7521 WARD
+7654 MARTIN
+7698 BLAKE
+7844 TURNER
+7900 JAMES
+**********************
+6 rows were retrieved
+```
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/05_dropping_a_package.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/05_dropping_a_package.mdx
new file mode 100644
index 00000000000..6713ac7641a
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/05_dropping_a_package.mdx
@@ -0,0 +1,27 @@
+---
+title: "Dropping a Package"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/dropping_a_package.html"
+---
+
+The syntax for deleting an entire package or just the package body is as follows:
+
+```text
+DROP PACKAGE [ BODY ] package_name;
+```
+
+If the keyword, `BODY`, is omitted, both the package specification and the package body are deleted - i.e., the entire package is dropped. If the keyword, `BODY`, is specified, then only the package body is dropped. The package specification remains intact. `package_name` is the identifier of the package to be dropped.
+
+Following statement will destroy only the package body of `emp_admin`:
+
+```text
+DROP PACKAGE BODY emp_admin;
+```
+
+The following statement will drop the entire `emp_admin` package:
+
+```text
+DROP PACKAGE emp_admin;
+```
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/index.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/index.mdx
new file mode 100644
index 00000000000..47d206de094
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/02_packages/index.mdx
@@ -0,0 +1,20 @@
+---
+title: "Packages"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/packages.html"
+---
+
+This chapter discusses the concept of packages in Advanced Server. A *package* is a named collection of functions, procedures, variables, cursors, user-defined record types, and records that are referenced using a common qualifier – the package identifier. Packages have the following characteristics:
+
+- Packages provide a convenient means of organizing the functions and procedures that perform a related purpose. Permission to use the package functions and procedures is dependent upon one privilege granted to the entire package. All of the package programs must be referenced with a common name.
+- Certain functions, procedures, variables, types, etc. in the package can be declared as *public*. Public entities are visible and can be referenced by other programs that are given `EXECUTE` privilege on the package. For public functions and procedures, only their signatures are visible - the program names, parameters if any, and return types of functions. The SPL code of these functions and procedures is not accessible to others, therefore applications that utilize a package are dependent only upon the information available in the signature – not in the procedural logic itself.
+- Other functions, procedures, variables, types, etc. in the package can be declared as *private*. Private entities can be referenced and used by function and procedures within the package, but not by other external applications. Private entities are for use only by programs within the package.
+- Function and procedure names can be overloaded within a package. One or more functions/procedures can be defined with the same name, but with different signatures. This provides the capability to create identically named programs that perform the same job, but on different types of input.
+
+
+
+package_components creating_packages referencing_a_package using_packages_with_user_defined_types dropping_a_package
+
+
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx
new file mode 100644
index 00000000000..9c6a8b84620
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/01_dbms_alert.mdx
@@ -0,0 +1,395 @@
+---
+title: "DBMS_ALERT"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/dbms_alert.html"
+---
+
+The `DBMS_ALERT` package provides the capability to register for, send, and receive alerts. The following table lists the supported procedures:
+
+| Function/Procedure | Return Type | Description |
+| ----------------------------------------------------- | ----------- | --------------------------------------------------- |
+| `REGISTER(name)` | n/a | Register to be able to receive alerts named, `name` |
+| `REMOVE(name)` | n/a | Remove registration for the alert named, `name` |
+| `REMOVEALL` | n/a | Remove registration for all alerts. |
+| `SIGNAL(name, message)` | n/a | Signals the alert named, `name`, with `message` |
+| `WAITANY(name OUT, message OUT, status OUT, timeout)` | n/a | Wait for any registered alert to occur. |
+| `WAITONE(name, message OUT, status OUT, timeout)` | n/a | Wait for the specified alert, `name`, to occur. |
+
+Advanced Server's implementation of `DBMS_ALERT` is a partial implementation when compared to Oracle's version. Only those functions and procedures listed in the table above are supported.
+
+Advanced Server allows a maximum of `500` concurrent alerts. You can use the `dbms_alert.max_alerts` GUC variable (located in the `postgresql.conf` file) to specify the maximum number of concurrent alerts allowed on a system.
+
+To set a value for the `dbms_alert.max_alerts` variable, open the `postgresql.conf` file (located by default in `/opt/PostgresPlus/11AS/data`) with your choice of editor, and edit the `dbms_alert.max_alerts` parameter as shown:
+
+```text
+dbms_alert.max_alerts = alert_count
+```
+
+`alert_count`
+
+`alert_count` specifies the maximum number of concurrent alerts. By default, the value of `dbms_alert.max_alerts` is `100`. To disable this feature, set `dbms_alert.max_alerts` to `0`.
+
+For the `dbms_alert.max_alerts` GUC to function correctly, the `custom_variable_classes` parameter must contain `dbms_alerts`:
+
+```text
+custom_variable_classes = 'dbms_alert, …'
+```
+
+After editing the `postgresql.conf` file parameters, you must restart the server for the changes to take effect.
+
+## REGISTER
+
+The `REGISTER` procedure enables the current session to be notified of the specified alert.
+
+```text
+REGISTER( VARCHAR2)
+```
+
+**Parameters**
+
+`name`
+
+ Name of the alert to be registered.
+
+**Examples**
+
+The following anonymous block registers for an alert named, `alert_test`, then waits for the signal.
+
+```text
+DECLARE
+ v_name VARCHAR2(30) := 'alert_test';
+ v_msg VARCHAR2(80);
+ v_status INTEGER;
+ v_timeout NUMBER(3) := 120;
+BEGIN
+ DBMS_ALERT.REGISTER(v_name);
+ DBMS_OUTPUT.PUT_LINE('Registered for alert ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Waiting for signal...');
+ DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout);
+ DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg);
+ DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
+ DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds');
+ DBMS_ALERT.REMOVE(v_name);
+END;
+
+Registered for alert alert_test
+Waiting for signal...
+```
+
+## REMOVE
+
+The `REMOVE` procedure unregisters the session for the named alert.
+
+```text
+REMOVE( VARCHAR2)
+```
+
+**Parameters**
+
+`name`
+
+ Name of the alert to be unregistered.
+
+## REMOVEALL
+
+The `REMOVEALL` procedure unregisters the session for all alerts.
+
+```text
+REMOVEALL
+```
+
+## SIGNAL
+
+The `SIGNAL` procedure signals the occurrence of the named alert.
+
+```text
+SIGNAL( VARCHAR2, VARCHAR2)
+```
+
+**Parameters**
+
+`name`
+
+ Name of the alert.
+
+`message`
+
+ Information to pass with this alert.
+
+**Examples**
+
+The following anonymous block signals an alert for `alert_test`.
+
+```text
+DECLARE
+ v_name VARCHAR2(30) := 'alert_test';
+BEGIN
+ DBMS_ALERT.SIGNAL(v_name,'This is the message from ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Issued alert for ' || v_name);
+END;
+Issued alert for alert_test
+```
+
+## WAITANY
+
+The `WAITANY` procedure waits for any of the registered alerts to occur.
+
+```text
+WAITANY( OUT VARCHAR2, OUT VARCHAR2,
+ OUT INTEGER, NUMBER)
+```
+
+**Parameters**
+
+`name`
+
+ Variable receiving the name of the alert.
+
+`message`
+
+ Variable receiving the message sent by the `SIGNAL` procedure.
+
+`status`
+
+ Status code returned by the operation. Possible values are: 0 – alert occurred; 1 – timeout occurred.
+
+`timeout`
+
+ Time to wait for an alert in seconds.
+
+**Examples**
+
+The following anonymous block uses the `WAITANY` procedure to receive an alert named, `alert_test` or `any_alert`:
+
+```text
+DECLARE
+ v_name VARCHAR2(30);
+ v_msg VARCHAR2(80);
+ v_status INTEGER;
+ v_timeout NUMBER(3) := 120;
+BEGIN
+ DBMS_ALERT.REGISTER('alert_test');
+ DBMS_ALERT.REGISTER('any_alert');
+ DBMS_OUTPUT.PUT_LINE('Registered for alert alert_test and any_alert');
+ DBMS_OUTPUT.PUT_LINE('Waiting for signal...');
+ DBMS_ALERT.WAITANY(v_name,v_msg,v_status,v_timeout);
+ DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg);
+ DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
+ DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds');
+ DBMS_ALERT.REMOVEALL;
+END;
+
+Registered for alert alert_test and any_alert
+Waiting for signal...
+```
+
+An anonymous block in a second session issues a signal for `any_alert`:
+
+```text
+DECLARE
+ v_name VARCHAR2(30) := 'any_alert';
+BEGIN
+ DBMS_ALERT.SIGNAL(v_name,'This is the message from ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Issued alert for ' || v_name);
+END;
+
+Issued alert for any_alert
+```
+
+Control returns to the first anonymous block and the remainder of the code is executed:
+
+```text
+Registered for alert alert_test and any_alert
+Waiting for signal...
+Alert name : any_alert
+Alert msg : This is the message from any_alert
+Alert status : 0
+Alert timeout: 120 seconds
+```
+
+## WAITONE
+
+The `WAITONE` procedure waits for the specified registered alert to occur.
+
+```text
+WAITONE( VARCHAR2, OUT VARCHAR2,
+ OUT INTEGER, NUMBER)
+```
+
+**Parameters**
+
+`name`
+
+ Name of the alert.
+
+`message`
+
+ Variable receiving the message sent by the `SIGNAL` procedure.
+
+`status`
+
+ Status code returned by the operation. Possible values are: 0 – alert occurred; 1 – timeout occurred.
+
+`timeout`
+
+ Time to wait for an alert in seconds.
+
+**Examples**
+
+The following anonymous block is similar to the one used in the `WAITANY` example except the `WAITONE` procedure is used to receive the alert named, `alert_test`.
+
+```text
+DECLARE
+ v_name VARCHAR2(30) := 'alert_test';
+ v_msg VARCHAR2(80);
+ v_status INTEGER;
+ v_timeout NUMBER(3) := 120;
+BEGIN
+ DBMS_ALERT.REGISTER(v_name);
+ DBMS_OUTPUT.PUT_LINE('Registered for alert ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Waiting for signal...');
+ DBMS_ALERT.WAITONE(v_name,v_msg,v_status,v_timeout);
+ DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg);
+ DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
+ DBMS_OUTPUT.PUT_LINE('Alert timeout: ' || v_timeout || ' seconds');
+ DBMS_ALERT.REMOVE(v_name);
+END;
+
+Registered for alert alert_test
+Waiting for signal...
+```
+
+Signal sent for `alert_test` sent by an anonymous block in a second session:
+
+```text
+DECLARE
+ v_name VARCHAR2(30) := 'alert_test';
+BEGIN
+ DBMS_ALERT.SIGNAL(v_name,'This is the message from ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Issued alert for ' || v_name);
+END;
+
+Issued alert for alert_test
+```
+
+First session is alerted, control returns to the anonymous block, and the remainder of the code is executed:
+
+```text
+Registered for alert alert_test
+Waiting for signal...
+Alert name : alert_test
+Alert msg : This is the message from alert_test
+Alert status : 0
+Alert timeout: 120 seconds
+```
+
+## Comprehensive Example
+
+The following example uses two triggers to send alerts when the `dept` table or the `emp` table is changed. An anonymous block listens for these alerts and displays messages when an alert is received.
+
+The following are the triggers on the `dept` and `emp` tables:
+
+```text
+CREATE OR REPLACE TRIGGER dept_alert_trig
+ AFTER INSERT OR UPDATE OR DELETE ON dept
+DECLARE
+ v_action VARCHAR2(25);
+BEGIN
+ IF INSERTING THEN
+ v_action := ' added department(s) ';
+ ELSIF UPDATING THEN
+ v_action := ' updated department(s) ';
+ ELSIF DELETING THEN
+ v_action := ' deleted department(s) ';
+ END IF;
+ DBMS_ALERT.SIGNAL('dept_alert',USER || v_action || 'on ' ||
+ SYSDATE);
+END;
+
+CREATE OR REPLACE TRIGGER emp_alert_trig
+ AFTER INSERT OR UPDATE OR DELETE ON emp
+DECLARE
+ v_action VARCHAR2(25);
+BEGIN
+ IF INSERTING THEN
+ v_action := ' added employee(s) ';
+ ELSIF UPDATING THEN
+ v_action := ' updated employee(s) ';
+ ELSIF DELETING THEN
+ v_action := ' deleted employee(s) ';
+ END IF;
+ DBMS_ALERT.SIGNAL('emp_alert',USER || v_action || 'on ' ||
+ SYSDATE);
+END;
+```
+
+The following anonymous block is executed in a session while updates to the `dept` and `emp` tables occur in other sessions:
+
+```text
+DECLARE
+ v_dept_alert VARCHAR2(30) := 'dept_alert';
+ v_emp_alert VARCHAR2(30) := 'emp_alert';
+ v_name VARCHAR2(30);
+ v_msg VARCHAR2(80);
+ v_status INTEGER;
+ v_timeout NUMBER(3) := 60;
+BEGIN
+ DBMS_ALERT.REGISTER(v_dept_alert);
+ DBMS_ALERT.REGISTER(v_emp_alert);
+ DBMS_OUTPUT.PUT_LINE('Registered for alerts dept_alert and emp_alert');
+ DBMS_OUTPUT.PUT_LINE('Waiting for signal...');
+ LOOP
+ DBMS_ALERT.WAITANY(v_name,v_msg,v_status,v_timeout);
+ EXIT WHEN v_status != 0;
+ DBMS_OUTPUT.PUT_LINE('Alert name : ' || v_name);
+ DBMS_OUTPUT.PUT_LINE('Alert msg : ' || v_msg);
+ DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
+ DBMS_OUTPUT.PUT_LINE('------------------------------------' ||
+ '-------------------------');
+ END LOOP;
+ DBMS_OUTPUT.PUT_LINE('Alert status : ' || v_status);
+ DBMS_ALERT.REMOVEALL;
+END;
+
+Registered for alerts dept_alert and emp_alert
+Waiting for signal...
+```
+
+The following changes are made by user, mary:
+
+```text
+INSERT INTO dept VALUES (50,'FINANCE','CHICAGO');
+INSERT INTO emp (empno,ename,deptno) VALUES (9001,'JONES',50);
+INSERT INTO emp (empno,ename,deptno) VALUES (9002,'ALICE',50);
+```
+
+The following change is made by user, john:
+
+```text
+INSERT INTO dept VALUES (60,'HR','LOS ANGELES');
+```
+
+The following is the output displayed by the anonymous block receiving the signals from the triggers:
+
+```text
+Registered for alerts dept_alert and emp_alert
+Waiting for signal...
+Alert name : dept_alert
+Alert msg : mary added department(s) on 25-OCT-07 16:41:01
+Alert status : 0
+-------------------------------------------------------------
+Alert name : emp_alert
+Alert msg : mary added employee(s) on 25-OCT-07 16:41:02
+Alert status : 0
+-------------------------------------------------------------
+Alert name : dept_alert
+Alert msg : john added department(s) on 25-OCT-07 16:41:22
+Alert status : 0
+-------------------------------------------------------------
+Alert status : 1
+```
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx
new file mode 100644
index 00000000000..7487f87c635
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/01_enqueue.mdx
@@ -0,0 +1,120 @@
+---
+title: "ENQUEUE"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/enqueue.html"
+---
+
+The `ENQUEUE` procedure adds an entry to a queue. The signature is:
+
+```text
+ENQUEUE(
+ IN VARCHAR2,
+ IN DBMS_AQ.ENQUEUE_OPTIONS_T,
+ IN DBMS_AQ.MESSAGE_PROPERTIES_T,
+ IN ,
+ OUT RAW)
+```
+
+**Parameters**
+
+`queue_name`
+
+ The name (optionally schema-qualified) of an existing queue. If you omit the schema name, the server will use the schema specified in the `SEARCH_PATH`. Please note that unlike Oracle, unquoted identifiers are converted to lower case before storing. To include special characters or use a case-sensitive name, enclose the name in double quotes.
+
+ For detailed information about creating a queue, see `DBMS_AQADM.CREATE_QUEUE`.
+
+`enqueue_options`
+
+ `enqueue_options` is a value of the type, `enqueue_options_t`:
+
+```text
+DBMS_AQ.ENQUEUE_OPTIONS_T IS RECORD(
+ visibility BINARY_INTEGER DEFAULT ON_COMMIT,
+ relative_msgid RAW(16) DEFAULT NULL,
+ sequence_deviation BINARY INTEGER DEFAULT NULL,
+ transformation VARCHAR2(61) DEFAULT NULL,
+ delivery_mode PLS_INTEGER NOT NULL DEFAULT PERSISTENT);
+```
+
+Currently, the only supported parameter values for `enqueue_options_t` are:
+
+| `visibility` | `ON_COMMIT`. |
+| -------------------- | ------------ |
+| `delivery_mode` | `PERSISTENT` |
+| `sequence_deviation` | `NULL` |
+| `transformation` | `NULL` |
+| `relative_msgid` | `NULL` |
+
+`message_properties`
+
+ `message_properties` is a value of the type, `message_properties_t`:
+
+```text
+message_properties_t IS RECORD(
+ priority INTEGER,
+ delay INTEGER,
+ expiration INTEGER,
+ correlation CHARACTER VARYING(128) COLLATE pg_catalog.”C”,
+ attempts INTEGER,
+ recipient_list “AQ$_RECIPIENT_LIST_T”,
+ exception_queue CHARACTER VARYING(61) COLLATE pg_catalog.”C”,
+ enqueue_time TIMESTAMP WITHOUT TIME ZONE,
+ state INTEGER,
+ original_msgid BYTEA,
+ transaction_group CHARACTER VARYING(30) COLLATE pg_catalog.”C”,
+ delivery_mode INTEGER
+DBMS_AQ.PERSISTENT);
+```
+
+The supported values for `message_properties_t` are:
+
+| | |
+| ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
+| `priority` | If the queue table definition includes a `sort_list` that references `priority`, this parameter affects the order that messages are dequeued. A lower value indicates a higher dequeue priority. |
+| `delay` | Specify the number of seconds that will pass before a message is available for dequeueing or `NO_DELAY`. |
+| `expiration` | Use the expiration parameter to specify the number of seconds until a message expires. |
+| `correlation` | Use correlation to specify a message that will be associated with the entry; the default is `NULL`. |
+| `attempts` | This is a system-maintained value that specifies the number of attempts to dequeue the message. |
+| `recipient_list` | This parameter is not supported. |
+| `exception_queue` | Use the `exception_queue` parameter to specify the name of an exception queue to which a message will be moved if it expires or is dequeued by a transaction that rolls back too many times. |
+| `enqueue_time` | `enqueue_time` is the time the record was added to the queue; this value is provided by the system. |
+| `state` | This parameter is maintained by DBMS_AQ; state can be:
`DBMS_AQ.WAITING` – the delay has not been reached.
`DBMS_AQ.READY` – the queue entry is ready for processing.
`DBMS_AQ.PROCESSED` – the queue entry has been processed.
`DBMS_AQ.EXPIRED` – the queue entry has been moved to the exception queue. |
+| `original_msgid` | This parameter is accepted for compatibility and ignored. |
+| `transaction_group` | This parameter is accepted for compatibility and ignored. |
+| `delivery_mode` | This parameter is not supported; specify a value of `DBMS_AQ.PERSISTENT`. |
+
+`payload`
+
+ Use the `payload` parameter to provide the data that will be associated with the queue entry. The payload type must match the type specified when creating the corresponding queue table (see `DBMS_AQADM.CREATE_QUEUE_TABLE`).
+
+`msgid`
+
+ Use the `msgid` parameter to retrieve a unique (system-generated) message identifier.
+
+**Example**
+
+The following anonymous block calls `DBMS_AQ.ENQUEUE`, adding a message to a queue named `work_order`:
+
+```text
+DECLARE
+
+ enqueue_options DBMS_AQ.ENQUEUE_OPTIONS_T;
+ message_properties DBMS_AQ.MESSAGE_PROPERTIES_T;
+ message_handle raw(16);
+ payload work_order;
+
+BEGIN
+
+ payload := work_order('Smith', 'system upgrade');
+
+DBMS_AQ.ENQUEUE(
+ queue_name => 'work_order',
+ enqueue_options => enqueue_options,
+ message_properties => message_properties,
+ payload => payload,
+ msgid => message_handle
+ );
+ END;
+```
diff --git a/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx
new file mode 100644
index 00000000000..4a45c6c09e5
--- /dev/null
+++ b/product_docs/docs/epas/11/epas_compat_bip_guide/03_built-in_packages/02_dbms_aq/02_dequeue.mdx
@@ -0,0 +1,132 @@
+---
+title: "DEQUEUE"
+
+legacyRedirectsGenerated:
+ # This list is generated by a script. If you need add entries, use the `legacyRedirects` key.
+ - "/edb-docs/d/edb-postgres-advanced-server/reference/database-compatibility-for-oracle-developers-built-in-package-guide/13/dequeue.html"
+---
+
+The `DEQUEUE` procedure dequeues a message. The signature is:
+
+```text
+DEQUEUE(
+ IN VARCHAR2,
+ IN DBMS_AQ.DEQUEUE_OPTIONS_T,
+