    importPackage(Packages.de.elo.ix.client);

    //@include lib_Class.js
    //@include lib_sol.common.Template.js
    //@include lib_sol.common.ix.RfUtils.js
    //@include lib_sol.common.ix.FunctionBase.js

    var logger = sol.create("sol.Logger", { scope: "sol.dev.ix.functions.ResolveTemplate" });

    /**
     * Resolve a Template String with provided context data
     *
     * # Using templates from a string
     *
     *     {
     *         source: 'Hello {{name}}.',
     *         context: {
     *            name: "Max"
     *         }
     *     }
     *
     *
     * @author ELO Digital Office GmbH
     * @version 1.0
     *
     * @eloix
     * @requires sol.common.Template
     *
     * @requires sol.common.ix.FunctionBase
     *
     */
    sol.define("sol.dev.ix.functions.ResolveTemplate", {
      extend: "sol.common.ix.FunctionBase",

      requiredConfig: ["source", "context"],

      /**
       * @cfg {String} source (required)
       */

      /**
       * @cfg {Object[]} context(required)
       *
       */

      /**
       */
      process: function () {
        var me = this, template, result;

        template = sol.create("sol.common.Template", {
          source: me.source
        });
        result = template.apply(me.context);
        return result;
      }
    });

    /**
     * @member sol.dev.ix.functions.ResolveTemplate
     * @method RF_sol_function_ResolveTemplate
     * @static
     * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
     */
    function RF_sol_dev_function_ResolveTemplate(ec, args) {
      var params, module;

      params = sol.common.ix.RfUtils.parseAndCheckParams(ec, arguments.callee.name, args, "source", "context");
      module = sol.create("sol.dev.ix.functions.ResolveTemplate", params);
      return JSON.stringify(module.process());
    }