> ## Documentation Index
> Fetch the complete documentation index at: https://docs.flexagon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# synchronize

> Upgrades the Oracle DDL of a specified schema to the supplied baseline. The baseline id is supplied by an artifact created by the operation. The DDL i

Upgrades the Oracle DDL of a specified schema to the supplied baseline. The baseline id is supplied by an artifact created by the [createBaseline](https://docs.flexagon.com/flexdeploy-11-2-documentation/flexdeploy-plugin-guides/flexdeploy-oracle-database-plugin-guide/createbaseline.md) operation. The DDL is pulled from the DDL Repository and applied to the database specified by `Oracle Database URL` and `Oracle Database Schema Name(s)`. The schema names must be the same in the different environments.

> [!NOTE]
>
> When deploying a baseline that contains rename views, sequences, or synonyms, the value of Target Property `FDORA_USER` must be the owner of the objects. Running the operation as another user will fail with `ORA-04043`.

> [!NOTE]
>
> When renaming columns and tables in the same build, set the properties like:
>
> `FDORA_TABLE_RENAMES` - `schema.old_table = schema.new_table`
>
> `FDORA_COLUMN_RENAMES` - `schema.old_table.old_column = schema.new_table.new_column`
>
> `As of release 5.5.0.1, you can specify renames without Schema prefixes, provided that you also leave the project property FDORA_SCHEMA_NAME blank. In this case, the schema will be set to the value of FDORA_USER and this value will be used for all renames.`
>
> `FDORA_TABLE_RENAMES` - `old_table = new_table`
>
> `FDORA_COLUMN_RENAMES` - `old_table.old_column = new_table.new_column`

# Target Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Oracle Database URL</td><td>`FDORA_URL`</td><td>Yes</td><td>The JDBC URL for the target Oracle database.This should be a complete JDBC URL (e.g. `jdbc:oracle:thin:@localhost:1521:xe`)\
Connecting to Oracle Autonomous DatabaseYou will need client credential zip file (wallet) to connect with Oracle Autonomous Database on Oracle cloud. You can download wallet zip file from Oracle Cloud, you will need admin userid and password to perform this download. See [Download Client Credentials (Wallets)](https://docs.oracle.com/en-us/iaas/autonomous-database/doc/download-client-credentials.html) for more details on how to download wallet file.<ul><li>**Since FlexDeploy 9.0.0.9 with Oracle Wallet Credential Type :** Instead of maintaining the wallet zip file under the file system, you can now store the wallet zip as an Oracle Credential Type in FlexDeploy. This allows for secure storage and use of the wallet.<ul><li>Use the URL syntax in the following format: `jdbc:oracle:thin:@service_low?TNS_ADMIN={{FDORACLE_WALLET_FILE}}` is replaced with the temporary wallet folder path during execution. Once execution is completed, the temporary file is cleaned up automatically.</li></ul></li><li>**Before FlexDeploy 9.0.0.9**<ul><li>You must make sure that only authorized users have access to these wallet files. Unzip the client credentials zip file (**wallet\_*****databasename*****.zip**) on FlexDeploy server and/or endpoint where it will be used. For example, /home/flexdeploy/.wallets/\<**wallet\_*****databasename***> is folder where specific wallet file was unzipped. Make sure to secure this folder to FlexDeploy and/or Endpoint user, so that it is not readable by all users.</li><li>We recommend using Oracle Wallet Credential Type for better security and easier management of Wallet usage.</li><li>**Database URL Syntax **: jdbc:oracle:thin:@service\_high?TNS\_ADMIN=/home/flexdeploy/.wallets/\<**wallet\_*****databasename***><ul><li>service\_high is one of the entries in the tnsnames.ora file where client credentials zip file was unzipped. See [Predefined Database Service Names for Autonomous Database](https://docs.oracle.com/en/cloud/paas/autonomous-database/serverless/adbsb/connect-predefined-generic.html) for details on services.</li><li>TNS\_ADMIN value in URL points to the location of the **unzipped client credentials zip file**.</li></ul></li><li>**Database URL Long Connection String Format Syntax **: `jdbc:oracle:thin:@(description= (retry_count=20)(retry_delay=3)(address=(protocol=tcps)(port=1522)(host=<hostname>))(connect_data=(service_name=<serice_name>))(security=(ssl_server_cert_dn="CN=<hostname>,OU=Oracle BMCS US,O=Oracle Corporation,L=Redwood City,ST=California,C=US")))`<ul><li>Examples for the same can be found [here](https://www.oracle.com/database/technologies/java-connectivity-to-atp.html).</li></ul></li></ul></li></ul>If using the Oracle Database Plugin with ADW or ATP databases , use the \_low connection. The \_medium and \_high connections can sometimes throw error** ORA-12839: cannot modify an object in parallel after modifying it.**</td></tr><tr><td>Oracle Wallet File</td><td>`FDORACLE_WALLET_FILE`</td><td>No</td><td>**Since 9.0.0.9** - Provide the Oracle Wallet file, see[Credential Type - Oracle Wallet](https://docs.flexagon.com/flexdeploy-11-2-documentation/flexdeploy-users-guide/administration/credentials/credential-types/credential-type-oracle-wallet.md) for more details.</td></tr><tr><td>Oracle Database User</td><td>`FDORA_USER`</td><td>Yes</td><td>The username that will be used to connect to the target Oracle Database.NOTE\*\*\* If the project property FDORA\_SCHEMA\_NAME is not set, then this becomesthe schema.</td></tr><tr><td>Oracle Database Password</td><td>`FDORA_PASSWORD`</td><td>Yes</td><td>The password for Oracle Database User.</td></tr><tr><td>Target JDBC Driver Path.</td><td>`FDORA_DRIVER_PATH`</td><td>Yes</td><td>Path containing JDBC driver for target database connection.</td></tr><tr><td>DDL Repo JDBC Driver Path</td><td>`FDORA_DDL_DRIVER_PATH`</td><td>Yes</td><td>Path containing JDBC driver for DDL repository database connection.</td></tr><tr><td>DDL Repository URL</td><td>`FDORA_DDL_URL`</td><td>Yes</td><td>The JDBC URL for the DDL repository.This should be a complete JDBC URL (e.g. jdbc:oracle:thin:@localhost:1521:xe)\
if we use Oracle wallet Credential ,then Url would be like this\
`jdbc:oracle:thin:@Service_low?TNS_ADMIN=${{FDORACLE_DDL_WALLET_FILE}}`</td></tr><tr><td>DDL Oracle Wallet File</td><td>`FDORACLE_DDL_WALLET_FILE`</td><td>No</td><td>**Since 9.0.0.9** - Provide the DDL Repository Oracle Wallet file, see[Credential Type - Oracle Wallet](https://docs.flexagon.com/flexdeploy-11-2-documentation/flexdeploy-users-guide/administration/credentials/credential-types/credential-type-oracle-wallet.md) for more details.</td></tr><tr><td>DDL Repository User</td><td>`FDORA_DDL_USER`</td><td>Yes</td><td>The userid used to connect to the DDL repository.</td></tr><tr><td>DDL Repository Password</td><td>`FDORA_DDL_PASSWORD`</td><td>Yes</td><td>The password for the DDL repository userid.</td></tr></tbody></table>

# Project Properties

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Property Name**</th><th>**Property Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Oracle Database Schema Name(s)</td><td>`FDORA_SCHEMA_NAME`</td><td>No</td><td>Comma-separated list of schemas controlled by this project.Leave this parameter blank if you want to have schema name different across environments.\
The plugin will then use the FDORA\_USER Target parameter as the schema name.\
If it isn't provided, `FDORA_USER` will be the schema that is tracked and may differ through environments.\
</td></tr></tbody></table>

# Inputs

<table><colgroup><col /><col /><col /><col /></colgroup><tbody><tr><th>**Input Name**</th><th>**Input Code**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>Column Drop Action</td><td>`FDORA_COL_DROP_ACTION`</td><td>No</td><td>Determines what action to take for "dropping" columns.Can be set to `SET UNUSED` or `DROP`.Defaults to `SET UNUSED`</td></tr><tr><td>Preview Execution</td><td>`FDORA_PREVIEW_EXECUTION`</td><td>No</td><td>Whether to bypass actual execution of the DDL, and simply run the compare.Defaults to true.For Pre-deploy workflow this should be checked to only run compare and generate report for review. In addition `FDORA_OUT_CHANGES_EXIST` output should be saved in FD\_REVIEW\_REQUIRED workflow output for Pre-deploy workflow and in addition FD\_REVIEW\_GROUP to assign Review tasks to specific group(s).</td></tr><tr><td>Automatically rollback changes if the deployment fails\
\
</td><td>`FDORA_ROLLBACK_ON_FAIL`</td><td>No</td><td>If a deployment failure occurs, should the database be rolled back to the previous state?Defaults to false.If true, the snapshot taken as the deployment starts will be rolled back to. If false, the database will be left in the state it is in after the first failure. The deployment stops after the first failure occurs.</td></tr><tr><td>Fail the workflow if it is rolled back successfully\
</td><td>`FDORA_FAIL_AFTER_ROLLBACK`</td><td>No</td><td>Added in 4.0.3.65.If a deployment failure occurs, but it is successfully rolled back to the previous version, should the workflow still be failed?Defaults to true.</td></tr><tr><td>Include Tablespaces</td><td>`FDORA_TABLESPACE_FLG`</td><td>No</td><td>Setting this to true causes create statements to include tablespace information where appropriate.  This adds the tablespace clause to all creates. Defaults to false.  Requires segments attributes to be enabled also.</td></tr><tr><td>Include Segment attributes</td><td>`FDORA_SEGMENT_ATTRIBUTES_FLG`</td><td>No</td><td>Setting this to true causes create statements to include tablespace segment attribute information where appropriate.  Defaults to false.</td></tr><tr><td>Include Storage</td><td>`FDORA_STORAGE_FLG`</td><td>No</td><td>Setting this to true causes create statements to include storage information where appropriate.  This adds the STOREAGE clause with its values on all creates. Defaults to false.    Requires segments attributes to be enabled also. </td></tr></tbody></table>

# Outputs

<table><colgroup><col /><col /><col /></colgroup><tbody><tr><th>**Output Name**</th><th>**Required**</th><th>**Description**</th></tr><tr><td>`FDORA_OUT_BASELINE_ID`</td><td>No</td><td>This is the baseline ID currently deployed to the target environment OR the baseline ID created from this deployment.</td></tr><tr><td>`FDORA_OUT_NEW_BASELINE_ID`</td><td>No</td><td>This is the baseline ID being deployed to this environment.</td></tr><tr><td>`FDORA_OUT_DELTA_BASELINE_ID`</td><td>No</td><td>The ID to track the DDL used for this deployment.</td></tr><tr><td>`FDORA_OUT_DROP_TABLE_COUNT`</td><td>No</td><td>Count of tables dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_TABLE_COUNT`</td><td>No</td><td>Count of tables created.</td></tr><tr><td>`FDORA_OUT_ALTER_TABLE_COUNT`</td><td>No</td><td>Count of tables altered.</td></tr><tr><td>`FDORA_OUT_DROP_COLUMNS_COUNT`</td><td>No</td><td>Count of columns dropped.</td></tr><tr><td>`FDORA_OUT_ADD_COLUMNS_COUNT`</td><td>No</td><td>Count of columns added.</td></tr><tr><td>`FDORA_OUT_MODIFY_COLUMN_COUNT`</td><td>No</td><td>Count of columns modified.</td></tr><tr><td>`FDORA_OUT_DROP_CONSTRAINT_COUNT`</td><td>No</td><td>Count of constraints dropped.</td></tr><tr><td>`FDORA_OUT_ADD_CONSTRAINT_COUNT`</td><td>No</td><td>Count of constraints added.</td></tr><tr><td>`FDORA_OUT_MODIFY_CONSTRAINT_COUNT`</td><td>No</td><td>Count of constraints modified.</td></tr><tr><td>`FDORA_OUT_DROP_INDEX_COUNT`</td><td>No</td><td>Count of indexes dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_INDEX_COUNT`</td><td>No</td><td>Count of indexes created.</td></tr><tr><td>`FDORA_OUT_ALTER_INDEX_COUNT`</td><td>No</td><td>Count of indexes altered.</td></tr><tr><td>`FDORA_OUT_DROP_VIEW_COUNT`</td><td>No</td><td>Count of views dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_VIEW_COUNT`</td><td>No</td><td>Count of views created.</td></tr><tr><td>`FDORA_OUT_ALTER_VIEW_COUNT`</td><td>No</td><td>Count of views altered.</td></tr><tr><td>`FDORA_OUT_DROP_SEQUENCE_COUNT`</td><td>No</td><td>Count of sequences dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_SEQUENCE_COUNT`</td><td>No</td><td>Count of sequences created.</td></tr><tr><td>`FDORA_OUT_ALTER_SEQUENCE_COUNT`</td><td>No</td><td>Count of sequences altered.</td></tr><tr><td>`FDORA_OUT_DROP_PROCEDURE_COUNT`</td><td>No</td><td>Count of procedures dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_PROCEDURE_COUNT`</td><td>No</td><td>Count of procedures created.</td></tr><tr><td>`FDORA_OUT_ALTER_PROCEDURE_COUNT`</td><td>No</td><td>Count of procedures altered.</td></tr><tr><td>`FDORA_OUT_DROP_TRIGGER_COUNT`</td><td>No</td><td>Count of triggers dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_TRIGGER_COUNT`</td><td>No</td><td>Count of triggers created.</td></tr><tr><td>`FDORA_OUT_ALTER_TRIGGER_COUNT`</td><td>No</td><td>Count of triggered altered.</td></tr><tr><td>`FDORA_OUT_DROP_SYNONYM_COUNT`</td><td>No</td><td>Count of synonyms dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_SYNONYM_COUNT`</td><td>No</td><td>Count of synonyms created.</td></tr><tr><td>`FDORA_OUT_DROP_FUNCTION_COUNT`</td><td>No</td><td>Count of functions dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_FUNCTION_COUNT`</td><td>No</td><td>Count of functions created.</td></tr><tr><td>`FDORA_OUT_ALTER_FUNCTION_COUNT`</td><td>No</td><td>Count of functions altered.</td></tr><tr><td>`FDORA_OUT_DROP_TYPE_COUNT`</td><td>No</td><td>Count of types dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_TYPE_COUNT`</td><td>No</td><td>Count of types created.</td></tr><tr><td>`FDORA_OUT_ALTER_TYPE_COUNT`</td><td>No</td><td>Count of types altered.</td></tr><tr><td>`FDORA_OUT_DROP_TYPE_BODY_COUNT`</td><td>No</td><td>Count of type body drops.</td></tr><tr><td>`FDORA_OUT_CREATE_TYPE_BODY_COUNT`</td><td>No</td><td>Count of type body creates.</td></tr><tr><td>`FDORA_OUT_ALTER_TYPE_BODY_COUNT`</td><td>No</td><td>Count of type body alters.</td></tr><tr><td>`FDORA_OUT_DROP_PACKAGE_COUNT`</td><td>No</td><td>Count of packages dropped.</td></tr><tr><td>`FDORA_OUT_CREATE_PACKAGE_COUNT`</td><td>No</td><td>Count of packages created.</td></tr><tr><td>`FDORA_OUT_ALTER_PACKAGE_COUNT`</td><td>No</td><td>Count of packages altered.</td></tr><tr><td>`FDORA_OUT_DROP_PACKAGE_BODY_COUNT`</td><td>No</td><td>Count of package body drops.</td></tr><tr><td>`FDORA_OUT_CREATE_PACKAGE_BODY_COUNT`</td><td>No</td><td>Count of package body creates.</td></tr><tr><td>`FDORA_OUT_ALTER_PACKAGE_BODY_COUNT`</td><td>No</td><td>Count of package body alters.</td></tr><tr><td>`FDORA_OUT_DROP_MVIEW_COUNT`</td><td>No</td><td>Count of materialized view drops.</td></tr><tr><td>`FDORA_OUT_CREATE_MVIEW_COUNT`</td><td>No</td><td>Count of materialized view creates.</td></tr><tr><td>`FDORA_OUT_ALTER_MVIEW_COUNT`</td><td>No</td><td>Count of materialized view alters.</td></tr><tr><td>`FDORA_OUT_DROP_MVIEW_LOG_COUNT`</td><td>No</td><td>Count of materialized view log drops.</td></tr><tr><td>`FDORA_OUT_CREATE_MVIEW_LOG_COUNT`</td><td>No</td><td>Count of materialized view log creates.</td></tr><tr><td>`FDORA_OUT_ALTER_MVIEW_LOG_COUNT`</td><td>No</td><td>Count of materialized view log alters.</td></tr><tr><td>`FDORA_OUT_OBJECT_GRANT_COUNT`</td><td>No</td><td>Count of object grants.</td></tr><tr><td>`FDORA_OUT_BL_TABLE_COUNT`</td><td>No</td><td>Count of tables in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_INDEX_COUNT`</td><td>No</td><td>Count of indexes in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_CONSTRAINT_COUNT`</td><td>No</td><td>Count of constraints in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_SEQUENCE_COUNT`</td><td>No</td><td>Count of sequences in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_PROCEDURES_COUNT`</td><td>No</td><td>Count of procedures in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_VIEWS_COUNT`</td><td>No</td><td>Count of views in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_SYNONYMS_COUNT`</td><td>No</td><td>Count of synonyms in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_MVIEW_COUNT`</td><td>No</td><td>Count of materialized views in the new baseline.</td></tr><tr><td>`FDORA_OUT_BL_MVIEW_LOG_COUNT`</td><td>No</td><td>Count of materialized view logs in the new baseline.</td></tr><tr><td>`FDORA_OUT_RENAME_TABLE_COUNT`</td><td>No</td><td>Count of table renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_COLUMN_COUNT`</td><td>No</td><td>Count of column renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_CONSTRAINT_COUNT`</td><td>No</td><td>Count of constraint renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_INDEX_COUNT`</td><td>No</td><td>Count of index renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_VIEW_COUNT`</td><td>No</td><td>Count of view renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_SEQUENCE_COUNT`</td><td>No</td><td>Count of sequence renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_TRIGGER_COUNT`</td><td>No</td><td>Count of trigger renames processed.</td></tr><tr><td>`FDORA_OUT_RENAME_SYNONYM_COUNT`</td><td>No</td><td>Count of synonym renames processed.</td></tr><tr><td>`FDORA_OUT_BL_PRIVILEGES_COUNT`</td><td>No</td><td>Count of object privileges in the new baseline.</td></tr><tr><td>`FDORA_OUT_CHANGES_EXIST`</td><td>No</td><td>Returns true if changes exist as part of execution of this operation. This output can be saved in FD\_REVIEW\_REQUIRED output for Pre-deploy workflow and in addition FD\_REVIEW\_GROUP to assign Review tasks to specific group(s).</td></tr></tbody></table>

# Artifacts

This operation consumes artifacts from the artifacts repository.

# Endpoint Selection

This operation will select all available endpoints associated to the Target.

# Endpoint Execution

This operation will execute on any one of the selected endpoints and will be random in the determination of which one.

# Special Considerations

The plugin currently requires the source and target schema names to be the same.
