<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seth+Thomas</id>
	<title>innovaphone wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.innovaphone.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Seth+Thomas"/>
	<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Special:Contributions/Seth_Thomas"/>
	<updated>2026-05-09T10:38:19Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.3</generator>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=78173</id>
		<title>Reference13r2:Apps/PbxManager/Explorer</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=78173"/>
		<updated>2025-10-06T12:34:39Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: Remove Group Indications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Explorer is a tool to search and modify the PBX objects configuration based on xpath expressions.&lt;br /&gt;
&lt;br /&gt;
Care should be taken to apply any changes with the OK buttons. These changes come into effect immediately and cannot be reverted. It is good practise to save a backup of the configuration before applying any modification.&lt;br /&gt;
&lt;br /&gt;
Clicking OK if there is no change is also not advised. It creates an unnecessary write operation.&lt;br /&gt;
&lt;br /&gt;
== The search input ==&lt;br /&gt;
&lt;br /&gt;
The search input is used for an xpath expression to filter the objects. Any object, for which an non-empty set is returned, is selected. If the search input is left empty, the expression &amp;quot;/user&amp;quot; is used, which selects all objects.&lt;br /&gt;
&lt;br /&gt;
An example, which selects all objects with a long name starting With &amp;quot;A&amp;quot; would be&lt;br /&gt;
&lt;br /&gt;
 /user[starts-with(@cn, &amp;quot;A&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
&lt;br /&gt;
To modify the data, an expression to add a tag or attribute can be added, by clicking on the plus icon. For example the expression&lt;br /&gt;
&lt;br /&gt;
 device/@hw = hw0&lt;br /&gt;
&lt;br /&gt;
adds a &amp;quot;device&amp;quot; tag with the attribute &amp;quot;hw&amp;quot; set to hw0&lt;br /&gt;
&lt;br /&gt;
== Del ==&lt;br /&gt;
&lt;br /&gt;
By clicking on the minus icon an expression to remove a tag or attribut may be specified&lt;br /&gt;
&lt;br /&gt;
== Display of current configuration ==&lt;br /&gt;
&lt;br /&gt;
In the first window below the expressions, the current configuration for each selected object is displayed&lt;br /&gt;
&lt;br /&gt;
== Preview of changed configuration ==&lt;br /&gt;
&lt;br /&gt;
In the window below the configuration is display as if the changes where applied&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
=== OK ===&lt;br /&gt;
&lt;br /&gt;
applies the change to the current object&lt;br /&gt;
&lt;br /&gt;
=== OK(all) ===&lt;br /&gt;
&lt;br /&gt;
applies the change to all objects&lt;br /&gt;
&lt;br /&gt;
=== Skip ===&lt;br /&gt;
&lt;br /&gt;
skips the current object&lt;br /&gt;
&lt;br /&gt;
=== Cancel ===&lt;br /&gt;
&lt;br /&gt;
Cancels the operation. The changes already applied with OK are not reversed&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
{{Template:3rd Party Input}}&lt;br /&gt;
==== Securing it with boolean object &#039;alwaystrue&#039; ====&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + @bool =  alwaystrue &amp;amp; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
=== Search all users with number ===&lt;br /&gt;
 /user[not(pseudo)][@e164]&lt;br /&gt;
&lt;br /&gt;
=== Search all user devices with Innovaphone MAC as hardware ID ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
=== Search all user with template &amp;quot;Config User&amp;quot; and remove password ===&lt;br /&gt;
 /user[@config=&amp;quot;Config User&amp;quot;]  -&amp;gt; - @pwd - @pwdx&lt;br /&gt;
&lt;br /&gt;
=== Give all phones without app the app phone ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)][not(@app)] -&amp;gt; + @app=phone&lt;br /&gt;
&lt;br /&gt;
=== Give all user devices the flag &#039;Reverse Proxy&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[not(@trusted)]  -&amp;gt; + @trusted=true&lt;br /&gt;
&lt;br /&gt;
=== Remove the Flag &#039;TLS only&#039; from all user devices ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[@tls=&amp;quot;true&amp;quot;]  -&amp;gt; - @tls&lt;br /&gt;
&lt;br /&gt;
=== Set a cfnr to 88 for all users with &#039;T&#039; as first letter in name ===&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
=== Setting an only int cfnr for all users ===&lt;br /&gt;
&lt;br /&gt;
This is required, for example, for softphones that are not registered and internal callers should receive an announcement.&lt;br /&gt;
&lt;br /&gt;
For this you have to enable the Call forward on myApps offline checkbox.&lt;br /&gt;
&lt;br /&gt;
 /user[not(pseudo)][@e164] -&amp;gt; + cd/@type = cfnr&lt;br /&gt;
Search for the empty cfnr and add the &lt;br /&gt;
 /user[not(pseudo)][@e164]/cd[not(ep)] -&amp;gt; + ep/@e164 = 88 (or +ep/@h323 = Object-Name) &lt;br /&gt;
Add another + and add &lt;br /&gt;
 + src/@type = do&lt;br /&gt;
&lt;br /&gt;
Finally, set the only int flag:&lt;br /&gt;
&lt;br /&gt;
 /user[not(pseudo)][@e164]/cd/src -&amp;gt; + ep/@ext = false&lt;br /&gt;
&lt;br /&gt;
=== Disable all forkings with app rcc at node &#039;Testnode&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164][@node=&amp;quot;Testnode&amp;quot;]/fork[@app=&amp;quot;rcc&amp;quot;][not(@off)] -&amp;gt; + @off = true&lt;br /&gt;
&lt;br /&gt;
=== Give visibility-entries the flag &#039;visible&#039; ===&lt;br /&gt;
This is a helpful job for migrations from V12 to set this in V13 new flag.&lt;br /&gt;
&lt;br /&gt;
 /user[not(pseudo)][@e164]/allow[not(@visible)] -&amp;gt; + @visible = true&lt;br /&gt;
or this example to remove the visibility flags for all users - new visibility flags can then be rolled out using a Config Template&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, *)] -&amp;gt; -allow&lt;br /&gt;
&lt;br /&gt;
=== Replace all user passwords on users which already have set a password with &#039;1234&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164][@pwd]  -&amp;gt; + @pwd = 1234&lt;br /&gt;
&lt;br /&gt;
=== Move all members of Node &#039;node_old&#039; to &#039;node_new&#039; ===&lt;br /&gt;
 /user[@node=&amp;quot;_node_HQ&amp;quot;]  -&amp;gt; + @node = node_new&lt;br /&gt;
Be careful by moving from node &#039;root&#039;, maybe you should use more filter options.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remove Group Indications&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
/user[not(pseudo) ] [@gi] -&amp;gt;  -@gi&lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[https://www.w3schools.com/xml/xpath_intro.asp XPath Tutorial (w3schools.com)]&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68359</id>
		<title>Reference13r2:Apps/PbxManager/Explorer</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68359"/>
		<updated>2023-08-09T08:08:44Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Explorer is a tool to search and modify the PBX objects configuration based on xpath expressions.&lt;br /&gt;
&lt;br /&gt;
Care should be taken to apply any changes with the OK buttons. These changes come into effect immediately and cannot be reverted. It is good practise to save a backup of the configuration before applying any modification.&lt;br /&gt;
&lt;br /&gt;
Clicking OK if there is no change is also not advised. It creates an unnecessary write operation.&lt;br /&gt;
&lt;br /&gt;
== The search input ==&lt;br /&gt;
&lt;br /&gt;
The search input is used for an xpath expression to filter the objects. Any object, for which an non-empty set is returned, is selected. If the search input is left empty, the expression &amp;quot;/user&amp;quot; is used, which selects all objects.&lt;br /&gt;
&lt;br /&gt;
An example, which selects all objects with a long name starting With &amp;quot;A&amp;quot; would be&lt;br /&gt;
&lt;br /&gt;
 /user[starts-with(@cn, &amp;quot;A&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
&lt;br /&gt;
To modify the data, an expression to add a tag or attribute can be added, by clicking on the plus icon. For example the expression&lt;br /&gt;
&lt;br /&gt;
 device/@hw = hw0&lt;br /&gt;
&lt;br /&gt;
adds a &amp;quot;device&amp;quot; tag with the attribute &amp;quot;hw&amp;quot; set to hw0&lt;br /&gt;
&lt;br /&gt;
== Del ==&lt;br /&gt;
&lt;br /&gt;
By clicking on the minus icon an expression to remove a tag or attribut may be specified&lt;br /&gt;
&lt;br /&gt;
== Display of current configuration ==&lt;br /&gt;
&lt;br /&gt;
In the first window below the expressions, the current configuration for each selected object is displayed&lt;br /&gt;
&lt;br /&gt;
== Preview of changed configuration ==&lt;br /&gt;
&lt;br /&gt;
In the window below the configuration is display as if the changes where applied&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
=== OK ===&lt;br /&gt;
&lt;br /&gt;
applies the change to the current object&lt;br /&gt;
&lt;br /&gt;
=== OK(all) ===&lt;br /&gt;
&lt;br /&gt;
applies the change to all objects&lt;br /&gt;
&lt;br /&gt;
=== Skip ===&lt;br /&gt;
&lt;br /&gt;
skips the current object&lt;br /&gt;
&lt;br /&gt;
=== Cancel ===&lt;br /&gt;
&lt;br /&gt;
Cancels the operation. The changes already applied with OK are not reversed&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Search all users with number ===&lt;br /&gt;
 /user[not(pseudo)][@e164]&lt;br /&gt;
&lt;br /&gt;
=== Search all user devices with Innovaphone MAC as hardware ID ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
=== Search all user with template &amp;quot;Config User&amp;quot; and remove password ===&lt;br /&gt;
 /user[@config=&amp;quot;Config User&amp;quot;]  -&amp;gt; - @pwd - @pwdx&lt;br /&gt;
&lt;br /&gt;
=== Give all phones without app the app phone ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)][not(@app)] -&amp;gt; + @app=phone&lt;br /&gt;
&lt;br /&gt;
=== Give all user devices the flag &#039;Reverse Proxy&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[not(@trusted)]  -&amp;gt; + @trusted=true&lt;br /&gt;
&lt;br /&gt;
=== Remove the Flag &#039;TLS only&#039; from all user devices ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[@tls=&amp;quot;true&amp;quot;]  -&amp;gt; - @tls&lt;br /&gt;
&lt;br /&gt;
=== Set a cfnr to 88 for all users with &#039;T&#039; as first letter in name ===&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
==== Securing it with boolean object &#039;alwaystrue&#039; ====&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + @bool =  alwaystrue &amp;amp; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
=== Disable all forkings with app rcc at node &#039;Testnode&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164][@node=&amp;quot;Testnode&amp;quot;]/fork[@app=&amp;quot;rcc&amp;quot;][not(@off)] -&amp;gt; + @off = true&lt;br /&gt;
&lt;br /&gt;
=== Give visibility-entries the flag &#039;visible&#039; ===&lt;br /&gt;
&lt;br /&gt;
This is a helpful job for migrations from V12 to set this in V13 new flag.&lt;br /&gt;
&lt;br /&gt;
 /user[not(pseudo)][@e164]/allow[not(@visible)] -&amp;gt; + @visible = true&lt;br /&gt;
or this example to remove the visibility flags for all users - new visibility flags can then be rolled out using a Config Template&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, *)] -&amp;gt; -allow&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[https://www.w3schools.com/xml/xpath_intro.asp XPath Tutorial (w3schools.com)]&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68358</id>
		<title>Reference13r2:Apps/PbxManager/Explorer</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68358"/>
		<updated>2023-08-09T08:07:55Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Explorer is a tool to search and modify the PBX objects configuration based on xpath expressions.&lt;br /&gt;
&lt;br /&gt;
Care should be taken to apply any changes with the OK buttons. These changes come into effect immediately and cannot be reverted. It is good practise to save a backup of the configuration before applying any modification.&lt;br /&gt;
&lt;br /&gt;
Clicking OK if there is no change is also not advised. It creates an unnecessary write operation.&lt;br /&gt;
&lt;br /&gt;
== The search input ==&lt;br /&gt;
&lt;br /&gt;
The search input is used for an xpath expression to filter the objects. Any object, for which an non-empty set is returned, is selected. If the search input is left empty, the expression &amp;quot;/user&amp;quot; is used, which selects all objects.&lt;br /&gt;
&lt;br /&gt;
An example, which selects all objects with a long name starting With &amp;quot;A&amp;quot; would be&lt;br /&gt;
&lt;br /&gt;
 /user[starts-with(@cn, &amp;quot;A&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
&lt;br /&gt;
To modify the data, an expression to add a tag or attribute can be added, by clicking on the plus icon. For example the expression&lt;br /&gt;
&lt;br /&gt;
 device/@hw = hw0&lt;br /&gt;
&lt;br /&gt;
adds a &amp;quot;device&amp;quot; tag with the attribute &amp;quot;hw&amp;quot; set to hw0&lt;br /&gt;
&lt;br /&gt;
== Del ==&lt;br /&gt;
&lt;br /&gt;
By clicking on the minus icon an expression to remove a tag or attribut may be specified&lt;br /&gt;
&lt;br /&gt;
== Display of current configuration ==&lt;br /&gt;
&lt;br /&gt;
In the first window below the expressions, the current configuration for each selected object is displayed&lt;br /&gt;
&lt;br /&gt;
== Preview of changed configuration ==&lt;br /&gt;
&lt;br /&gt;
In the window below the configuration is display as if the changes where applied&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
=== OK ===&lt;br /&gt;
&lt;br /&gt;
applies the change to the current object&lt;br /&gt;
&lt;br /&gt;
=== OK(all) ===&lt;br /&gt;
&lt;br /&gt;
applies the change to all objects&lt;br /&gt;
&lt;br /&gt;
=== Skip ===&lt;br /&gt;
&lt;br /&gt;
skips the current object&lt;br /&gt;
&lt;br /&gt;
=== Cancel ===&lt;br /&gt;
&lt;br /&gt;
Cancels the operation. The changes already applied with OK are not reversed&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Search all users with number ===&lt;br /&gt;
 /user[not(pseudo)][@e164]&lt;br /&gt;
&lt;br /&gt;
=== Search all user devices with Innovaphone MAC as hardware ID ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
=== Search all user with template &amp;quot;Config User&amp;quot; and remove password ===&lt;br /&gt;
 /user[@config=&amp;quot;Config User&amp;quot;]  -&amp;gt; - @pwd - @pwdx&lt;br /&gt;
&lt;br /&gt;
=== Give all phones without app the app phone ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)][not(@app)] -&amp;gt; + @app=phone&lt;br /&gt;
&lt;br /&gt;
=== Give all user devices the flag &#039;Reverse Proxy&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[not(@trusted)]  -&amp;gt; + @trusted=true&lt;br /&gt;
&lt;br /&gt;
=== Remove the Flag &#039;TLS only&#039; from all user devices ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[@tls=&amp;quot;true&amp;quot;]  -&amp;gt; - @tls&lt;br /&gt;
&lt;br /&gt;
=== Set a cfnr to 88 for all users with &#039;T&#039; as first letter in name ===&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
==== Securing it with boolean object &#039;alwaystrue&#039; ====&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + @bool =  alwaystrue &amp;amp; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
=== Disable all forkings with app rcc at node &#039;Testnode&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164][@node=&amp;quot;Testnode&amp;quot;]/fork[@app=&amp;quot;rcc&amp;quot;][not(@off)] -&amp;gt; + @off = true&lt;br /&gt;
&lt;br /&gt;
=== Give visibility-entries the flag &#039;visible&#039; ===&lt;br /&gt;
&lt;br /&gt;
This is a helpful job for migrations from V12 to set this in V13 new flag.&lt;br /&gt;
 /user[not(pseudo)][@e164]/allow[not(@visible)] -&amp;gt; + @visible = true&lt;br /&gt;
or this example to remove the visibility flags for all users - new visibility flags can then be rolled out using a Config Template&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, *)] -&amp;gt; -allow&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[https://www.w3schools.com/xml/xpath_intro.asp XPath Tutorial (w3schools.com)]&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68275</id>
		<title>Reference13r2:Apps/PbxManager/Explorer</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference13r2:Apps/PbxManager/Explorer&amp;diff=68275"/>
		<updated>2023-07-31T12:14:03Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The PBX Manager Explorer is a tool to search and modify the PBX objects configuration based on xpath expressions.&lt;br /&gt;
&lt;br /&gt;
Care should be taken to apply any changes with the OK buttons. These changes come into effect immediately and cannot be reverted. It is good practise to save a backup of the configuration before applying any modification.&lt;br /&gt;
&lt;br /&gt;
Clicking OK if there is no change is also not advised. It creates an unnecessary write operation.&lt;br /&gt;
&lt;br /&gt;
== The search input ==&lt;br /&gt;
&lt;br /&gt;
The search input is used for an xpath expression to filter the objects. Any object, for which an non-empty set is returned, is selected. If the search input is left empty, the expression &amp;quot;/user&amp;quot; is used, which selects all objects.&lt;br /&gt;
&lt;br /&gt;
An example, which selects all objects with a long name starting With &amp;quot;A&amp;quot; would be&lt;br /&gt;
&lt;br /&gt;
 /user[starts-with(@cn, &amp;quot;A&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
== Add ==&lt;br /&gt;
&lt;br /&gt;
To modify the data, an expression to add a tag or attribute can be added, by clicking on the plus icon. For example the expression&lt;br /&gt;
&lt;br /&gt;
 device/@hw = hw0&lt;br /&gt;
&lt;br /&gt;
adds a &amp;quot;device&amp;quot; tag with the attribute &amp;quot;hw&amp;quot; set to hw0&lt;br /&gt;
&lt;br /&gt;
== Del ==&lt;br /&gt;
&lt;br /&gt;
By clicking on the minus icon an expression to remove a tag or attribut may be specified&lt;br /&gt;
&lt;br /&gt;
== Display of current configuration ==&lt;br /&gt;
&lt;br /&gt;
In the first window below the expressions, the current configuration for each selected object is displayed&lt;br /&gt;
&lt;br /&gt;
== Preview of changed configuration ==&lt;br /&gt;
&lt;br /&gt;
In the window below the configuration is display as if the changes where applied&lt;br /&gt;
&lt;br /&gt;
== Operations ==&lt;br /&gt;
&lt;br /&gt;
=== OK ===&lt;br /&gt;
&lt;br /&gt;
applies the change to the current object&lt;br /&gt;
&lt;br /&gt;
=== OK(all) ===&lt;br /&gt;
&lt;br /&gt;
applies the change to all objects&lt;br /&gt;
&lt;br /&gt;
=== Skip ===&lt;br /&gt;
&lt;br /&gt;
skips the current object&lt;br /&gt;
&lt;br /&gt;
=== Cancel ===&lt;br /&gt;
&lt;br /&gt;
Cancels the operation. The changes already applied with OK are not reversed&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Search all users with number ===&lt;br /&gt;
 /user[not(pseudo)][@e164]&lt;br /&gt;
&lt;br /&gt;
=== Search all user devices with Innovaphone MAC as hardware ID ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
=== Search all user with template &amp;quot;Config User&amp;quot; and remove password ===&lt;br /&gt;
 /user[@config=&amp;quot;Config User&amp;quot;]  -&amp;gt; - @pwd - @pwdx&lt;br /&gt;
&lt;br /&gt;
=== Give all phones without app the app phone ===&lt;br /&gt;
 /user/device[starts-with(@hw,&amp;quot;009033&amp;quot;)][not(@app)] -&amp;gt; + @app=phone&lt;br /&gt;
&lt;br /&gt;
=== Give all user devices the flag &#039;Reverse Proxy&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[not(@trusted)]  -&amp;gt; + @trusted=true&lt;br /&gt;
&lt;br /&gt;
=== Remove the Flag &#039;TLS only&#039; from all user devices ===&lt;br /&gt;
 /user[not(pseudo)][@e164]/device[@tls=&amp;quot;true&amp;quot;]  -&amp;gt; - @tls&lt;br /&gt;
&lt;br /&gt;
=== Set a cfnr to 88 for all users with &#039;T&#039; as first letter in name ===&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
==== Securing it with boolean object &#039;alwaystrue&#039; ====&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]  -&amp;gt; + cd/@type = cfnr&amp;lt;br/&amp;gt;&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, &amp;quot;T&amp;quot;)]/cd[not(ep)] -&amp;gt; + @bool =  alwaystrue &amp;amp; + ep/@e164 = 88&lt;br /&gt;
&lt;br /&gt;
=== Disable all forkings with app rcc at node &#039;Testnode&#039; ===&lt;br /&gt;
 /user[not(pseudo)][@e164][@node=&amp;quot;Testnode&amp;quot;]/fork[@app=&amp;quot;rcc&amp;quot;][not(@off)] -&amp;gt; + @off = true&lt;br /&gt;
&lt;br /&gt;
=== Give visibility-entries the flag &#039;visible&#039; ===&lt;br /&gt;
{{Template:3rd Party Input}}&lt;br /&gt;
This is a helpful job for migrations from V12 to set this in V13 new flag.&lt;br /&gt;
 /user[not(pseudo)][@e164]/allow[not(@visible)] -&amp;gt; + @visible = true&lt;br /&gt;
&lt;br /&gt;
or this example to remove the visibility flags for all users - new visibility flags can then be rolled out using a Config Template&lt;br /&gt;
 /user[not(pseudo) and starts-with(@cn, *)] -&amp;gt; -allow&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Links ==&lt;br /&gt;
[https://www.w3schools.com/xml/xpath_intro.asp XPath Tutorial (w3schools.com)]&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Reference11r1:Phone/User/Function-Keys/Boolean-Object&amp;diff=51751</id>
		<title>Reference11r1:Phone/User/Function-Keys/Boolean-Object</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Reference11r1:Phone/User/Function-Keys/Boolean-Object&amp;diff=51751"/>
		<updated>2019-04-11T13:39:57Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: /* Subscribe for Dialog Info */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Boolean Object ==&lt;br /&gt;
&lt;br /&gt;
This function monitors the state of the addressed [[{{NAMESPACE}}:PBX/Objects/Boolean | Boolean Object ]] in the innovaphone PBX. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; This function will only work if the monitoring user (i.e. the user configuring the key) receives group indications for the boolean object or if &#039;&#039;Subscribe for Dialog Info&#039;&#039; is used. &lt;br /&gt;
&lt;br /&gt;
=== Current State ===&lt;br /&gt;
A Boolean Object as seen by the user is in one of four states: &lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Automatic Off State&#039;&#039;&#039;: The automatic mode FALSE rule applies&lt;br /&gt;
* &#039;&#039;&#039;Automatic On State&#039;&#039;&#039;: The automatic mode TRUE rule applies&lt;br /&gt;
* &#039;&#039;&#039;Manual Override Off State&#039;&#039;&#039;: The manual override FALSE rule applies (automatic mode rules are disabled)&lt;br /&gt;
* &#039;&#039;&#039;Manual Override On State&#039;&#039;&#039;: The manual override TRUE rule applies (automatic mode rules are disabled)&lt;br /&gt;
&lt;br /&gt;
The function key will indicate the current state of the boolean object as define in the respective &#039;&#039;Text&#039;&#039;, &#039;&#039;Icon&#039;&#039; and &#039;&#039;LED&#039;&#039; properties.&lt;br /&gt;
&lt;br /&gt;
=== Boolean Object Identification ===&lt;br /&gt;
The number and/or name of the monitored boolean object is configured here.&lt;br /&gt;
&lt;br /&gt;
=== Manual State Toggling ===&lt;br /&gt;
If the &#039;&#039;&#039;Toggle State&#039;&#039;&#039; is set, the function key operates as a toggle key. Each keystroke switches from the current state of the addressed boolean object to the next state in the sequence &#039;&#039;Automatic Off/On State&#039;&#039; / &#039;&#039;Manual Override Off State&#039;&#039; / &#039;&#039;Manual Override On State&#039;&#039;. &lt;br /&gt;
&lt;br /&gt;
If there are no &#039;&#039;Text&#039;&#039;, &#039;&#039;Icon&#039;&#039; and &#039;&#039;LED&#039;&#039; settings for both the &#039;&#039;Automatic Off State&#039;&#039; and &#039;&#039;Automatic On State&#039;&#039; state, the function key will toggle between the &#039;&#039;Manual Override Off&#039;&#039; and &#039;&#039;Manual Override On&#039;&#039; states only.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039;  Toggling works only if a number is configured for the Boolean Object. &lt;br /&gt;
&lt;br /&gt;
If this check-mark is &#039;&#039;&#039;not&#039;&#039;&#039; set pressing the key sets up a connection to the Boolean Object. The state of the Boolean Object can be changed then by entering DTMF codes. &lt;br /&gt;
&lt;br /&gt;
=== Subscribe for Dialog Info ===&lt;br /&gt;
If this check-mark is ticked, the function key will obtain the boolean object&#039;s state information through a dialog subscription rather than with group indications.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; In order to make  both options &#039;&#039;&#039;Subscribe for Dialog Info&#039;&#039;&#039; and &#039;&#039;&#039;Toggle State&#039;&#039;&#039; works, the visibility should be also configured with option &amp;quot;note Calls&amp;quot; on the involved Boolean object, otherwise it will not work.&lt;br /&gt;
&lt;br /&gt;
=== DTMF codes ===&lt;br /&gt;
Boolean objects can be controlled by calling them directly (i.e. without a function key).  See &#039;&#039;Manual Override&#039;&#039; in [[{{NAMESPACE}}:PBX/Objects/Boolean]] for details.&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
	<entry>
		<id>https://wiki.innovaphone.com/index.php?title=Howto:Simple_Linear_ACD_with_Voicemail_XML_Script&amp;diff=51348</id>
		<title>Howto:Simple Linear ACD with Voicemail XML Script</title>
		<link rel="alternate" type="text/html" href="https://wiki.innovaphone.com/index.php?title=Howto:Simple_Linear_ACD_with_Voicemail_XML_Script&amp;diff=51348"/>
		<updated>2019-02-25T12:58:30Z</updated>

		<summary type="html">&lt;p&gt;Seth Thomas: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This article describes how to setup a simple automated call distribution by using custom voicemail XML script.&lt;br /&gt;
&lt;br /&gt;
==Applies To==&lt;br /&gt;
This information applies to&lt;br /&gt;
&lt;br /&gt;
* innovaphone PBX, V7 hotfix 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==More Information==&lt;br /&gt;
In most cases it is possible to distribute incoming calls on innovaphone PBX as desired by using PBX features like a broadcast call, waiting queue and user groups. But some scenarios require more complex call routing between user objects. For this purpose a custom XML voicemail script can be used to implement a desired call distribution scenario.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This script is based on an example for a simple call flow:&lt;br /&gt;
*route incoming call to agents one by one&lt;br /&gt;
*try next agent if&lt;br /&gt;
**agent is away(CFU is enabled) or not registered&lt;br /&gt;
**agent is busy&lt;br /&gt;
**agent is not responding after 15 sec.&lt;br /&gt;
*at the end, when all agents have been tried&lt;br /&gt;
**route call to VM if no busy agents&lt;br /&gt;
**disconnect with cause code &amp;quot;busy&amp;quot;, if an agent in the call distribution is busy&lt;br /&gt;
&lt;br /&gt;
The call distribution is intentional designed so that the first free agent gets the most calls.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;[[Image:Call Distribution Diagramm.png]]&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make the script somewhat generic the numbers of agents and mailbox number are stored in separate files:&lt;br /&gt;
&lt;br /&gt;
; 1.txt : 101&lt;br /&gt;
; 2.txt : 102&lt;br /&gt;
; 3.txt : 103&lt;br /&gt;
; vm.txt : 300&lt;br /&gt;
&lt;br /&gt;
Please note, that this script is exemplary and free and can be modified to fulfill your special requirements.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
The outline for the following configuration scenario shall be as follows:&lt;br /&gt;
*Create a new folder on the compact flash card e.g. &amp;quot;acd&amp;quot;.&lt;br /&gt;
*Place a files provided in the download section in this folder.&lt;br /&gt;
*Additionally place the text files with numbers of agents and voicemail box in this folder.&lt;br /&gt;
*Create a new voicemail object in the PBX with URL &amp;lt;code&amp;gt;http://127.0.0.1/drive/CF0/acd/acd.xml?$_pbxfwd=true&amp;lt;/code&amp;gt;.&lt;br /&gt;
*In case an innovaphone voicemail is used instead of an external voicemail box:&lt;br /&gt;
**Create a dummy user with a CFU to &amp;lt;VM-Number&amp;gt;+&amp;lt;Box-Number&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Known Problems===&lt;br /&gt;
&lt;br /&gt;
*Don&#039;t forget to provide additional option to the script URL, since it is required for the executing of call forwards: &amp;lt;code&amp;gt;?$_pbxfwd=true&amp;lt;/code&amp;gt;&lt;br /&gt;
*Make sure there are no administrative CFUs (using boolean, &amp;quot;only not for&amp;quot; etc.) configured on the PBX users/agents.&lt;br /&gt;
*Make sure the CFNR Timeout is longer than timeout defined in the ACD XML Script. CFNR defined on User Objects with no registered device are executed immediately.&lt;br /&gt;
*If &amp;quot;No Answer&amp;quot; on Trunk Object is configured, configure a CFNR on the ACD VoiceMail Object with &amp;quot;-&amp;quot; (minus sign) as number (see [[Reference7:Administration/PBX/Objects/Edit CFs]] for more information).&lt;br /&gt;
&lt;br /&gt;
== Download ==&lt;br /&gt;
*[http://download.innovaphone.com/ice/wiki-src#linearacd http://download.innovaphone.com/ice/wiki-src#linearacd] - download the complete file package of scripts and files described in this article.&lt;br /&gt;
&lt;br /&gt;
== Related Articles ==&lt;br /&gt;
[[Howto:How_to_Configure_the_innovaphone_Voicemail|How to Configure the innovaphone Voicemail]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Sample|{{PAGENAME}}]]&lt;/div&gt;</summary>
		<author><name>Seth Thomas</name></author>
	</entry>
</feed>