/** @page configincompat3to4 Configuration Incompatibilities 3->4

This page lists configuration incompatibilities between Nagios 3
and Nagios 4.

[TOC]

@section mainconfig Main Config File Options
Since command file handling has been redone, embedded perl has been
removed and the event execution loop now sits and waits on input from
worker processes rather than spending any time sleeping, the following
variables have been obsoleted, will yield a warning when encountered
and no longer have any effect on monitoring:
@li command_check_interval
@li external_command_buffer_slots
@li sleep_time
@li enable_failure_prediction
@li enable_embedded_perl
@li use_embedded_perl_implicitly
@li auth_file
@li p1_file


@section nestedgroups Nested Group Includes
In Nagios 3, it's possible to have groups include each other
cyclically, like this:
@verbatim
define hostgroup{
	hostgroup_name         HG1
	alias                  Hostgroup 1
	hostgroup_members      HG3
}

define hostgroup{
	hostgroup_name         HG2
	alias                  Hostgroup 2
	hostgroup_members      HG1
}

define hostgroup{
	hostgroup_name         HG3
	alias                  Hostgroup 3
	hostgroup_members      HG2
}
@endverbatim
With Nagios 4, that will generate an error. The Nagios 3 behaviour
is that the first hostgroup, as determined by alphabetical sorting,
will get the members of its included groups, but the later ones in
the sorting will not get the members of the previous ones. Since
that is an error-prone and illogical way of assigning group members,
we now disallow it.

This will work the same for all grouptypes.

@section groupinherits Group Inheritance
Groups no longer inherit each others exclusions. Consider the
following scenario:
@verbatim
define host{
    use                            default-host-template
    host_name                      A
    alias                          linux Server1
    address                        127.0.0.1
    hostgroups                     HG1
    contact_groups                 support-group
}
define hostgroup{
    hostgroup_name                 HG1
    alias                          Hostgroup 1
    hostgroup_members              HG3
}
define hostgroup{
    hostgroup_name                 HG3
    alias                          Hostgroup 3
    members                        E,F,H,!A
    hostgroup_members              HG2
}
@endverbatim
In Nagios 3, A would *not* be a member of HG1. In Nagios 4, it will,
because the logic has been fixed so that group inclusion works only
with the actual members, and not the rules concerning how those
members were chosen.
If you want to carry over exclusions, you can instead make a template
and 'use' one hostgroup from another.

The same goes for all group types, and not just hostgroups.

@section oconfchanges Object Configuration Changes
@subsection Deprecations
The "obsess_over_host" (for hosts) and "obsess_over_service" (for
services) configuration variables have been renamed to simply "obsess".
The old values will serve as aliases for the duration of the Nagios 4
lifetime and will be removed in Nagios 5. Users should adjust their
configurations accordingly.

@subsection additions Additions
Services have two new configurable values:
@li parents
@li hourly_value

The 'parents' directive can be used to suppress notifications for a
service in much the same way that it can be used for hosts. If all
parents of a particular service are in a non-OK state when the child
service enters a HARD state (and should have notified), notifications
will be suppressed for the child service.

The 'hourly_value' directive can be used to set a service 'value' of
the service in question. It works in tandem with a new directive for
contacts ("minimum_value") in order to suppress notifications, and
UI's are encouraged to take it into account to display the most severe
and valuable errors in a more prominent fashion. Note that it has no
currency attached to it, so whether you interpret it as affected_users,
business_value or whatever is entirely up to you.

Contacts have one new configurable value, namely 'minimum_value', which
sets the minimum notification value for which the contact should get
notified. The notification value is determined by the total value of
all objects affected by the problem.
*/
