    //@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.contact.ix.functions.GenerateFilingStruct.js
    //@include lib_sol.contact.Utils.js

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

    /**
     * Generates an filing structure for a company by template
     *
     * @author JHR, ELO Digital Office GmbH
     * @version 1.0
     *
     * @eloix
     *
     * @requires sol.common.JsonUtils
     * @requires sol.common.RepoUtils
     * @requires sol.common.SordUtils
     * @requires sol.common.CounterUtils
     * @requires sol.common.Template
     * @requires sol.common.WfUtils
     * @requires sol.common.ix.RfUtils
     * @requires sol.common.ix.FunctionBase
     * @requires sol.contact.ix.functions.GenerateFilingStruct
     * @requires sol.contact.Utils
     */
    sol.define("sol.contact.ix.functions.generators.GenerateCompanyFilingStruct", {
      extend: "sol.contact.ix.functions.GenerateFilingStruct",

      requiredConfig: ["objId"],

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

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

      /**
       * @inheritdoc sol.contact.ix.functions.GenerateFilingStruct#getTemplateId
       */
      getTemplateId: function () {
        var me = this,
            objId = me.objId,
            sordContactList = sol.contact.Utils.getParentContactList(objId);
        if (sordContactList) {
          return me.getFilingStructTemplateId(sordContactList, sol.contact.Config.contactlist.companyFilingStructTemplateField, sol.contact.Config.generators.templateFolderIds.companyFilingStruct);
        }
        return null;
      }
    });

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

      params = sol.common.WfUtils.parseAndCheckParams(wFDiagram, nodeId);

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

      module.process();

      logger.exit("onEnterNode_GenerateCompanyFilingStruct");
    }

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

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

      module.process();

      logger.exit("onExitNode_GenerateCompanyFilingStruct");
    }

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