diff --git a/resources/templates/provision/yealink/cp860/directory.xml b/resources/templates/provision/yealink/cp860/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/cp860/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t20p/directory.xml b/resources/templates/provision/yealink/t20p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t20p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t21p/directory.xml b/resources/templates/provision/yealink/t21p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t21p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t22p/directory.xml b/resources/templates/provision/yealink/t22p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t22p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t23g/directory.xml b/resources/templates/provision/yealink/t23g/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t23g/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t23p/directory.xml b/resources/templates/provision/yealink/t23p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t23p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t26p/directory.xml b/resources/templates/provision/yealink/t26p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t26p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t27p/directory.xml b/resources/templates/provision/yealink/t27p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t27p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t28p/directory.xml b/resources/templates/provision/yealink/t28p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t28p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t29g/directory.xml b/resources/templates/provision/yealink/t29g/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t29g/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t32g/directory.xml b/resources/templates/provision/yealink/t32g/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t32g/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t32g/favorite_settings.xml b/resources/templates/provision/yealink/t32g/favorite_settings.xml
new file mode 100644
index 0000000000..b4cc2caca2
--- /dev/null
+++ b/resources/templates/provision/yealink/t32g/favorite_settings.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t38g/directory.xml b/resources/templates/provision/yealink/t38g/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t38g/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/t41p/directory.xml b/resources/templates/provision/yealink/t41p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/t41p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/vp530/directory.xml b/resources/templates/provision/yealink/vp530/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/vp530/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file
diff --git a/resources/templates/provision/yealink/w52p/directory.xml b/resources/templates/provision/yealink/w52p/directory.xml
new file mode 100644
index 0000000000..a05b029e18
--- /dev/null
+++ b/resources/templates/provision/yealink/w52p/directory.xml
@@ -0,0 +1,74 @@
+
+{foreach $contacts as $row}
+{if $smarty.get.contacts == "users" && $row.category == "users"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "groups" && $row.category == "groups"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+
+{elseif $smarty.get.contacts == "extensions" && $row.category == "extensions"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+
+{elseif $smarty.get.contacts == "all"}
+
+ {if $row.contact_name_given != ""}
+ {$row.contact_name_given} {$row.contact_name_family}
+ {else}
+ {$row.effective_caller_id_name}
+ {/if}
+
+ {if $row.category == "extensions"}
+ {if $row.phone_number != ""}
+ {$row.phone_number}
+ {else}
+ {$row.phone_extension}
+ {/if}
+ {else}
+ {foreach $row.numbers as $number}
+ {if $number.phone_number != ""}
+ {$number.phone_number}
+ {else}
+ {$number.phone_extension}
+ {/if}
+ {/foreach}
+ {/if}
+
+{/if}
+{/foreach}
+
\ No newline at end of file