    //@include lib_Class.js
    //@include lib_sol.common.JsonUtils.js
    //@include lib_sol.common.RepoUtils.js
    //@include lib_sol.common.SordUtils.js
    //@include lib_sol.common.CounterUtils.js
    //@include lib_sol.common.Template.js
    //@include lib_sol.common.WfUtils.js
    //@include lib_sol.common.ix.RfUtils.js
    //@include lib_sol.common.ix.FunctionBase.js
    //@include lib_sol.common.ix.functions.GenerateIdentifier.js

    var logger = sol.create("sol.Logger", { scope: "sol.contract.ix.functions.generators.GenerateContractNo" });

    /**
     * Generates an ID for a file by template
     */
    sol.define("sol.contract.ix.functions.generators.GenerateContractNo", {
      extend: "sol.common.ix.functions.GenerateIdentifier",

      /** @cfg {String} objId (required)
       * Object ID
       */

      initialize: function (config) {
        var me = this;
        sol.ns("sol.contract");
        sol.contract.Config = sol.create("sol.common.Config", { compose: "/contract/Configuration/contract.config" }).config;
        me.$super("sol.Base", "initialize", [config]);
      },

      /**
       * @inheritdoc sol.common.ix.functions.GenerateIdentifier#getIdentifierTemplateId
       */
      getIdentifierTemplateId: function () {
        var me = this;
        return me.getTemplateId("Contract no.", sol.contract.Config.fields.contractNoGen, sol.contract.Config.generators.templateFolderIds.contractNo);
      },

      /**
       * @inheritdoc sol.common.ix.functions.GenerateIdentifier#getIdentifier
       */
      getIdentifier: function () {
        var me = this,
            contractNoFieldName = sol.contract.Config.fields.contractNo;
        if (!contractNoFieldName) {
          throw "getIdentifier(): Contract no. field name must not be empty.";
        }
        return sol.common.SordUtils.getObjKeyValue(me.sord, contractNoFieldName);
      },

      /**
       * @inheritdoc sol.common.ix.functions.GenerateIdentifier#setIdentifier
       */
      setIdentifier: function (contractNo) {
        var me = this,
            contractNoFieldName = sol.contract.Config.fields.contractNo;
        if (!contractNoFieldName) {
          throw "setIdentifier(): Contract no. field name must not be empty.";
        }
        sol.common.SordUtils.setObjKeyValue(me.sord, contractNoFieldName, contractNo);
      }
    });

    /**
     * @member sol.common.ix.functions.generators.GenerateFileReference
     * @static
     * @inheritdoc sol.common.ix.FunctionBase#onEnterNode
     */
    function onEnterNode(clInfo, userId, wFDiagram, nodeId) {
      logger.enter("onEnterNode_GenerateFileReference", { flowId: wFDiagram.id, nodeId: nodeId });
      var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId),
          module;

      params.objId = wFDiagram.objId;
      module = sol.create("sol.contract.ix.functions.generators.GenerateContractNo", params);

      module.process();

      logger.exit("onEnterNode_GenerateFileReference");
    }

    /**
     * @member sol.common.ix.functions.generators.GenerateFileReference
     * @static
     * @inheritdoc sol.common.ix.FunctionBase#onExitNode
     */
    function onExitNode(clInfo, userId, wFDiagram, nodeId) {
      logger.enter("onExitNode_GenerateFileReference", { flowId: wFDiagram.id, nodeId: nodeId });
      var params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId),
          module;

      params.objId = wFDiagram.objId;
      module = sol.create("sol.contract.ix.functions.generators.GenerateContractNo", params);

      module.process();

      logger.exit("onExitNode_GenerateFileReference");
    }

    /**
     * @member sol.common.ix.functions.Generators
     * @method RF_sol_contract_function_generateContractNo
     * @static
     * @inheritdoc sol.common.ix.FunctionBase#RF_FunctionName
     */
    function RF_sol_contract_function_generateContractNo(iXSEContext, args) {
      logger.enter("RF_sol_common_function_generateFileReference", args);
      var params = sol.common.ix.RfUtils.parseAndCheckParams(iXSEContext, arguments.callee.name, args, "objId"),
          module = sol.create("sol.contract.ix.functions.generators.GenerateContractNo", params),
          result;
      result = module.process();
      logger.exit("RF_sol_contract_function_generateContractNo");
      return result;
    }