---
title: Startup configuration
description: By default, IDM starts with the configuration, script, and binary files in the openidm/conf, openidm/script, and openidm/bin directories. You can launch IDM with a different set of configuration, script, and binary files for test purposes, to manage different projects, or to run one of the included samples.
component: pingidm
version: 8.1
page_id: pingidm:install-guide:startup-configuration
canonical_url: https://docs.pingidentity.com/pingidm/8.1/install-guide/startup-configuration.html
keywords: ["Installation", "Configuration", "Startup"]
---

# Startup configuration

By default, IDM starts with the configuration, script, and binary files in the `openidm/conf`, `openidm/script`, and `openidm/bin` directories. You can launch IDM with a different set of configuration, script, and binary files for test purposes, to manage different projects, or to run one of the included samples.

The `startup.sh` script enables you to specify the following elements of a running instance:

* `-p | --project-location {/path/to/project/directory}`

  The project location specifies the directory that contains the configuration and script files that IDM will use.

  All configuration objects and any artifacts that are not in the bundled defaults (such as custom scripts) *must* be included in the project location. These objects include all files otherwise included in the `openidm/conf` and `openidm/script` directories.

  For example, the following command starts the server with the configuration of the `sync-with-csv` sample (located in `/path/to/openidm/samples/sync-with-csv`):

  ```
  ./startup.sh -p /path/to/openidm/samples/sync-with-csv
  ```

  If you don't provide an absolute path, the project location path is relative to the system property, `user.dir`. IDM sets `idm.instance.dir` to that relative directory path. Alternatively, if you start the server without the `-p` option, IDM sets `idm.instance.dir` to `/path/to/openidm`.

  |   |                                                                                  |
  | - | -------------------------------------------------------------------------------- |
  |   | In this documentation, "your project" refers to the value of `idm.instance.dir`. |

* `-w |--working-location {/path/to/working/directory}`

  The working location specifies the directory where IDM writes its database cache, audit logs, and Felix cache. The working location includes everything in the default `db/`, `audit/`, and `felix-cache/` subdirectories.

  The following command specifies that IDM writes its database cache and audit data to `/Users/admin/openidm/storage`:

  ```
  ./startup.sh -w /Users/admin/openidm/storage
  ```

  If you don't provide an absolute path, the path is relative to the system property, `user.dir`. IDM sets `idm.data.dir` to that relative directory path. If you don't specify a working location, IDM sets `idm.data.dir` to `/path/to/openidm`. This means the default working location data is located in the `openidm/db`, `openidm/felix-cache`, and `openidm/audit` directories.

  |   |                                                                                                                                                                                   |
  | - | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  |   | This property doesn't affect the location of the IDM [server logs](../monitoring-guide/server-logs.html). To change the location of these logs, edit the `conf/logback.xml` file. |

  You can also change the location of the Felix cache, by editing the `conf/config.properties` file, or by starting the server with the `-s` option, described later in this section.

* `-c | --config {/path/to/config/file}`

  A customizable startup configuration file (named `launcher.json`) enables you to specify how the OSGi framework is started.

  Unless you are working with a highly customized deployment, you should not modify the default framework configuration.

- `-P {property=value}`

  Any properties passed to the startup script with the `-P` option are used when the server loads the `launcher.json` startup configuration file.

  Options specified here have the lowest order of precedence when the configuration is loaded. If the same property is defined in any other configuration source, the value specified here is ignored.

- `-s | --storage {/path/to/storage/directory}`

  Specifies the OSGi storage location of the cached configuration files.

  You can use this option to redirect output if you are installing on a [read-only filesystem volume](../security-guide/chap-data.html#read-only-volume), or if you are testing different configurations. Sometimes, when you start the server with two different configurations, one after the other, the cached configurations are merged and cause problems. Specifying a storage location puts the cached configuration files in that location, and avoids conflicts with cached files from previous startups.

Additionally, IDM sets the system property `idm.install.dir` to the location IDM is installed in. For example, if IDM was installed in `/Users/admin/openidm/`, that is what `idm.install.dir` will be set to.

For information about changing the startup configuration by substituting property values, refer to [Property Value Substitution](../setup-guide/chap-configuration.html#using-property-substitution).
