The phone decides for each settings-section (e.g. telephony, identities, ..) whether it replaces the existing settings-section or if it merges the provided settings with the existing ones.

When patch is set to true then the settings-section is merged. When nothing is declared, patchDefault is set to true.

Usually merging means to replace the setting-subsections with the ones provided:

<configuration>
    <telephony>
        <callWaiting>
            <active>true</active><!-- set /telephony/callWaiting/active to true -->
            <!--tone>true</tone--> <!-- dont touch /telephony/callWaiting/tone -->
        </callWaiting>
        <callForwarding>
            <unconditional>
                <active>false</active><!-- set /telephony/callForwarding/unconditional/active to false -->
                <!-- dont touch target or timeout -->
            </unconditional>
            <!-- dont touch other callForwarding-subs like busy or noResponse -->
        </callForwarding>
        <!-- dont touch any other telephony-settings -->
    </telephony>
</configuration>

In the above example the values to be replaced were decided by the xpath, e.g. /telephony/callWaiting/active. There are multiple settings that come in lists where each element has the same xpath, only a different index. E.g. /keys/phoneXtensions/key. In these cases the merge-mechnism watches for a special attribute that is unique to such an element. These Elements replace their existing counterparts in entirety.

<keys version="1.8.8">
    <phoneXtensions>
        <key icon="" keyNumber="1" info="" label="">
            <!--replace the key with keyNumber 1 with whatever is provided here-->
        </key>
        <key icon="" keyNumber="2" info="" label="">
            <!--replace the key with keyNumber 2 with whatever is provided here-->
        </key>
        <!--don touch any other phoneXtensions-keys-->
    </phoneXtensions>
</keys>

This is the current list of these special marking attributes:

  users/user@name
  keys/phoneXtensions/key@keyNumber
  keys/extensionModule1/key@keyNumber
  keys/extensionModule2/key@keyNumber
  keys/extensionModule3/key@keyNumber
  keys/homeScreen/key@keyNumber
  telephony/callBindings/callBinding@name
  templates/template@name
  devices/cameras/ipCamera@name
  luaLibraries/luaLibrary@name
  luaAutoStarters/luaScript@name
Identitiy-elements do not have a special marker-attribute

Identities get merged the standard way. E.g.: to just change the username of the third identity, provision this:

<identities>
    <identity />
    <identity />
    <identity>
        <!-- change the 3rd username, nothing else: -->
        <username>Fallback</username>
    </identity>
</identities>