diff --git a/jira/jira-search/fixversion.sh b/jira/jira-search/fixversion.sh
new file mode 100644
index 0000000..46058af
--- /dev/null
+++ b/jira/jira-search/fixversion.sh
@@ -0,0 +1,42 @@
+#!/bin/bash
+
+## --------------------------------------------------------------------
+## Intent: Retrieve a list of reason query strings
+## --------------------------------------------------------------------
+function get_jql_fixversion()
+{
+    local -n ref=$1; shift
+
+    ref+=('VOLTHA-v2.12')
+    return
+}
+
+## --------------------------------------------------------------------
+## Intent: Modify search query by release fix version string
+## --------------------------------------------------------------------
+function do_fixversion()
+{
+    declare -n ans=$1; shift
+    declare -g fixversion
+
+    if [[ -v fixversion_excl ]]; then
+        filter="$(join_by ',' "${fixversion_excl[@]}")"
+        ans+=("(fixVersion NOT IN ($filter))")
+    fi
+    
+    if [[ -v fixversion_incl ]]; then
+        filter="$(join_by ',' "${fixversion_incl[@]}")"
+        ans+=("(fixVersion IN ($filter))")
+    fi
+
+    [[ -v fixversion_not_empty ]] && { ans+=('(fixVersion IS NOT EMPTY)'); }
+    [[ -v fixversion_is_empty ]] \
+        && { ans+=('(fixversion IS EMPTY)'); } \
+        || { true; }
+
+    return
+}
+
+: # ($?=0) for source $include
+
+# [EOF]
diff --git a/jira/jira-search/resolved.sh b/jira/jira-search/resolved.sh
new file mode 100644
index 0000000..9d2d563
--- /dev/null
+++ b/jira/jira-search/resolved.sh
@@ -0,0 +1,51 @@
+#!/bin/bash
+
+## --------------------------------------------------------------------
+## Intent: Retrieve a list of reason query strings
+## --------------------------------------------------------------------
+function get_jql_reasons()
+{
+    local -n ref=$1; shift
+
+    ref+=('Cannot Reproduce')
+    ref+=('Duplicate')
+    ref+=('Fixed')
+    ref+=('Incomplete')
+    ref+=("Won't Do")
+    ref+=("Won't Fix")
+    return
+}
+
+## --------------------------------------------------------------------
+## Intent: Modify search query by ticket resolution
+## --------------------------------------------------------------------
+function do_resolved()
+{
+    declare -n ans=$1; shift
+   # declare -g resolved
+
+    [[ -v resolved_start ]] && { ans+=("(Resolved >= $resolved_start)"); }
+    [[ -v resolved_end ]]   && { ans+=("(Resolved <= $resolved_end)"); }
+
+    if [[ -v resolved_excl ]]; then
+        filter="$(join_by ',' "${resolved_excl[@]}")"
+        declare -p filter
+        ans+=( "(resolution NOT IN ($filter))" )
+    fi
+
+    if [[ -v resolved_incl ]]; then
+        filter="$(join_by ',' "${resolved_incl[@]}")"
+        ans+=( "(resolution IN ($filter))" )
+    fi
+
+    [[ -v resolved_not_empty ]] && { ans+=('(resolved IS NOT EMPTY)'); }
+    [[ -v resolved_is_empty ]] \
+        && { ans+=('(resolved IS EMPTY)'); } \
+        || { true; }
+
+    return
+}
+
+: # ($?=0) for source $include
+
+# [EOF]
diff --git a/jira/jira-search/utils.sh b/jira/jira-search/utils.sh
new file mode 100644
index 0000000..8936a45
--- /dev/null
+++ b/jira/jira-search/utils.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+## -----------------------------------------------------------------------
+## Intent: Parse command line paths
+## -----------------------------------------------------------------------
+function program_paths()
+{
+    declare -g pgm="$(readlink --canonicalize-existing "$0")"
+    declare -g pgmbin="${pgm%/*}"
+    declare -g pgmlib="${pgmbin}/jira-search"
+
+    readonly pgm
+    readonly pgmbin
+    readonly pgmlib
+    return
+}
+program_paths
+           
+: # ($?=0) for source $include
+
+# [EOF]
