[[migrating-8.0]]
== Migrating to 8.0
++++
<titleabbrev>8.0</titleabbrev>
++++

This section discusses the changes that you need to be aware of when migrating
your application to {es} 8.0.

See also <<release-highlights>> and <<es-release-notes>>.

coming::[8.0.0]

[discrete]
[[breaking-changes-8.0]]
=== Breaking changes

The following changes in {es} 8.0 might affect your applications
and prevent them from operating normally.
Before upgrading to 8.0, review these changes and take the described steps
to mitigate the impact.

NOTE: Breaking changes introduced in minor versions are
normally limited to security and bug fixes.
Significant changes in behavior are deprecated in a minor release and
the old behavior is supported until the next major release.
To find out if you are using any deprecated functionality,
enable <<deprecation-logging, deprecation logging>>.

include::migrate_8_0/_cluster-node-setting-changes.asciidoc[]
include::migrate_8_0/_command-line-tool-changes.asciidoc[]
include::migrate_8_0/_index-setting-changes.asciidoc[]
include::migrate_8_0/_java-api-changes.asciidoc[]
include::migrate_8_0/_jvm-option-changes.asciidoc[]
include::migrate_8_0/_logging-changes.asciidoc[]
include::migrate_8_0/_mapping-changes.asciidoc[]
include::migrate_8_0/_packaging-changes.asciidoc[]
include::migrate_8_0/_painless-changes.asciidoc[]
include::migrate_8_0/_rest-api-changes.asciidoc[]
include::migrate_8_0/_system-req-changes.asciidoc[]
include::migrate_8_0/transform.asciidoc[]

[discrete]
[[deprecated-8.0]]
=== Deprecations

The following functionality has been deprecated in {es} 8.0
and will be removed in 8.0
While this won't have an immediate impact on your applications,
we strongly encourage you take the described steps to update your code
after upgrading to 8.0.

NOTE: Significant changes in behavior are deprecated in a minor release and
the old behavior is supported until the next major release.
To find out if you are using any deprecated functionality,
enable <<deprecation-logging, deprecation logging>>.

//NOTE: The notable-breaking-changes tagged regions are re-used in the
//Installation and Upgrade Guide
//tag::notable-breaking-changes[]
[discrete]
[[breaking_80_cluster_node_setting_deprecations]]
==== Cluster and node setting deprecations

[[deprecate-transient-cluster-settings]]
.Transient cluster settings are deprecated.
[%collapsible]
====
*Details* +
Starting in 7.16, transient cluster settings are deprecated and will be removed in a future release. This is because transient
cluster settings have an unpredictable lifecycle. Transient cluster settings do not survive full cluster restarts or
cluster instability. In these cases, {es} recovers the cluster state
from persistent storage, effectively erasing the transient settings. The loss of transient settings can happen
unexpectedly, leading to a potentially undesired cluster configuration.

*Impact* +
To avoid deprecation warnings, discontinue use of transient settings when modifying
your cluster settings through the `PUT _cluster/settings` REST API. Use persistent
settings instead. See the
{ref}/transient-settings-migration-guide.html[Transient settings migration
guide]. 
====
//end::notable-breaking-changes[]

[discrete]
[[breaking_80_command_line_tool_deprecations]]
==== Command line tool deprecations

TIP: {ess-skip-section}

[[deprecate-elasticsearch-setup-passwords]]
.The `elasticsearch-setup-passwords` tool is deprecated.
[%collapsible]
====
*Details* +
The `elasticsearch-setup-passwords` tool is deprecated in 8.0. To
manually reset the password for built-in users (including the `elastic` user), use
the {ref}/reset-password.html[`elasticsearch-reset-password`] tool, the {es}
{ref}/security-api-change-password.html[change passwords API], or the
User Management features in {kib}. 
`elasticsearch-setup-passwords` will be removed in a future release.

*Impact* +
Passwords are generated automatically for the `elastic` user when you start {es} for the first time. If you run `elasticsearch-setup-passwords` after
starting {es}, it will fail because the `elastic`
user password is already configured.
====

include::migrate_8_0/migrate_to_java_time.asciidoc[]
include::transient-settings-migration-guide.asciidoc[]
