[ecflow] 04/50: New upstream 4.5.0

Alastair McKinstry mckinstry at moszumanska.debian.org
Wed Sep 20 15:30:39 UTC 2017


This is an automated email from the git hooks/post-receive script.

mckinstry pushed a commit to branch debian/master
in repository ecflow.

commit ad607f512d9a53f919f1be6b59e410c9daec1797
Author: Alastair McKinstry <mckinstry at debian.org>
Date:   Mon Jan 23 10:09:09 2017 +0000

    New upstream 4.5.0
---
 .gitignore                                         |   56 +
 ACore/src/Cal.cpp                                  |   79 +
 ACore/src/{TimeStamp.hpp => Cal.hpp}               |   28 +-
 ACore/src/Calendar.cpp                             |    2 +-
 ACore/src/DState.cpp                               |   12 +-
 ACore/src/Host.cpp                                 |    5 +
 ACore/src/Host.hpp                                 |    5 +-
 ACore/src/Passwd.cpp                               |   18 -
 ACore/src/Passwd.hpp                               |    3 -
 ACore/src/PasswdFile.cpp                           |  314 +
 ACore/src/PasswdFile.hpp                           |   90 +
 ACore/src/Pid.cpp                                  |   37 +
 ACore/src/{TimeStamp.hpp => Pid.hpp}               |   32 +-
 ACore/src/Str.cpp                                  |    3 +
 ACore/src/Str.hpp                                  |    5 +-
 ACore/src/TimeStamp.cpp                            |   10 +
 ACore/src/TimeStamp.hpp                            |    1 +
 ACore/src/Version.cpp                              |    7 +
 ACore/src/WhiteListFile.cpp                        |  297 +-
 ACore/src/WhiteListFile.hpp                        |   24 +-
 ACore/src/ecflow_version.h                         |    4 +-
 ACore/test/TestArgvCreator.cpp                     |    2 +-
 ACore/test/TestLog.cpp                             |   28 +-
 ACore/test/TestPasswdFile.cpp                      |  162 +
 ACore/test/TestWhiteListFile.cpp                   |  314 +-
 ACore/test/data/badPasswdFiles/ecf.passwd          |    1 +
 ACore/test/data/badPasswdFiles/ecf1.passwd         |    1 +
 ACore/test/data/badPasswdFiles/ecf2.passwd         |    2 +
 ACore/test/data/badPasswdFiles/ecf3.passwd         |    2 +
 ACore/test/data/badPasswdFiles/ecf4.passwd         |    3 +
 ACore/test/data/badWhiteListFiles/bad_paths.lists  |    2 +
 .../badWhiteListFiles/multipleWriteUsers.lists     |    2 +
 .../data/badWhiteListFiles/mutipleReadUser.lists   |    2 +
 ACore/test/data/goodPasswdFiles/ecf.passwd         |   11 +
 ACore/test/data/goodPasswdFiles/empty.passwd       |    1 +
 .../goodWhiteListFiles/all_path_read_access.lists  |    2 +
 .../goodWhiteListFiles/all_path_write_access.lists |    2 +
 .../data/goodWhiteListFiles/long_path_access.lists |   14 +
 .../test/data/goodWhiteListFiles/path_access.lists |   31 +
 ANattr/src/ClockAttr.cpp                           |   37 +-
 ANattr/src/ClockAttr.hpp                           |    4 +-
 ANattr/src/CronAttr.cpp                            |   55 -
 ANattr/src/CronAttr.hpp                            |    7 -
 ANattr/src/RepeatAttr.cpp                          |  115 +-
 ANattr/src/RepeatAttr.hpp                          |   23 +-
 ANattr/test/TestRepeat.cpp                         |    2 -
 ANattr/test/TestVariable.cpp                       |   50 +
 ANode/CMakeLists.txt                               |    5 +-
 ANode/src/Alias.cpp                                |   13 +
 ANode/src/Alias.hpp                                |    3 +
 .../src/CheckPtContext.cpp                         |   21 +-
 .../TimeStamp.hpp => ANode/src/CheckPtContext.hpp  |   29 +-
 ANode/src/ChildAttrs.cpp                           |   10 +
 ANode/src/ChildAttrs.hpp                           |    1 +
 ANode/src/Defs.cpp                                 |  127 +-
 ANode/src/Defs.hpp                                 |   17 +-
 ANode/src/DefsDelta.cpp                            |   37 +-
 ANode/src/EcfFile.cpp                              |  896 +-
 ANode/src/EcfFile.hpp                              |   73 +-
 ANode/src/ExprAst.cpp                              |  112 +-
 ANode/src/ExprAst.hpp                              |   71 +-
 ANode/src/ExprAstVisitor.hpp                       |   10 +-
 ANode/src/ExprParser.cpp                           | 1220 +--
 ANode/src/Family.cpp                               |   11 +
 ANode/src/Family.hpp                               |    3 +
 ANode/src/Flag.hpp                                 |    2 +-
 ANode/src/InLimitMgr.cpp                           |   14 +-
 ANode/src/InLimitMgr.hpp                           |   21 +-
 ANode/src/JobProfiler.cpp                          |    3 +
 ANode/src/Jobs.cpp                                 |    1 -
 ANode/src/JobsParam.hpp                            |    9 +
 ANode/src/Memento.cpp                              |    5 +-
 ANode/src/Memento.hpp                              |    4 +-
 ANode/src/MiscAttrs.hpp                            |    1 +
 ANode/src/Node.cpp                                 |  217 +-
 ANode/src/Node.hpp                                 |   21 +-
 ANode/src/NodeChange.cpp                           |   14 +
 ANode/src/NodeContainer.cpp                        |  171 +-
 ANode/src/NodeContainer.hpp                        |   29 +-
 ANode/src/NodeFind.cpp                             |   45 +-
 ANode/src/ResolveExternsVisitor.hpp                |    2 +-
 ANode/src/ServerState.cpp                          |   16 +-
 ANode/src/ServerState.hpp                          |    8 +-
 ANode/src/Submittable.cpp                          |  160 +-
 ANode/src/Submittable.hpp                          |   26 +-
 ANode/src/Suite.cpp                                |  128 +-
 ANode/src/Suite.hpp                                |   33 +-
 ANode/src/Task.cpp                                 |   36 +-
 ANode/src/Task.hpp                                 |    4 +
 ANode/src/TaskScriptGenerator.cpp                  |    2 +-
 ANode/src/TimeDepAttrs.cpp                         |   92 +-
 ANode/src/TimeDepAttrs.hpp                         |    8 +-
 ANode/test/TestAssignmentOperator.cpp              |   48 +
 ANode/test/TestCopyConstructor.cpp                 |   36 +
 ANode/test/TestEcfFile.cpp                         |  268 +-
 ANode/test/TestEcfFileLocator.cpp                  |  256 +
 ANode/test/TestEnviromentSubstitution.cpp          |   12 +-
 ANode/test/TestExprParser.cpp                      |  410 +-
 ANode/test/TestFlagMigrated.cpp                    |  241 +
 ANode/test/TestLimit.cpp                           |    3 +
 ANode/test/TestPersistence.cpp                     |    5 +
 ANode/test/TestPreProcessing.cpp                   |   12 +-
 ANode/test/TestReplace.cpp                         |  191 +-
 ANode/test/TestSingleExprParse.cpp                 |   60 +-
 ANode/test/TestSmsLocator.cpp                      |  128 -
 ANode/test/TestTimeDependencies.cpp                |  122 +-
 ANode/test/TestVariableSubstitution.cpp            |    3 +-
 ANode/test/data/ECFLOW_672/base_date.h             |    1 +
 ANode/test/data/ECFLOW_672/base_ic.h               |    3 +
 ANode/test/data/ECFLOW_672/base_se.h               |    5 +
 ANode/test/data/ECFLOW_672/date.h                  |    3 +
 ANode/test/data/ECFLOW_672/hc_date.h               |    1 +
 ANode/test/data/ECFLOW_672/ic.h                    |    4 +
 ANode/test/data/ECFLOW_672/lib.h                   |    1 +
 ANode/test/data/ECFLOW_672/ms.h                    |    3 +
 ANode/test/data/ECFLOW_672/ms_mem.h                |    2 +
 ANode/test/data/ECFLOW_672/se.h                    |    2 +
 ANode/test/data/ECFLOW_672/se_mem.h                |    2 +
 ANode/test/data/ECFLOW_672/suite.h                 |    1 +
 ANode/test/data/ECFLOW_672/t.ecf                   |    2 +
 ANode/test/data/SMSHOME/suite/family/head.h        |    2 +-
 ANode/test/data/SMSHOME2/bad/bad.ecf               |    1 -
 ANode/test/data/SMSHOME2/bad/bad12.ecf             |    2 +
 ANode/test/data/SMSHOME2/bad/bad8.ecf              |    6 -
 ANode/test/data/SMSHOME2/bad/bad9.ecf              |   12 +-
 ANode/test/data/SMSHOME2/bad/includes/a.h          |    3 +
 ANode/test/data/SMSHOME2/bad/includes/b.h          |    3 +
 ANode/test/data/SMSHOME2/bad/includes/c.h          |    1 +
 ANode/test/data/SMSHOME2/bad/includes/d.h          |    1 +
 ANode/test/data/SMSHOME2/bad/includes/e.h          |    1 +
 ANode/test/data/SMSHOME2/bad/includes/ok.h         |    1 +
 .../bad/{bad9.ecf => recursive_include1.ecf}       |    0
 .../test/data/SMSHOME2/bad/recursive_include2.ecf  |    6 +
 ANode/test/data/SMSHOME2/good/ecf_micro_2.ecf      |    2 -
 ANode/test/data/SMSHOME2/good/ecfmicro.ecf         |    1 -
 ANode/test/data/SMSHOME2/good/good.ecf             |    6 -
 ANode/test/data/SMSHOME2/good/good1.ecf            |    3 +-
 ANode/test/data/SMSHOME2/good/good2.ecf            |    6 +
 ANode/test/data/SMSHOME2/good/includeonce.ecf      |    5 +
 .../data/SMSHOME2/good/includeonce_recursive.ecf   |    1 +
 ANode/test/data/SMSHOME2/good/includes/head.h      |    4 +-
 .../SMSHOME2/good/includes/recursive_include.h     |    2 +
 ANode/test/data/SMSHOME2/good/includes/sms.h       |    2 +-
 ANode/test/data/SMSHOME2/good/includes/trap.h      |    4 +-
 ANode/test/data/SMSHOME2/good/micro_in_comment.ecf |    1 -
 ANode/test/data/SMSHOME2/good/operations.ecf       |    2 -
 ANode/test/data/includes/AA.h                      |    3 +
 ANode/test/data/includes/BB.h                      |    3 +
 ANode/test/data/includes/CC.h                      |    1 +
 ANode/test/data/includes/head.h                    |    4 +-
 ANode/test/data/includes/used_variables.h          |    2 +-
 AParser/Jamfile.jam                                |   16 -
 AParser/src/ClockParser.cpp                        |   62 +
 AParser/src/ClockParser.hpp                        |    7 +
 AParser/src/DefsParser.cpp                         |    3 +-
 AParser/test/TestJobGenPerf.cpp                    |   84 -
 AParser/test/TestParser.cpp                        |    7 +
 AParser/test/data/bad_defs/clock/clock1.def        |   13 +-
 AParser/test/data/bad_defs/clock/clock2.def        |   14 +-
 AParser/test/data/bad_defs/clock/clock3.def        |    4 +
 AParser/test/data/bad_defs/clock/clock4.def        |    4 +
 AParser/test/data/bad_defs/clock/clock5.def        |    4 +
 AParser/test/data/bad_defs/clock/clock6.def        |    4 +
 AParser/test/data/bad_defs/clock/clock7.def        |    4 +
 AParser/test/data/bad_defs/limit/limit.def         |   10 -
 AParser/test/data/good_defs/clock/clock.def        |    9 +-
 AParser/test/data/good_defs/clock/clock1.def       |    5 +-
 AParser/test/data/good_defs/clock/clock2.def       |    5 +-
 AParser/test/data/good_defs/clock/clock3.def       |    5 +-
 AParser/test/data/good_defs/clock/clock4.def       |    5 +-
 AParser/test/data/good_defs/clock/clock6.def       |   21 +-
 AParser/test/data/good_defs/limit/limit3.def       |   19 +
 .../data/good_defs/trigger/complex_trigger.txt     |   12 +-
 AParser/test/data/good_defs/trigger/limit.def      |   27 +
 Base/CMakeLists.txt                                |   17 +-
 Base/Jamfile.jam                                   |   23 +-
 Base/src/AbstractClientEnv.hpp                     |    4 +
 Base/src/AbstractServer.hpp                        |   15 +-
 Base/src/Client.cpp                                |   60 +-
 Base/src/Client.hpp                                |   13 +-
 Base/src/ClientToServerRequest.hpp                 |    1 -
 Base/src/Connection.cpp                            |   87 +
 Base/src/Connection.hpp                            |   52 +-
 ACore/src/TimeStamp.hpp => Base/src/Openssl.cpp    |   31 +-
 Base/src/Openssl.hpp                               |   50 +
 Base/src/Stats.cpp                                 |   13 +-
 Base/src/Stats.hpp                                 |    6 +
 Base/src/cts/AlterCmd.cpp                          |   14 +-
 Base/src/cts/CFileCmd.cpp                          |    5 +
 Base/src/cts/ClientHandleCmd.cpp                   |   10 +-
 Base/src/cts/ClientToServerCmd.hpp                 |   42 +-
 Base/src/cts/CtsApi.cpp                            |    3 +
 Base/src/cts/CtsApi.hpp                            |    3 +
 Base/src/cts/CtsCmd.cpp                            |   47 +-
 Base/src/cts/CtsCmdRegistry.cpp                    |    3 +
 Base/src/cts/CtsNodeCmd.cpp                        |    5 +
 Base/src/cts/EditScriptCmd.cpp                     |    7 +-
 Base/src/cts/ForceCmd.cpp                          |    5 +
 Base/src/cts/FreeDepCmd.cpp                        |    5 +
 Base/src/cts/GroupCTSCmd.cpp                       |   22 +-
 Base/src/cts/OrderNodeCmd.cpp                      |    5 +
 Base/src/cts/PathsCmd.cpp                          |   30 +-
 Base/src/cts/PlugCmd.cpp                           |   15 +-
 Base/src/cts/ReplaceNodeCmd.cpp                    |   20 +-
 Base/src/cts/RequeueNodeCmd.cpp                    |    5 +
 Base/src/cts/RunNodeCmd.cpp                        |    5 +
 Base/src/cts/UserCmd.cpp                           |   99 +-
 Base/src/stc/SNewsCmd.cpp                          |    2 +-
 Base/src/stc/SNodeCmd.cpp                          |    3 +-
 Base/src/stc/SStatsCmd.cpp                         |    2 +-
 Base/src/stc/SSyncCmd.cpp                          |   65 +-
 Base/test/MockServer.hpp                           |   10 +-
 Base/test/TestAlterCmd.cpp                         |   42 +-
 Base/test/TestJobGenPerf.cpp                       |  132 +
 Base/test/TestRequest.cpp                          |    5 +-
 Base/test/TestSSyncCmd.cpp                         |   23 +
 Base/test/TestSSyncCmd_CH1.cpp                     |   57 +-
 CMakeLists.txt                                     |  198 +-
 CSim/src/AstAnalyserVisitor.cpp                    |    2 +-
 CSim/src/AstAnalyserVisitor.hpp                    |    4 +-
 CSim/src/Simulator.cpp                             |  250 +-
 CSim/src/Simulator.hpp                             |   27 +-
 CSim/src/SimulatorVisitor.cpp                      |  106 +-
 CSim/src/SimulatorVisitor.hpp                      |   19 +-
 CSim/test/TestAnalysis.cpp                         |    8 +-
 CSim/test/TestAutoCancel.cpp                       |   34 +-
 CSim/test/TestMeter.cpp                            |    4 +
 CSim/test/TestRepeat.cpp                           |  101 +-
 CSim/test/TestSimulator.cpp                        |   92 +-
 CSim/test/TestSingleSimulator.cpp                  |  102 +-
 CSim/test/TestTime.cpp                             |   60 +-
 CSim/test/TestToday.cpp                            |   12 +
 CSim/test/data/bad_defs/today.def                  |    2 +-
 CSim/test/data/bad_defs/xde.def                    |    8 -
 CSim/test/data/bad_defs/xde.def.log                |   10 +-
 .../data/good_defs/ECFLOW-130/radarlvl2.def.log    | 3131 -------
 .../data/good_defs/SingleDefsTest/test.def.glog    |   42 -
 .../data/good_defs/SingleDefsTest/test.def.log     |   42 -
 CSim/test/data/good_defs/cron/cron.def             |    6 +-
 CSim/test/data/good_defs/cron/cron.def.log         |  146 -
 CSim/test/data/good_defs/cron/cron2.def            |    8 +-
 CSim/test/data/good_defs/cron/cron2.def.log        |   55 -
 CSim/test/data/good_defs/cron/cron3.def            |    8 +-
 CSim/test/data/good_defs/cron/cron3.def.log        |   81 -
 CSim/test/data/good_defs/cron/cron4.def            |    6 +-
 CSim/test/data/good_defs/cron/cron4.def.log        |  809 --
 CSim/test/data/good_defs/cron/cron5.def            |    5 +-
 CSim/test/data/good_defs/cron/cron5.def.log        |  107 -
 CSim/test/data/good_defs/cron/cron6.def            |   15 +-
 CSim/test/data/good_defs/cron/cron6.def.log        |   55 -
 CSim/test/data/good_defs/cron/cron7.def            |    8 +-
 CSim/test/data/good_defs/cron/cron7.def.log        | 4735 ----------
 CSim/test/data/good_defs/day/ECFLOW-833.def        |   28 +
 CSim/test/data/good_defs/day/day.def               |   20 +-
 CSim/test/data/good_defs/day/day.def.log           |   29 -
 CSim/test/data/good_defs/day/hybrid_day.def        |   21 +-
 CSim/test/data/good_defs/day/hybrid_day.def.log    |   18 -
 CSim/test/data/good_defs/day/multiple_days.def     |   11 +
 CSim/test/data/good_defs/misc/liefcycle.def.log    |   44 -
 .../misc/{liefcycle.def => lifecycle.def}          |    0
 CSim/test/data/good_defs/misc/time.def             |    8 -
 CSim/test/data/good_defs/misc/time.def.log         |   42 -
 CSim/test/data/good_defs/operations/loop.def.log   | 9230 --------------------
 CSim/test/data/good_defs/operations/mars.def.log   |   81 -
 CSim/test/data/good_defs/operations/naw.def.log    |  270 -
 CSim/test/data/good_defs/operations/xbe.def.log    | 2149 -----
 CSim/test/data/good_defs/operations/xfi.def.log    |  609 --
 CSim/test/data/good_defs/operations/xpt.def.log    | 4946 -----------
 CSim/test/data/good_defs/time/hybrid_time.def      |    8 +
 .../time/multiple_time_and_dates_hybrid.def        |   11 +
 .../data/good_defs/time/multiple_time_and_days.def |   11 +
 .../time/multiple_time_and_days_hybrid.def         |   12 +
 .../good_defs/time/multiple_times_and_dates.def    |   11 +
 CSim/test/data/good_defs/time/time.def             |    8 +
 CSim/test/data/good_defs/time/time_and_date.def    |    9 +
 .../good_defs/time/time_and_tomorrows_date.def     |    9 +
 CSim/test/data/good_defs/time/time_series.def      |    8 +
 CSim/test/data/good_defs/today/today.def           |    3 +-
 CSim/test/data/good_defs/today/today.def.log       |   12 -
 CSim/test/data/good_defs/today/today2.def          |    1 +
 CSim/test/data/good_defs/today/today2.def.log      |   66 -
 CSim/test/data/good_defs/today/today_range.def     |    1 +
 CSim/test/data/good_defs/today/today_range.def.log |   62 -
 CSim/test/data/test_analysys.def.log               |    4 -
 .../data/test_autocancel_ast_node_reset.def.log    |   46 -
 .../data/test_autocancel_family_and_task.def.log   |   46 -
 CSim/test/data/test_autocancel_suite.def.log       |   43 -
 CSim/test/data/test_autocancel_task.def.log        |   43 -
 CSim/test/data/test_autocancel_task_1.def.log      |   16 -
 CSim/test/data/test_meter.def.log                  |   20 -
 .../data/test_multiple_times_and_dates.def.log     |   55 -
 .../test_multiple_times_and_dates_hybrid.def.log   |   31 -
 .../test/data/test_multiple_times_and_days.def.log |   55 -
 .../test_multiple_times_and_days_hybrid.def.log    |   45 -
 CSim/test/data/test_repeat_date.def.log            |  212 -
 CSim/test/data/test_repeat_date_for_loop.def.log   |  356 -
 CSim/test/data/test_repeat_date_for_loop2.def.log  |  681 --
 CSim/test/data/test_repeat_enumerated.def.log      |   44 -
 CSim/test/data/test_repeat_integer.def.log         |   75 -
 .../test/data/test_repeat_integer_relative.def.log |   59 -
 CSim/test/data/test_repeat_string.def.log          |   30 -
 CSim/test/data/test_repeat_with_cron.def.log       |  104 -
 CSim/test/data/test_time.def.log                   |   16 -
 CSim/test/data/test_time_and_date.def.log          |   16 -
 .../test/data/test_time_and_tomorrows_date.def.log |   16 -
 CSim/test/data/test_time_series.def.log            |   81 -
 CSim/test/data/test_today.def.log                  |   29 -
 CSim/test/data/test_today_time_and_date.def.log    |   16 -
 CSim/test/data/test_today_time_series.def.log      |   68 -
 .../data/test_two_autocancel_in_hierarchy.def.log  |   17 -
 Client/CMakeLists.txt                              |   93 +-
 Client/Jamfile.jam                                 |    4 +
 Client/src/ClientEnvironment.cpp                   |   52 +-
 Client/src/ClientEnvironment.hpp                   |    7 +-
 Client/src/ClientInvoker.cpp                       |   26 +-
 Client/src/ClientInvoker.hpp                       |    5 +
 Client/src/ClientOptions.cpp                       |   12 +-
 Client/test/SCPort.cpp                             |   10 +-
 Client/test/TestCheckPtDefsCmd.cpp                 |    8 +-
 Client/test/TestClientEnvironment.cpp              |    1 +
 Client/test/TestClientInterface.cpp                |    7 +
 Client/test/TestFlagMigrate.cpp                    |  144 +
 Client/test/TestLoadDefsCmd.cpp                    |    2 +-
 Client/test/TestPasswdFile.cpp                     |  173 +
 Client/test/TestServer.cpp                         |   17 +-
 Client/test/TestServerAndLifeCycle.cpp             |    7 +-
 Client/test/TestWhiteListFile.cpp                  |    2 +-
 Client/test/data/ECF_HOME/includes/head.h          |    4 +-
 Client/test/data/ECF_HOME/suite/family/head.h      |    4 +-
 Jamroot.jam                                        |   24 +-
 NOTICE                                             |    6 +
 Pyext/CMakeLists.txt                               |   58 +-
 Pyext/ecflow/__init__.py                           |    2 +
 Pyext/ecflow/{__init__.py => __init__.py.in}       |    2 +
 Pyext/jamfile.jam                                  |   31 +-
 Pyext/migrate/ecflow_migrate.py                    |   28 +-
 Pyext/migrate/py_u_TestMigrate.py                  |   18 +-
 Pyext/samples/TestGui.py                           | 1530 ++++
 Pyext/samples/TestSyncLocalPerf.py                 |   65 +
 Pyext/samples/api/README                           |    2 +
 Pyext/samples/{ => api}/ecf.py                     |    0
 Pyext/samples/{ => api}/sms2ecf.py                 |    2 +-
 Pyext/samples/check_modules.py                     |  198 +-
 Pyext/samples/cray.py                              |   28 +-
 Pyext/src/BoostPythonUtil.hpp                      |    3 +-
 Pyext/src/ClientDoc.cpp                            |  114 +-
 Pyext/src/DefsDoc.cpp                              |   55 +-
 Pyext/src/ExportClient.cpp                         |    3 +-
 Pyext/src/ExportCore.cpp                           |    5 +-
 Pyext/src/ExportDefs.cpp                           |    5 +-
 Pyext/src/ExportNode.cpp                           |    1 +
 Pyext/src/ExportNodeAttr.cpp                       |   24 +-
 Pyext/src/ExportSuiteAndFamily.cpp                 |   15 +-
 Pyext/src/ExportTask.cpp                           |   11 +-
 Pyext/test/data/includes/head.h                    |    4 +-
 Pyext/test/data/python_includes/head.py            |   18 +-
 Pyext/test/data/python_includes/tail.py            |    4 +-
 Pyext/test/ecflow_test_util.py                     |   87 +-
 Pyext/test/py_s_TestClientApi.py                   |  342 +-
 Pyext/test/py_s_TestPythonChildApi.py              |   40 +-
 Pyext/test/py_u_TestAddDelete.py                   |   57 +-
 Pyext/test/py_u_TestAddDeleteError.py              |    8 +-
 Pyext/test/py_u_TestAddDeleteFunc.py               |   27 +-
 Pyext/test/py_u_TestAddNodeFunc.py                 |    8 +-
 .../{py_u_TestAddDelete.py => py_u_TestCopy.py}    |  358 +-
 Pyext/test/py_u_TestDefs.py                        |   34 +-
 Pyext/test/py_u_TestDefsCheck.py                   |   16 +-
 Pyext/test/py_u_TestDerivable.py                   |    8 +-
 Pyext/test/py_u_TestEcf.py                         |    8 +-
 Pyext/test/py_u_TestError.py                       |   62 +-
 Pyext/test/py_u_TestFind.py                        |   37 +-
 Pyext/test/py_u_TestFlag.py                        |   22 +-
 Pyext/test/py_u_TestGeneratedVariable.py           |   24 +-
 Pyext/test/py_u_TestGetAllTasks.py                 |   14 +-
 Pyext/test/py_u_TestJobGeneration.py               |   48 +-
 Pyext/test/py_u_TestParent.py                      |   22 +-
 Pyext/test/py_u_TestRemove.py                      |   64 +
 Pyext/test/py_u_TestRepeatArithmetic.py            |    8 +-
 Pyext/test/py_u_TestSimulator.py                   |   83 +-
 Pyext/test/py_u_TestTraversal.py                   |   22 +-
 Pyext/test/py_u_TestUserManual.py                  |   26 +-
 Pyext/test/py_u_TestWith.py                        |   15 +-
 Server/CMakeLists.txt                              |    6 +-
 Server/Jamfile.jam                                 |    2 +
 Server/server_environment.cfg                      |    1 +
 Server/src/NodeTreeTraverser.cpp                   |    9 +-
 Server/src/NodeTreeTraverser.hpp                   |    3 +
 Server/src/Server.cpp                              |  125 +-
 Server/src/Server.hpp                              |   17 +-
 Server/src/ServerEnvironment.cpp                   |   97 +-
 Server/src/ServerEnvironment.hpp                   |   18 +-
 Server/test/TestServer1.cpp                        |   11 +-
 Server/test/TestServerEnvironment.cpp              |   25 +-
 Test/CMakeLists.txt                                |    7 +-
 Test/Jamfile.jam                                   |    5 +-
 Test/TestEcfNoScriptCmd.cpp                        |   84 +
 Test/TestLate.cpp                                  |    3 +-
 Test/TestTrigger.cpp                               |   62 +
 Test/Test_Time.cpp                                 |   64 +
 Test/data/.gitignore                               |    3 +
 Test/data/includes/head.h                          |    5 +-
 Test/src/TestFixture.cpp                           |   41 +-
 Test/src/TestFixture.hpp                           |    2 +-
 Test/src/ZombieUtill.cpp                           |    4 +-
 Test/test.ddoc                                     |    2 +-
 VERSION.cmake                                      |    4 +-
 Viewer/ServerListSyncDialog.hpp                    |    5 +
 Viewer/images/dock_chain_closed.svg                |  109 +
 Viewer/images/dock_chain_open.svg                  |  109 +
 Viewer/images/filesaveas.svg                       |  313 +
 Viewer/images/icon_children_hidden.svg             |  412 +
 Viewer/images/icon_killed.svg                      |  207 +
 Viewer/images/logo.png                             |  Bin 0 -> 2223 bytes
 Viewer/images/logo.svg                             |  111 +
 Viewer/images/logo_small.png                       |  Bin 0 -> 710 bytes
 Viewer/images/menu_arrow_down.svg                  |  118 +
 Viewer/images/remove.svg                           |  216 +
 Viewer/images/submit_round.svg                     |  105 +
 Viewer/images/sync_black.svg                       |  392 +
 Viewer/images/system.svg                           |  180 +
 Viewer/images/tip.svg                              |   95 +
 Viewer/images/trigger.svg                          |  154 +
 Viewer/scripts/CMakeLists.txt                      |    9 +-
 Viewer/scripts/ecflow_test_ui.sh.in                |  151 +
 Viewer/scripts/ecflow_ui.in                        |   76 +-
 Viewer/scripts/generate_ui_test_scripts.sh         |   34 +
 Viewer/src/AboutDialog.cpp                         |   12 +-
 Viewer/src/AbstractNodeModel.cpp                   |   30 +-
 Viewer/src/AbstractNodeModel.hpp                   |    6 +-
 Viewer/src/AbstractTextEditSearchInterface.cpp     |   15 +-
 Viewer/src/AbstractTextEditSearchInterface.hpp     |   12 +-
 Viewer/src/ActionHandler.cpp                       |  135 +-
 Viewer/src/AstCollateVNodesVisitor.cpp             |  114 +
 Viewer/src/AstCollateVNodesVisitor.hpp             |   59 +
 Viewer/src/AttributeEditor.cpp                     |   48 +-
 Viewer/src/AttributeEditor.hpp                     |    1 +
 Viewer/src/AttributeSearchPanel.cpp                |  153 +-
 Viewer/src/AttributeSearchPanel.hpp                |   16 +-
 Viewer/src/CMakeLists.txt                          |   42 +-
 Viewer/src/ChangeNotify.cpp                        |   11 +-
 Viewer/src/ChangeNotifyDialog.cpp                  |    3 +
 Viewer/src/CommandDesignerWidget.cpp               |   24 +-
 Viewer/src/CommandDesignerWidget.hpp               |    6 +-
 Viewer/src/CustomCommandDialog.cpp                 |    2 +-
 Viewer/src/CustomCommandDialog.hpp                 |    4 +-
 Viewer/src/CustomCommandHandler.cpp                |    4 +-
 Viewer/src/Dashboard.cpp                           |  108 +-
 Viewer/src/Dashboard.hpp                           |   10 +-
 Viewer/src/DashboardDialog.cpp                     |    6 +-
 Viewer/src/DashboardDialog.hpp                     |    5 +-
 Viewer/src/DashboardDock.cpp                       |   23 +-
 Viewer/src/DashboardDock.hpp                       |    8 +-
 Viewer/src/DashboardDockTitleWidget.ui             |   41 +-
 Viewer/src/DashboardTitle.cpp                      |  349 +-
 Viewer/src/DashboardTitle.hpp                      |   33 +-
 Viewer/src/DashboardWidget.cpp                     |   62 +
 Viewer/src/DashboardWidget.hpp                     |   26 +-
 Viewer/src/DirectoryHandler.cpp                    |   98 +-
 Viewer/src/DirectoryHandler.hpp                    |   16 +-
 Viewer/src/EditItemWidget.cpp                      |   11 +-
 Viewer/src/EditItemWidget.ui                       |   37 +-
 Viewer/src/EditProvider.cpp                        |    4 +-
 Viewer/src/FileInfoLabel.cpp                       |   53 +-
 Viewer/src/FileInfoLabel.hpp                       |    2 +-
 Viewer/src/FilterWidget.cpp                        |   72 +-
 Viewer/src/FilterWidget.hpp                        |    3 +
 Viewer/src/Highlighter.cpp                         |   63 +-
 Viewer/src/Highlighter.hpp                         |    5 +-
 Viewer/src/IconProvider.hpp                        |    2 +-
 Viewer/src/InfoPanel.cpp                           |  111 +-
 Viewer/src/InfoPanel.hpp                           |    9 +-
 Viewer/src/InfoPanel.ui                            |   19 +-
 Viewer/src/InfoPanelHandler.cpp                    |    5 +-
 Viewer/src/InfoPanelItem.cpp                       |   21 +-
 Viewer/src/InfoPanelItem.hpp                       |   20 +-
 Viewer/src/InfoProvider.cpp                        |    2 +-
 Viewer/src/InputEventLog.cpp                       |  222 +
 Viewer/src/InputEventLog.hpp                       |   55 +
 Viewer/src/LimitEditor.cpp                         |    3 +
 Viewer/src/LogProvider.cpp                         |    4 -
 Viewer/src/LogTruncator.cpp                        |   65 +
 Viewer/src/{FileInfoLabel.hpp => LogTruncator.hpp} |   43 +-
 Viewer/src/MainWindow.cpp                          |  181 +-
 Viewer/src/MainWindow.hpp                          |   10 +-
 Viewer/src/MainWindow.ui                           |   66 +-
 Viewer/src/MenuHandler.cpp                         |  167 +-
 Viewer/src/MenuHandler.hpp                         |   10 +-
 Viewer/src/MessageLabel.cpp                        |   25 +-
 Viewer/src/MessageLabel.hpp                        |   15 +-
 Viewer/src/NodeExpression.cpp                      |  179 +-
 Viewer/src/NodeExpression.hpp                      |   49 +-
 Viewer/src/NodeFilterDialog.cpp                    |   13 +-
 Viewer/src/NodeFilterDialog.ui                     |   12 +-
 Viewer/src/NodePanel.cpp                           |   85 +-
 Viewer/src/NodePanel.hpp                           |   20 +-
 Viewer/src/NodePathWidget.cpp                      |  641 +-
 Viewer/src/NodePathWidget.hpp                      |   78 +-
 Viewer/src/NodeQuery.cpp                           |  700 +-
 Viewer/src/NodeQuery.hpp                           |  133 +-
 Viewer/src/NodeQueryEditor.cpp                     |  417 +-
 Viewer/src/NodeQueryEditor.hpp                     |   42 +-
 Viewer/src/NodeQueryEditor.ui                      |  374 +-
 Viewer/src/NodeQueryEngine.cpp                     |  462 +-
 Viewer/src/NodeQueryEngine.hpp                     |   19 +-
 Viewer/src/NodeQueryOption.cpp                     |  362 +
 Viewer/src/NodeQueryOption.hpp                     |  144 +
 Viewer/src/NodeQueryOptionEdit.cpp                 |  263 +
 Viewer/src/NodeQueryOptionEdit.hpp                 |  116 +
 Viewer/src/NodeQueryResult.cpp                     |   47 +-
 Viewer/src/NodeQueryResult.hpp                     |    4 +-
 Viewer/src/NodeQueryResultModel.cpp                |   21 +-
 Viewer/src/NodeQueryResultTmp.hpp                  |    5 +-
 Viewer/src/NodeQueryResultView.cpp                 |    3 +-
 Viewer/src/NodeQueryViewDelegate.cpp               |   13 +-
 Viewer/src/NodeSearchDialog.cpp                    |    7 +-
 Viewer/src/NodeSearchWidget.cpp                    |  170 +-
 Viewer/src/NodeSearchWidget.hpp                    |    9 +-
 Viewer/src/NodeSearchWidget.ui                     |   74 +-
 Viewer/src/NodeViewBase.cpp                        |    2 +-
 Viewer/src/NodeViewBase.hpp                        |   11 +-
 Viewer/src/NodeViewDelegate.cpp                    |  240 +-
 Viewer/src/NodeViewDelegate.hpp                    |    5 +
 Viewer/src/NodeWidget.cpp                          |   17 +-
 Viewer/src/NodeWidget.hpp                          |    5 +-
 Viewer/src/OutputBrowser.cpp                       |   47 +-
 Viewer/src/OutputBrowser.hpp                       |    2 +
 Viewer/src/OutputCache.cpp                         |   36 +-
 Viewer/src/OutputClient.cpp                        |    2 +-
 Viewer/src/OutputDirClient.cpp                     |   16 +-
 Viewer/src/OutputDirProvider.cpp                   |  133 +-
 Viewer/src/OutputFileClient.cpp                    |   30 +-
 Viewer/src/OutputFileProvider.cpp                  |   41 +-
 Viewer/src/OutputFileProvider.hpp                  |    1 +
 Viewer/src/OutputItemWidget.cpp                    |  194 +-
 Viewer/src/OutputItemWidget.hpp                    |    8 +-
 Viewer/src/OutputItemWidget.ui                     |   30 +-
 Viewer/src/OverviewProvider.cpp                    |   12 +-
 Viewer/src/PlainTextEdit.cpp                       |   72 +-
 Viewer/src/PlainTextEdit.hpp                       |   12 +-
 Viewer/src/PlainTextSearchInterface.cpp            |  102 +-
 Viewer/src/PlainTextSearchInterface.hpp            |    7 +-
 Viewer/src/PropertyDialog.cpp                      |    5 +
 Viewer/src/PropertyEditor.cpp                      |    2 +
 Viewer/src/PropertyLine.cpp                        |   25 +-
 Viewer/src/PropertyLine.hpp                        |    3 +-
 Viewer/src/SearchLineWidget.ui                     |    2 +-
 Viewer/src/ServerComQueue.cpp                      |  186 +-
 Viewer/src/ServerComQueue.hpp                      |   14 +-
 Viewer/src/ServerComThread.cpp                     |  274 +-
 Viewer/src/ServerComThread.hpp                     |    6 +-
 Viewer/src/ServerDialog.ui                         |  178 -
 Viewer/src/ServerFilter.cpp                        |   16 +
 Viewer/src/ServerFilter.hpp                        |    7 +-
 Viewer/src/ServerHandler.cpp                       |  168 +-
 Viewer/src/ServerHandler.hpp                       |    3 +-
 Viewer/src/ServerItem.cpp                          |   18 +-
 Viewer/src/ServerItem.hpp                          |    7 +-
 Viewer/src/ServerList.cpp                          |  245 +-
 Viewer/src/ServerList.hpp                          |   63 +-
 Viewer/src/ServerListDialog.cpp                    |  163 +-
 Viewer/src/ServerListDialog.hpp                    |   19 +-
 Viewer/src/ServerListDialog.ui                     |  135 +-
 Viewer/src/ServerListSyncWidget.cpp                |  233 +
 Viewer/src/ServerListSyncWidget.hpp                |   43 +
 Viewer/src/ServerListSyncWidget.ui                 |   61 +
 Viewer/src/ServerWidget.ui                         |  121 -
 Viewer/src/SessionDialog.cpp                       |    1 +
 Viewer/src/SessionHandler.cpp                      |  113 +-
 Viewer/src/SessionHandler.hpp                      |   26 +-
 Viewer/src/Sound.cpp                               |   12 +-
 Viewer/src/StringMatchCombo.cpp                    |   23 +-
 Viewer/src/StringMatchCombo.hpp                    |    9 +-
 Viewer/src/SuiteFilter.cpp                         |  379 +-
 Viewer/src/SuiteFilter.hpp                         |   50 +-
 Viewer/src/SuiteItemWidget.cpp                     |  141 +-
 Viewer/src/SuiteItemWidget.hpp                     |   11 +-
 Viewer/src/SuiteItemWidget.ui                      |  315 +-
 Viewer/src/SuiteModel.cpp                          |   70 +-
 Viewer/src/SuiteModel.hpp                          |    9 +-
 Viewer/src/TabWidget.cpp                           |  157 +-
 Viewer/src/TabWidget.hpp                           |   29 +-
 Viewer/src/TableFilterWidget.cpp                   |   28 +-
 Viewer/src/TableNodeModel.cpp                      |  124 +-
 Viewer/src/TableNodeModel.hpp                      |   16 +-
 Viewer/src/TableNodeSortModel.cpp                  |   19 +
 Viewer/src/TableNodeSortModel.hpp                  |    3 +-
 Viewer/src/TableNodeView.cpp                       |  158 +-
 Viewer/src/TableNodeView.hpp                       |   11 +-
 Viewer/src/TableNodeViewDelegate.cpp               |    5 +-
 Viewer/src/TableNodeWidget.cpp                     |  222 +-
 Viewer/src/TableNodeWidget.hpp                     |    3 +
 Viewer/src/TextEditSearchLine.cpp                  |   32 +-
 Viewer/src/TextEditSearchLine.hpp                  |    6 +-
 Viewer/src/TextPager/TextPagerCursor.cpp           |    3 +-
 Viewer/src/TextPager/TextPagerCursor_p.hpp         |    3 +-
 Viewer/src/TextPager/TextPagerDocument.cpp         |    2 +-
 Viewer/src/TextPager/TextPagerEdit.cpp             |   40 +-
 Viewer/src/TextPager/TextPagerSearchInterface.cpp  |  128 +-
 Viewer/src/TextPager/TextPagerSearchInterface.hpp  |    8 +-
 Viewer/src/TreeNodeModel.cpp                       |  170 +-
 Viewer/src/TreeNodeModel.hpp                       |   13 +
 Viewer/src/TreeNodeView.cpp                        |  236 +-
 Viewer/src/TreeNodeView.hpp                        |   15 +-
 Viewer/src/TreeNodeViewDelegate.cpp                |   16 +-
 Viewer/src/TreeNodeWidget.cpp                      |   35 +-
 Viewer/src/TreeNodeWidget.hpp                      |    1 +
 Viewer/src/TriggerBrowser.cpp                      |  292 +
 Viewer/src/TriggerBrowser.hpp                      |   60 +
 Viewer/src/TriggerBrowser.ui                       |  100 +
 Viewer/src/TriggerCollector.cpp                    |   81 +
 Viewer/src/TriggerCollector.hpp                    |  121 +
 Viewer/src/TriggerEditor.cpp                       |  161 +
 Viewer/src/TriggerEditor.hpp                       |   51 +
 Viewer/src/TriggerEditorWidget.ui                  |   50 +
 Viewer/src/TriggerItemWidget.cpp                   |  165 +-
 Viewer/src/TriggerItemWidget.hpp                   |   27 +-
 Viewer/src/TriggerItemWidget.ui                    |   38 +-
 Viewer/src/TriggerProvider.cpp                     |  275 +
 Viewer/src/TriggerProvider.hpp                     |   47 +
 Viewer/src/TriggerTextWidget.cpp                   |   36 +
 .../{NodeViewBase.cpp => TriggerTextWidget.hpp}    |   15 +-
 Viewer/src/TriggerView.cpp                         |  128 +-
 Viewer/src/TriggeredScanner.cpp                    |   64 +
 Viewer/src/TriggeredScanner.hpp                    |   44 +
 ...ractTextEditSearchInterface.cpp => UIDebug.cpp} |   26 +-
 Viewer/src/{FileInfoLabel.hpp => UIDebug.hpp}      |   29 +-
 Viewer/src/UiLog.cpp                               |  136 +
 Viewer/src/UiLog.hpp                               |   60 +
 Viewer/src/UserMessage.cpp                         |   36 +-
 Viewer/src/UserMessage.hpp                         |    2 +-
 Viewer/src/VAttribute.cpp                          |  190 +-
 Viewer/src/VAttribute.hpp                          |   42 +-
 Viewer/src/VAttributeType.cpp                      | 1755 +++-
 Viewer/src/VAttributeType.hpp                      |   38 +-
 Viewer/src/VConfig.cpp                             |   17 +-
 Viewer/src/VDir.cpp                                |    5 +-
 Viewer/src/VDir.hpp                                |   14 +-
 Viewer/src/VFile.cpp                               |   18 +-
 Viewer/src/VFile.hpp                               |    2 +-
 Viewer/src/VFilter.cpp                             |  235 +-
 Viewer/src/VFilter.hpp                             |   35 +-
 Viewer/src/VIcon.cpp                               |   96 +-
 Viewer/src/VIcon.hpp                               |   10 +-
 Viewer/src/VInfo.cpp                               |  256 +-
 Viewer/src/VInfo.hpp                               |  135 +-
 Viewer/src/{CustomCommandDialog.cpp => VItem.cpp}  |   22 +-
 Viewer/src/VItem.hpp                               |    8 +
 Viewer/src/VItemPathParser.cpp                     |   68 +
 Viewer/src/VItemPathParser.hpp                     |   41 +
 Viewer/src/{NodeViewBase.cpp => VItemTmp.cpp}      |   15 +-
 .../src/{NodeQueryResultTmp.hpp => VItemTmp.hpp}   |   35 +-
 Viewer/src/VModelData.cpp                          |  566 +-
 Viewer/src/VModelData.hpp                          |   17 +-
 Viewer/src/VNState.cpp                             |   11 +-
 Viewer/src/VNode.cpp                               |  441 +-
 Viewer/src/VNode.hpp                               |   52 +-
 Viewer/src/VReply.cpp                              |   68 +-
 Viewer/src/VReply.hpp                              |   24 +-
 Viewer/src/VServerSettings.cpp                     |    4 +-
 Viewer/src/VSettings.cpp                           |   34 +-
 Viewer/src/VSettings.hpp                           |   12 +-
 Viewer/src/VTaskNode.cpp                           |    6 +
 Viewer/src/VTaskNode.hpp                           |    1 +
 Viewer/src/VTree.cpp                               |  260 +-
 Viewer/src/VTree.hpp                               |   41 +-
 Viewer/src/VariableItemWidget.cpp                  |   68 +-
 Viewer/src/VariableItemWidget.hpp                  |    2 +-
 Viewer/src/VariableItemWidget.ui                   |   35 +-
 Viewer/src/VariableModel.cpp                       |   36 +-
 Viewer/src/VariableModelData.cpp                   |  143 +-
 Viewer/src/VariableView.cpp                        |   32 +-
 Viewer/src/VariableView.hpp                        |    5 +-
 Viewer/src/ViewerMain.cpp                          |   27 +-
 Viewer/src/WhyItemWidget.cpp                       |   73 +-
 Viewer/src/WhyItemWidget.hpp                       |   10 +-
 Viewer/src/WidgetNameProvider.cpp                  |  116 +
 Viewer/src/WidgetNameProvider.hpp                  |   38 +
 Viewer/src/ZombieItemWidget.ui                     |   25 +-
 Viewer/src/trigger.css                             |   85 +
 Viewer/src/viewer.qrc                              |   19 +-
 bin/ecbuild                                        |   64 +-
 boost-build.jam                                    |    2 +-
 build_scripts/boost_build.sh                       |   57 +-
 build_scripts/migrate.sh                           |    2 +-
 build_scripts/test.sh                              |   85 +-
 build_scripts/val.sh                               |    4 +-
 build_scripts/wait_for_server_reply.sh             |   22 +
 cmake.sh                                           |  135 +-
 cmake/CheckFortranCompilerFlag.cmake               |   37 -
 cmake/CheckFortranSourceCompiles.cmake             |   94 -
 cmake/FindAEC.cmake                                |   31 +-
 cmake/{contrib => }/FindFFTW.cmake                 |    6 -
 cmake/FindGeoTIFF.cmake                            |   64 +-
 cmake/FindMKL.cmake                                |    7 +-
 cmake/FindOpenJPEG.cmake                           |   54 +-
 cmake/VERSION.cmake                                |    4 +-
 cmake/compiler_flags/Cray_C.cmake                  |   11 +-
 cmake/compiler_flags/Cray_CXX.cmake                |   11 +-
 cmake/compiler_flags/Cray_Fortran.cmake            |   12 +-
 .../CMakeCheckCompilerFlagCommonPatterns.cmake     |   33 +
 cmake/contrib/CheckFortranCompilerFlag.cmake       |   72 +-
 cmake/contrib/CheckFortranSourceCompiles.cmake     |  133 +-
 cmake/contrib/FindNetCDF4.cmake                    |    4 +-
 .../contrib/GreatCMakeCookOff/AddCPP11Flags.cmake  |    5 +-
 .../GreatCMakeCookOff/CheckCXX11Features.cmake     |  125 +-
 cmake/ecbuild-config-version.cmake                 |    2 +-
 cmake/ecbuild-config.cmake                         |    6 +-
 cmake/ecbuild_add_c_flags.cmake                    |   12 +-
 cmake/ecbuild_add_cxx_flags.cmake                  |   12 +-
 cmake/ecbuild_add_executable.cmake                 |   64 +-
 cmake/ecbuild_add_fortran_flags.cmake              |   23 +-
 cmake/ecbuild_add_library.cmake                    |  102 +-
 cmake/ecbuild_add_option.cmake                     |   75 +-
 cmake/ecbuild_add_test.cmake                       |   82 +-
 cmake/ecbuild_bundle.cmake                         |    8 +-
 cmake/ecbuild_check_cxx11.cmake                    |  158 +-
 cmake/ecbuild_check_fortran.cmake                  |  126 +
 cmake/ecbuild_check_fortran_source_return.cmake    |   13 +-
 cmake/ecbuild_check_functions.cmake                |   11 +
 cmake/ecbuild_check_os.cmake                       |   56 +-
 cmake/ecbuild_compiler_flags.cmake                 |  154 +-
 cmake/ecbuild_config.h.in                          |    8 +
 cmake/ecbuild_declare_project.cmake                |   47 +-
 cmake/ecbuild_define_paths.cmake                   |   23 +-
 cmake/ecbuild_download_resource.cmake              |    1 +
 cmake/ecbuild_find_lexyacc.cmake                   |    5 +-
 cmake/ecbuild_find_omp.cmake                       |    4 +-
 cmake/ecbuild_find_python.cmake                    |  151 +-
 cmake/ecbuild_generate_fortran_interfaces.cmake    |    2 +-
 cmake/ecbuild_get_cxx11_flags.cmake                |    9 +-
 cmake/ecbuild_get_test_data.cmake                  |   15 +-
 cmake/ecbuild_install_project.cmake                |   58 +-
 cmake/ecbuild_log.cmake                            |   23 +-
 cmake/ecbuild_pkgconfig.cmake                      |    2 +-
 cmake/ecbuild_print_summary.cmake                  |    8 +-
 cmake/ecbuild_remove_fortran_flags.cmake           |    5 +-
 cmake/ecbuild_separate_sources.cmake               |   24 +-
 cmake/ecbuild_source_flags.cmake                   |    6 +-
 cmake/ecbuild_system.cmake                         |    2 +
 cmake/ecbuild_target_flags.cmake                   |   91 +
 cmake/ecbuild_use_package.cmake                    |    1 +
 cmake/fortran_features/CheckFortranFeatures.cmake  |  167 +
 cmake/fortran_features/c_size_t.F90                |    8 +
 cmake/fortran_features/c_sizeof.F90                |    3 +
 cmake/fortran_features/derivedtype_interface.F90   |   54 +
 cmake/fortran_features/derivedtype_io.F90          |   42 +
 cmake/fortran_features/finalization.F90            |  141 +
 cmake/fortran_features/submodules.F90              |   35 +
 project_summary.cmake                              |    5 +
 share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake     |   21 +-
 share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake      |   14 +-
 share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake    |   14 +-
 share/ecflow/etc/CMakeLists.txt                    |    4 +
 share/ecflow/etc/ecflow_ui_test.def                |  103 +
 .../etc/ecflow_ui_test_server_scripts.tar.gz       |  Bin 0 -> 5014 bytes
 .../etc/ecflow_ui_test_session_template.json       |   65 +
 share/ecflow/etc/ecflowview_gui.json               |  618 +-
 share/ecflow/etc/ecflowview_highlighter.json       |  106 +-
 share/ecflow/etc/ecflowview_icon_conf.json         |   16 +
 share/ecflow/etc/ecflowview_menus.json             |  170 +-
 share/ecflow/etc/ecflowview_panel_conf.json        |   44 +-
 share/ecflow/etc/ecflowview_panels.json            |    6 +-
 share/ecflow/etc/ecflowview_query_conf.json        |  134 +
 share/ecflow/etc/ecflowview_view_conf.json         |   14 +-
 share/ecflow/etc/viewer.qss                        |  139 +-
 tools/ecf_cmd                                      |    6 +-
 tools/ecflow_fuse.py                               |    6 +-
 tools/ecflow_load.sh                               |   16 +-
 tools/ecflow_show_load.sh                          |   22 +-
 tools/ecflow_start.sh                              |   28 +-
 tools/ecflow_stop.sh                               |    2 +-
 tools/ecflow_suite_gen.sh                          |    8 +-
 view/CMakeLists.txt                                |   22 +-
 view/Jamfile.jam                                   |    6 +-
 view/data/.gitignore                               |    1 +
 view/data/includes/head.h                          |    4 +-
 view/src/collector.cc                              |    2 +-
 view/src/ecf_node.cc                               |    1 +
 view/src/ecflow.cc                                 |    8 +-
 view/src/ecflow.h                                  |    9 +-
 view/src/ecflowview.menu                           |   43 +-
 view/src/ecflowview.menu.h                         |   43 +-
 view/src/gui.cc                                    |   29 +-
 view/src/gui.h                                     |    2 +
 view/src/host.cc                                   |  112 +-
 view/src/label.cc                                  |   14 +-
 view/src/libui/uitop.cc                            |   16 +-
 view/src/log_event.cc                              |    3 +-
 view/src/logsvr.cc                                 |   92 +-
 view/src/node.h                                    |    1 +
 view/src/node_window.cc                            |    4 +-
 view/src/panel_window.cc                           |    2 +-
 view/src/repeat.h                                  |   44 +-
 view/src/scripting.cc                              |   18 +
 view/src/show.cc                                   |    4 +-
 view/src/simple_node.cc                            |   23 +-
 view/src/suites_panel.cc                           |    4 +-
 view/src/task_node.cc                              |    5 +
 view/src/tmp_file.cc                               |    6 +-
 view/src/tmp_file.h                                |    4 +-
 view/src/variables.cc                              |    2 +-
 801 files changed, 32098 insertions(+), 40036 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d6aa8d2
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,56 @@
+# eclipse
+.settings/
+.pydevproject
+.cproject
+.project
+
+#netbeans
+nbproject/
+
+#Qt creator
+*.creator
+*.creator.*
+ecflow.config
+ecflow.includes
+ecflow.files
+ecflow_*.config
+ecflow_*.files
+ecflow_*.includes
+ 
+# cmake
+ecbuild/
+build/
+
+# ecflow 
+bin/
+swap
+*.job0
+*.job1
+*.job2
+*.job3
+*.1
+*.dat
+*.def_log
+*.glog
+*.def.glog
+
+# hack to ignore naw.def.glog
+**/naw.def.glog
+ 
+*.lock
+*.log
+*.so
+*.pyc
+
+ECF_HOME_debug/
+ECF_HOME_release/
+
+gmon.out
+
+*.check
+*.b
+/eurydice.3141.ecf.check
+/eurydice.3141.ecf.log
+/eurydice.3141.ecf.check.b
+/gnuplot.script
+/CUSTOMER/
diff --git a/ACore/src/Cal.cpp b/ACore/src/Cal.cpp
new file mode 100644
index 0000000..bb88cb8
--- /dev/null
+++ b/ACore/src/Cal.cpp
@@ -0,0 +1,79 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+
+#include "Cal.hpp"
+
+long Cal::julian_to_date(long jdate)
+{
+   long x,y,d,m,e;
+   long day,month,year;
+
+   x = 4 * jdate - 6884477;
+   y = (x / 146097) * 100;
+   e = x % 146097;
+   d = e / 4;
+
+   x = 4 * d + 3;
+   y = (x / 1461) + y;
+   e = x % 1461;
+   d = e / 4 + 1;
+
+   x = 5 * d - 3;
+   m = x / 153 + 1;
+   e = x % 153;
+   d = e / 5 + 1;
+
+   if( m < 11 )
+      month = m + 2;
+   else
+      month = m - 10;
+
+
+   day = d;
+   year = y + m / 11;
+
+   return year * 10000 + month * 100 + day;
+}
+
+long Cal::date_to_julian(long ddate)
+{
+   long  m1,y1,a,b,c,d,j1;
+   long month,day,year;
+
+   year = ddate / 10000;
+   ddate %= 10000;
+   month  = ddate / 100;
+   ddate %= 100;
+   day = ddate;
+
+   if (month > 2)
+   {
+      m1 = month - 3;
+      y1 = year;
+   }
+   else
+   {
+      m1 = month + 9;
+      y1 = year - 1;
+   }
+   a = 146097*(y1/100)/4;
+   d = y1 % 100;
+   b = 1461*d/4;
+   c = (153*m1+2)/5+day+1721119;
+   j1 = a+b+c;
+
+   return(j1);
+}
diff --git a/ACore/src/TimeStamp.hpp b/ACore/src/Cal.hpp
similarity index 58%
copy from ACore/src/TimeStamp.hpp
copy to ACore/src/Cal.hpp
index cf232cd..76b7163 100644
--- a/ACore/src/TimeStamp.hpp
+++ b/ACore/src/Cal.hpp
@@ -1,9 +1,10 @@
-#ifndef TIMESTAMP_HPP_
-#define TIMESTAMP_HPP_
+#ifndef CAL_HPP_
+#define CAL_HPP_
+
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        : Log
+// Name        :
 // Author      : Avi
-// Revision    : $Revision: #31 $
+// Revision    : $Revision: #5 $
 //
 // Copyright 2009-2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
@@ -12,24 +13,19 @@
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
 //
+// Description :
+//
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#include <string>
 #include <boost/noncopyable.hpp>
 
-namespace ecf {
-
-// returns a string of format : "[%02d:%02d:%02d %d.%d.%d] "
-//                              "[hour:min:sec day.month.year] "
-// i.e                          "[05:26:20 29.10.2014] "
-class TimeStamp : private boost::noncopyable {
+class Cal : private boost::noncopyable {
 public:
-   static std::string now();
-   static void now(std::string&);
+   static long date_to_julian(long);
+   static long julian_to_date(long);
+
 private:
-   TimeStamp();
+   Cal();
 };
 
-}
-
 #endif
diff --git a/ACore/src/Calendar.cpp b/ACore/src/Calendar.cpp
index f014eb9..f673c8d 100644
--- a/ACore/src/Calendar.cpp
+++ b/ACore/src/Calendar.cpp
@@ -300,7 +300,7 @@ std::string Calendar::toString() const
    else if (day_of_week_ == 5) ss << " FRIDAY";
    else if (day_of_week_ == 6) ss << " SATURDAY";
 
- 	return ss.str();
+   return ss.str();
 }
 
 
diff --git a/ACore/src/DState.cpp b/ACore/src/DState.cpp
index 2ca9a36..3ae92d3 100644
--- a/ACore/src/DState.cpp
+++ b/ACore/src/DState.cpp
@@ -92,18 +92,18 @@ DState::State DState::toState( const std::string& str ) {
 bool DState::isValid( const std::string& state ) {
 	if ( state == "complete" )
 		return true;
+   if ( state == "aborted" )
+      return true;
+   if ( state == "queued" )
+      return true;
+   if ( state == "active" )
+      return true;
 	if ( state == "suspended" )
 		return true;
 	if ( state == "unknown" )
 		return true;
-	if ( state == "aborted" )
-		return true;
 	if ( state == "submitted" )
 		return true;
-	if ( state == "active" )
-		return true;
-	if ( state == "queued" )
-		return true;
 	return false;
 }
 
diff --git a/ACore/src/Host.cpp b/ACore/src/Host.cpp
index 9800f54..6b3d34d 100644
--- a/ACore/src/Host.cpp
+++ b/ACore/src/Host.cpp
@@ -67,6 +67,11 @@ std::string Host::ecf_lists_file(const std::string& port) const
    return prefix_host_and_port(port,Str::WHITE_LIST_FILE());
 }
 
+std::string Host::ecf_passwd_file(const std::string& port) const
+{
+   return prefix_host_and_port(port,Str::ECF_PASSWD());
+}
+
 std::string Host::prefix_host_and_port( const std::string& port,const std::string& file_name ) const
 {
    // The file name may include a path.  /user/avi/fred.log
diff --git a/ACore/src/Host.hpp b/ACore/src/Host.hpp
index f0172a7..99755a5 100644
--- a/ACore/src/Host.hpp
+++ b/ACore/src/Host.hpp
@@ -39,9 +39,12 @@ public:
 	/// return backup checkPoint file
    std::string ecf_backup_checkpt_file(const std::string& port) const;
 
-   /// return ecf.list file. White list file used for authentication
+   /// return ecf.list file. White list file used for authentication & authorisation
    std::string ecf_lists_file(const std::string& port) const;
 
+   /// return ecf.passwd file. Used for authentication
+   std::string ecf_passwd_file(const std::string& port) const;
+
    /// Given a port and file name, will return <host>.<port>.file_name
    std::string prefix_host_and_port( const std::string& port,const std::string& list_file ) const;
 
diff --git a/ACore/src/Passwd.cpp b/ACore/src/Passwd.cpp
index 443442e..ba0cef4 100644
--- a/ACore/src/Passwd.cpp
+++ b/ACore/src/Passwd.cpp
@@ -38,24 +38,6 @@ std::string Passwd::generate()
 	return std::string (pw);
 }
 
-//std::string Passwd::doCrypt( const std::string& passwd ) {
-//	/**************************************************************************
-//	 ?  Crypt the passwd.
-//	 =  Crypted password in static area.
-//	 ************************************o*************************************/
-//	char salt[3];
-//
-//	for (int i = 0; i < 2; i++) {
-//		salt[i] = 64.0 * ecf_drand48() + '.';
-//		if ( salt[i] > '9' ) salt[i] += 7;
-//		if ( salt[i] > 'Z' ) salt[i] += 6;
-//	}
-//	salt[2] = '\0';
-//
-//	return std::string( crypt( passwd.c_str(), salt ));
-//}
-
-
 double ecf_drand48()
 /**************************************************************************
  ?  Random number with time dependent seed.
diff --git a/ACore/src/Passwd.hpp b/ACore/src/Passwd.hpp
index c0c6e0c..655ee6c 100644
--- a/ACore/src/Passwd.hpp
+++ b/ACore/src/Passwd.hpp
@@ -37,9 +37,6 @@ public:
 	/// generate a random password
 	static std::string generate();
 
-	/// encrypt the password
-//	static std::string doCrypt( const std::string& generated);
-
 private:
 	Passwd();
 };
diff --git a/ACore/src/PasswdFile.cpp b/ACore/src/PasswdFile.cpp
new file mode 100644
index 0000000..3df8a62
--- /dev/null
+++ b/ACore/src/PasswdFile.cpp
@@ -0,0 +1,314 @@
+//============================================================================
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description : Parser for white list file
+//============================================================================
+#include <pwd.h>       /* getpwuid */
+#include <vector>
+#include <iostream>
+#include <boost/lexical_cast.hpp>
+#include <boost/algorithm/string/trim.hpp>
+
+#include "PasswdFile.hpp"
+#include "File.hpp"
+#include "Str.hpp"
+#include "Log.hpp"
+
+using namespace ecf;
+using namespace std;
+using namespace boost;
+
+PasswdFile::PasswdFile() {}
+PasswdFile::~PasswdFile() {}
+
+//#define DEBUG_ME 1
+
+// Parse the file if any errors found return false and errorMsg
+// The parser expects version number  4.5.0
+bool PasswdFile::load(const std::string& file, bool debug,  std::string& errorMsg)
+{
+   if (debug)  std::cout << __func__ << "  " <<  passwd_file_ << " opening...\n";
+
+   vec_.clear();
+   passwd_file_ = file;
+
+
+   std::vector<std::string> lines;
+   if (File::splitFileIntoLines(passwd_file_,lines,true /* ignore empty lines */)) {
+
+      bool foundVersionNumber = false; // can read from version 4.4.0 onwards
+      size_t lines_size = lines.size();
+      for(size_t i = 0; i < lines_size; ++i) {
+
+         if (lines[i].empty())   continue;
+
+         // ignore/remove all comments
+         if (lines[i][0] == '#') continue;
+         std::string theLine = lines[i];
+         string::size_type comment_pos = theLine.find("#");
+         if (comment_pos != std::string::npos ) {
+            theLine.erase(comment_pos);
+         }
+
+         boost::algorithm::trim(theLine);  // remove leading and trailing spaces
+         std::vector< std::string > lineTokens;
+         Str::split( theLine, lineTokens );
+         if ( lineTokens.empty() ) continue;
+
+         // version should be at the start
+         if (!foundVersionNumber) {
+
+            if (!validateVersionNumber(lineTokens[0], errorMsg )) {
+               std::stringstream ss;
+               ss << " " << i + 1 << ": " << lines[i] << "\n";
+               ss << "for ECF_PASSWD file " << passwd_file_ << "\n";
+               errorMsg += ss.str();
+               return false;
+            }
+            foundVersionNumber = true;
+            continue;
+         }
+         else  {
+           if (!add_user(lineTokens,errorMsg)) {
+              errorMsg += theLine;
+              return false;
+           }
+         }
+      }
+
+      if (debug)  std::cout << dump() << "\n";
+
+      return true;
+   }
+
+   errorMsg += "Could not open file specified by ECF_PASSWD ";
+   errorMsg += passwd_file_;
+   errorMsg += "\n";
+   if (debug)  std::cout << dump() << "\n";
+   return false;
+}
+
+bool PasswdFile::check_at_least_one_user_with_host_and_port(const std::string& host, const std::string& port)
+{
+   size_t vec_size = vec_.size();
+   for (size_t i = 0; i < vec_size; i++) {
+      if (vec_[i].host() == host && vec_[i].port() == port) {
+         return true;
+      }
+   }
+   return false;
+}
+
+std::string PasswdFile::get_passwd(const std::string& user, const std::string& host, const std::string& port)
+{
+   // cout << "PasswdFile::get_passwd user(" << user << ") host(" << host << ") port(" << port << ")\n";
+   size_t vec_size = vec_.size();
+   for (size_t i = 0; i < vec_size; i++) {
+      if (vec_[i].user() == user && vec_[i].host() == host && vec_[i].port() == port) {
+         return vec_[i].passwd();
+      }
+   }
+   return string();
+}
+
+bool PasswdFile::authenticate(const std::string& user, const std::string& passwd) const
+{
+//#ifdef DEBUG_ME
+//   cout << "   PasswdFile::authenticate user(" << user << ") passwd(" << passwd << ")\n";
+//#endif
+
+   if (user.empty()) {
+//#ifdef DEBUG_ME
+//      cout << "      PasswdFile::authenticate FALSE user empty.\n";
+//#endif
+      return false;
+   }
+
+   // Only fail if user exists in the passwd file
+   bool user_found  = false;
+   size_t vec_size = vec_.size();
+   for (size_t i = 0; i < vec_size; i++) {
+      if (vec_[i].user() == user) {
+         user_found = true;
+         if (vec_[i].passwd() == passwd) {
+//#ifdef DEBUG_ME
+//            cout << "      PasswdFile::authenticate TRUE \n";
+//#endif
+            return true;
+         }
+      }
+   }
+
+   // User found in password file and passwd did not match
+   if (user_found) {
+//#ifdef DEBUG_ME
+//      cout << "      PasswdFile::authenticate FALSE, user found but passwd did not match\n";
+//#endif
+      return false;
+   }
+   else {
+      // User not found, but if passwd is not empty, then fail.
+      if (!passwd.empty()) {
+//#ifdef DEBUG_ME
+//         cout << "      PasswdFile::authenticate FALSE, user NOT found, passwd is NOT EMPTY\n";
+//#endif
+         return false;
+      }
+   }
+
+   // Server has a password file, but user not found and passwd is empty.
+   if (vec_.empty()) {
+//#ifdef DEBUG_ME
+//    cout << "      PasswdFile::authenticate true, user NOT found, and passwd EMPTY, and password file EMPTY\n";
+//#endif
+      return true;
+   }
+
+//#ifdef DEBUG_ME
+//  cout << "      PasswdFile::authenticate false, user NOT found, and passwd EMPTY\n";
+//#endif
+   return false;
+}
+
+bool PasswdFile::validateVersionNumber(const std::string& line, std::string& errorMsg) const
+{
+   // Expect 4.5.0
+   // If first character is NUMERIC and we have dots
+   bool firstCharIsNumeric = Str::NUMERIC().find( line[0], 0 ) != string::npos;
+   if ( firstCharIsNumeric && line.find( "." ) != string::npos) {
+
+      std::vector< std::string > versionNumberTokens;
+      Str::split( line, versionNumberTokens, "." );
+      if ( versionNumberTokens.size() != 3 ) {
+         std::stringstream ss;
+         ss << "Expected version of the form <int>.<int>.<int> i.e 4.4.0. but found invalid version number\n";
+         errorMsg += ss.str();
+         return false;
+      }
+
+      try {
+         int major = boost::lexical_cast< int >( versionNumberTokens[0] );
+         int minor = boost::lexical_cast< int >( versionNumberTokens[1] );
+         int part = boost::lexical_cast< int >( versionNumberTokens[2] );
+         if ( major < 4  ) {
+            errorMsg += "Only passwd files with a version >= 4.5.0 is supported\n";
+            return false;
+         }
+         if ( major == 4 && minor < 5 ) {
+            errorMsg += "Only passwd files with a version >= 4.5.0 is supported\n";
+            return false;
+         }
+         if ( major == 4 && minor == 5  && part > 0) {
+            errorMsg += "Only passwd files with a version >= 4.5.0 is supported\n";
+            return false;
+         }
+      }
+      catch ( boost::bad_lexical_cast& ) {
+         errorMsg += "Invalid version number \n";
+         return false;
+      }
+
+      return true;
+   }
+
+   errorMsg +="The version number not found. The version number must appear before the users.\n";
+   return false;
+}
+
+bool PasswdFile::add_user(std::vector<std::string>& tokens, std::string& error_msg)
+{
+   // Expected format is:
+   // 4.5.0
+   // # comment
+   // <user> <host> <port> <passwd> # comment
+   // <user> <host> <port> <passwd> # comment
+
+   if (tokens.size() < 4) {
+      error_msg =  "expected <user> <host> <port> <passwd> # comment\n";
+      return false;
+   }
+
+   try { boost::lexical_cast< int >( tokens[2] ); }
+   catch ( boost::bad_lexical_cast& ) {
+      error_msg += "Port number must be integer's\n";
+      return false;
+   }
+
+   vec_.push_back(Pass_wd(tokens[0],tokens[1],tokens[2],tokens[3]));
+
+   return true;
+}
+
+std::string PasswdFile::dump() const
+{
+   std::stringstream ss;
+   for (size_t i = 0; i < vec_.size(); i++) {
+      ss << vec_[i].user() << " " << vec_[i].host() << ":" << vec_[i].port() << "\n";
+   }
+   return ss.str();
+}
+
+bool PasswdFile::createWithAccess(
+      const std::string& pathToFile,
+      const std::string& host,
+      const std::string& port,
+      const std::string& passwd,
+      std::string& errorMsg)
+{
+   std::vector<std::string> lines; lines.reserve( 2 );
+
+   lines.push_back("4.5.0");
+
+   string line;
+   struct passwd * thePassWord = getpwuid ( getuid() );
+   string user = string( thePassWord->pw_name ) ;  // equivalent to the login name
+   line += user;
+   line += " ";
+   line += host;
+   line += " ";
+   line += port;
+   line += " ";
+   line += passwd;
+   lines.push_back(line);
+
+   line.clear();
+   line += user;
+   line += " ";
+   line += Str::LOCALHOST();
+   line += " ";
+   line += port;
+   line += " ";
+   line += passwd;
+   lines.push_back(line);
+
+   return File::create(pathToFile,lines,errorMsg);
+}
+
+bool PasswdFile::clear(
+      const std::string& pathToFile,
+      std::string& errorMsg)
+{
+   std::vector<std::string> lines;
+   if (File::splitFileIntoLines(pathToFile,lines,true /* ignore empty lines */)) {
+      // Just leave the version. i.e the first line.
+      if (lines.size() > 1) {
+         lines.erase(lines.begin()+1,lines.end());
+
+         // Overwrite the file.
+         return File::create(pathToFile,lines,errorMsg);
+      }
+      return true;
+   }
+   errorMsg += "PasswdFile::clear: Could not open file ";
+   errorMsg += errorMsg;
+   return false;
+}
diff --git a/ACore/src/PasswdFile.hpp b/ACore/src/PasswdFile.hpp
new file mode 100644
index 0000000..359fb46
--- /dev/null
+++ b/ACore/src/PasswdFile.hpp
@@ -0,0 +1,90 @@
+#ifndef PASSWDFILE_CPP_
+#define PASSWDFILE_CPP_
+//============================================================================
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #5 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description : Parser for while list file
+//============================================================================
+
+#include <boost/noncopyable.hpp>
+#include <string>
+#include <map>
+#include <vector>
+
+// ----------------------------------------------------------------
+//
+class Pass_wd {
+public:
+   Pass_wd(const std::string& user,const std::string& host,const std::string& port, const std::string& passwd )
+   : user_(user),host_(host),port_(port),passwd_(passwd) {}
+   ~Pass_wd() {}
+
+   bool operator==(const Pass_wd& rhs) const { return rhs.user_ == user_ && rhs.host_ == host_ && rhs.port_ == port_ && rhs.passwd_ == passwd_;}
+   const std::string& user() const { return user_;}
+   const std::string& host() const { return host_;}
+   const std::string& port()  const { return port_;}
+   const std::string& passwd() const { return passwd_;}
+
+private:
+   std::string user_;
+   std::string host_;
+   std::string port_;
+   std::string passwd_;
+};
+
+// This class is used to authenticate, user commands, i.e like ping,alter, etc
+class PasswdFile : private boost::noncopyable {
+public:
+   PasswdFile();
+   ~PasswdFile();
+
+   // Parse the file if any errors found return false and errorMsg
+   // The parser expects version number  4.5.0
+   bool load(const std::string& file,bool debug,  std::string& errorMsg);
+
+   // to be called by the server, to at least one user with given host and port
+   bool check_at_least_one_user_with_host_and_port(const std::string& host, const std::string& port);
+
+   // get the password for the given user, host and port. Otherwise return a empty string
+   std::string get_passwd(const std::string& user, const std::string& host, const std::string& port);
+
+   // authenticate the user, given the password.
+   bool authenticate(const std::string& user, const std::string& passwd) const ;
+
+   // ===========================================================================
+   // For test/debug
+
+   // Will overwrite the existing file
+   static bool createWithAccess(
+         const std::string& pathToFile,
+         const std::string& host,
+         const std::string& port,
+         const std::string& passwd,
+         std::string& errorMsg);
+
+   // Open password file and make it empty
+   static bool clear( const std::string& pathToFile, std::string& errorMsg);
+
+   const std::vector<Pass_wd>& passwds() const { return vec_;}
+   std::string dump() const;
+
+private:
+   bool add_user(std::vector<std::string>& tokens, std::string& error_msg);
+   bool validateVersionNumber(const std::string& line, std::string& errorMsg) const;
+
+private:
+
+   std::string passwd_file_;
+   std::vector<Pass_wd> vec_;
+};
+
+#endif
diff --git a/ACore/src/Pid.cpp b/ACore/src/Pid.cpp
new file mode 100644
index 0000000..32e1a09
--- /dev/null
+++ b/ACore/src/Pid.cpp
@@ -0,0 +1,37 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #11 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+
+#include "Pid.hpp"
+#include <sys/types.h> // for getpid
+#include <unistd.h>    // for getpid
+#include <boost/lexical_cast.hpp>
+
+std::string Pid::getpid()
+{
+   std::string pid;
+   try { pid = boost::lexical_cast<std::string>(::getpid());  }
+   catch (boost::bad_lexical_cast& e) {
+      throw std::runtime_error("Pid::getpid(): Could not convert PID to a string\n");
+   }
+   return pid;
+}
+
+std::string Pid::unique_name(const std:: string& prefix)
+{
+   std::string ret = prefix;
+   ret += "_";
+   ret += Pid::getpid();
+   return ret;
+}
diff --git a/ACore/src/TimeStamp.hpp b/ACore/src/Pid.hpp
similarity index 57%
copy from ACore/src/TimeStamp.hpp
copy to ACore/src/Pid.hpp
index cf232cd..cfa6da5 100644
--- a/ACore/src/TimeStamp.hpp
+++ b/ACore/src/Pid.hpp
@@ -1,9 +1,9 @@
-#ifndef TIMESTAMP_HPP_
-#define TIMESTAMP_HPP_
+#ifndef PID_HPP_
+#define PID_HPP_
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        : Log
+// Name        :
 // Author      : Avi
-// Revision    : $Revision: #31 $
+// Revision    : $Revision: #11 $
 //
 // Copyright 2009-2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
@@ -12,24 +12,24 @@
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
 //
+// Description :
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#include <string>
 #include <boost/noncopyable.hpp>
+#include <string>
 
-namespace ecf {
-
-// returns a string of format : "[%02d:%02d:%02d %d.%d.%d] "
-//                              "[hour:min:sec day.month.year] "
-// i.e                          "[05:26:20 29.10.2014] "
-class TimeStamp : private boost::noncopyable {
+class Pid : private boost::noncopyable {
 public:
-   static std::string now();
-   static void now(std::string&);
+   /// Returns the process pid as a string, otherwise throw exception(std::runtime_error)
+   static std::string getpid();
+
+   /// Return the a unique name based on process identifier,otherwise throw exception(std::runtime_error)
+   /// returns prefix + _ + getpid();
+   static std::string unique_name(const std:: string& prefix);
+
 private:
-   TimeStamp();
-};
 
-}
+   Pid(){}
+};
 
 #endif
diff --git a/ACore/src/Str.cpp b/ACore/src/Str.cpp
index 71f287c..b3c4aa3 100644
--- a/ACore/src/Str.cpp
+++ b/ACore/src/Str.cpp
@@ -50,11 +50,13 @@ const std::string& Str::ECF_TRYNO()      { static std::string ECF_TRYNO = "ECF_T
 const std::string& Str::ECF_TRIES()      { static std::string ECF_TRIES = "ECF_TRIES"; return ECF_TRIES;}
 const std::string& Str::ECF_NAME()       { static std::string ECF_NAME = "ECF_NAME"; return ECF_NAME; }
 const std::string& Str::ECF_NODE()       { static std::string ECF_NODE = "ECF_NODE"; return ECF_NODE;}
+const std::string& Str::ECF_HOST()       { static std::string ECF_HOST = "ECF_HOST"; return ECF_HOST;}
 const std::string& Str::ECF_PASS()       { static std::string ECF_PASS = "ECF_PASS";return ECF_PASS;}
 const std::string& Str::ECF_JOB()        { static std::string ECF_JOB = "ECF_JOB"; return ECF_JOB;}
 const std::string& Str::ECF_JOBOUT()     { static std::string ECF_JOBOUT = "ECF_JOBOUT"; return ECF_JOBOUT;}
 const std::string& Str::ECF_SCRIPT()     { static std::string ECF_SCRIPT = "ECF_SCRIPT"; return ECF_SCRIPT;}
 const std::string& Str::ECF_DUMMY_TASK() { static std::string ECF_DUMMY_TASK = "ECF_DUMMY_TASK"; return ECF_DUMMY_TASK;}
+const std::string& Str::ECF_NO_SCRIPT()  { static std::string ECF_NO_SCRIPT = "ECF_NO_SCRIPT"; return ECF_NO_SCRIPT;}
 const std::string& Str::ECF_MICRO()      { static std::string ECF_MICRO = "ECF_MICRO"; return ECF_MICRO;}
 const std::string& Str::ECF_FILES()      { static std::string ECF_FILES = "ECF_FILES"; return ECF_FILES;}
 const std::string& Str::ECF_FETCH()      { static std::string ECF_FETCH = "ECF_FETCH"; return ECF_FETCH;}
@@ -70,6 +72,7 @@ const std::string& Str::ECF_LOG()     { static std::string ECF_LOG = "ECF_LOG";
 
 
 const std::string& Str::WHITE_LIST_FILE() { static std::string WHITE_LIST_FILE = "ecf.lists"; return WHITE_LIST_FILE;}
+const std::string& Str::ECF_PASSWD() { static std::string ECF_PASSWD = "ecf.passwd"; return ECF_PASSWD;}
 
 const std::string& Str::ALPHANUMERIC_UNDERSCORE()
 {
diff --git a/ACore/src/Str.hpp b/ACore/src/Str.hpp
index 0a8b4a9..a6a35b4 100644
--- a/ACore/src/Str.hpp
+++ b/ACore/src/Str.hpp
@@ -122,11 +122,13 @@ public:
    static const std::string& ECF_TRIES();
    static const std::string& ECF_NAME();
    static const std::string& ECF_NODE();
+   static const std::string& ECF_HOST();
    static const std::string& ECF_PASS();
    static const std::string& ECF_JOB();
    static const std::string& ECF_JOBOUT();
    static const std::string& ECF_SCRIPT();
    static const std::string& ECF_DUMMY_TASK();
+   static const std::string& ECF_NO_SCRIPT();
    static const std::string& ECF_MICRO();
    static const std::string& ECF_FILES();
    static const std::string& ECF_FETCH();
@@ -140,7 +142,8 @@ public:
    static const std::string& ECF_EXTN();
    static const std::string& ECF_LOG();
 
-	static const std::string& WHITE_LIST_FILE();
+   static const std::string& WHITE_LIST_FILE();
+   static const std::string& ECF_PASSWD();
 private:
 	Str(){}
 };
diff --git a/ACore/src/TimeStamp.cpp b/ACore/src/TimeStamp.cpp
index f95a02d..55b54df 100644
--- a/ACore/src/TimeStamp.cpp
+++ b/ACore/src/TimeStamp.cpp
@@ -37,4 +37,14 @@ void TimeStamp::now(std::string& time_stamp)
    time_stamp = t_fmt;
 }
 
+void TimeStamp::now_in_brief(std::string& time_stamp)
+{
+   char t_fmt[255];
+   time_t stamp = time( NULL);
+   struct tm *tod = localtime(&stamp);
+   sprintf(t_fmt, "[%02d:%02d:%02d %d.%d] ", tod->tm_hour, tod->tm_min, tod->tm_sec,
+           tod->tm_mday, tod->tm_mon + 1);
+
+   time_stamp = t_fmt;
+}
 }
diff --git a/ACore/src/TimeStamp.hpp b/ACore/src/TimeStamp.hpp
index cf232cd..e4f17a6 100644
--- a/ACore/src/TimeStamp.hpp
+++ b/ACore/src/TimeStamp.hpp
@@ -26,6 +26,7 @@ class TimeStamp : private boost::noncopyable {
 public:
    static std::string now();
    static void now(std::string&);
+   static void now_in_brief(std::string&);
 private:
    TimeStamp();
 };
diff --git a/ACore/src/Version.cpp b/ACore/src/Version.cpp
index 4da8049..afb01bd 100644
--- a/ACore/src/Version.cpp
+++ b/ACore/src/Version.cpp
@@ -78,6 +78,13 @@ std::string Version::description()
    ss << "TEXT_ARCHIVE)";
 #endif
 
+#ifdef ECF_SECURE_USER
+   ss << " secure_user";
+#endif
+#ifdef ECF_OPENSSL
+   ss << " openssl";
+#endif
+
    ss << " Compiled on " << __DATE__ << " " << __TIME__;
    return ss.str();
 }
diff --git a/ACore/src/WhiteListFile.cpp b/ACore/src/WhiteListFile.cpp
index fb3932f..d0d1f96 100644
--- a/ACore/src/WhiteListFile.cpp
+++ b/ACore/src/WhiteListFile.cpp
@@ -29,35 +29,119 @@ using namespace boost;
 
 WhiteListFile::WhiteListFile()
 :  all_users_have_read_access_(false),
-   all_users_have_write_access_(false)
+   all_users_have_write_access_(false) {}
+
+WhiteListFile::~WhiteListFile() {}
+
+bool WhiteListFile::verify_read_access(const std::string& user) const
 {
+   return verify_read_access(user, Str::EMPTY());
 }
 
-WhiteListFile::~WhiteListFile() {}
+bool WhiteListFile::verify_write_access(const std::string& user) const
+{
+   return verify_write_access(user, Str::EMPTY());
+}
 
+bool WhiteListFile::verify_read_access(const std::string& user, const std::string& path) const
+{
+   if (all_users_have_read_access_) return true;
+   if (users_with_read_access_.empty() && users_with_write_access_.empty() ) return true;
+   if (verify_path_access(user,path,users_with_read_access_)) return true;
+   if (verify_path_access("*",path,users_with_read_access_)) return true;
 
-bool WhiteListFile::allow_read_access(const std::string& user) const
+   // user with write access also have read access
+   if (verify_path_access(user,path,users_with_write_access_)) return true;
+   if (verify_path_access("*",path,users_with_write_access_)) return true;
+
+   return false;
+}
+
+bool WhiteListFile::verify_write_access(const std::string& user,const std::string& path) const
+{
+   if (all_users_have_write_access_) return true;
+   if (users_with_read_access_.empty() && users_with_write_access_.empty() ) return true;
+   if (verify_path_access(user,path,users_with_write_access_)) return true;
+   if (verify_path_access("*",path,users_with_write_access_)) return true;
+   return false;
+}
+
+bool WhiteListFile::verify_read_access(const std::string& user, const std::vector<std::string>& paths) const
 {
+//   std::cout << "WhiteListFile::verify_read_access user " << user << " paths( ";
+//   for(size_t i = 0; i < paths.size(); i++) { std::cout << paths[i] << " "; }
+//   std::cout << ") \n";
+//   std::cout << "  all_users_have_read_access_: " << all_users_have_read_access_ << "\n";
+//   std::cout << "  users_with_read_access_.size(): " << users_with_read_access_.size() << "\n";
+//   std::cout << "  users_with_write_access_.size(): " << users_with_write_access_.size() << "\n";
+//   std::cout << dump_valid_users() << "\n\n";
+
    if (all_users_have_read_access_) return true;
    if (users_with_read_access_.empty() && users_with_write_access_.empty() ) return true;
+   if (verify_path_access(user,paths,users_with_read_access_)) return true;
+   if (verify_path_access("*",paths,users_with_read_access_)) return true;
+
+   // user with write access also have read access
+   if (verify_path_access(user,paths,users_with_write_access_)) return true;
+   if (verify_path_access("*",paths,users_with_write_access_)) return true;
 
-   if (users_with_read_access_.find(user) != users_with_read_access_.end()) {
-      return true;
-   }
    return false;
 }
 
-bool WhiteListFile::allow_write_access(const std::string& user) const
+bool WhiteListFile::verify_write_access(const std::string& user, const std::vector<std::string>& paths) const
 {
    if (all_users_have_write_access_) return true;
    if (users_with_read_access_.empty() && users_with_write_access_.empty() ) return true;
+   if (verify_path_access(user,paths,users_with_write_access_)) return true;
+   if (verify_path_access("*",paths,users_with_write_access_)) return true;
+   return false;
+}
 
-   if (users_with_write_access_.find(user) != users_with_write_access_.end()) {
+bool WhiteListFile::verify_path_access(const std::string& user,const std::vector<std::string>& paths,const mymap& user_path_map) const
+{
+   mymap::const_iterator it = user_path_map.find(user);
+   if (it != user_path_map.end()) {
+      const std::vector<std::string>& allowed_paths = it->second;
+      if (allowed_paths.empty()) return true;
+      if ( paths.empty())  return false;
+
+      size_t allowed_paths_size = allowed_paths.size();
+      for(size_t i = 0; i < paths.size(); i++) {
+         bool found_path_in_allowed_paths = false;
+         for(size_t ap = 0; ap < allowed_paths_size; ap++) {
+            string::size_type fnd = allowed_paths[ap].find(paths[i]);
+            if (fnd != std::string::npos && fnd == 0) {
+               found_path_in_allowed_paths = true;
+               continue;
+            }
+         }
+         if (!found_path_in_allowed_paths) return false;
+      }
       return true;
    }
    return false;
 }
 
+bool WhiteListFile::verify_path_access(const std::string& user,const std::string& path,const mymap& user_path_map) const
+{
+   mymap::const_iterator it = user_path_map.find(user);
+   if (it != user_path_map.end()) {
+      const std::vector<std::string>& allowed_paths = it->second;
+      if (allowed_paths.empty()) return true;
+      if ( path.empty())  return false;
+
+      size_t allowed_paths_size = allowed_paths.size();
+      for(size_t ap = 0; ap < allowed_paths_size; ap++) {
+         string::size_type fnd = allowed_paths[ap].find(path);
+         if (fnd != std::string::npos && fnd == 0) {
+            // found path in allowed paths
+            return true;
+         }
+      }
+   }
+   return false;
+}
+
 bool WhiteListFile::load(const std::string& file, bool debug, std::string& errorMsg )
 {
    if (debug) {
@@ -75,19 +159,24 @@ bool WhiteListFile::load(const std::string& file, bool debug, std::string& error
  	if (File::splitFileIntoLines(white_list_file_,lines,true /* ignore empty lines */)) {
 
  		bool foundVersionNumber = false; // can read from version 4.4.5 onwards
- 		for(size_t i = 0; i < lines.size(); ++i) {
+ 		size_t lines_size = lines.size();
+ 		for(size_t i = 0; i < lines_size; ++i) {
 
  			if (lines[i].empty())   continue;
- 			if (lines[i][0] == '#') continue; // ignore comments
 
+ 			// ignore/remove all comments
+ 			if (lines[i][0] == '#') continue;
  			std::string theLine = lines[i];
- 			boost::algorithm::trim(theLine); // don't know why we get leading/trailing spaces
+ 			string::size_type comment_pos = theLine.find("#");
+ 			if (comment_pos != std::string::npos ) {
+ 			   theLine.erase(comment_pos);
+ 			}
 
+ 			boost::algorithm::trim(theLine);  // remove leading and trailing spaces
  			std::vector< std::string > lineTokens;
  			Str::split( theLine, lineTokens );
  			if ( lineTokens.empty() ) continue;
 
-
  			// version should be at the start
  			if (!foundVersionNumber) {
 
@@ -102,7 +191,9 @@ bool WhiteListFile::load(const std::string& file, bool debug, std::string& error
  				continue;
  			}
  			else  {
- 			  add_user(lineTokens[0]);
+ 			  if (!add_user(lineTokens,errorMsg)) {
+ 			     return false;
+ 			  }
  			}
  		}
 
@@ -126,12 +217,18 @@ std::string WhiteListFile::dump_valid_users() const
    if (all_users_have_read_access_)  ss << " All users have read access\n";
    if (all_users_have_write_access_) ss << " All users have write access\n";
 
-   std::set<std::string>::const_iterator i;
+   mymap::const_iterator i;
    for(i=users_with_read_access_.begin(); i!= users_with_read_access_.end(); ++i) {
-      ss << " User: " << (*i) << " has read access\n";
+      ss << " User: " << (*i).first << " ";
+      const std::vector<std::string>& paths = (*i).second;
+      for(size_t i = 0; i < paths.size(); i++)  ss << paths[i] << ",";
+      ss << " has read access\n";
    }
    for(i=users_with_write_access_.begin(); i!= users_with_write_access_.end(); ++i) {
-      ss << " User: " << (*i) << " has read/write access\n";
+      ss << " User: " << (*i).first << " ";
+      const std::vector<std::string>& paths = (*i).second;
+      for(size_t i = 0; i < paths.size(); i++)  ss << paths[i] << ",";
+      ss << " has read/write access\n";
    }
 
    return ss.str();
@@ -183,41 +280,153 @@ bool WhiteListFile::validateVersionNumber(const std::string& line, std::string&
 }
 
 
-void WhiteListFile::add_user(const std::string& line )
+bool WhiteListFile::add_user(std::vector<std::string>& tokens, std::string& error_msg)
 {
-	LOG_ASSERT(!line.empty(), "");
-	if (line[0] == '-') {
+   //# please note if the same user appear multiple times, then the access right are additive
+   //# Hence if the user has been given write access, then other change to access rights for
+   //# same user are ignored
+   //
+   //# These user have read and write access to the server
+   //uid1  # a comment
+   //uid2  # a comment
+   //cog   # a comment
+   //
+   //# Read only users
+   //-*     # *all* users have read access to *all* suites
+   //-fred
+   //
+   //*   # *all* user have read/write access, to *all* suites
+   //
+   //# access to suites
+   //-fred /suiteX  # user fred is only allowed read access to suiteX only
+   //bill    /suiteX,/suiteB # user bill is allowed read/write access to suiteX and suiteB only
+   //-*      /open   # all user are allowed access to suite /open
+   //joe    /        # has read/write access to everything, this same as 'joe' by itself
+   //*      /        # all users have read/write access
+   //*      /x,/y    # all user have read/write access to suite /x, /y
+
+   // Use of * by itself means *all* user have read/write access to *all* suites
+   if ( all_users_have_write_access_)  return true;
+
+   if (tokens.size() == 1) {
+      std::string user = tokens[0];
+      if (user[0] == '-') {
+
+         // Read access
+         user.erase(user.begin());
+
+         // if we see -* all users have read access
+         if (user == "*") {
+            all_users_have_read_access_ = true;
+            users_with_read_access_.clear();
+         }
+         else {
+            if (!all_users_have_read_access_)
+               users_with_read_access_.insert(std::make_pair(user,std::vector<std::string>()));
+         }
+         return true;
+      }
+
+      // write access , this also IMPLIES read access
+      // if we see * all users have read and write access
+      if (user == "*") {
+         all_users_have_write_access_ = true;
+         all_users_have_read_access_ = true;
+         users_with_write_access_.clear();
+         users_with_read_access_.clear();
+      }
+      else {
+         if (!all_users_have_read_access_)
+            users_with_read_access_.insert(std::make_pair(user,std::vector<std::string>()));
+         if (!all_users_have_write_access_)
+            users_with_write_access_.insert(std::make_pair(user,std::vector<std::string>()));
+      }
+      return true;
+   }
 
-	   // Read access
-		std::string user = line;
-		user.erase(user.begin());
+   bool clear_paths = false;
+   bool read_only = false;
+   std::string user;
+   std::vector<std::string> paths;
+   for(size_t i = 0; i < tokens.size(); i++) {
+      std::string tok = tokens[i];
+      if (tok.empty()) continue;
+      if (tok[0] == '-') {
+         // read only user for a given set of paths
+         read_only = true;
+         tok.erase(tok.begin());
+         if (!tok.empty()) {
+            if (!user.empty()) { error_msg = "Can only have one user per line, first user:";error_msg+=user; error_msg+=" second user:"; error_msg+=tok;return false;}
+            user = tok ; // user =  <name> || *
+         }
+      }
+      else if (tok[0] == '*') {
+         // all user have read/write access for a given set of suites ?
+         if (!user.empty()) { error_msg = "Can only have one user per line, first user:";error_msg+=user; error_msg+=" second user:"; error_msg+=tok;return false;}
+         user = "*";
+      }
+      else if (tok[0] == '/') {
+         // path or set of paths
+         std::vector<std::string> local_paths;
+         Str::split(tok,local_paths,",");
+         std::copy(local_paths.begin(),local_paths.end(),std::back_inserter(paths));
+
+         // root path '/' means apply to all suites, in which case the paths may as well be empty.
+         for(size_t i = 0; i < paths.size(); ++i) {
+            if (paths[i] == "/") {
+               clear_paths = true;
+               break;
+            }
+         }
+      }
+      else {
+         // read/write user
+         if (!user.empty()) { error_msg = "Can only have one user per line, first user:";error_msg+=user; error_msg+=" second user:"; error_msg+=tok;return false;}
+         user = tok;
+      }
+   }
 
-		// if we see -* all users have read access
-		if (user == "*") {
-		   all_users_have_read_access_ = true;
-		   users_with_read_access_.clear();
-		}
-		else {
-		   if (!all_users_have_read_access_)
-		      users_with_read_access_.insert(user);
-		}
-		return;
-	}
+   if (clear_paths) {
+      paths.clear(); // user has used root path '/'
+
+      // * user means all users
+      if (user == "*") {
+         if (read_only) {
+            // -* /
+            all_users_have_read_access_ = true;
+            users_with_read_access_.clear();
+         }
+         else {
+            // * /
+            all_users_have_write_access_ = true;
+            users_with_write_access_.clear();
+         }
+      }
+   }
+
+   // check all paths start with '/'
+   for(size_t i = 0; i<paths.size(); i++) {
+      if (!paths[i].empty() && paths[i][0] != '/') {
+         error_msg = "Paths must start with '/'";
+         return false;
+      }
+   }
 
-	// write access , this also IMPLIES read access
-   // if we see * all users have read and write access
-   if (line == "*") {
-      all_users_have_write_access_ = true;
-      all_users_have_read_access_ = true;
-      users_with_write_access_.clear();
-      users_with_read_access_.clear();
+   if (read_only) {
+      if (!all_users_have_read_access_) {
+         mymap::iterator it = users_with_read_access_.find(user);
+         if (it == users_with_read_access_.end()) users_with_read_access_.insert(std::make_pair(user,paths));
+         else  std::copy(paths.begin(),paths.end(),std::back_inserter(it->second));
+      }
    }
    else {
-      if (!all_users_have_read_access_)
-         users_with_read_access_.insert(line);
-      if (!all_users_have_write_access_)
-         users_with_write_access_.insert(line);
+      if ( !all_users_have_write_access_) {
+         mymap::iterator it = users_with_write_access_.find(user);
+         if (it == users_with_write_access_.end()) users_with_write_access_.insert(std::make_pair(user,paths));
+         else  std::copy(paths.begin(),paths.end(),std::back_inserter(it->second));
+      }
    }
+   return true;
 }
 
 bool WhiteListFile::createWithReadAccess( const std::string& pathToFile,std::string& errorMsg)
diff --git a/ACore/src/WhiteListFile.hpp b/ACore/src/WhiteListFile.hpp
index dd8c8d1..1b70f5e 100644
--- a/ACore/src/WhiteListFile.hpp
+++ b/ACore/src/WhiteListFile.hpp
@@ -17,10 +17,11 @@
 
 #include <boost/noncopyable.hpp>
 #include <string>
-#include <set>
+#include <map>
+#include <vector>
 
 // ----------------------------------------------------------------
-// The whitelist file, is used to indicate users who are allowed
+// The whiteList file, is used to indicate users who are allowed
 // read/write access to the server when calling *user* commands
 
 class WhiteListFile : private boost::noncopyable {
@@ -28,8 +29,13 @@ public:
 	WhiteListFile();
 	~WhiteListFile();
 
-   bool allow_read_access(const std::string& user) const;
-   bool allow_write_access(const std::string& user) const;
+   bool verify_read_access(const std::string& user) const;
+   bool verify_write_access(const std::string& user) const;
+   bool verify_read_access(const std::string& user, const std::string& path) const;
+   bool verify_write_access(const std::string& user,const std::string& path) const;
+   bool verify_read_access(const std::string& user, const std::vector<std::string>& paths) const;
+   bool verify_write_access(const std::string& user,const std::vector<std::string>& paths) const;
+
    std::string dump_valid_users() const;
 
 	// Parse the file if any errors found return false and errorMsg
@@ -48,13 +54,17 @@ public:
 private:
 
 	bool validateVersionNumber(const std::string& line, std::string& errorMsg) const;
-	void add_user(const std::string& token);
+	bool add_user(std::vector<std::string>& tokens, std::string& error_msg);
+
+	typedef std::map<std::string,std::vector<std::string> > mymap;
+   bool verify_path_access(const std::string& user,const std::vector<std::string>& paths,const mymap&) const;
+   bool verify_path_access(const std::string& user,const std::string& path,const mymap&) const;
 
    bool all_users_have_read_access_;
    bool all_users_have_write_access_;
 	std::string white_list_file_;
-   std::set<std::string> users_with_read_access_;
-   std::set<std::string> users_with_write_access_;
+	mymap users_with_read_access_;   // user,paths
+	mymap users_with_write_access_;  // user,paths
 };
 
 #endif
diff --git a/ACore/src/ecflow_version.h b/ACore/src/ecflow_version.h
index 64fa31a..8f233f6 100644
--- a/ACore/src/ecflow_version.h
+++ b/ACore/src/ecflow_version.h
@@ -1,10 +1,10 @@
 #ifndef ecflow_version_config_h
 #define ecflow_version_config_h
  
-#define ECFLOW_VERSION   "4.1.0"
+#define ECFLOW_VERSION   "4.5.0"
 
 #define ECFLOW_RELEASE   "4"
-#define ECFLOW_MAJOR     "1"
+#define ECFLOW_MAJOR     "5"
 #define ECFLOW_MINOR     "0"
 
 #endif 
diff --git a/ACore/test/TestArgvCreator.cpp b/ACore/test/TestArgvCreator.cpp
index ab2883b..420bb91 100644
--- a/ACore/test/TestArgvCreator.cpp
+++ b/ACore/test/TestArgvCreator.cpp
@@ -38,7 +38,7 @@ static void doCheck(const std::vector<std::string>& theArgs)
 
 BOOST_AUTO_TEST_CASE( test_ArgvCreator )
 {
-	cout << "ACore:: ...test_ArgvCreator" << flush ;
+	cout << "ACore:: ...test_ArgvCreator\n" ;
 
 	// O args
 	std::vector<std::string> theArgs;
diff --git a/ACore/test/TestLog.cpp b/ACore/test/TestLog.cpp
index a0495b9..0aa47af 100644
--- a/ACore/test/TestLog.cpp
+++ b/ACore/test/TestLog.cpp
@@ -24,6 +24,7 @@
 #include "Log.hpp"
 #include "File.hpp"
 #include "DurationTimer.hpp"
+#include "Pid.hpp"
 
 using namespace ecf;
 using namespace std;
@@ -34,7 +35,11 @@ BOOST_AUTO_TEST_SUITE( CoreTestSuite )
 
 static std::string getLogPath() {
 
-   return File::test_data("ACore/test/logfile.txt","ACore");
+   // ECFLOW-712, generate unique name for log file, To allow parallel test
+   std::string log_file = "ACore/test/logfile";
+   log_file += Pid::getpid(); // can throw
+   log_file += ".txt";
+   return File::test_data(log_file,"ACore");
 }
 
 BOOST_AUTO_TEST_CASE( test_log )
@@ -45,7 +50,7 @@ BOOST_AUTO_TEST_CASE( test_log )
 
 	// delete the log file if it exists.
 	fs::remove(path);
-	BOOST_CHECK_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
+	BOOST_REQUIRE_MESSAGE(!fs::exists( path ), "log file not deleted " << path);
 
 	Log::create(path);
 	LOG(Log::MSG,"First Message");
@@ -69,7 +74,7 @@ BOOST_AUTO_TEST_CASE( test_log_append )
 
 	std::string path = getLogPath();
 
- 	BOOST_CHECK_MESSAGE(fs::exists( path ), "log file " << path << " not created by previous test\n");
+	BOOST_REQUIRE_MESSAGE(fs::exists( path ), "log file " << path << " not created by previous test\n");
 
  	LOG(Log::MSG,"Last Message");
 
@@ -115,10 +120,11 @@ BOOST_AUTO_TEST_CASE( test_log_new_path_errors )
    cout << "ACore:: ...test_log_new_path_errors\n";
 
    // delete the log file if it exists.
-   fs::remove(getLogPath());
+   std::string path = getLogPath();
+   fs::remove(path);
 
    // create a now log file.
-   Log::create(getLogPath());
+   Log::create(path);
    LOG(Log::MSG,"First Message");
    LOG(Log::LOG,"LOG");
 
@@ -163,10 +169,11 @@ BOOST_AUTO_TEST_CASE( test_log_new_path )
    cout << "ACore:: ...test_log_new_path\n";
 
    // delete the log file if it exists.
-   fs::remove(getLogPath());
+   std::string path = getLogPath();
+   fs::remove(path);
 
    // create a new log file.
-   Log::create(getLogPath());
+   Log::create(path);
    BOOST_CHECK_MESSAGE(fs::exists( Log::instance()->path() ), "Log file should be created after explicit call to Log::create()\n");
    LOG(Log::LOG,"LOG");
    fs::remove(Log::instance()->path());
@@ -188,6 +195,7 @@ BOOST_AUTO_TEST_CASE( test_log_new_path )
    // File not created until a message is logged
    LOG(Log::LOG,"LOG");
    BOOST_CHECK_MESSAGE(fs::exists( Log::instance()->path() ), "Log file should be created after first message is logged\n");
+
    fs::remove(Log::instance()->path());
 
    // Explicitly destroy log. To keep valgrind happy
@@ -201,7 +209,7 @@ BOOST_AUTO_TEST_CASE( test_get_last_n_lines_from_log )
    // delete the log file if it exists.
    std::string path = getLogPath();
    fs::remove(path);
-   BOOST_CHECK_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
+   BOOST_REQUIRE_MESSAGE(!fs::exists( path ), "log file not deleted " << path);
 
    // Create the log file;
    Log::create(path);
@@ -263,7 +271,7 @@ BOOST_AUTO_TEST_CASE( test_get_first_n_lines_from_log )
    // delete the log file if it exists.
    std::string path = getLogPath();
    fs::remove(path);
-   BOOST_CHECK_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
+   BOOST_REQUIRE_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
 
    // Create the log file;
    Log::create(path);
@@ -333,7 +341,7 @@ BOOST_AUTO_TEST_CASE( test_get_log_timing )
    // delete the log file if it exists.
    std::string path = getLogPath();
    fs::remove(getLogPath());
-   BOOST_CHECK_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
+   BOOST_REQUIRE_MESSAGE(!fs::exists( path ), "log file not deleted " << path << " not created \n");
 
    // Create the log file;
    Log::create(path);
diff --git a/ACore/test/TestPasswdFile.cpp b/ACore/test/TestPasswdFile.cpp
new file mode 100644
index 0000000..8a54bb9
--- /dev/null
+++ b/ACore/test/TestPasswdFile.cpp
@@ -0,0 +1,162 @@
+//============================================================================
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #11 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//============================================================================
+#include <boost/test/unit_test.hpp>
+#include <boost/lexical_cast.hpp>
+#include <boost/archive/tmpdir.hpp>
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+#include <boost/foreach.hpp>
+#include "boost/progress.hpp"
+
+#include <iostream>
+#include <fstream>
+
+#include "PasswdFile.hpp"
+#include "File.hpp"
+
+namespace fs = boost::filesystem;
+using namespace std;
+using namespace ecf;
+
+//#define DEBUG_ME 1
+
+BOOST_AUTO_TEST_SUITE( CoreTestSuite )
+
+void test_passwd_files(const std::string& directory, bool pass)
+{
+   fs::path full_path( fs::initial_path<fs::path>() );
+   full_path = fs::system_complete( fs::path( directory ) );
+
+   BOOST_CHECK(fs::exists( full_path ));
+   BOOST_CHECK(fs::is_directory( full_path ));
+
+#if DEBUG_ME
+   std::cout << "...In directory: " << full_path.relative_path() << "\n";
+#endif
+
+   fs::directory_iterator end_iter;
+   for ( fs::directory_iterator dir_itr( full_path ); dir_itr != end_iter; ++dir_itr )
+   {
+      try
+      {
+         fs::path relPath(directory + "/" + dir_itr->path().filename().string());
+
+         // recurse down directories
+         if ( fs::is_directory(dir_itr->status()) )  {
+            test_passwd_files(relPath.string(),pass);
+            continue;
+         }
+#if DEBUG_ME
+         std::cout << "......Parsing file " << relPath.string() << "\n";
+#endif
+         PasswdFile theFile;
+         std::string errorMsg;
+         bool parsedOk = theFile.load(relPath.string(),false/*debug*/, errorMsg);
+         if (pass) {
+            // Test expected to pass
+            BOOST_CHECK_MESSAGE(parsedOk,"Failed to parse file " << relPath << "\n" << errorMsg << "\n" << theFile.dump());
+         }
+         else {
+            // test expected to fail
+            BOOST_CHECK_MESSAGE(!parsedOk,"Parse expected to fail for " << relPath << "\n" << errorMsg << "\n" << theFile.dump());
+#if DEBUG_ME
+            cout << "\n" << errorMsg << "\n";
+#endif
+         }
+      }
+      catch ( const std::exception & ex )
+      {
+         std::cout << dir_itr->path().filename() << " " << ex.what() << std::endl;
+      }
+   }
+}
+
+BOOST_AUTO_TEST_CASE( test_parsing_for_good_passwd_files )
+{
+   cout << "ACore:: ...test_parsing_for_good_passwd_files\n";
+
+   std::string path = File::test_data("ACore/test/data/goodPasswdFiles","ACore");
+
+   // All the files in this directory are expected to pass
+   test_passwd_files(path, true);
+}
+
+BOOST_AUTO_TEST_CASE( test_parsing_for_bad_passwd_files )
+{
+   cout << "ACore:: ...test_parsing_for_bad_passwd_files\n";
+
+   std::string path = File::test_data("ACore/test/data/badPasswdFiles","ACore");
+
+   // All the files in this directory are expected to fail
+   test_passwd_files(path, false);
+}
+
+BOOST_AUTO_TEST_CASE( test_passwd_empty_file )
+{
+   cout << "ACore:: ...test_passwd_empty_file\n";
+
+   std::string path = File::test_data("ACore/test/data/goodPasswdFiles/empty.passwd","ACore");
+
+   PasswdFile theFile;
+   std::string errorMsg;
+   BOOST_CHECK_MESSAGE(theFile.load(path,false, errorMsg),"Failed to parse file " << path << "\n" << errorMsg);
+
+   BOOST_REQUIRE_MESSAGE(theFile.passwds().empty(), "expected empty file " );
+   BOOST_REQUIRE_MESSAGE(theFile.get_passwd("fred","host","port") == string(), "expected empty string" );
+   BOOST_REQUIRE_MESSAGE(theFile.authenticate("fred",""), "expected to authenticate. TEST CASE with empty password file");
+   BOOST_REQUIRE_MESSAGE(!theFile.authenticate("fred","passwd"), "expected not to authenticate" );
+   BOOST_REQUIRE_MESSAGE(!theFile.authenticate("","passwd"), "expected not to authenticate" );
+   BOOST_REQUIRE_MESSAGE(!theFile.authenticate("",""), "expected not to authenticate" );
+}
+
+BOOST_AUTO_TEST_CASE( test_passwd )
+{
+   cout << "ACore:: ...test_passwd\n";
+
+   std::string path = File::test_data("ACore/test/data/goodPasswdFiles/ecf.passwd","ACore");
+
+   PasswdFile theFile;
+   std::string errorMsg;
+   BOOST_CHECK_MESSAGE(theFile.load(path,false, errorMsg),"Failed to parse file " << path << "\n" << errorMsg);
+
+   BOOST_CHECK_MESSAGE(theFile.check_at_least_one_user_with_host_and_port("host","3141"),"expected to pass");
+   BOOST_CHECK_MESSAGE(theFile.check_at_least_one_user_with_host_and_port("host3","3143"),"expected to pass");
+   BOOST_CHECK_MESSAGE(theFile.check_at_least_one_user_with_host_and_port("host4","3145"),"expected to pass");
+   BOOST_CHECK_MESSAGE(!theFile.check_at_least_one_user_with_host_and_port("xxxx","3141"),"expected fail ");
+   BOOST_CHECK_MESSAGE(!theFile.check_at_least_one_user_with_host_and_port("host","13141"),"expected fail ");
+
+   // make sure we find all the users and the access right are correct
+//   4.4.0  # comment
+//
+//   # comment
+//   fred host 3141  x12ggg # comment
+//   fred host3 3143 passwd
+//   fred host4 3145 x12ggg
+//   # comment
+//
+//   jake host 3141  x12ggg
+//   tom host3 3143    x12ggg # sdsdsd
+
+   std::vector<Pass_wd> expected_passwds;
+   expected_passwds.push_back(Pass_wd("fred", "host", "3141",  "x12ggg"));
+   expected_passwds.push_back(Pass_wd("fred", "host3", "3143",  "passwd"));
+   expected_passwds.push_back(Pass_wd("fred", "host4", "3145",  "x12ggg"));
+   expected_passwds.push_back(Pass_wd("jake", "host", "3141",  "x12ggg"));
+   expected_passwds.push_back(Pass_wd("tom", "host3", "3143",  "x12ggg"));
+
+   BOOST_REQUIRE_MESSAGE(expected_passwds == theFile.passwds() ,"expected passwords to match");
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ACore/test/TestWhiteListFile.cpp b/ACore/test/TestWhiteListFile.cpp
index 4efdcdc..8a174d4 100644
--- a/ACore/test/TestWhiteListFile.cpp
+++ b/ACore/test/TestWhiteListFile.cpp
@@ -65,11 +65,11 @@ void test_white_list_files(const std::string& directory, bool pass)
 			bool parsedOk = theFile.load(relPath.string(),false/*debug*/, errorMsg);
 			if (pass) {
 				// Test expected to pass
-				BOOST_CHECK_MESSAGE(parsedOk,"Failed to parse file " << relPath << "\n" << errorMsg);
+				BOOST_CHECK_MESSAGE(parsedOk,"Failed to parse file " << relPath << "\n" << errorMsg << "\n" << theFile.dump_valid_users());
  			}
 			else {
 				// test expected to fail
-				BOOST_CHECK_MESSAGE(!parsedOk,"Parse expected to fail for " << relPath << "\n" << errorMsg);
+				BOOST_CHECK_MESSAGE(!parsedOk,"Parse expected to fail for " << relPath << "\n" << errorMsg << "\n" << theFile.dump_valid_users());
 #if DEBUG_ME
 				cout << "\n" << errorMsg << "\n";
 #endif
@@ -102,6 +102,26 @@ BOOST_AUTO_TEST_CASE( test_parsing_for_bad_white_list_files )
 	test_white_list_files(path, false);
 }
 
+BOOST_AUTO_TEST_CASE( test_white_list_default )
+{
+   cout << "ACore:: ...test_white_list_default\n";
+
+   WhiteListFile theFile;
+
+   BOOST_REQUIRE_MESSAGE(0 == theFile.read_access_size(), "expected 0 users with read access but found " << theFile.read_access_size() );
+   BOOST_REQUIRE_MESSAGE(0 == theFile.write_access_size(),"expected 0 users with write access but found " << theFile.write_access_size() );
+
+   // test random user
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx"),"Expected user xxxx to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxtt","/x"),"Expected user xxtt to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxtt",paths),"Expected user xxtt to have read access ");
+
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("yyyy"),"Expected user yyyy to have write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzz","/y"),"Expected user zzzz to have write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzz",paths),"Expected user zzzz to have write access ");
+}
+
 BOOST_AUTO_TEST_CASE( test_white_list_empty_file )
 {
    cout << "ACore:: ...test_white_list_empty_file\n";
@@ -116,11 +136,14 @@ BOOST_AUTO_TEST_CASE( test_white_list_empty_file )
    BOOST_REQUIRE_MESSAGE(0 == theFile.write_access_size(),"expected 0 users with write access but found " << theFile.write_access_size() );
 
    // test random user
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("xxxx"),"Expected user xxxx to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("xxtt"),"Expected user xxtt to have read access ");
-
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("yyyy"),"Expected user yyyy to have write access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("zzzz"),"Expected user zzzz to have write access ");
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx"),"Expected user xxxx to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxtt","/x"),"Expected user xxtt to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxtt",paths),"Expected user xxtt to have read access ");
+
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("yyyy"),"Expected user yyyy to have write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzz","/y"),"Expected user zzzz to have write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzz",paths),"Expected user zzzz to have write access ");
 }
 
 BOOST_AUTO_TEST_CASE( test_white_list )
@@ -164,20 +187,28 @@ BOOST_AUTO_TEST_CASE( test_white_list )
          " expected " << expected_users_with_read_write_access.size() << " users with write access but found " << theFile.write_access_size() );
 
 
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
  	std::vector< std::string >::const_iterator i;
  	for(i=expected_users_with_read_access.begin(); i!= expected_users_with_read_access.end(); ++i) {
- 	  BOOST_REQUIRE_MESSAGE( theFile.allow_read_access(*i),"Expected user " << *i << " to have read access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_read_access(*i),"Expected user " << *i << " to have read access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_read_access(*i,"/x"),"Expected user " << *i << " to have read access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_read_access(*i,paths),"Expected user " << *i << " to have read access ");
 	}
    for(i=expected_users_with_read_write_access.begin(); i!= expected_users_with_read_write_access.end(); ++i) {
-     BOOST_REQUIRE_MESSAGE( theFile.allow_write_access(*i),"Expected user " << *i << " to have write access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_write_access(*i),"Expected user " << *i << " to have write access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_write_access(*i,"/x"),"Expected user " << *i << " to have write access ");
+      BOOST_CHECK_MESSAGE( theFile.verify_write_access(*i,paths),"Expected user " << *i << " to have write access ");
    }
 
    // test random user
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_read_access("xxxx"),"Expected user xxxx to NOT have read access ");
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_read_access("*"),"Expected user *  to NOT have read access ");
-
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_write_access("yyyy"),"Expected user yyyy  to NOT have write access ");
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_write_access("zzzz"),"Expected user zzzz  to NOT have write access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("xxxx"),"Expected user xxxx to NOT have read access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("xxxx","/x"),"Expected user xxxx to NOT have read access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("xxxx",paths),"Expected user xxxx to NOT have read access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("*"),"Expected user *  to NOT have read access ");
+
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("yyyy"),"Expected user yyyy  to NOT have write access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("zzzz","/x"),"Expected user zzzz  to NOT have write access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("zzzz",paths),"Expected user zzzz  to NOT have write access ");
 }
 
 BOOST_AUTO_TEST_CASE( test_white_list_all_users_have_read_access )
@@ -214,22 +245,27 @@ BOOST_AUTO_TEST_CASE( test_white_list_all_users_have_read_access )
    BOOST_REQUIRE_MESSAGE(expected_users_with_read_write_access.size() == theFile.write_access_size(),
          " expected " << expected_users_with_read_write_access.size() << " users with write access but found " << theFile.write_access_size() );
 
-   // Any user should have read write access
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("fred"),"Expected user fred  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("bill"),"Expected user bill  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("xxxx"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("uid1"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("uid2"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("cog"),"Expected user xxxx  to have read access ");
+   // Any user should have read access
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred","/x"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("bill"),"Expected user bill  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("uid1"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("uid2"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("cog"),"Expected user xxxx  to have read access ");
 
    std::vector< std::string >::const_iterator i;
    for(i=expected_users_with_read_write_access.begin(); i!= expected_users_with_read_write_access.end(); ++i) {
-     BOOST_REQUIRE_MESSAGE( theFile.allow_write_access(*i),"Expected user " << *i << " to have write access ");
+      BOOST_REQUIRE_MESSAGE( theFile.verify_write_access(*i),"Expected user " << *i << " to have write access ");
+      BOOST_REQUIRE_MESSAGE( theFile.verify_write_access(*i,"/x"),"Expected user " << *i << " to have write access ");
+      BOOST_REQUIRE_MESSAGE( theFile.verify_write_access(*i,paths),"Expected user " << *i << " to have write access ");
    }
 
    // test random user for write access
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_write_access("yyyy"),"Expected user yyyy  to NOT have write access ");
-   BOOST_REQUIRE_MESSAGE( !theFile.allow_write_access("zzzz"),"Expected user zzzz  to NOT have write access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("yyyy"),"Expected user yyyy  to NOT have write access ");
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("zzzz"),"Expected user zzzz  to NOT have write access ");
 }
 
 
@@ -260,20 +296,226 @@ BOOST_AUTO_TEST_CASE( test_white_list_all_users_have_write_access )
    BOOST_REQUIRE_MESSAGE(theFile.write_access_size() == 0, " expected 0  but found " << theFile.read_access_size() );
 
    // Any user should have read access
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("fred"),"Expected user fred  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("bill"),"Expected user bill  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("xxxx"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("uid1"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("uid2"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_read_access("cog"),"Expected user xxxx  to have read access ");
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred","/x"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("bill"),"Expected user bill  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx","/x"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx",paths),"Expected user xxxx  to have read access ");
 
    // Any user should have read write access
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("fred"),"Expected user fred  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("bill"),"Expected user bill  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("xxxx"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("uid1"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("uid2"),"Expected user xxxx  to have read access ");
-   BOOST_REQUIRE_MESSAGE( theFile.allow_write_access("cog"),"Expected user xxxx  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred"),"Expected user fred  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzzzz"),"Expected user zzzzzz  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzzzz","/x"),"Expected user zzzzzz  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("zzzzzz",paths),"Expected user zzzzzz  to have read/write access ");
+}
+
+BOOST_AUTO_TEST_CASE( test_white_list_all_path_users_have_write_access )
+{
+   cout << "ACore:: ...test_white_list_all_path_users_have_write_access\n";
+
+   std::string path = File::test_data("ACore/test/data/goodWhiteListFiles/all_path_write_access.lists","ACore");
+
+   WhiteListFile theFile;
+   std::string errorMsg;
+   BOOST_CHECK_MESSAGE(theFile.load(path,false, errorMsg),"Failed to parse file " << path << "\n" << errorMsg);
+
+   //   4.4.14
+   //   * /  # same as '*'
+
+   // When all users have read/write access, the read/write access size should be empty
+   BOOST_REQUIRE_MESSAGE(theFile.read_access_size() == 0,  " expected 0  but found " << theFile.read_access_size() );
+   BOOST_REQUIRE_MESSAGE(theFile.write_access_size() == 0, " expected 0  but found " << theFile.write_access_size() );
+
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   vector<string> paths1; paths1.push_back("/a");  paths1.push_back("/b");
+   // Any user should have read/write access
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred","/x"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths1),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred"),"Expected user fred  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred","/x"),"Expected user fred  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred",paths),"Expected user fred  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred",paths1),"Expected user fred  to have read/write access ");
+}
+
+BOOST_AUTO_TEST_CASE( test_white_list_all_path_users_have_read_access )
+{
+   cout << "ACore:: ...test_white_list_all_path_users_have_read_access\n";
+
+   std::string path = File::test_data("ACore/test/data/goodWhiteListFiles/all_path_read_access.lists","ACore");
+
+   WhiteListFile theFile;
+   std::string errorMsg;
+   BOOST_CHECK_MESSAGE(theFile.load(path,false, errorMsg),"Failed to parse file " << path << "\n" << errorMsg);
+
+   //   4.4.14
+   //   -* /  # same as '*'
+
+   // When all users have read/write access, the size should be empty
+   BOOST_REQUIRE_MESSAGE(theFile.read_access_size() == 0,  " expected 0  but found " << theFile.read_access_size() );
+   BOOST_REQUIRE_MESSAGE(theFile.write_access_size() == 0, " expected 0  but found " << theFile.write_access_size() );
+
+   // When no write access specified all user have write access
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   vector<string> paths1; paths1.push_back("/a");  paths1.push_back("/b");
+   // Any user should have read/write access
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred"),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred"),"Expected user fred  to have read access ");
+
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("fred",paths1),"Expected user fred  to have read access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred",paths),"Expected user fred  to have read/write access ");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("fred",paths1),"Expected user fred  to have read/write access ");
+}
+
+BOOST_AUTO_TEST_CASE( test_white_list_path_access_list )
+{
+   cout << "ACore:: ...test_white_list_path_access_list\n";
+
+   std::string path = File::test_data("ACore/test/data/goodWhiteListFiles/path_access.lists","ACore");
+
+   WhiteListFile theFile;
+   std::string errorMsg;
+   BOOST_CHECK_MESSAGE(theFile.load(path,false, errorMsg),"Failed to parse file " << path << "\n" << errorMsg);
+
+   //   4.4.14
+   //
+   //   user1 /a,/b,/c  # user1 has read write access to suite /a /b /c
+   //   user2 /a
+   //   user2 /b
+   //   user2 /c       # user2 has read write access to suite /a /b /c
+   //   user3 /a /b /c # user3 has read write access to suite /a /b /c
+   //
+   //   /a /b /c userx # userx has read write access to suite /a /b /c
+   //   /a,/b,/c usery # userx has read write access to suite /a /b /c
+   //
+   //   /a userz
+   //   /b userz
+   //   /c userz
+   //
+   //   -user4 /a,/b,/c  # user4 has read access to suite /a /b /c
+   //   -user5 /a
+   //   -user5 /b
+   //   -user5 /c    # user5 has read access to suite /a /b /c
+   //   -user6 /a /b /c   # user6 has read access to suite /a /b /c
+   //
+   //   /a /b /c -userxx # userxx has read  access to suite /a /b /c
+   //   /a,/b,/c -useryy # userxy has read  access to suite /a /b /c
+   //
+   //   /a -userzz
+   //   /b -userzz
+   //   /c -userzz
+   //
+   //##################################
+   //*  /x /y   # all user have read/write access  suites /x /y
+   //-* /w /z   # all user have read access to suite /w /z
+
+
+   // When all users have read access, the read access size should be empty
+   BOOST_REQUIRE_MESSAGE(theFile.read_access_size() == 7,  " expected 7  but found " << theFile.read_access_size()  << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(theFile.write_access_size() == 7, " expected 7  but found " << theFile.write_access_size()  << theFile.dump_valid_users());
+
+   // When no write access specified all user have write access
+   vector<string> paths; paths.push_back("/a");  paths.push_back("/b"); paths.push_back("/c");
+   vector<string> partial_paths; partial_paths.push_back("/a");  partial_paths.push_back("/b");
+
+   // read/write
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user1",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user1",partial_paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user1",paths),"Expected user to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user1",partial_paths),"Expected user to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user2",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user2",paths),"Expected user to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user3",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user3",paths),"Expected user to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userx",paths),"Expected userx to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("userx",paths),"Expected userx to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("usery",paths),"Expected userx to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("usery",paths),"Expected userx to have read/write access to /a,/b,/c" << theFile.dump_valid_users());
+
+   //read only
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user4",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user5",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user6",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userxx",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("useryy",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userzz",paths),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+
+   // single path, read/write
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user1","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user1","/a"),"Expected user to have read/write access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user2","/a"),"Expected user to have read access to /a,/b,/c" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user2","/a"),"Expected user to have read/write access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user3","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("user3","/a"),"Expected user to have read/write access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userx","/a"),"Expected userx to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("userx","/a"),"Expected userx to have read/write access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("usery","/a"),"Expected userx to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("usery","/a"),"Expected userx to have read/write access to /a" << theFile.dump_valid_users());
+
+   //single path, read
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user4","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user5","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("user6","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userxx","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("useryy","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("userzz","/a"),"Expected user to have read access to /a" << theFile.dump_valid_users());
+
+   // ============================================================================================
+   // test * user, * means all users
+   //*  /x /y   # all user have read/write access  suites /x /y
+   //-* /w /z   # all user have read access to suite /w /z
+   vector<string> single_pathx; single_pathx.push_back("/x");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx",single_pathx),"Expected *ALL* user to have read access to /x" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( theFile.verify_write_access("xxxx",single_pathx),"Expected *ALL* user to have read/write access to /x" << theFile.dump_valid_users());
+
+   vector<string> single_pathw; single_pathw.push_back("/w");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx",single_pathw),"Expected *ALL* user to have read access to /w" << theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("xxxx",single_pathw),"Expected failure for write access to /w" << theFile.dump_valid_users());
+
+   vector<string> multiple_pathsxy;multiple_pathsxy.push_back("/x");multiple_pathsxy.push_back("/y");
+   BOOST_REQUIRE_MESSAGE( theFile.verify_read_access("xxxx",multiple_pathsxy),"Expected *ALL* user to have read access to /x,/y" << theFile.dump_valid_users());
+
+   // ============================================================================================
+   // Failure
+   // ============================================================================================
+
+   // single path failure
+   //   user1 /a,/b,/c  # user1 has read write access to suite /a /b /c
+   vector<string> single_path_failure; single_path_failure.push_back("/fail");
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1","/fail"),"Expected user to not have read access to /fail"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1",single_path_failure),"Expected user to not have read access to /fail"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1","/fail"),"Expected user to not have read/write access to /fail"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1",single_path_failure),"Expected user to not have read/write access to /fail"<< theFile.dump_valid_users());
+
+   // multi path failure
+   //   user1 /a,/b,/c  # user1 has read write access to suite /a /b /c
+   vector<string> multiple_paths_failure;
+   multiple_paths_failure.push_back("/a");
+   multiple_paths_failure.push_back("/b");
+   multiple_paths_failure.push_back("/fail");
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1",multiple_paths_failure),"Expected user to not have read access to /fail"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1",multiple_paths_failure),"Expected user to not have read/write access to /fail"<< theFile.dump_valid_users());
+
+   // expect failure for unknown user,
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("unknown"),"Expected failure for unknown user"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("unknown","/a"),"Expected failure for unknown user"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("unknown","/a"),"Expected failure for unknown user"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_read_access("unknown",paths),"Expected failure for unknown user"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE( !theFile.verify_write_access("unknown",paths),"Expected failure for unknown user"<< theFile.dump_valid_users());
+
+   // expect failure if NO PATHS for known user
+   //   user1 /a,/b,/c  # user1 has read write access to suite /a /b /c
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1"),"Expected user to not have read access if no paths specified"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1",vector<string>()),"Expected user to not have read access if no paths specified"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_read_access("user1",""),"Expected user to not have read access if no paths specified"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1"),"Expected user to not have read/write if no paths specified"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1",""),"Expected user to not have read/write if no paths specified"<< theFile.dump_valid_users());
+   BOOST_REQUIRE_MESSAGE(!theFile.verify_write_access("user1",vector<string>()),"Expected user to not have read/write if no paths specified"<< theFile.dump_valid_users());
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/ACore/test/data/badPasswdFiles/ecf.passwd b/ACore/test/data/badPasswdFiles/ecf.passwd
new file mode 100644
index 0000000..dcd249e
--- /dev/null
+++ b/ACore/test/data/badPasswdFiles/ecf.passwd
@@ -0,0 +1 @@
+4.
\ No newline at end of file
diff --git a/ACore/test/data/badPasswdFiles/ecf1.passwd b/ACore/test/data/badPasswdFiles/ecf1.passwd
new file mode 100644
index 0000000..a0cd9f0
--- /dev/null
+++ b/ACore/test/data/badPasswdFiles/ecf1.passwd
@@ -0,0 +1 @@
+3.1.0
\ No newline at end of file
diff --git a/ACore/test/data/badPasswdFiles/ecf2.passwd b/ACore/test/data/badPasswdFiles/ecf2.passwd
new file mode 100644
index 0000000..0ee5625
--- /dev/null
+++ b/ACore/test/data/badPasswdFiles/ecf2.passwd
@@ -0,0 +1,2 @@
+4.5.0
+fred host port passwd #  port should be an integer
\ No newline at end of file
diff --git a/ACore/test/data/badPasswdFiles/ecf3.passwd b/ACore/test/data/badPasswdFiles/ecf3.passwd
new file mode 100644
index 0000000..6bb32e0
--- /dev/null
+++ b/ACore/test/data/badPasswdFiles/ecf3.passwd
@@ -0,0 +1,2 @@
+4.5.0
+fred host port #  port sould be an integer
\ No newline at end of file
diff --git a/ACore/test/data/badPasswdFiles/ecf4.passwd b/ACore/test/data/badPasswdFiles/ecf4.passwd
new file mode 100644
index 0000000..d82e128
--- /dev/null
+++ b/ACore/test/data/badPasswdFiles/ecf4.passwd
@@ -0,0 +1,3 @@
+4.5.0
+#  missing passwd
+fred host port  
\ No newline at end of file
diff --git a/ACore/test/data/badWhiteListFiles/bad_paths.lists b/ACore/test/data/badWhiteListFiles/bad_paths.lists
new file mode 100644
index 0000000..9cf0a93
--- /dev/null
+++ b/ACore/test/data/badWhiteListFiles/bad_paths.lists
@@ -0,0 +1,2 @@
+4.4.14 
+fred /x,/y,fred
\ No newline at end of file
diff --git a/ACore/test/data/badWhiteListFiles/multipleWriteUsers.lists b/ACore/test/data/badWhiteListFiles/multipleWriteUsers.lists
new file mode 100644
index 0000000..8b04055
--- /dev/null
+++ b/ACore/test/data/badWhiteListFiles/multipleWriteUsers.lists
@@ -0,0 +1,2 @@
+4.4.14 
+uid1 uid3 
\ No newline at end of file
diff --git a/ACore/test/data/badWhiteListFiles/mutipleReadUser.lists b/ACore/test/data/badWhiteListFiles/mutipleReadUser.lists
new file mode 100644
index 0000000..43728ba
--- /dev/null
+++ b/ACore/test/data/badWhiteListFiles/mutipleReadUser.lists
@@ -0,0 +1,2 @@
+4.4.14 
+-fred -joe
\ No newline at end of file
diff --git a/ACore/test/data/goodPasswdFiles/ecf.passwd b/ACore/test/data/goodPasswdFiles/ecf.passwd
new file mode 100644
index 0000000..7848215
--- /dev/null
+++ b/ACore/test/data/goodPasswdFiles/ecf.passwd
@@ -0,0 +1,11 @@
+4.5.0  # comment
+
+# comment
+fred host 3141  x12ggg # comment
+fred host3 3143 passwd
+fred host4 3145 x12ggg
+# comment
+
+jake host 3141  x12ggg
+tom host3 3143    x12ggg # sdsdsd
+ 
\ No newline at end of file
diff --git a/ACore/test/data/goodPasswdFiles/empty.passwd b/ACore/test/data/goodPasswdFiles/empty.passwd
new file mode 100644
index 0000000..ae15394
--- /dev/null
+++ b/ACore/test/data/goodPasswdFiles/empty.passwd
@@ -0,0 +1 @@
+4.5.0
\ No newline at end of file
diff --git a/ACore/test/data/goodWhiteListFiles/all_path_read_access.lists b/ACore/test/data/goodWhiteListFiles/all_path_read_access.lists
new file mode 100644
index 0000000..49e621f
--- /dev/null
+++ b/ACore/test/data/goodWhiteListFiles/all_path_read_access.lists
@@ -0,0 +1,2 @@
+4.4.14
+-* /  # same as '-*'
diff --git a/ACore/test/data/goodWhiteListFiles/all_path_write_access.lists b/ACore/test/data/goodWhiteListFiles/all_path_write_access.lists
new file mode 100644
index 0000000..777336f
--- /dev/null
+++ b/ACore/test/data/goodWhiteListFiles/all_path_write_access.lists
@@ -0,0 +1,2 @@
+4.4.14 
+* /  # same as '*'
diff --git a/ACore/test/data/goodWhiteListFiles/long_path_access.lists b/ACore/test/data/goodWhiteListFiles/long_path_access.lists
new file mode 100644
index 0000000..f04f6bb
--- /dev/null
+++ b/ACore/test/data/goodWhiteListFiles/long_path_access.lists
@@ -0,0 +1,14 @@
+4.4.14 
+
+user1 /a/b/c/d,/b,/c  # user1 has read write access to suite /a /b /c
+/a/b/c/d /b /c userx # userx has read write access to suite /a /b /c
+ 
+/a/b/c/d/e userz
+/b userz
+/c userz
+
+-user4 /a,/b,/c/e/f/g/h  # user4 has read access to suite /a /b /c
+
+##################################
+* /x/y/a /y   # all user have read/write access  suites /x /y
+-* /w /z  # all user have read access to suite /w /z
\ No newline at end of file
diff --git a/ACore/test/data/goodWhiteListFiles/path_access.lists b/ACore/test/data/goodWhiteListFiles/path_access.lists
new file mode 100644
index 0000000..aab5157
--- /dev/null
+++ b/ACore/test/data/goodWhiteListFiles/path_access.lists
@@ -0,0 +1,31 @@
+4.4.14 
+
+user1 /a,/b,/c  # user1 has read write access to suite /a /b /c
+user2 /a
+user2 /b
+user2 /c       # user2 has read write access to suite /a /b /c
+user3 /a /b /c # user3 has read write access to suite /a /b /c
+
+/a /b /c userx # userx has read write access to suite /a /b /c
+/a,/b,/c usery # userx has read write access to suite /a /b /c
+
+/a userz
+/b userz
+/c userz
+
+-user4 /a,/b,/c  # user4 has read access to suite /a /b /c
+-user5 /a
+-user5 /b
+-user5 /c    # user5 has read access to suite /a /b /c
+-user6 /a /b /c   # user6 has read access to suite /a /b /c
+
+/a /b /c -userxx # userxx has read  access to suite /a /b /c
+/a,/b,/c -useryy # userxy has read  access to suite /a /b /c
+
+/a -userzz
+/b -userzz
+/c -userzz
+
+##################################
+* /x /y   # all user have read/write access  suites /x /y
+-* /w /z  # all user have read access to suite /w /z
\ No newline at end of file
diff --git a/ANattr/src/ClockAttr.cpp b/ANattr/src/ClockAttr.cpp
index 2d374ad..5d35382 100644
--- a/ANattr/src/ClockAttr.cpp
+++ b/ANattr/src/ClockAttr.cpp
@@ -31,7 +31,7 @@ using namespace boost::posix_time;
 //==========================================================================================
 
 ClockAttr::ClockAttr(const boost::posix_time::ptime& time, bool hybrid,bool positiveGain)
-: hybrid_(hybrid), positiveGain_(positiveGain), startStopWithServer_(false),
+: hybrid_(hybrid), positiveGain_(positiveGain), startStopWithServer_(false), end_clock_(false),
   gain_(0), day_(0),month_(0),year_(0),
   state_change_no_(Ecf::incr_state_change_no())
 {
@@ -45,7 +45,7 @@ ClockAttr::ClockAttr(const boost::posix_time::ptime& time, bool hybrid,bool posi
 }
 
 ClockAttr::ClockAttr(int day, int month, int year, bool hybrid )
-: hybrid_(hybrid), positiveGain_(false), startStopWithServer_(false),
+: hybrid_(hybrid), positiveGain_(false), startStopWithServer_(false), end_clock_(false),
   gain_(0), day_(day),month_(month),year_(year),
   state_change_no_(Ecf::incr_state_change_no())
 {
@@ -54,7 +54,7 @@ ClockAttr::ClockAttr(int day, int month, int year, bool hybrid )
 }
 
 ClockAttr::ClockAttr(bool hybrid)
-: hybrid_(hybrid), positiveGain_(false), startStopWithServer_(false),
+: hybrid_(hybrid), positiveGain_(false), startStopWithServer_(false), end_clock_(false),
   gain_(0), day_(0),month_(0),year_(0),
   state_change_no_(Ecf::incr_state_change_no()) {}
 
@@ -68,9 +68,14 @@ std::ostream& ClockAttr::print(std::ostream& os) const
 std::string ClockAttr::toString() const
 {
 	std::stringstream ss;
-	ss << "clock ";
-	if (hybrid_) ss << "hybrid ";
-	else         ss << "real ";
+	if (!end_clock_) {
+	   ss << "clock ";
+	   if (hybrid_) ss << "hybrid ";
+	   else         ss << "real ";
+	}
+	else  {
+	   ss << "endclock ";
+	}
 
 	if (day_ != 0) ss << day_ << "." << month_ << "." << year_ << " ";
 
@@ -150,20 +155,20 @@ void ClockAttr::init_calendar(ecf::Calendar& calendar)
 
 void ClockAttr::begin_calendar(ecf::Calendar& calendar)
 {
-   using namespace boost::posix_time;
-   using namespace boost::gregorian;
+   calendar.begin(ptime());
+}
 
+boost::posix_time::ptime ClockAttr::ptime() const
+{
    if (day_ != 0) {
       // Use the date given. ie we start from midnight on the given day + gain.
       boost::gregorian::date theDate(year_,month_,day_);
-      ptime the_time(theDate, seconds(gain_));
-      calendar.begin(the_time);
-   }
-   else {
-      // Get the local time, second level resolution, based on the time zone settings of the computer.
-      ptime the_time(Calendar::second_clock_time());
-      the_time += seconds(gain_);
-      calendar.begin(the_time);
+      return boost::posix_time::ptime(theDate, seconds(gain_));
    }
+
+   // Get the local time, second level resolution, based on the time zone settings of the computer.
+   boost::posix_time::ptime the_time(Calendar::second_clock_time());
+   the_time += seconds(gain_);
+   return the_time;
 }
 
diff --git a/ANattr/src/ClockAttr.hpp b/ANattr/src/ClockAttr.hpp
index ae581f1..f5728ef 100644
--- a/ANattr/src/ClockAttr.hpp
+++ b/ANattr/src/ClockAttr.hpp
@@ -52,6 +52,7 @@ public:
 	void startStopWithServer(bool f);
 	bool startStopWithServer() const { return startStopWithServer_; }
  	void hybrid( bool f );
+ 	void set_end_clock() { end_clock_ = true;}
 
  	// clear local attributes so, than when we re-queue suite, we sync with computer clock
  	void sync();
@@ -71,11 +72,13 @@ public:
  	bool hybrid() const { return hybrid_;}
  	bool is_virtual() const { return startStopWithServer_;}
 	std::string toString() const;
+   boost::posix_time::ptime ptime() const;
 
 private:
 	bool hybrid_;
 	bool positiveGain_;
 	bool startStopWithServer_;  // see Calendar.hpp for more details
+	bool end_clock_;            // *NOT* persisted, used for end clock, simulator only
 	long gain_;                 // in seconds
 	int day_;
 	int month_;
@@ -96,5 +99,4 @@ private:
 	   ar & year_;
 	}
 };
-
 #endif
diff --git a/ANattr/src/CronAttr.cpp b/ANattr/src/CronAttr.cpp
index ad7e785..8524c3d 100644
--- a/ANattr/src/CronAttr.cpp
+++ b/ANattr/src/CronAttr.cpp
@@ -368,67 +368,12 @@ bool CronAttr::month_matches(int theMonth) const
 }
 
 //------------------------------------------------------------------
-//int CronAttr::max_month() const {
-//	int max = -1;
-//	BOOST_FOREACH(int month, months_) {
-//		max = std::max(month,max);
-//	}
-//	return max;
-//}
-
-//int CronAttr::max_day_of_month() const
-//{
-//	int max = -1;
-//	BOOST_FOREACH(int dayOfMonth, daysOfMonth_) {
-//		max = std::max(dayOfMonth,max);
-//	}
-//	return max;
-//}
-
-//int CronAttr::max_day_of_week() const
-//{
-//	int max = -1;
-// 	BOOST_FOREACH(int theWeekDay, weekDays_) {
-//		max = std::max(theWeekDay,max);
-//  	}
-//	return max;
-//}
-
-//-------------------------------------------------------------------------------
-//int CronAttr::min_month() const{
-//	int min = std::numeric_limits<int>::max();
-//	BOOST_FOREACH(int month, months_) {
-//		min = std::min(month,min);
-//	}
-//	return min;
-//}
-
-//int CronAttr::min_day_of_month() const
-//{
-//	int min = std::numeric_limits<int>::max();
-// 	BOOST_FOREACH(int dayOfMonth, daysOfMonth_) {
-// 		min = std::min(dayOfMonth,min);
-//	}
-//	return min;
-//}
-//
-//int CronAttr::min_day_of_week() const
-//{
-//	int min = std::numeric_limits<int>::max();
-//  	BOOST_FOREACH(int theWeekDay, weekDays_) {
-// 		min = std::min(theWeekDay,min);
-//  	}
-//	return min;
-//}
-//------------------------------------------------------------
-
 
 bool CronAttr::checkInvariants(std::string& errormsg) const
 {
 	return  timeSeries_.checkInvariants(errormsg);
 }
 
-
 //--------------------------------------------------------------
 
 boost::gregorian::date CronAttr::last_day_of_month(const ecf::Calendar& calendar) const
diff --git a/ANattr/src/CronAttr.hpp b/ANattr/src/CronAttr.hpp
index 891bfeb..4739350 100644
--- a/ANattr/src/CronAttr.hpp
+++ b/ANattr/src/CronAttr.hpp
@@ -104,13 +104,6 @@ private:
 	bool day_of_month_matches(int) const;
 	bool month_matches(int) const;
 
-//	int max_month() const;
-//	int max_day_of_month() const;
-//	int max_day_of_week() const;
-//	int min_month() const;
-//	int min_day_of_month() const;
-//	int min_day_of_week() const;
-
 	boost::gregorian::date  last_day_of_month(const ecf::Calendar& calendar) const;
 	boost::gregorian::date  next_date(const ecf::Calendar& calendar) const;
 
diff --git a/ANattr/src/RepeatAttr.cpp b/ANattr/src/RepeatAttr.cpp
index c2c1d7f..4876c34 100644
--- a/ANattr/src/RepeatAttr.cpp
+++ b/ANattr/src/RepeatAttr.cpp
@@ -27,6 +27,7 @@
 #include "Log.hpp"
 #include "Str.hpp"
 #include "PrintStyle.hpp"
+#include "Cal.hpp"
 
 using namespace std;
 using namespace ecf;
@@ -124,70 +125,6 @@ void RepeatBase::incr_state_change_no()
 #endif
 }
 
-// =========================================================================
-
-long sms_repeat_julian_to_date(long jdate)
-{
-   long x,y,d,m,e;
-   long day,month,year;
-
-   x = 4 * jdate - 6884477;
-   y = (x / 146097) * 100;
-   e = x % 146097;
-   d = e / 4;
-
-   x = 4 * d + 3;
-   y = (x / 1461) + y;
-   e = x % 1461;
-   d = e / 4 + 1;
-
-   x = 5 * d - 3;
-   m = x / 153 + 1;
-   e = x % 153;
-   d = e / 5 + 1;
-
-   if( m < 11 )
-      month = m + 2;
-   else
-      month = m - 10;
-
-
-   day = d;
-   year = y + m / 11;
-
-   return year * 10000 + month * 100 + day;
-}
-
-long sms_repeat_date_to_julian(long ddate)
-{
-   long  m1,y1,a,b,c,d,j1;
-   long month,day,year;
-
-   year = ddate / 10000;
-   ddate %= 10000;
-   month  = ddate / 100;
-   ddate %= 100;
-   day = ddate;
-
-   if (month > 2)
-   {
-      m1 = month - 3;
-      y1 = year;
-   }
-   else
-   {
-      m1 = month + 9;
-      y1 = year - 1;
-   }
-   a = 146097*(y1/100)/4;
-   d = y1 % 100;
-   b = 1461*d/4;
-   c = (153*m1+2)/5+day+1721119;
-   j1 = a+b+c;
-
-   return(j1);
-}
-
 RepeatDate::RepeatDate( const std::string& variable,
                         int start,
                         int end,
@@ -269,17 +206,17 @@ long RepeatDate::last_valid_value() const
 long RepeatDate::last_valid_value_minus(int val) const
 {
    long last_value = last_valid_value();
-   long julian = sms_repeat_date_to_julian(last_value);
+   long julian = Cal::date_to_julian(last_value);
    julian -= val;
-   return sms_repeat_julian_to_date(julian);
+   return Cal::julian_to_date(julian);
 }
 
 long RepeatDate::last_valid_value_plus(int val) const
 {
    long last_value = last_valid_value();
-   long julian = sms_repeat_date_to_julian(last_value);
+   long julian = Cal::date_to_julian(last_value);
    julian += val;
-   return sms_repeat_julian_to_date(julian);
+   return Cal::julian_to_date(julian);
 }
 
 void RepeatDate::reset() {
@@ -347,9 +284,9 @@ std::string RepeatDate::value_as_string(int index) const
 
 void RepeatDate::increment()
 {
-   long julian = sms_repeat_date_to_julian(value_);
+   long julian = Cal::date_to_julian(value_);
    julian += delta_;
-   value_ = sms_repeat_julian_to_date(julian);
+   value_ = Cal::julian_to_date(julian);
 
    incr_state_change_no();
 }
@@ -401,8 +338,8 @@ void RepeatDate::changeValue(long the_new_date)
    }
 
    // Check new value is in step. ECFLOW-325 repeat date 7
-   long julian_new_date = sms_repeat_date_to_julian(the_new_date);
-   long julian_start = sms_repeat_date_to_julian(start_);
+   long julian_new_date = Cal::date_to_julian(the_new_date);
+   long julian_start = Cal::date_to_julian(start_);
    long diff = julian_new_date - julian_start;
    if ( diff % delta_ != 0 ) {
        std::stringstream ss;
@@ -573,16 +510,6 @@ std::string RepeatInteger::value_as_string(int index) const
    return string();
 }
 
-//void RepeatInteger::truncate(int theLength)
-//{
-////	 cout << "   RepeatInteger::truncate by " <<  theLength << " BEFORE " << toString();
-//
-//	LOG_ASSERT(theLength < length(),"");
-//	 end_ = start_ + (theLength * delta_);
-//
-////	 cout << " AFTER " << toString() << "\n";
-//}
-
 //======================================================================================
 
 RepeatEnumerated::RepeatEnumerated( const std::string& variable, const std::vector<std::string>& theEnums)
@@ -775,18 +702,6 @@ bool RepeatEnumerated::operator==(const RepeatEnumerated& rhs) const
 	return true;
 }
 
-//void RepeatEnumerated::truncate(int theLength)
-//{
-////	 cout << "   RepeatEnumerated::truncate by " <<  theLength << " BEFORE " << toString();
-//
-//	 LOG_ASSERT(theLength < length(),"");
-//	 while ( static_cast<int>(theEnums_.size()) > theLength) {
-//		 theEnums_.pop_back();
-//	 }
-//
-////	 cout << " AFTER " << toString() << "\n";
-//}
-
 //======================================================================================
 
 RepeatString::RepeatString( const std::string& variable, const std::vector<std::string>& theEnums)
@@ -926,18 +841,6 @@ bool RepeatString::operator==(const RepeatString& rhs) const
 	return true;
 }
 
-//void RepeatString::truncate(int theLength)
-//{
-////	 cout << "   RepeatString::truncate by " <<  theLength << " BEFORE " << toString();
-//
-//	 LOG_ASSERT(theLength < length(),"");
-//	 while ( static_cast<int>(theStrings_.size()) > theLength) {
-//		 theStrings_.pop_back();
-//	 }
-//
-////	 cout << " AFTER " << toString() << "\n";
-//}
-
 //=======================================================================================
 
 bool RepeatDay::compare(RepeatBase* rb) const
diff --git a/ANattr/src/RepeatAttr.hpp b/ANattr/src/RepeatAttr.hpp
index 68982f7..f9445b9 100644
--- a/ANattr/src/RepeatAttr.hpp
+++ b/ANattr/src/RepeatAttr.hpp
@@ -18,10 +18,6 @@
 // Simulation: Simulation must not affect the real job submission in the server.
 //  o Infinite repeats cause problems with simulation, hence we have
 //    a mechanism to stop this, when reset is called, via server this is disabled
-//  o The other problem is long repeats. The current solution truncates the
-//    repeats. However this is not acceptable and has been commented out,
-//    until we can find a better way. (i.e need a simulation mode, where
-//    we can truncate a length, this would be ignored in the server)
 //============================================================================
 
 #include <ostream>
@@ -98,9 +94,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const  = 0;
-   virtual bool makeInfiniteInValid() { return false;}
-   //	virtual int length() const  = 0;
-   //	virtual void truncate(int length) = 0;
 
    virtual bool is_repeat_day() const { return false; }
 
@@ -156,8 +149,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const { return false;}
-   //	virtual int length() const; // for use by simulator
-   //	virtual void truncate(int); // for use by simulator
 
 private:
    RepeatDate( const std::string& name, int start, int end, int delta, long value)
@@ -210,8 +201,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const { return false;}
-   //	virtual int length() const { return std::abs( (end_-start_)+1/delta_ ) ;}
-   //	virtual void truncate(int);
 
 private:
    RepeatInteger( const std::string& name, int start, int end, int delta, long value)
@@ -267,8 +256,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const { return false;}
-   //	virtual int length() const { return static_cast<int>(theEnums_.size());}  // for use by simulator
-   //	virtual void truncate(int);     // for use by simulator
 
 private:
    RepeatEnumerated( const std::string& variable, const std::vector<std::string>& theEnums, int index)
@@ -317,8 +304,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const { return false;}
-   //	virtual int length() const { return static_cast<int>(theStrings_.size());}
-   //	virtual void truncate(int);
 
 private:
    RepeatString( const std::string& variable, const std::vector<std::string>& theEnums, int index)
@@ -386,9 +371,6 @@ public:
 
    /// Simulator functions:
    virtual bool isInfinite() const { return true;}
-   virtual bool makeInfiniteInValid() { valid_ = false; return true;}
-   //	virtual int length() const { return 0;}    // because its infinite for use by simulator
-   //	virtual void truncate(int) {}
 
    virtual bool is_repeat_day() const { return true; }
 
@@ -450,11 +432,8 @@ public:
    std::string dump() const                     { return (repeatType_) ? repeatType_->dump() : std::string();} // additional state
    unsigned int state_change_no() const         { return (repeatType_) ? repeatType_->state_change_no() : 0; }
 
-   /// simulator functions: Note: any flags set by makeInfiniteInValid() are reset by reset()
+   /// simulator functions:
    bool isInfinite() const                      { return (repeatType_) ? repeatType_->isInfinite() : false;}
-   bool makeInfiniteInValid()                   { return (repeatType_) ? repeatType_->makeInfiniteInValid() : false; } // for simulator only
-   //	int length() const                           { return (repeatType_) ? repeatType_->length() : 0;}   // for simulator only
-   //	void truncate(int length)                    { if (repeatType_) repeatType_->truncate(length);}     // for simulator only
 
    // Allows Repeat's to be returned by reference
    static const Repeat& EMPTY();
diff --git a/ANattr/test/TestRepeat.cpp b/ANattr/test/TestRepeat.cpp
index 4a60d66..a95a10f 100644
--- a/ANattr/test/TestRepeat.cpp
+++ b/ANattr/test/TestRepeat.cpp
@@ -320,8 +320,6 @@ BOOST_AUTO_TEST_CASE( test_repeat )
  		Repeat day2 = day;
       BOOST_CHECK_MESSAGE(day == day2,"Copy construction failed");
 
- 		BOOST_CHECK_MESSAGE(day.makeInfiniteInValid(),"Should return true");
- 		BOOST_CHECK_MESSAGE(!day.valid(),"Should return false after makeInfiniteInValid");
 		day.reset();
  		BOOST_CHECK_MESSAGE(day.valid(),"Should return true after reset");
 	}
diff --git a/ANattr/test/TestVariable.cpp b/ANattr/test/TestVariable.cpp
index 4f33cf2..3cf8127 100644
--- a/ANattr/test/TestVariable.cpp
+++ b/ANattr/test/TestVariable.cpp
@@ -14,6 +14,7 @@
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
 #include <iostream>
+#include <stdio.h>
 #include <boost/test/unit_test.hpp>
 
 #include "Variable.hpp"
@@ -53,5 +54,54 @@ BOOST_AUTO_TEST_CASE( test_multi_line_variable_values )
    }
 }
 
+BOOST_AUTO_TEST_CASE( test_variable_value )
+{
+   cout << "ANattr:: ...test_variable_value\n";
+
+   std::vector<std::string> values;
+   values.push_back("sdsd");
+   values.push_back("0fred0");
+   values.push_back("fted");
+   values.push_back("%value%");
+   values.push_back("a");
+   values.push_back("");
+   values.push_back("0");
+   values.push_back("00");
+   values.push_back("000");
+   values.push_back("0000");
+   values.push_back("0000000000000");
+   for(size_t i=0; i < values.size(); i++) {
+      Variable var("name","");
+      var.set_value(values[i]);
+      BOOST_CHECK_MESSAGE(var.value() == 0,"expected 0 but found " << var.value() << " for " << values[i]);
+   }
+
+   {
+      Variable var("name","0100");
+      BOOST_CHECK_MESSAGE(var.value() == 100,"expected 100 but found " << var.value());
+   }
+   {
+      Variable var("name","0001");
+      BOOST_CHECK_MESSAGE(var.value() == 1,"expected 1 but found " << var.value());
+   }
+   {
+      Variable var("name","2359");
+      BOOST_CHECK_MESSAGE(var.value() == 2359,"expected 2359 but found " << var.value());
+   }
+
+   // make sure time is convertible to an integer
+   char smstime[255];
+   for(int h = 0; h < 24; h++) {
+      for(int m=1; m < 60; m++ ) {
+         int output_written = sprintf(smstime,"%02d%02d", h,m);
+         BOOST_CHECK_MESSAGE(output_written == 4," expected size 4 but found " << output_written);
+         Variable var("name","");
+         var.set_value( smstime);
+         int value = atoi(smstime);
+         BOOST_CHECK_MESSAGE(var.value() == value,"expected " << value << " but found " << var.value());
+      }
+   }
+}
+
 BOOST_AUTO_TEST_SUITE_END()
 
diff --git a/ANode/CMakeLists.txt b/ANode/CMakeLists.txt
index 8246f8c..8e1c3fe 100644
--- a/ANode/CMakeLists.txt
+++ b/ANode/CMakeLists.txt
@@ -27,15 +27,19 @@ test/Test_ECFLOW-247.cpp
 test/Test_ECFLOW-417.cpp
 test/TestAdd.cpp
 test/TestAlias.cpp
+test/TestAssignmentOperator.cpp
 test/TestChangeMgrSingleton.cpp
+test/TestCopyConstructor.cpp
 test/TestDefStatus.cpp
 test/TestDefs.cpp
 test/TestEcfFile.cpp
+test/TestEcfFileLocator.cpp
 test/TestEnviromentSubstitution.cpp
 test/TestExprParser.cpp
 test/TestExprRepeatDateArithmetic.cpp
 test/TestFindAbsNodePath.cpp
 test/TestFlag.cpp
+test/TestFlagMigrated.cpp
 test/TestHistoryParser.cpp
 test/TestInLimit.cpp
 test/TestJobCreator.cpp
@@ -50,7 +54,6 @@ test/TestPersistence.cpp
 test/TestPreProcessing.cpp
 test/TestReplace.cpp
 test/TestSetState.cpp
-test/TestSmsLocator.cpp
 test/TestTaskScriptGenerator.cpp
 test/TestTimeDependencies.cpp
 test/TestVariableGeneration.cpp
diff --git a/ANode/src/Alias.cpp b/ANode/src/Alias.cpp
index 491558c..ea8914b 100644
--- a/ANode/src/Alias.cpp
+++ b/ANode/src/Alias.cpp
@@ -44,6 +44,11 @@ Alias::Alias( const std::string& name )
    set_state_only(NState::QUEUED);
 }
 
+Alias::Alias( const Alias& rhs)
+: Submittable(rhs)
+{
+}
+
 Alias::Alias()
 {
    set_state_only(NState::QUEUED);
@@ -56,6 +61,14 @@ Alias::~Alias()
    }
 }
 
+Alias& Alias::operator=(const Alias& rhs)
+{
+   if (this != &rhs ) {
+      Submittable::operator=(rhs);
+   }
+   return *this;
+}
+
 alias_ptr Alias::create(const std::string& name)
 {
    return boost::make_shared<Alias>( name );
diff --git a/ANode/src/Alias.hpp b/ANode/src/Alias.hpp
index 976be31..2b28575 100644
--- a/ANode/src/Alias.hpp
+++ b/ANode/src/Alias.hpp
@@ -20,6 +20,9 @@ class Alias : public Submittable {
 public:
    Alias(const std::string& name);
    Alias();
+   Alias(const Alias&);
+   Alias& operator=(const Alias&);
+
    virtual ~Alias();
 
    static alias_ptr create(const std::string& name);
diff --git a/Viewer/src/CustomCommandDialog.cpp b/ANode/src/CheckPtContext.cpp
similarity index 62%
copy from Viewer/src/CustomCommandDialog.cpp
copy to ANode/src/CheckPtContext.cpp
index ebb4572..f0c9583 100644
--- a/Viewer/src/CustomCommandDialog.cpp
+++ b/ANode/src/CheckPtContext.cpp
@@ -1,5 +1,9 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #16 $
+//
+// Copyright 2009-2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -7,14 +11,19 @@
 // nor does it submit to any jurisdiction.
 //============================================================================
 
-#include "CustomCommandDialog.hpp"
+#include "CheckPtContext.hpp"
 
+namespace ecf {
+bool CheckPtContext::in_checkpt_ =  false;
 
-CustomCommandDialog::CustomCommandDialog(QWidget *parent)
+CheckPtContext::CheckPtContext()
 {
-    setupUi(this);
+   in_checkpt_ = true;
+}
 
-    // when the user clicks the 'Run' button, we close the dialog with ACCEPT
-    connect(commandDesigner_->runButton(), SIGNAL(clicked()), this, SLOT(accept()));
+CheckPtContext::~CheckPtContext()
+{
+   in_checkpt_ = false;
+}
 
 }
diff --git a/ACore/src/TimeStamp.hpp b/ANode/src/CheckPtContext.hpp
similarity index 59%
copy from ACore/src/TimeStamp.hpp
copy to ANode/src/CheckPtContext.hpp
index cf232cd..11c5043 100644
--- a/ACore/src/TimeStamp.hpp
+++ b/ANode/src/CheckPtContext.hpp
@@ -1,9 +1,9 @@
-#ifndef TIMESTAMP_HPP_
-#define TIMESTAMP_HPP_
+#ifndef CHECKPT_CONTEXT_HPP_
+#define CHECKPT_CONTEXT_HPP_
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        : Log
+// Name        :
 // Author      : Avi
-// Revision    : $Revision: #31 $
+// Revision    : $Revision: #14 $
 //
 // Copyright 2009-2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
@@ -12,24 +12,25 @@
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
 //
+// Description :
+// This class allow client to determine whether they are in a middle
+// of a command.
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#include <string>
 #include <boost/noncopyable.hpp>
 
-namespace ecf {
+namespace  ecf {
 
-// returns a string of format : "[%02d:%02d:%02d %d.%d.%d] "
-//                              "[hour:min:sec day.month.year] "
-// i.e                          "[05:26:20 29.10.2014] "
-class TimeStamp : private boost::noncopyable {
+class CheckPtContext : private boost::noncopyable {
 public:
-   static std::string now();
-   static void now(std::string&);
+   CheckPtContext();
+   ~CheckPtContext();
+
+   static bool in_checkpt() { return in_checkpt_; }
+
 private:
-   TimeStamp();
+   static bool in_checkpt_;
 };
-
 }
 
 #endif
diff --git a/ANode/src/ChildAttrs.cpp b/ANode/src/ChildAttrs.cpp
index dd1a2a7..3d51027 100644
--- a/ANode/src/ChildAttrs.cpp
+++ b/ANode/src/ChildAttrs.cpp
@@ -23,6 +23,16 @@ using namespace ecf;
 using namespace std;
 
 ///////////////////////////////////////////////////////////////////////////////////////////
+
+ChildAttrs::ChildAttrs(const ChildAttrs& rhs)
+: meters_(rhs.meters_),
+  events_(rhs.events_),
+  labels_(rhs.labels_),
+  node_(NULL)
+{
+  // users must call set_node() afterwards
+}
+
 void ChildAttrs::begin()
 {
    for(size_t i = 0; i < meters_.size(); i++)     {   meters_[i].reset(); }
diff --git a/ANode/src/ChildAttrs.hpp b/ANode/src/ChildAttrs.hpp
index 4776aa9..3a24850 100644
--- a/ANode/src/ChildAttrs.hpp
+++ b/ANode/src/ChildAttrs.hpp
@@ -29,6 +29,7 @@
 class ChildAttrs :  private boost::noncopyable {
 public:
    ChildAttrs(Node* node) : node_(node) {}
+   ChildAttrs(const ChildAttrs&); // users must call set_node() afterwards
    ChildAttrs() : node_(NULL) {}
    ~ChildAttrs() {}
 
diff --git a/ANode/src/Defs.cpp b/ANode/src/Defs.cpp
index 66fb6f9..8f67664 100644
--- a/ANode/src/Defs.cpp
+++ b/ANode/src/Defs.cpp
@@ -40,6 +40,7 @@
 #include "Version.hpp"
 #include "Indentor.hpp"
 #include "AbstractObserver.hpp"
+#include "CheckPtContext.hpp"
 
 using namespace ecf;
 using namespace std;
@@ -54,8 +55,59 @@ Defs::Defs() :
    order_state_change_no_(0),
    save_edit_history_(false),
    client_suite_mgr_(this),
+   in_notification_(false) {}
+
+Defs::Defs(const Defs& rhs) :
+   state_change_no_(0),
+   modify_change_no_( 0 ),
+   updateCalendarCount_(0),
+   order_state_change_no_(0),
+   state_(rhs.state_),
+   server_(rhs.server_),
+   save_edit_history_(false),
+   flag_(rhs.flag_),
+   client_suite_mgr_(this),
    in_notification_(false)
 {
+   size_t theSize = rhs.suiteVec_.size();
+   for(size_t s = 0; s < theSize; s++) {
+      suite_ptr suite_copy = boost::make_shared<Suite>( *rhs.suiteVec_[s] );
+      suite_copy->set_defs(this);
+      suiteVec_.push_back( suite_copy );
+   }
+
+   // edit history is not copied
+   // std::map<std::string, std::deque<std::string> > edit_history_;
+
+   /// externs not copied
+   // std::set<std::string> externs_;                      // NOT persisted
+
+   // observers not copied
+   // std::vector<AbstractObserver*> observers_;
+}
+
+Defs& Defs::operator=(const Defs& rhs)
+{
+   if (this != &rhs) {
+      Defs tmp(rhs);
+
+      std::swap(state_,tmp.state_);
+      std::swap(server_,tmp.server_);
+      std::swap(suiteVec_,tmp.suiteVec_);
+      std::swap(flag_,tmp.flag_);
+
+      // edit history is not copied
+      // externs not copied
+      // observers not copied
+
+      size_t vec_size = suiteVec_.size();
+      for(size_t i = 0; i < vec_size; i++) {
+         suiteVec_[i]->set_defs(this);
+      }
+
+      modify_change_no_ = Ecf::incr_modify_change_no();
+   }
+   return *this;
 }
 
 defs_ptr Defs::create()
@@ -880,7 +932,7 @@ bool Defs::doDeleteChild(Node* nodeToBeDeleted)
 	return false;
 }
 
-bool Defs::replaceChild(const std::string& path,
+node_ptr Defs::replaceChild(const std::string& path,
 	               const defs_ptr& clientDefs,
 	               bool createNodesAsNeeded,
 	               bool force,
@@ -890,7 +942,7 @@ bool Defs::replaceChild(const std::string& path,
 	if (! clientNode.get() ) {
 		errorMsg = "Can not replace node since path "; errorMsg += path;
 		errorMsg += " does not exist on the client definition";
-		return false;
+		return node_ptr();
 	}
 
 	node_ptr serverNode = findAbsNode( path ) ;
@@ -904,8 +956,8 @@ bool Defs::replaceChild(const std::string& path,
 			std::stringstream ss;
 			ss << "Can not replace node " << serverNode->debugNodePath() << " because it has " << count << " tasks which are active or submitted\n";
 			ss << "Please use the 'force' option to bypass this check, at the expense of creating zombies\n";
-			errorMsg += ss.str();
-			return false;
+			errorMsg = ss.str();
+			return node_ptr();
  		}
 	}
 
@@ -915,13 +967,13 @@ bool Defs::replaceChild(const std::string& path,
 		if (! serverNode.get() ) {
 			errorMsg = "Can not replace child since path "; errorMsg += path;
 			errorMsg += " does not exist on the server definition. Please use <parent> option";
-			return false;
+			return node_ptr();
 		}
 		// HAVE a FULL match in the server
 
-		// Copy over begun and suspended states
- 		if (serverNode->suite()->begun())  clientNode->begin();
- 		if (serverNode->isSuspended())     clientNode->suspend();
+		// Copy over begun and suspended states, otherwise preserve state of client node
+		if (serverNode->suite()->begun()) clientNode->begin();
+		if (serverNode->isSuspended())    clientNode->suspend();
 
  		// Find the position of the server node relative to its peers
  		// We use this to re-add client node at the same position
@@ -940,10 +992,7 @@ bool Defs::replaceChild(const std::string& path,
 	 	LOG_ASSERT(addOk,"");
 
 	 	client_node_to_add->set_most_significant_state_up_node_tree();
-
-	 	// The changes have been made, do a sanity test, check trigger expressions
-	 	std::string warning_msg;
-	 	return client_node_to_add->suite()->check(errorMsg,warning_msg);
+	 	return client_node_to_add;
  	}
 
 
@@ -957,7 +1006,7 @@ bool Defs::replaceChild(const std::string& path,
  	Node* client_parent = clientNode->parent();
 	while (client_parent) {
 	   server_parent = findAbsNode( client_parent->absNodePath() );
-      if (server_parent ) {
+      if (server_parent) {
          break;
       }
       last_client_child = client_parent;
@@ -968,11 +1017,9 @@ bool Defs::replaceChild(const std::string& path,
       node_ptr client_suite_to_add = clientNode->suite()->remove();
  		bool addOk = addChild( client_suite_to_add  );
  		LOG_ASSERT( addOk ,"");
- 		client_suite_to_add->set_most_significant_state_up_node_tree();
 
-      // The changes have been made, do a sanity test, check trigger expressions
- 	   std::string warning_msg;
- 	   return client_suite_to_add->suite()->check(errorMsg,warning_msg);
+ 		client_suite_to_add->set_most_significant_state_up_node_tree();
+ 		return client_suite_to_add;
 	}
 
 
@@ -998,7 +1045,7 @@ bool Defs::replaceChild(const std::string& path,
 	   deleteChild(server_child.get());
 	}
 
-	/// copy over begin/queued status
+	/// copy over begin/queued status if not migrated
 	if (server_parent->suite()->begun())  {
 	   last_client_child->begin();
 	}
@@ -1008,13 +1055,14 @@ bool Defs::replaceChild(const std::string& path,
 	LOG_ASSERT( addOk,"" );
 	client_node_to_add->set_most_significant_state_up_node_tree();
 
-   // The changes have been made, do a sanity test, check trigger expressions
-	std::string warning_msg;
-	return client_node_to_add->suite()->check(errorMsg,warning_msg);
+	return client_node_to_add;
 }
 
 void Defs::save_as_checkpt(const std::string& the_fileName,ecf::Archive::Type at) const
 {
+   // Save NodeContainer children even if ecf::Flag::MIGRATED set
+   CheckPtContext checkpt_context;
+
    // only_save_edit_history_when_check_pointing or if explicitly requested
    save_edit_history_ = true;   // this is reset after edit_history is saved
 
@@ -1024,12 +1072,26 @@ void Defs::save_as_checkpt(const std::string& the_fileName,ecf::Archive::Type at
 
 void Defs::save_checkpt_as_string(std::string& output) const
 {
+   // Save NodeContainer children even if ecf::Flag::MIGRATED set
+   CheckPtContext checkpt_context;
+
    // only_save_edit_history_when_check_pointing or if explicitly requested
    save_edit_history_ = true;   // this is reset after edit_history is saved
 
    ecf::save_as_string(output,*this);
 }
 
+void Defs::save_as_filename(const std::string& the_fileName,ecf::Archive::Type at) const
+{
+   /// Can throw archive exception
+   ecf::save(the_fileName,*this,at);
+}
+
+void Defs::save_as_string(std::string& output) const
+{
+   ecf::save_as_string(output,*this);
+}
+
 void Defs::restore_from_checkpt(const std::string& the_fileName,ecf::Archive::Type at)
 {
 //	cout << "Defs::restore_from_checkpt " << the_fileName << "\n";
@@ -1048,6 +1110,20 @@ void Defs::restore_from_checkpt(const std::string& the_fileName,ecf::Archive::Ty
 //	cout << "Restored: " << suiteVec_.size() << " suites\n";
 }
 
+void Defs::restore_from_string(const std::string& rest)
+{
+   if (rest.empty()) return;
+
+   // deleting existing content first. *** Note: Server environment left as is ****
+   clear();
+
+   ecf::restore_from_string(rest,*this);
+
+   // Reset the state and modify numbers, **After the restore**
+   state_change_no_ = Ecf::state_change_no();
+   modify_change_no_ = Ecf::modify_change_no();
+}
+
 void Defs::clear()
 {
    // Duplicate AST are held in a static map.
@@ -1458,6 +1534,15 @@ void Defs::detach(AbstractObserver* obs)
    }
 }
 
+bool Defs::is_observed(AbstractObserver* obs) const
+{
+   for(size_t i = 0; i < observers_.size(); i++) {
+       if (observers_[i] == obs) {
+          return true;
+       }
+    }
+   return false;
+}
 // =====================================================================================
 
 std::ostream& operator<<(std::ostream& os, const Defs* d)
diff --git a/ANode/src/Defs.hpp b/ANode/src/Defs.hpp
index 7fb43bf..643a6a5 100644
--- a/ANode/src/Defs.hpp
+++ b/ANode/src/Defs.hpp
@@ -50,10 +50,13 @@ class Limit;
 class AbstractObserver;
 namespace ecf { class NodeTreeVisitor; class CalendarUpdateParams; } // forward declare
 
-class Defs : private boost::noncopyable {
+class Defs {
 public:
    static defs_ptr create();
    Defs();
+   Defs(const Defs&);
+   Defs& operator=(const Defs&);
+
    ~Defs();
 
    bool operator==(const Defs& rhs) const;
@@ -225,7 +228,8 @@ public:
    /// if  createNodesAsNeeded = true, and the path does not exist on this defs
    /// then the missing path nodes are created.
    /// In both the client and this defs the trigger references and cleared first.
-   bool replaceChild(const std::string& path,
+   /// Returns the changed node, or NULL and error message set.
+   node_ptr replaceChild(const std::string& path,
             const defs_ptr& clientDef,
             bool createNodesAsNeeded,
             bool force,
@@ -243,10 +247,14 @@ public:
    void save_as_checkpt(const std::string& fileName,ecf::Archive::Type = ecf::Archive::default_archive()) const;
    void save_checkpt_as_string(std::string& check_pt) const;
 
+   void save_as_filename(const std::string& fileName,ecf::Archive::Type = ecf::Archive::default_archive()) const;
+   void save_as_string(std::string&) const;
+
    /// Function to restore the defs from a check point file.
    /// If the Defs file has content, this is deleted first, i.e. suites, externs,
    /// Can throw an exception
    void restore_from_checkpt(const std::string& fileName,ecf::Archive::Type = ecf::Archive::default_archive());
+   void restore_from_string(const std::string& );
 
    /// Delete suites, externs, client handles, reset suspended, and locate state
    /// etc but Server environment left as is:
@@ -301,7 +309,7 @@ private:
    void setupDefaultEnv();
    void add_suite_only(suite_ptr, size_t position);
 
-   /// Removes the suite, from defs returned as auto_ptr, asserts if suite does not exist
+   /// Removes the suite, from defs returned as suite_ptr, asserts if suite does not exist
    suite_ptr removeSuite(suite_ptr);
    node_ptr removeChild(Node*);
    bool addChild( node_ptr, size_t position = std::numeric_limits<std::size_t>::max());
@@ -320,7 +328,7 @@ private:
    friend void export_Defs();
 
 private:
-   /// Note: restoring form a check point file will reset, defs state and modify numbers
+   /// Note: restoring from a check point file will reset, defs state and modify numbers
    unsigned int    state_change_no_;            // persisted since passed to client, however side effect, is it will be in checkpoint file
    unsigned int    modify_change_no_;           // persisted since passed to client, however side effect, is it will be in checkpoint file
    unsigned int    updateCalendarCount_;
@@ -352,6 +360,7 @@ public:
    void notify(const std::vector<ecf::Aspect::Type>& aspects);
    void attach(AbstractObserver*);
    void detach(AbstractObserver*);
+   bool is_observed(AbstractObserver*) const; // return true if we have this observer in our list
    bool in_notification() const { return in_notification_;}
 
 private:
diff --git a/ANode/src/DefsDelta.cpp b/ANode/src/DefsDelta.cpp
index d1aadf3..039958a 100644
--- a/ANode/src/DefsDelta.cpp
+++ b/ANode/src/DefsDelta.cpp
@@ -31,19 +31,16 @@ void DefsDelta::init(unsigned int client_state_change_no)
 	compound_mementos_.clear();
 }
 
-
 bool DefsDelta::incremental_sync(defs_ptr client_def, std::vector<std::string>& changed_nodes) const
 {
+   // ****************************************************
+   // On the client side
+   // ****************************************************
 	if (!client_def.get()) return false;
 
-   if (client_def->in_notification()) {
-      // For debug: place a break point here: It appear as Change manager observers, has called another client to server command
-      std::cout << "ecflow:ClientInvoker::incremental_sync() called in the middle of notification(server->client sync)\n";
-      std::cout << "It appears that change observer have called *ANOTHER* client->server command in the middle synchronising client definition\n";
-   }
-
-   /// - Sets notification flag, so that observers can also query if they are in the middle of notification.
-   ChangeStartNotification start_notification(client_def);
+   // Clear the changed nodes since we want it to match number of changed memento's
+	// This should have been clear anyway in ServerReply::clear_for_invoke
+	changed_nodes.clear();
 
 	// Update the client defs with latest server *handle* based state change/modify number
 	// to keep pace with the state changes. Passed back later on, to get further changes
@@ -54,22 +51,21 @@ bool DefsDelta::incremental_sync(defs_ptr client_def, std::vector<std::string>&
 #ifdef DEBUG_MEMENTO
 		std::cout << "DefsDelta::incremental_sync compound_mementos_.size() = " << compound_mementos_.size() << "\n";
 #endif
-		std::for_each(compound_mementos_.begin(),compound_mementos_.end(),
-		              boost::bind(&CompoundMemento::incremental_sync,_1,client_def,boost::ref(changed_nodes)));
+
+	   // For each compound memento, we should have a changed node,
+      BOOST_FOREACH(compound_memento_ptr m, compound_mementos_) {
+         changed_nodes.push_back( m->abs_node_path());  // Record changed nodes for the Python interface
+         m->incremental_sync(client_def);
+      }
 	}
 	catch ( std::exception& e) {
 		throw std::runtime_error("Could not apply incremental server changes to client defs, because: " + string(e.what()));
 	}
 
-	// For each compound memento, we should have a changed node,
-   // If the assertion fails, then the sync in the observers, would have called another client->server command in the middle synchronising
-	if ( compound_mementos_.size() != changed_nodes.size()) {
-	   std::cout << "DefsDelta::incremental_sync: ERROR **** compound_mementos_.size() " << compound_mementos_.size() << "  changed_nodes.size(): " << changed_nodes.size() << " differ.\n";
-	}
-#ifdef DEBUG
-	assert( compound_mementos_.size() == changed_nodes.size()); // FIXME restore for long term GUI test
-#endif
- 
+	// For each compound memento, we should have a changed node.(for use with python interface)
+   assert( compound_mementos_.size() == changed_nodes.size());
+
+
 	// return true if there were any changes made
 	return !compound_mementos_.empty();
 }
@@ -78,4 +74,3 @@ void DefsDelta::add(compound_memento_ptr memento)
 {
 	compound_mementos_.push_back(memento);
 }
-
diff --git a/ANode/src/EcfFile.cpp b/ANode/src/EcfFile.cpp
index 2650ca3..256a127 100644
--- a/ANode/src/EcfFile.cpp
+++ b/ANode/src/EcfFile.cpp
@@ -12,14 +12,14 @@
 //
 // Description :
 //============================================================================
-#include <set>
 #include <sstream>
 #include <sys/stat.h>
+#include <iostream>
 
 #include "boost/foreach.hpp"
 #include "boost/filesystem/operations.hpp"
-#include "boost/filesystem/path.hpp"
 #include <boost/algorithm/string/trim.hpp>
+#include <boost/make_shared.hpp>
 
 #include "EcfFile.hpp"
 #include "Log.hpp"
@@ -50,6 +50,7 @@ static const char* T_END         = "end";
 static const char* T_ECFMICRO    = "ecfmicro";
 static const char* T_INCLUDE     = "include";
 static const char* T_INCLUDENOPP = "includenopp";
+static const char* T_INCLUDEONCE = "includeonce";
 
 static void vector_to_string(const std::vector<std::string>& vec, std::string& str)
 {
@@ -66,6 +67,23 @@ static void vector_to_string(const std::vector<std::string>& vec, std::string& s
    }
 }
 
+EcfFile::EcfFile()
+: node_(NULL), script_type_(EcfFile::ECF_SCRIPT_CMD)
+{
+}
+
+EcfFile& EcfFile::operator=(const EcfFile& rhs)
+{
+   // assign in order or declaration
+   node_ = rhs.node_;
+   ecfMicroCache_ = rhs.ecfMicroCache_;
+   script_path_or_cmd_ = rhs.script_path_or_cmd_;
+   job_size_.clear();
+   script_type_ = rhs.script_type_;
+   jobLines_.resize(0);  // the most expensive
+   return *this;
+}
+
 // ==================================================================================
 // Avoid making any data model/defs state changes. Changes like:
 //       node_->flag().set(ecf::Flag::NO_SCRIPT);
@@ -106,15 +124,16 @@ void EcfFile::manual(std::string& theManual)
    }
 
    // expand all %includes this will expand %includenopp by enclosing in %nopp %end, will populate jobLines_
-   if (!preProcess(lines,error_msg)) {
-      std::stringstream ss; ss << "EcfFile::manual: For node " << node_->debugNodePath() << ", failed to pre-process file " << script_path_or_cmd_ << " : " << error_msg;
+   PreProcessor data(this);
+   if (!data.preProcess(lines)) {
+      std::stringstream ss; ss << "EcfFile::manual: For node " << node_->debugNodePath() << ", failed to pre-process file " << script_path_or_cmd_ << " : " << data.error_msg();
       throw std::runtime_error(ss.str());
    }
 
    // perform variable sub's but don't error if failure
    try {
       JobsParam dummy; // create jobs = false, spawn jobs =  false
-      variableSubstituition(dummy);
+      variableSubstitution(dummy);
    }
    catch (...) {}
 
@@ -161,11 +180,10 @@ void EcfFile::script(std::string& theScript) const
 void EcfFile::pre_process(std::vector<std::string>& user_edit_file, std::string& pre_processed_file)
 {
    // expand all %includes this will expand %includenopp by enclosing in %nopp %end, will populate jobLines_
-   std::string errormsg;
-   if (!preProcess(user_edit_file,errormsg)) {
-      throw std::runtime_error("EcfFile::pre_process: Failed to pre_process user edit file " + errormsg);
+   PreProcessor data(this);
+   if (!data.preProcess(user_edit_file)) {
+      throw std::runtime_error("EcfFile::pre_process: Failed to pre_process user edit file " + data.error_msg());
    }
-
    vector_to_string(jobLines_,pre_processed_file);
 }
 
@@ -181,8 +199,9 @@ void EcfFile::pre_process(std::string& pre_processed_file)
    }
 
    // expand all %includes this will expand %includenopp by enclosing in %nopp %end, will populate jobLines_
-   if (!preProcess(lines,error_msg)) {
-      throw std::runtime_error("EcfFile::pre_process: Failed to pre_process: " + error_msg);
+   PreProcessor data(this);
+   if (!data.preProcess(lines)) {
+      throw std::runtime_error("EcfFile::pre_process: Failed to pre_process  " + data.error_msg());
    }
 
    /// Find Used variables, *after* all %includes expanded, can throw std::runtime_error
@@ -205,8 +224,9 @@ void EcfFile::edit_used_variables(std::string& return_script_with_used_variables
    vector_to_string(lines,script);
 
    // expand all %includes
-   if (!preProcess(lines, errorMsg)) {
-      throw std::runtime_error( "EcfFile::edit_used_variables: PreProcess script failed : " + errorMsg ) ;
+   PreProcessor data(this);
+   if (!data.preProcess(lines)) {
+      throw std::runtime_error("EcfFile::edit_used_variables: PreProcess script failed  " + data.error_msg());
    }
 
    /// Find Used variables, *after* all %includes expanded, Can throw std::runtime_error
@@ -248,8 +268,10 @@ const std::string& EcfFile::create_job( JobsParam& jobsParam)
    }
 
    // expand all %includes this will expand %includenopp by enclosing in %nopp %end
-   if (!preProcess(lines,error_msg)) {
-      throw std::runtime_error("EcfFile::create_job: pre process failed " + error_msg );
+
+   PreProcessor data(this);
+   if (!data.preProcess(lines)) {
+      throw std::runtime_error("EcfFile::create_job: pre process failed " + data.error_msg());
    }
 
 #ifdef DEBUG_PRE_PROCESS_OUTPUT
@@ -274,7 +296,7 @@ const std::string& EcfFile::create_job( JobsParam& jobsParam)
    /// Will use *USER* supplied edit variables in preference to node tree variable *IF* supplied
    /// expand %VAR% or %VAR:sub% & replace %% with %
    // Allow variable substitution in comment and manual blocks. But if it fails, don't report as an error
-   variableSubstituition(jobsParam);
+   variableSubstitution(jobsParam);
 
 #ifdef DEBUG_VAR_SUB_OUTPUT
    std::string err1;
@@ -335,219 +357,6 @@ void EcfFile::extract_used_variables(NameValueMap& used_variables_as_map,const s
    }
 }
 
-bool EcfFile::preProcess(std::vector<std::string>& script_lines, std::string& errormsg)
-{
-   /// Clear existing jobLines
-   jobLines_.clear();
-   jobLines_.reserve(512); // estimate for includes
-
-   // get the cached ECF_MICRO variable, typically its one char.
-   string ecfMicro = ecfMicroCache_;
-
-#ifdef DEBUG_PRE_PROCESS
-   cout << "   EcfFile::preProcess task:" << node_->absNodePath() << "   script_path_or_cmd_=" << script_path_or_cmd_ << " ecfMicro = " << ecfMicro << "\n";
-   for(size_t i=0; i < script_lines.size(); ++i) { cerr << "   script_lines[i] = " << i << "  " << script_lines[i] << "\n"; }
-#endif
-
-   // include pre-processing on the included file.
-   // Note: include directives _in_ manual/comment should he handled.
-   //       only include directives in %nopp/%end are ignored
-   std::set<std::string> globalIncludedFileSet; // test for recursive includes
-   int recursive_count = 0;
-   std::vector<std::string> tokens;       // re-use to save memory
-   std::vector<std::string> includeLines; // re-use to save memory
-   std::vector<std::string> included_files;
-
-   // constant until ecfmicro changes, then reset
-   string pp_nopp = ecfMicro;    pp_nopp    += T_NOOP;
-   string pp_comment = ecfMicro; pp_comment += T_COMMENT;
-   string pp_manual = ecfMicro;  pp_manual  += T_MANUAL;
-   string pp_end = ecfMicro;     pp_end     += T_END;
-
-   while (1) {
-
-      std::set<std::string> localIncludedFileSet;
-      bool nopp =  false; bool comment = false; bool manual = false;
-      for(size_t i=0; i < script_lines.size(); ++i) {
-
-         const std::string& script_line = script_lines[i];
-
-         jobLines_.push_back(script_line);    // copy line
-
-         // For variable substitution % can occur anywhere on the line, for pre -processing of
-         // %ecfmicro,%manual,%comment,%end,%include,%includenopp it must be the very *first* character
-         string::size_type ecfmicro_pos = script_line.find(ecfMicro);
-         if (ecfmicro_pos == string::npos) continue;
-
-         if (!nopp && !comment && !manual) {
-            // For variable substitution '%' can occur anywhere on the line.
-            // Check for Mismatched micro i.e %FRED or %FRED%%
-            if (ecfmicro_pos != 0) {
-               int ecfMicroCount = countEcfMicro( script_line, ecfMicro );
-               if (ecfMicroCount % 2 != 0 ) {
-                  std::stringstream ss;
-                  ss << "Mismatched ecfmicro(" << ecfMicro << ") count(" << ecfMicroCount << ")  '" << script_line << "' in " << script_path_or_cmd_;
-                  errormsg += ss.str();
-                  dump_expanded_script_file(i,script_lines);
-                  return false;
-               }
-            }
-         }
-
-         // %ecfmicro,%manual,%comment,%end,%include,%includenopp it must be the very *first* character
-         if (ecfmicro_pos != 0) continue; //handle 'garbage%include'
-
-#ifdef DEBUG_PRE_PROCESS
-         std::cout << i << ": " << script_line << "\n";
-#endif
-         if (script_line.find(pp_manual) == 0) {
-            if (comment || manual) {
-               std::stringstream ss; ss << "Embedded comments/manuals not supported '" << script_line << "' at " << script_path_or_cmd_;
-               errormsg += ss.str();
-               dump_expanded_script_file(i,script_lines);
-               return false;
-            }
-            manual = true ; continue;
-         }
-         if (script_line.find(pp_comment) == 0) {
-            if (comment || manual) {
-               std::stringstream ss; ss << "Embedded comments/manuals not supported '" << script_line << "' at " << script_path_or_cmd_;
-               errormsg += ss.str();
-               dump_expanded_script_file(i,script_lines);
-               return false;
-            }
-            comment = true ; continue;
-         }
-         if (script_line.find(pp_nopp) == 0) {
-            if (nopp) {
-               std::stringstream ss; ss << "Embedded nopp not supported '" << script_line << "' in " << script_path_or_cmd_;
-               errormsg += ss.str();
-               dump_expanded_script_file(i,script_lines);
-               return false;
-            }
-            nopp = true ; continue;
-         }
-         if (script_line.find(pp_end) == 0) {
-            if (comment) { comment = false; continue;}
-            if (manual)  { manual = false; continue;}
-            if (nopp)    { nopp = false; continue;}
-            std::stringstream ss;
-            ss << pp_end << " found with no matching %comment | %manual | %nopp at '" << script_line << "' at path " << script_path_or_cmd_;
-            errormsg += ss.str();
-            dump_expanded_script_file(i,script_lines);
-            return false;
-         }
-         if (nopp) continue;
-
-         tokens.clear();
-         Str::split( script_line, tokens );
-
-         // Handle ecfmicro replacement ================================================================================
-         if (script_line.find(T_ECFMICRO) == 1) {    // %ecfmicro #
-            // keep %ecfmicro in jobs file later processing, i.e for comments/manuals
-
-            if (tokens.size() < 2) {
-               std::stringstream ss;
-               ss << "ecfmicro does not have a replacement character, in " << script_path_or_cmd_;
-               errormsg += ss.str();
-               return false;
-            }
-
-            // This is typically a single character, however $/£ will be multi-character i.e size 2
-            ecfMicro = tokens[1];
-            if (ecfMicro.size() > 2) {
-               std::stringstream ss;
-               ss << "Expected ecfmicro replacement to be a single character, but found '" << ecfMicro << "' " <<  ecfMicro.size() << " in file : " << script_path_or_cmd_;
-               errormsg += ss.str();
-               return false;
-            }
-
-            pp_nopp = ecfMicro;    pp_nopp    += T_NOOP;
-            pp_comment = ecfMicro; pp_comment += T_COMMENT;
-            pp_manual = ecfMicro;  pp_manual  += T_MANUAL;
-            pp_end = ecfMicro;     pp_end     += T_END;
-
-            continue;
-         }
-
-         // Handle the includes ===================================================================================
-         if (tokens.size() < 2) continue;
-
-         bool includenopp = (script_line.find(T_INCLUDENOPP) == 1);
-         bool file_to_include = false;
-         if (!includenopp) {
-            // Notice we only do recursive includes for %include
-            file_to_include = (script_line.find(T_INCLUDE) != string::npos);
-         }
-         if (!file_to_include && !includenopp) continue;
-
-         // remove %include since were going to expand it.
-         jobLines_.pop_back();
-         included_files.push_back(script_line);
-
-#ifdef DEBUG_PRE_PROCESS_INCLUDES
-         // Output the includes for debug purposes. Will appear in preProcess.ecf
-         // Note: Will interfere with diff
-         jobLines_.push_back("========== include of " + tokens[1] + " ===========================");
-#endif
-
-         std::string includedFile = getIncludedFilePath(tokens[1], script_line, errormsg);
-         if (!errormsg.empty())  return false;
-         localIncludedFileSet.insert(includedFile);
-#ifdef DEBUG_PRE_PROCESS
-         cout << "EcfFile::preProcess processing " << includedFile  << "\n";
-#endif
-
-         includeLines.clear();
-         if (!open_script_file(includedFile, EcfFile::INCLUDE, includeLines,  errormsg)) {
-            return false;
-         }
-
-
-         // append included script_lines to jobsLines
-         if (includenopp) jobLines_.push_back(ecfMicro + T_NOOP);
-         std::copy( includeLines.begin(), includeLines.end(), std::back_inserter( jobLines_ ) );
-         if (includenopp) jobLines_.push_back(ecfMicro + T_END);
-      }
-
-
-      if (nopp) {
-         std::stringstream ss;
-         ss << "Unterminated nopp, matching 'end' is missing for " << script_path_or_cmd_;
-         errormsg +=  ss.str();
-         dump_expanded_script_file(1,script_lines);
-         return false;
-      }
-
-      // Check for recursive includes. some includes like %include <endt.h>
-      // are included many times, but the include is not recursive.
-      // To get round this will use a simple count.
-      BOOST_FOREACH(const string& theInclude, localIncludedFileSet) {
-
-         if (globalIncludedFileSet.find(theInclude) != globalIncludedFileSet.end()) {
-
-            if ( recursive_count > 10) {
-               std::stringstream ss;
-               ss << "Recursive include of file " << theInclude << " for " << script_path_or_cmd_;
-               errormsg += ss.str();
-               return false;
-            }
-            recursive_count++;
-         }
-         else globalIncludedFileSet.insert(theInclude);
-      }
-
-      if (included_files.empty()) break;
-      else {
-         // repeat until no %include left
-         included_files.clear();
-         script_lines = jobLines_;
-         jobLines_.clear();
-      }
-   }
-   return true;
-}
-
 bool EcfFile::open_script_file(
          const std::string& file_or_cmd,
          EcfFile::Type type,
@@ -566,6 +375,9 @@ bool EcfFile::open_script_file(
 
    switch (script_type_) {
       case ECF_FILE: {
+         if (type == EcfFile::INCLUDE) {
+            return open_include_file(file_or_cmd,lines,errormsg);
+         }
          if ( ! File::splitFileIntoLines(file_or_cmd, lines) ) {
             std::stringstream ss; ss  << "Could not open " <<  fileType(type) << " file:" << file_or_cmd;
             errormsg += ss.str();
@@ -595,7 +407,7 @@ bool EcfFile::open_script_file(
                if (!do_popen(file_or_cmd,type,lines,errormsg)) return false;
                break;
             }
-            case EcfFile::INCLUDE:
+            case EcfFile::INCLUDE: return open_include_file(file_or_cmd,lines,errormsg); break;
             case EcfFile::MANUAL:
             case EcfFile::COMMENT:
                if ( ! File::splitFileIntoLines(file_or_cmd, lines) ) {
@@ -611,6 +423,49 @@ bool EcfFile::open_script_file(
    return true;
 }
 
+#define USE_INCLUDE_CACHE  1
+//  max open files allowed is:
+//     VM:       cat /proc/sys/fs/file-max:  188086
+//     Desk top: cat /proc/sys/fs/file-max: 3270058
+//  Desktop:
+//     Without cache: real:10.15  user: 5.58  sys: 1.62
+//     With cache:    real: 4.46  user: 3.72  sys: 0.74  Only open/close include file once.
+//  TODO: Could sort
+bool EcfFile::open_include_file(const std::string& file,std::vector<std::string>& lines,std::string& errormsg) const
+{
+#ifdef USE_INCLUDE_CACHE
+   size_t include_file_cache_size = include_file_cache_.size();
+   for(size_t i = 0; i < include_file_cache_size; i++) {
+      if (include_file_cache_[i]->path() == file) {
+         // cout << "found " << file << " in cache, cache size = " << include_file_cache_.size() << "\n";
+         if (!include_file_cache_[i]->lines(lines)) {
+            std::stringstream ss; ss  << "Could not open include file: " << file;
+            errormsg += ss.str();
+            return false;
+         }
+         return true;
+      }
+   }
+
+   boost::shared_ptr<IncludeFileCache> ptr = boost::make_shared<IncludeFileCache>(file);
+   include_file_cache_.push_back( ptr );
+   //cout << "NOT found " << file << " in cache, cache size = " << include_file_cache_.size() << "\n";
+
+   if (!ptr->lines(lines)) {
+      std::stringstream ss; ss  << "Could not open include file: " << file;
+      errormsg += ss.str();
+      return false;
+   }
+#else
+   if ( ! File::splitFileIntoLines(file, lines) ) {
+       std::stringstream ss; ss  << "Could not open include file:" << file;
+       errormsg += ss.str();
+       return false;
+    }
+#endif
+   return true;
+}
+
 bool EcfFile::do_popen(const std::string& the_cmd, EcfFile::Type type, std::vector<std::string>& lines, std::string& errormsg) const
 {
    FILE *fp = popen(the_cmd.c_str(),"r");
@@ -691,7 +546,7 @@ bool EcfFile::replaceSmsChildCmdsWithEcf(const std::string& clientPath, std::str
    return true;
 }
 
-void EcfFile::variableSubstituition(JobsParam& jobsParam)
+void EcfFile::variableSubstitution(JobsParam& jobsParam)
 {
    // Allow variable substitution in comment and manual blocks.
    // But if it fails, don't report as an error
@@ -716,8 +571,6 @@ void EcfFile::variableSubstituition(JobsParam& jobsParam)
    size_t jobLines_size = jobLines_.size();
    for(size_t i=0; i < jobLines_size; ++i) {
 
-      if (jobLines_[i].empty()) continue;
-
       // take into account micro char during variable substitution
       string::size_type ecfmicro_pos = jobLines_[i].find(ecfMicro);
       if (ecfmicro_pos == 0) {
@@ -727,7 +580,7 @@ void EcfFile::variableSubstituition(JobsParam& jobsParam)
          if (jobLines_[i].find(T_COMMENT) == 1) { pp_stack.push_back(COMMENT); continue; }
          if (jobLines_[i].find(T_NOOP)    == 1) { pp_stack.push_back(NOPP); nopp = true; continue; }
          if (jobLines_[i].find(T_END) == 1) {
-            if (pp_stack.empty()) throw std::runtime_error("EcfFile::variableSubstituition: failed unpaired %end");
+            if (pp_stack.empty()) throw std::runtime_error("EcfFile::variableSubstitution: failed unpaired %end");
             int last_directive = pp_stack.back(); pp_stack.pop_back();
             if (last_directive == NOPP) nopp = false;
             continue;
@@ -739,7 +592,7 @@ void EcfFile::variableSubstituition(JobsParam& jobsParam)
             Str::split( jobLines_[i], tokens );
             if (tokens.size() < 2) {
                std::stringstream ss; ss << "ecfmicro does not have a replacement character, in " << script_path_or_cmd_;
-               throw std::runtime_error("EcfFile::variableSubstituition: failed : " + ss.str());
+               throw std::runtime_error("EcfFile::variableSubstitution: failed : " + ss.str());
             }
             ecfMicro = tokens[1];
             microChar = ecfMicro[0];
@@ -761,8 +614,8 @@ void EcfFile::variableSubstituition(JobsParam& jobsParam)
             if (!pp_stack.empty()) last_directive = pp_stack.back();
             if ( last_directive == COMMENT || last_directive == MANUAL) continue;
 
-            std::stringstream ss;  ss << "EcfFile::variableSubstituition: failed : '" << jobLines_[i] << "'";
-            dump_expanded_script_file( i, jobLines_ );
+            std::stringstream ss;  ss << "EcfFile::variableSubstitution: failed : '" << jobLines_[i] << "'";
+            dump_expanded_script_file( jobLines_ );
             throw std::runtime_error(ss.str());
          }
       }
@@ -793,7 +646,7 @@ void EcfFile::get_used_variables(std::string& used_variables) const
       // This way at job submission we use the latest/correct value, which is in-sync with JOB OUTPUT
       // Note: Otherwise the job output will not be in sync
       //
-      // Custom handling of ECF_PORT,ECF_NODE,ECF_NAME do not show these variables, these variables
+      // Custom handling of ECF_PORT,ECF_HOST,ECF_NAME do not show these variables, these variables
       // including ECF_PASS appear in the script. If the user accidentally edits them,
       // Child communication with the server will be broken. Hence not shown
       //
@@ -809,6 +662,7 @@ void EcfFile::get_used_variables(std::string& used_variables) const
          if ( item.first.find(Str::ECF_PASS())    != std::string::npos) continue;
          if ( item.first.find(Str::ECF_PORT())    != std::string::npos) continue;
          if ( item.first.find(Str::ECF_NODE())    != std::string::npos) continue;
+         if ( item.first.find(Str::ECF_HOST())    != std::string::npos) continue;
          if ( item.first.find(Str::ECF_NAME())    != std::string::npos) continue;
 
          // We must use exact match, to avoid user variables like ESUITE,EFAMILY,ETASK
@@ -898,7 +752,7 @@ bool EcfFile::get_used_variables(NameValueMap& used_variables, std::string& erro
             if ( last_directive == COMMENT || last_directive == MANUAL) continue;
 
             ss << "Variable find failed for '" << jobLines_[i] << "'  microChar='" << microChar << "' ";
-            dump_expanded_script_file( i, jobLines_ );
+            dump_expanded_script_file( jobLines_ );
          }
       }
    }
@@ -912,7 +766,7 @@ bool EcfFile::get_used_variables(NameValueMap& used_variables, std::string& erro
 
 const std::string& EcfFile::doCreateJobFile(JobsParam& jobsParam) const
 {
-   if ( jobLines_.size() > 1 ) {
+   if ( !jobLines_.empty() ) {
       // Guard against ecf file that exist's but is empty,
       // no point in creating empty job files for them
 
@@ -957,6 +811,7 @@ const std::string& EcfFile::doCreateJobFile(JobsParam& jobsParam) const
       // record job size, for placement into log files
       size_t job_output_size = 0;
       size_t jobLines_size = jobLines_.size();
+      //cout << " jobLines_.size() " << jobLines_size << " jobLines_.capacity() " << jobLines_.capacity() << "\n";
       for(size_t i = 0; i < jobLines_size; ++i)  job_output_size += jobLines_[i].size();
       job_output_size += jobLines_size; // take into account new lines for each line of output
       job_size_ = "job_size:";
@@ -1074,146 +929,12 @@ bool EcfFile::extractManual(const std::vector< std::string >& lines,
    if (add) {
       std::stringstream ss; ss << "Unterminated manual. Matching 'end' is missing, for " << script_path_or_cmd_;
       errormsg += ss.str();
-      dump_expanded_script_file(1,lines);
+      dump_expanded_script_file(lines);
       return false;
    }
    return true;
 }
 
-std::string EcfFile::getIncludedFilePath( const std::string& includedFile,
-         const std::string& line,
-         std::string& errormsg)
-{
-   // Include can have following format:
-   //   %include /tmp/file.name   -> /tmp/filename
-   //   %include file.name        -> filename
-   //   %include "../file.name"   -> script_file_location/../file.name
-   //   %include "./file.name"    -> script_file_location/./file.name
-   //   %include "file.name"      -> %ECF_HOME%/%SUITE%/%FAMILY%/filename
-   //   %include <file.name>      -> %ECF_INCLUDE%/filename
-   //   When ECF_INCLUDE          -> path1:path2:path3
-   //   %include <file.name>      -> path1/filename || path2/filename || path3/filename
-   //
-   //   %include <file.name>      -> ECF_HOME/filename
-
-   std::string the_include_file = includedFile.substr( 1, includedFile.size() - 2 );
-   if ( includedFile.size() >=2 && includedFile[1] == '/') {
-      // filename starts with '/' no interpretation return as in
-      // %include </home/ecf/fred.ecf>
-      // %include "/home/ecf/fred.ecf"
-      return the_include_file;
-   }
-
-   std::stringstream ss;
-   if ( includedFile[0] == '<' ) {
-      // %include <filename> can be one of:
-      //    o When ECF_INCLUDE is a single path -> path1/filename
-      //    o When ECF_INCLUDE is a multi  path -> path1:path2:path3  -> ECFLOW-261
-      //                                        -> path1/filename || path2/filename || path3/filename
-      //    o ECF_HOME/filename
-      std::string ecf_include;
-      if (node_->findParentUserVariableValue( Str::ECF_INCLUDE() , ecf_include ) && !ecf_include.empty() ) {
-
-         // if ECF_INCLUDE is a set a paths, search in order. i.e like $PATH
-         if (ecf_include.find(':') != std::string::npos) {
-            std::vector<std::string> include_paths;
-            Str::split(ecf_include,include_paths,":");
-            for(size_t i =0; i < include_paths.size();i++) {
-               ecf_include.clear();
-               ecf_include = include_paths[i];
-               ecf_include += '/';
-               ecf_include += the_include_file;
-
-               // Don't rely on hard coded paths. Added for testing, but could be generally useful
-               // since in test scenario ECF_INCLUDE is defined relative to $ECF_HOME
-               node_->variable_dollar_subsitution(ecf_include);
-
-               if (fs::exists(ecf_include)) return ecf_include;
-            }
-         }
-         else {
-            ecf_include += '/';
-            ecf_include += the_include_file;
-            node_->variable_dollar_subsitution(ecf_include);
-            if (fs::exists(ecf_include)) return ecf_include;
-         }
-
-         // ECF_INCLUDE is specified *BUT* the file does *NOT* exist, Look in ECF_HOME
-      }
-
-      // WE get HERE *if* ECF_INCLUDE not specified, or if specified but file *not found*
-      ecf_include.clear();
-      node_->findParentVariableValue( Str::ECF_HOME() , ecf_include );
-      if (ecf_include.empty()) {
-         ss << "ECF_INCLUDE/ECF_HOME not specified, for task " << node_->absNodePath() << " at " << line;
-         errormsg += ss.str();
-         return string();
-      }
-
-      ecf_include += '/';
-      ecf_include += the_include_file;
-
-      return ecf_include;
-   }
-   else if ( includedFile[0] == '"' ) {
-
-      // we have two forms: "head.h" & "../head.h"
-
-      //  ECFLOW-274 need to allow:
-      //     - %include "../fred.h"     # this one directory up
-      //     - %include "./fred.h"      # this is at the same level as script
-      std::string path;
-      if ( includedFile.find("./") == 1 || includedFile.find("../") == 1) {
-         // remove the leading and trailing '"'
-         std::string the_included_file = includedFile;
-         Str::removeQuotes(the_included_file);
-
-         // Get the root path, i.e. script_or_job_path() is of the form "/user/home/ma/mao/course/t1.ecf || /user/home/ma/mao/course/t1.job"
-         // we need "/user/home/ma/mao/course/"
-         std::string the_script_or_job_path = script_or_job_path();
-         std::string::size_type last_slash = the_script_or_job_path.rfind("/");
-         if (last_slash != std::string::npos) {
-            path = the_script_or_job_path.substr( 0, last_slash + 1 );
-            path += the_included_file;
-            // std::cout << "path == " << path << "\n";
-            return path;
-         }
-      }
-
-      // include contents of %ECF_HOME%/%SUITE%/%FAMILY%/filename
-      node_->findParentUserVariableValue( Str::ECF_HOME() , path);
-      if ( path.empty() ) {
-         ss << "ECF_HOME not specified, for task " << node_->absNodePath() << " at " << line;
-         errormsg += ss.str();
-         return string();
-      }
-      path += '/';
-      std::string suite;
-      node_->findParentVariableValue( "SUITE" , suite);   // SUITE is a generated variable
-      if ( suite.empty() ) {
-         ss << "SUITE not specified, for task " << node_->absNodePath() << " at " << line;
-         errormsg += ss.str();
-         return string();
-      }
-      path += suite;
-      path += '/';
-      std::string family;
-      node_->findParentVariableValue( "FAMILY" , family); // FAMILY is a generated variable
-      if ( family.empty() ) {
-         ss << "FAMILY not specified, for task " << node_->absNodePath() << " at " << line;
-         errormsg += ss.str();
-         return string();
-      }
-      path += family;
-      path += '/';
-      path += the_include_file ; // "filename"
-      return path;
-   }
-
-   // File either has an absolute pathname or is in the current working dir.
-   // include file name as is, from current working directory
-   return includedFile;
-}
 
 void EcfFile::removeCommentAndManual()
 {
@@ -1383,16 +1104,20 @@ void EcfFile::remove_nopp_end_tokens()
 
 int EcfFile::countEcfMicro(const std::string& line, const std::string& ecfMicro)
 {
-   if (line.find("#") != string::npos) {
+   size_t end = line.size();
+   size_t comment_pos = line.find("#");
+   if (comment_pos != string::npos) {
       // ignore ecfmicro character in comments
-      return 0;
+      if ( comment_pos == 0 ){
+         return 0;
+      }
+      end = comment_pos;
    }
 
    /// Pound char could be more than one char ?
    int count = 0;
    if ( !ecfMicro.empty()) {
       const char theChar = ecfMicro[0];
-      size_t end = line.size();
       for(size_t i = 0; i < end; ++i) {
          if (line[i] == theChar) {
             count++;
@@ -1403,10 +1128,9 @@ int EcfFile::countEcfMicro(const std::string& line, const std::string& ecfMicro)
    return count;
 }
 
-void EcfFile::dump_expanded_script_file(size_t i, const std::vector<std::string>& lines)
+void EcfFile::dump_expanded_script_file(const std::vector<std::string>& lines)
 {
 #ifdef DEBUG_PRE_PROCESS
-   if (i != 0) std::cout << "\nSee file tmp.ecf around line number " << i-1 << "\n";
    std::string err;
    if (!File::create("tmp" + get_extn(),lines,err))  std::cout << "Could not create file tmp.ecf\n";
 #endif
@@ -1423,3 +1147,415 @@ const std::string& EcfFile::get_extn() const
    }
    return Str::EMPTY();
 }
+
+// =======================================================================================
+
+PreProcessor::PreProcessor(EcfFile* ecfile)
+: ecfile_(ecfile),
+  nopp_(false),
+  comment_(false),
+  manual_(false),
+  ecf_micro_(ecfile->ecfMicroCache_),
+  jobLines_(ecfile->jobLines_)
+{
+   pp_nopp_ = ecf_micro_;    pp_nopp_    += T_NOOP;
+   pp_comment_ = ecf_micro_; pp_comment_ += T_COMMENT;
+   pp_manual_ = ecf_micro_;  pp_manual_  += T_MANUAL;
+   pp_end_ = ecf_micro_;     pp_end_     += T_END;
+
+   /// Clear existing jobLines, pre-processing will populate jobLines_
+   jobLines_.clear();
+   jobLines_.reserve(512); // estimate for includes
+}
+
+PreProcessor::~PreProcessor(){}
+
+bool PreProcessor::preProcess(std::vector<std::string>& script_lines )
+{
+   // Uses a Depth first traversal
+   size_t script_lines_size = script_lines.size();
+   for(size_t i=0; i < script_lines_size; ++i) {
+      const std::string& script_line = script_lines[i];
+      jobLines_.push_back(script_line);    // copy line
+      preProcess_line(script_line);
+      if (!error_msg_.empty()) return false;
+   }
+
+   if (nopp_) {
+      std::stringstream ss; ss << "Unterminated nopp, matching 'end' is missing for " << ecfile_->script_path_or_cmd_;
+      error_msg_ += ss.str();
+      ecfile_->dump_expanded_script_file(jobLines_);
+      return false;
+   }
+
+   return true;
+}
+
+void PreProcessor::preProcess_line(const std::string& script_line)
+{
+   // For variable substitution % can occur anywhere on the line, for pre -processing of
+   // %ecfmicro,%manual,%comment,%end,%include,%includenopp it must be the very *first* character
+   string::size_type ecfmicro_pos = script_line.find(ecf_micro_);
+   if (ecfmicro_pos == string::npos) return;
+
+   if (!nopp_ && !comment_ && !manual_) {
+      // For variable substitution '%' can occur anywhere on the line.
+      // Check for Mismatched micro i.e %FRED or %FRED%%
+      if (ecfmicro_pos != 0) {
+         int ecfMicroCount = ecfile_->countEcfMicro( script_line, ecf_micro_ );
+         if (ecfMicroCount % 2 != 0 ) {
+            std::stringstream ss;
+            ss << "Mismatched ecfmicro(" << ecf_micro_ << ") count(" << ecfMicroCount << ")  '" << script_line << "' in " << ecfile_->script_path_or_cmd_;
+            error_msg_ += ss.str();
+            ecfile_->dump_expanded_script_file(jobLines_);
+            return;
+         }
+      }
+   }
+
+   // %ecfmicro,%manual,%comment,%end,%include,%includenopp,%includeonce it must be the very *first* character
+   if (ecfmicro_pos != 0) return; //handle 'garbage%include'
+
+#ifdef DEBUG_PRE_PROCESS
+   std::cout << i << ": " << script_line << "\n";
+#endif
+   if (script_line.find(pp_manual_) == 0) {
+      if (comment_ || manual_) {
+         std::stringstream ss; ss << "Embedded comments/manuals not supported '" << script_line << "' at " << ecfile_->script_path_or_cmd_;
+         error_msg_ += ss.str();
+         ecfile_->dump_expanded_script_file(jobLines_);
+         return;
+      }
+      manual_ = true ; return;
+   }
+   if (script_line.find(pp_comment_) == 0) {
+      if (comment_ || manual_) {
+         std::stringstream ss; ss << "Embedded comments/manuals not supported '" << script_line << "' at " << ecfile_->script_path_or_cmd_;
+         error_msg_ += ss.str();
+         ecfile_->dump_expanded_script_file(jobLines_);
+         return;
+      }
+      comment_ = true ; return;
+   }
+   if (script_line.find(pp_nopp_) == 0) {
+      if (nopp_) {
+         std::stringstream ss; ss << "Embedded nopp not supported '" << script_line << "' in " << ecfile_->script_path_or_cmd_;
+         error_msg_ += ss.str();
+         ecfile_->dump_expanded_script_file(jobLines_);
+         return;
+      }
+      nopp_ = true ; return;
+   }
+   if (script_line.find(pp_end_) == 0) {
+      if (comment_) { comment_ = false; return;}
+      if (manual_)  { manual_ = false;  return;}
+      if (nopp_)    { nopp_ = false;    return;}
+      std::stringstream ss;
+      ss << pp_end_ << " found with no matching %comment | %manual | %nopp at '" << script_line << "' at path " << ecfile_->script_path_or_cmd_;
+      error_msg_ += ss.str();
+      ecfile_->dump_expanded_script_file(jobLines_);
+      return;
+   }
+   if (nopp_) return;
+
+
+   // =================================================================================
+   // Handle ecfmicro replacement
+   // =================================================================================
+   tokens_.clear();
+   Str::split( script_line, tokens_ );
+   if (script_line.find(T_ECFMICRO) == 1) {    // %ecfmicro #
+      // keep %ecfmicro in jobs file later processing, i.e for comments/manuals
+
+      if (tokens_.size() < 2) {
+         std::stringstream ss;
+         ss << "ecfmicro does not have a replacement character, in " << ecfile_->script_path_or_cmd_;
+         error_msg_ += ss.str();
+         return;
+      }
+
+      // This is typically a single character, however $/£ will be multi-character i.e size 2
+      ecf_micro_ = tokens_[1];
+      if (ecf_micro_.size() > 2) {
+         std::stringstream ss;
+         ss << "Expected ecfmicro replacement to be a single character, but found '" << ecf_micro_ << "' " <<  ecf_micro_.size() << " in file : " << ecfile_->script_path_or_cmd_;
+         error_msg_ += ss.str();
+         return;
+      }
+      pp_nopp_ = ecf_micro_;    pp_nopp_    += T_NOOP;
+      pp_comment_ = ecf_micro_; pp_comment_ += T_COMMENT;
+      pp_manual_ = ecf_micro_;  pp_manual_  += T_MANUAL;
+      pp_end_ = ecf_micro_;     pp_end_     += T_END;
+
+      return;
+   }
+
+   if (tokens_.size() < 2) return;
+
+   // we only end up here if we have includes
+   preProcess_includes(script_line);
+}
+
+void PreProcessor::preProcess_includes(const std::string& script_line)
+{
+   // =================================================================================
+   // order is *IMPORTANT*, hence search for includenopp, includeonce, include
+   // Otherwise string::find() of include will match includenopp and includeonce
+   // =================================================================================
+   bool fnd_include = false;
+   bool fnd_includeonce = false;
+   bool fnd_includenopp = (script_line.find(T_INCLUDENOPP) == 1);
+   if (!fnd_includenopp) {
+      fnd_includeonce = (script_line.find(T_INCLUDEONCE) == 1);
+      if (!fnd_includeonce) fnd_include = (script_line.find(T_INCLUDE) == 1);
+      fnd_include = (script_line.find(T_INCLUDE) == 1);
+   }
+   if (!fnd_include && !fnd_includenopp && !fnd_includeonce) return;
+
+   // remove %include from the job lines, since were going to expand or ignore it.
+   jobLines_.pop_back();
+
+#ifdef DEBUG_PRE_PROCESS_INCLUDES
+   // Output the includes for debug purposes. Will appear in preProcess.ecf
+   // Note: Will interfere with diff
+   jobLines_.push_back("========== include of " + tokens_[1] + " ===========================");
+#endif
+
+   std::string includedFile = getIncludedFilePath(tokens_[1], script_line, error_msg_);
+   if (!error_msg_.empty()) return;
+
+   // handle %include || %includeonce  of include that was specified as %includeonce
+   if (std::find(include_once_set_.begin(),include_once_set_.end(),includedFile) != include_once_set_.end() ) {
+      return; // Already processed once ignore
+   }
+   if (fnd_includeonce) {
+      include_once_set_.push_back(includedFile);
+   }
+
+#ifdef DEBUG_PRE_PROCESS
+   cout << "EcfFile::preProcess processing " << includedFile  << "\n";
+#endif
+
+
+   // Check for recursive includes. some includes like %include <endt.h>
+   // are included many times, but the include is not recursive.
+   // To get round this will use a simple count.
+   // replace map with vector
+   bool fnd = false;
+   for(size_t i = 0; i < globalIncludedFileSet_.size(); ++i) {
+      if (globalIncludedFileSet_[i].first == includedFile) {
+         fnd = true;
+         if ( globalIncludedFileSet_[i].second > 100) {
+            std::stringstream ss;
+            ss << "Recursive include of file " << includedFile << " for " << ecfile_->script_path_or_cmd_;
+            error_msg_ += ss.str();
+            return;
+         }
+         globalIncludedFileSet_[i].second++;
+         break;
+      }
+   }
+   if (!fnd) {
+      globalIncludedFileSet_.push_back( std::make_pair(includedFile,0) );
+   }
+
+
+   std::vector<std::string> include_lines;
+   if (fnd_includenopp) include_lines.push_back(ecf_micro_ + T_NOOP);
+   if (!ecfile_->open_script_file(includedFile, EcfFile::INCLUDE, include_lines, error_msg_))  return;
+   if (fnd_includenopp) include_lines.push_back(ecf_micro_ + T_END);
+
+   size_t include_lines_size = include_lines.size();
+   for(size_t i=0; i < include_lines_size; ++i) {
+      const std::string& script_line = include_lines[i];
+      jobLines_.push_back(script_line);    // copy line
+      preProcess_line(script_line);
+      if (!error_msg_.empty()) return;
+   }
+
+   if (nopp_) {
+      std::stringstream ss; ss << "Unterminated nopp, matching 'end' is missing for " << ecfile_->script_path_or_cmd_;
+      error_msg_ += ss.str();
+      ecfile_->dump_expanded_script_file(jobLines_);
+   }
+}
+
+std::string PreProcessor::getIncludedFilePath(
+      const std::string& includedFile1,
+      const std::string& line,
+      std::string& errormsg)
+{
+   // Include can have following format: [ %include | %includeonce | %includenopp ]
+   //   %include /tmp/file.name   -> /tmp/filename
+   //   %include file.name        -> file.name
+   //   %include "../file.name"   -> script_file_location/../file.name
+   //   %include "./file.name"    -> script_file_location/./file.name
+   //   %include "file.name"      -> %ECF_HOME%/%SUITE%/%FAMILY%/filename
+   //   %include <file.name>      -> %ECF_INCLUDE%/filename
+   //
+   //   %include <%file%.name>        -> %ECF_INCLUDE%/filename
+   //   %include "%file%.name"        -> %ECF_HOME%/%SUITE%/%FAMILY%/filename
+   //   %include "./%file%.name"      -> script_file_location/./file.name
+   //   %include "/%tmp%/%file%.name" -> /%tmp%/%file%.name
+   //   %include %INCLUDE%            -> any of the above
+   //
+   // When ECF_INCLUDE           -> path1:path2:path3
+   //   %include <filename>      -> path1/filename || path2/filename || path3/filename || ECF_HOME/filename
+
+   // the included file could have variables,(ECFLOW-765), check for miss-matched ecf_micro
+   std::string includedFile = includedFile1;
+   if ( includedFile.find(ecf_micro_) != std::string::npos) {
+      int ecfMicroCount = ecfile_->countEcfMicro( includedFile, ecf_micro_ );
+      if (ecfMicroCount % 2 != 0 ) {
+         std::stringstream ss;
+         ss << "Mismatched ecfmicro(" << ecf_micro_ << ") count(" << ecfMicroCount << ")  '" << line << "' in " << ecfile_->script_path_or_cmd_;
+         errormsg += ss.str();
+         return string();
+      }
+      NameValueMap user_edit_variables;
+      ecfile_->node_->variable_substitution(includedFile,user_edit_variables,ecf_micro_[0]);
+   }
+
+   std::string the_include_file = includedFile.substr( 1, includedFile.size() - 2 );
+   if ( includedFile.size() >=2 && includedFile[1] == '/') {
+      // filename starts with '/' no interpretation return as in
+      // %include </home/ecf/fred.ecf>
+      // %include "/home/ecf/fred.ecf"
+      return the_include_file;
+   }
+
+   Node* node = ecfile_->node_;
+   std::stringstream ss;
+   if ( includedFile[0] == '<' ) {
+      // %include <filename> can be one of:
+      //    o When ECF_INCLUDE is a single path -> path1/filename
+      //    o When ECF_INCLUDE is a multi  path -> path1:path2:path3  -> ECFLOW-261
+      //                                        -> path1/filename || path2/filename || path3/filename
+      //    o ECF_HOME/filename
+      std::string ecf_include;
+      if (node->findParentUserVariableValue( Str::ECF_INCLUDE() , ecf_include ) && !ecf_include.empty() ) {
+
+         // if ECF_INCLUDE is a set a paths, search in order. i.e like $PATH
+         if (ecf_include.find(':') != std::string::npos) {
+            std::vector<std::string> include_paths;
+            Str::split(ecf_include,include_paths,":");
+            for(size_t i =0; i < include_paths.size();i++) {
+               ecf_include.clear();
+               ecf_include = include_paths[i];
+               ecf_include += '/';
+               ecf_include += the_include_file;
+
+               // Don't rely on hard coded paths. Added for testing, but could be generally useful
+               // since in test scenario ECF_INCLUDE is defined relative to $ECF_HOME
+               node->variable_dollar_subsitution(ecf_include);
+
+               if (fs::exists(ecf_include)) return ecf_include;
+            }
+         }
+         else {
+            ecf_include += '/';
+            ecf_include += the_include_file;
+            node->variable_dollar_subsitution(ecf_include);
+            if (fs::exists(ecf_include)) return ecf_include;
+         }
+
+         // ECF_INCLUDE is specified *BUT* the file does *NOT* exist, Look in ECF_HOME
+      }
+
+      // WE get HERE *if* ECF_INCLUDE not specified, or if specified but file *not found*
+      ecf_include.clear();
+      node->findParentVariableValue( Str::ECF_HOME() , ecf_include );
+      if (ecf_include.empty()) {
+         ss << "ECF_INCLUDE/ECF_HOME not specified, for task " << node->absNodePath() << " at " << line;
+         errormsg += ss.str();
+         return string();
+      }
+
+      ecf_include += '/';
+      ecf_include += the_include_file;
+
+      return ecf_include;
+   }
+   else if ( includedFile[0] == '"' ) {
+
+      // we have two forms: "head.h" & "../head.h"
+
+      //  ECFLOW-274 need to allow:
+      //     - %include "../fred.h"     # this one directory up
+      //     - %include "./fred.h"      # this is at the same level as script
+      std::string path;
+      if ( includedFile.find("./") == 1 || includedFile.find("../") == 1) {
+         // remove the leading and trailing '"'
+         std::string the_included_file = includedFile;
+         Str::removeQuotes(the_included_file);
+
+         // Get the root path, i.e. script_or_job_path() is of the form:
+         //    "/user/home/ma/mao/course/t1.ecf || /user/home/ma/mao/course/t1.job"
+         // we need "/user/home/ma/mao/course/"
+         std::string the_script_or_job_path = ecfile_->script_or_job_path();
+         std::string::size_type last_slash = the_script_or_job_path.rfind("/");
+         if (last_slash != std::string::npos) {
+            path = the_script_or_job_path.substr( 0, last_slash + 1 );
+            path += the_included_file;
+            // std::cout << "path == " << path << "\n";
+            return path;
+         }
+      }
+
+      // include contents of %ECF_HOME%/%SUITE%/%FAMILY%/filename
+      node->findParentUserVariableValue( Str::ECF_HOME() , path);
+      if ( path.empty() ) {
+         ss << "ECF_HOME not specified, for task " << node->absNodePath() << " at " << line;
+         errormsg += ss.str();
+         return string();
+      }
+      path += '/';
+      std::string suite;
+      node->findParentVariableValue( "SUITE" , suite);   // SUITE is a generated variable
+      if ( suite.empty() ) {
+         ss << "SUITE not specified, for task " << node->absNodePath() << " at " << line;
+         errormsg += ss.str();
+         return string();
+      }
+      path += suite;
+      path += '/';
+      std::string family;
+      node->findParentVariableValue( "FAMILY" , family); // FAMILY is a generated variable
+      if ( family.empty() ) {
+         ss << "FAMILY not specified, for task " << node->absNodePath() << " at " << line;
+         errormsg += ss.str();
+         return string();
+      }
+      path += family;
+      path += '/';
+      path += the_include_file ; // "filename"
+      return path;
+   }
+
+   // File either has an absolute pathname or is in the current working dir.
+   // include file name as is, from current working directory
+   return includedFile;
+}
+
+// **********************************************************************************
+
+IncludeFileCache::IncludeFileCache(const std::string& path) : path_(path), fp_(path.c_str(), std::ios_base::in),no_of_lines_(0) {}
+
+IncludeFileCache::~IncludeFileCache() { fp_.close(); }
+
+bool IncludeFileCache::lines(std::vector<std::string>& lns) {
+   if ( !fp_ ) return false;
+
+   if (no_of_lines_ != 0 ) {
+      lns.reserve(no_of_lines_);
+      fp_.seekg(0);               // Using cache, reset pos back to 0
+   }
+
+   // Note if we use: while( getline( theEcfFile, line)), then we will miss the *last* *empty* line
+   string line;
+   while ( std::getline(fp_,line) ) { lns.push_back(line); }
+   fp_.clear();               // eol fp_ will be in bad state reset. So we can re-use
+   no_of_lines_ = lns.size(); // cache for next time
+
+   return true;
+}
diff --git a/ANode/src/EcfFile.hpp b/ANode/src/EcfFile.hpp
index c9ada94..bc7186e 100644
--- a/ANode/src/EcfFile.hpp
+++ b/ANode/src/EcfFile.hpp
@@ -14,8 +14,27 @@
 //
 // Description :
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <boost/noncopyable.hpp>
+#include "boost/filesystem/path.hpp"
+#include <boost/shared_ptr.hpp>
+#include <fstream>
 #include "NodeFwd.hpp"
 
+// This class is used to minimise file I/0.
+// When job processing the same include file can be opened and closed many time
+// This cache serves to open the include file only once. It halves the job processing time.
+class IncludeFileCache : private boost::noncopyable {
+public:
+   IncludeFileCache(const std::string& path);
+   ~IncludeFileCache();
+   const std::string& path() const { return path_;}
+   bool lines(std::vector<std::string>&);
+private:
+   std::string path_;
+   std::ifstream fp_;   // is not copy constructable
+   size_t no_of_lines_;
+};
+
 /// This class is used in the pre-processing of files( .ecf or .usr or .man typically)
 /// It is used to to create the job file.
 ///
@@ -26,6 +45,7 @@
 /// When returning the manual we pre-process the files first
 ///
 /// However for testing purpose this capability may be retained.
+
 class EcfFile {
 public:
    enum ScriptType { ECF_FILE,      // Look for .ecf file, uses default algorithm to find %includes
@@ -33,6 +53,9 @@ public:
                      ECF_SCRIPT_CMD // pre-process output of ECF_SCRIPT_CMD, uses default algorithm to find %includes
              };
 
+   EcfFile();
+	EcfFile& operator=(const EcfFile& rhs);
+
 	/// use default copy constructor, assignment, destructor
 	/// ECF_FETCH  is used obtain the script from running a command  i.e.
 	/// from the version control system. This has not been implemented yet.
@@ -77,14 +100,15 @@ public:
 	static void extract_used_variables(NameValueMap& used_variables_as_map,const std::vector<std::string> &script_lines);
 
 private:
+	friend class PreProcessor;
 	enum Type { SCRIPT, INCLUDE, MANUAL, COMMENT };
 	static std::string fileType(EcfFile::Type);
 
 	bool open_script_file(const std::string& file, EcfFile::Type, std::vector<std::string>& lines, std::string& errormsg) const;
-	bool preProcess(std::vector<std::string>& script_lines, std::string& errormsg);
+	bool open_include_file(const std::string& file,std::vector<std::string>& lines,std::string& errormsg) const;
+
 	bool replaceSmsChildCmdsWithEcf(const std::string& clientPath, std::string& errormsg);
-	std::string getIncludedFilePath( const std::string& include, const std::string& line, std::string& errormsg);
- 	void variableSubstituition(JobsParam&);
+ 	void variableSubstitution(JobsParam&);
  	const std::string&  doCreateJobFile(JobsParam&) const;
  	bool doCreateManFile(std::string& errormsg);
  	bool extractManual(const std::vector< std::string >& lines, std::vector< std::string >& theManualLines, std::string& errormsg) const;
@@ -92,7 +116,7 @@ private:
  	void remove_nopp_end_tokens();
 
  	static int countEcfMicro(const std::string& line, const std::string& ecfMicro);
- 	static void dump_expanded_script_file(size_t i, const std::vector<std::string>& lines); // for DEBUG
+ 	static void dump_expanded_script_file(const std::vector<std::string>& lines); // for DEBUG
 
  	/// returns the extension, i.e for task->.ecf for alias->.usr, will throw if node_ is not task or alias
  	const std::string& get_extn() const;
@@ -113,6 +137,47 @@ private:
 	mutable std::string  job_size_;      // to be placed in log file during job submission
 	EcfFile::ScriptType    script_type_; // get script from a file, or from running a command
 	std::vector<std::string> jobLines_;  // Lines that will form the job file.
+	mutable std::vector< boost::shared_ptr<IncludeFileCache> > include_file_cache_; // only open include file once
+};
+
+
+// This class is used in expanding(pre-processing) the includes.
+// The pre-processing is done in a depth first fashion (ECFLOW-673)
+class PreProcessor : private boost::noncopyable {
+public:
+   PreProcessor(EcfFile*);
+   ~PreProcessor();
+
+   bool preProcess(std::vector<std::string>& script_lines );
+   const std::string& error_msg() const { return error_msg_;}
+
+private:
+   // include pre-processing on the included file.
+   // Note: include directives _in_ manual/comment should he handled.
+   //       only include directives in %nopp/%end are ignored
+   void preProcess_line(const std::string& script_line );
+   void preProcess_includes(const std::string& script_line);
+   std::string getIncludedFilePath( const std::string& include, const std::string& line, std::string& errormsg);
+
+private:
+   EcfFile* ecfile_;
+
+   bool nopp_;
+   bool comment_;
+   bool manual_;
+
+   std::string pp_nopp_;
+   std::string pp_comment_;
+   std::string pp_manual_;
+   std::string pp_end_;
+   std::string ecf_micro_;                 // constant until ecfmicro changes, then reset
+
+   std::string error_msg_;
+   std::vector<std::string>& jobLines_;
+   std::vector<std::string> tokens_;       // re-use to save memory
+
+   std::vector<std::pair<std::string,int> > globalIncludedFileSet_;// test for recursive includes, <no _of times it was included>
+   std::vector<std::string> include_once_set_;
 };
 
 #endif
diff --git a/ANode/src/ExprAst.cpp b/ANode/src/ExprAst.cpp
index 94bc3a2..833e8e6 100644
--- a/ANode/src/ExprAst.cpp
+++ b/ANode/src/ExprAst.cpp
@@ -22,6 +22,7 @@
 #include "Node.hpp"
 #include "Log.hpp"
 #include "Str.hpp"
+#include "Cal.hpp"
 
 using namespace ecf;
 using namespace std;
@@ -801,6 +802,75 @@ void AstLeaf::accept(ExprAstVisitor& v)
 }
 
 ///////////////////////////////////////////////////////////////////////////////////
+
+void AstFunction::accept(ecf::ExprAstVisitor& v)
+{
+   v.visitFunction(this); // Not calling base
+}
+
+AstFunction* AstFunction::clone() const
+{
+   return new AstFunction( ft_, arg()->clone() );
+}
+
+static int digits_in_integer(int number)
+{
+    int digits = 0;
+    if (number < 0) digits = 1; // remove this line if '-' counts as a digit
+    while (number) {
+        number /= 10;
+        digits++;
+    }
+    return digits;
+}
+
+int AstFunction::value() const {
+   int arg_eval = arg_->value();
+
+   switch (ft_) {
+      case AstFunction::DATE_TO_JULIAN: {
+         // cope with 8 digit, yyyymmdd and 10 digit yyyymmddhh
+         int integer_digits = digits_in_integer(arg_eval);
+         if (integer_digits == 10  ) arg_eval = arg_eval/100 ;
+         else if (integer_digits != 8 ) return 0;
+         return Cal::date_to_julian( arg_eval );}
+      case AstFunction::JULIAN_TO_DATE:
+         return Cal::julian_to_date( arg_eval );
+      default: assert(false);
+   }
+   return 0;
+}
+
+std::ostream& AstFunction::print(std::ostream& os) const {
+   Indentor in;
+   switch (ft_) {
+      case AstFunction::DATE_TO_JULIAN: return Indentor::indent( os ) << "# DATE_TO_JULIAN " << value() << "\n";
+      case AstFunction::JULIAN_TO_DATE: return Indentor::indent( os ) << "# JULIAN_TO_DATE " << value() << "\n";
+      default: assert(false);
+   }
+   return os;
+}
+
+void AstFunction::print_flat(std::ostream& os,bool add_brackets) const {
+   switch (ft_) {
+      case AstFunction::DATE_TO_JULIAN: os << "date_to_julian(arg:" << arg_->value() << ") = " << value(); break;
+      case AstFunction::JULIAN_TO_DATE: os << "julian_to_date(arg:" << arg_->value() << ") = " << value(); break;
+      default: assert(false);
+   }
+}
+
+std::string AstFunction::expression(bool why) const
+{
+   std::stringstream ss;
+   switch (ft_) {
+      case AstFunction::DATE_TO_JULIAN: ss << "date_to_julian( arg:" << arg_->expression(why) << ") = " << value(); break;
+      case AstFunction::JULIAN_TO_DATE: ss << "julian_to_date( arg:" << arg_->expression(why) << ") = " << value(); break;
+      default: assert(false);
+   }
+   return ss.str();
+}
+
+///////////////////////////////////////////////////////////////////////////////////
 void AstInteger::accept(ExprAstVisitor& v)
 {
 	v.visitInteger(this); // Not calling base
@@ -830,43 +900,6 @@ std::string AstInteger::expression(bool /*why*/) const
 
 //////////////////////////////////////////////////////////////////////////////////
 
-void AstString::accept(ExprAstVisitor& v)
-{
-	v.visitString(this); // Not calling base
-}
-
-AstString* AstString::clone() const
-{
-   return new AstString(value_);
-}
-
-std::ostream& AstString::print( std::ostream& os ) const {
-	Indentor in;
-	return Indentor::indent( os ) << "# LEAF_STRING " << value_ << " value() = " << value() << "\n";
-}
-void AstString::print_flat(std::ostream& os,bool /*add_bracket*/) const {
-   os << value_;
-}
-
-std::string AstString::expression(bool /*why*/) const
-{
-	return value_;
-}
-
-int AstString::value() const
-{
-	if (value_ == Event::SET()) {    // allow us to compare with a event and a string
-		return 1;
-	}
-	if (value_ == Event::CLEAR()) {  // allow us to compare with a event and a string
-		return 0;
-	}
-	// see if the value is convertible to a integer
-	return Str::to_int( value_, 0/* value to return if conversion fails*/);
-}
-
-////////////////////////////////////////////////////////////////////////////////////
-
 void AstNodeState::accept(ExprAstVisitor& v)
 {
 	v.visitNodeState(this);  // Not calling base
@@ -1139,7 +1172,7 @@ VariableHelper::VariableHelper(const AstVariable* astVariable, std::string& erro
 	}
 	LOG_ASSERT(errorMsg.empty(),""); // when a reference node is found, the error msg should be empty
 
-	// Find in order, event, meter, user variable, repeat, generated variable
+	// Find in order, event, meter, user variable, repeat, generated variable, limit
 	// ALSO: if meter or event mark as used in trigger, for simulator
  	if (theReferenceNode_->findExprVariable( astVariable_->name() ) ) {
 		return;
@@ -1149,7 +1182,7 @@ VariableHelper::VariableHelper(const AstVariable* astVariable, std::string& erro
 	ss << "From expression Variable " << astVariable_->nodePath() << Str::COLON() << astVariable_->name() ;
 	ss << " the referenced node is " << theReferenceNode_->debugNodePath() << "\n";
 	errorMsg += ss.str();
-	errorMsg += "Could not find event, meter, variable, repeat, or generated variable of name('";
+	errorMsg += "Could not find event, meter, variable, repeat, generated variable, or limit of name('";
 	errorMsg += astVariable_->name();
 	errorMsg += "') on node ";
 	errorMsg += theReferenceNode_->debugNodePath();
@@ -1231,7 +1264,6 @@ std::ostream& operator<<( std::ostream& os, const AstGreaterThan& d ) {return d.
 std::ostream& operator<<( std::ostream& os, const AstLessThan& d )    {return d.print( os );}
 std::ostream& operator<<( std::ostream& os, const AstLeaf& d )      {return d.print( os );}
 std::ostream& operator<<( std::ostream& os, const AstInteger& d)    {return d.print( os );}
-std::ostream& operator<<( std::ostream& os, const AstString& d)    {return d.print( os );}
 std::ostream& operator<<( std::ostream& os, const AstNodeState& d)  {return d.print( os );}
 std::ostream& operator<<( std::ostream& os, const AstEventState& d) {return d.print( os );}
 std::ostream& operator<<( std::ostream& os, const AstNode& d ) {return d.print( os );}
diff --git a/ANode/src/ExprAst.hpp b/ANode/src/ExprAst.hpp
index 7a9ecbf..0d7cd87 100644
--- a/ANode/src/ExprAst.hpp
+++ b/ANode/src/ExprAst.hpp
@@ -34,14 +34,17 @@ public:
 
 	virtual void accept(ecf::ExprAstVisitor&) = 0;
    virtual Ast* clone() const = 0;
+   virtual bool is_variable() const { return false; }
+   virtual bool is_not() const { return false; }
+   virtual bool isleaf() const { return false; }
+	virtual bool isRoot() const { return false; }
+   virtual AstTop* isTop() const { return NULL; }
+   virtual bool is_evaluateable() const { return false; }
 
 	virtual void addChild(Ast*) {}
 	virtual Ast* left() const { return NULL;}
 	virtual Ast* right() const { return NULL;}
 	virtual bool evaluate() const { assert(false); return false;}
-	virtual bool isleaf() const { return false; }
-	virtual bool isRoot() const { return false; }
-	virtual AstTop* isTop() const { return NULL; }
 	virtual bool empty() const { return true; }
    virtual int value() const { assert(false); return 0;} // only valid for leaf or operators
    virtual bool check(std::string& error_msg) const { return true; } // check divide or modulo by zero
@@ -91,12 +94,15 @@ private:
 	std::string exprType_; // trigger or complete
 };
 
-// This if one of AND, OR, == != <= >=
+// This if one of AND, OR, == != <= >= +, -,*,!,%,/
 class AstRoot : public Ast {
 public:
    AstRoot() :left_(NULL), right_(NULL) {}
 	virtual ~AstRoot();
 
+ 	virtual bool isRoot() const { return true;}
+   virtual bool is_evaluateable() const { return true; }
+
    virtual bool check(std::string& error_msg) const;
 	virtual void accept(ecf::ExprAstVisitor&);
 	virtual void addChild(Ast* n);
@@ -104,7 +110,6 @@ public:
  	virtual Ast* right() const { return right_;}
 	virtual std::ostream& print(std::ostream& os) const;
 	virtual bool why(std::string& theReasonWhy) const;
- 	virtual bool isRoot() const { return true;}
 	virtual bool empty() const { return (left_ && right_) ? false : true ; }
 	virtual void setParentNode(Node*);
 
@@ -119,6 +124,7 @@ public:
 	AstNot() : name_("! ") {}
 	virtual void accept(ecf::ExprAstVisitor&);
    virtual AstNot* clone() const;
+   virtual bool is_not() const { return true;}
 
 	virtual bool evaluate() const { assert(!right_);  return ! left_->evaluate();}
 	virtual int value() const {  assert(!right_);     return ! left_->value();}
@@ -327,11 +333,39 @@ public:
 	virtual bool isleaf() const { return true; }
 };
 
+class AstFunction : public AstLeaf {
+public:
+   enum FuncType { DATE_TO_JULIAN, JULIAN_TO_DATE };
+   AstFunction(FuncType ft, Ast* arg) : ft_(ft), arg_(arg) { assert(arg_);}
+   ~AstFunction() { delete arg_;}
+
+   virtual bool is_evaluateable() const { return true; }
+   virtual bool evaluate() const { return value() != 0 ? true: false; }
+
+   virtual void accept(ecf::ExprAstVisitor&);
+   virtual AstFunction* clone() const;
+   virtual int value() const;
+   virtual std::ostream& print(std::ostream& os) const;
+   virtual void print_flat(std::ostream&,bool add_brackets = false) const;
+   virtual std::string type() const { return stype();}
+   virtual std::string expression(bool why = false) const;
+   static std::string stype() { return "AstFunction";}
+
+   Ast* arg() const { return arg_;}
+   FuncType ft() const { return ft_;}
+private:
+   FuncType ft_;
+   Ast* arg_;
+};
+
+
 class AstInteger : public AstLeaf {
 public:
 	AstInteger(int value) : value_(value) {}
 
+   virtual bool is_evaluateable() const { return true; }
 	virtual bool evaluate() const {  return value_; } // -1 -2 1 2 3 evaluates to true, 0 returns false
+
 	virtual void accept(ecf::ExprAstVisitor&);
    virtual AstInteger* clone() const;
  	virtual int value() const {  return value_;}
@@ -344,22 +378,6 @@ private:
 	int value_;
 };
 
-class AstString : public AstLeaf {
-public:
-	AstString(const std::string& s) : value_(s) {}
-
-	virtual void accept(ecf::ExprAstVisitor&);
-   virtual AstString* clone() const;
- 	virtual int value() const;
- 	virtual std::ostream& print(std::ostream& os) const;
-   virtual void print_flat(std::ostream&,bool add_brackets = false) const;
-	virtual std::string type() const { return stype();}
-	virtual std::string expression(bool why = false) const;
-	static std::string stype() { return "string";}
-private:
-	std::string value_;
-};
-
 
 class AstNodeState : public AstLeaf {
 public:
@@ -436,11 +454,21 @@ private:
 ///     user variable,
 ///     repeat  variable, for enumerated/string we use the positional value
 ///     generated variable
+/// ** IT is treated in a same as an integer, and can appear in that context
+//  ** i.e  "2 == (((/seasplots/lag:YMD / 100 ) % 100) % 3"
 class AstVariable : public AstLeaf {
 public:
 	AstVariable(const std::string& nodePath, const std::string& variablename)
 	: parentNode_(NULL), nodePath_(nodePath), name_(variablename)  {}
 
+   virtual bool is_variable() const { return true; }
+
+	// although AstVariable is leaf, However allow to evaluate to cope with
+   //     ( ../family1/a:myMeter >= 20 and ../family1/a:myEvent)
+	// Treat this like an integer
+   virtual bool is_evaluateable() const { return true; }
+   virtual bool evaluate() const { return value() != 0 ? true: false; }
+
  	virtual void accept(ecf::ExprAstVisitor&);
    virtual AstVariable* clone() const;
 	virtual int value() const;
@@ -511,7 +539,6 @@ std::ostream& operator<<(std::ostream& os, const AstGreaterThan&);
 std::ostream& operator<<(std::ostream& os, const AstLessThan&);
 std::ostream& operator<<(std::ostream& os, const AstLeaf&);
 std::ostream& operator<<(std::ostream& os, const AstInteger&);
-std::ostream& operator<<(std::ostream& os, const AstString&);
 std::ostream& operator<<(std::ostream& os, const AstNodeState&);
 std::ostream& operator<<(std::ostream& os, const AstEventState&);
 std::ostream& operator<<(std::ostream& os, const AstNode&);
diff --git a/ANode/src/ExprAstVisitor.hpp b/ANode/src/ExprAstVisitor.hpp
index 4e6670c..f7cfe20 100644
--- a/ANode/src/ExprAstVisitor.hpp
+++ b/ANode/src/ExprAstVisitor.hpp
@@ -39,7 +39,7 @@ class AstLessThan;
 class AstGreaterThan;
 class AstLeaf;
 class AstInteger;
-class AstString;
+class AstFunction;
 class AstNodeState;
 class AstEventState;
 class AstNode;
@@ -68,8 +68,8 @@ public:
  	virtual void visitGreaterThan(AstGreaterThan*) = 0;
  	virtual void visitLessThan(AstLessThan*) = 0;
  	virtual void visitLeaf(AstLeaf*) = 0;
- 	virtual void visitInteger(AstInteger*) = 0;
- 	virtual void visitString(AstString*) = 0;
+   virtual void visitInteger(AstInteger*) = 0;
+   virtual void visitFunction(AstFunction*) = 0;
  	virtual void visitNodeState(AstNodeState*) = 0;
  	virtual void visitEventState(AstEventState*) = 0;
  	virtual void visitNode(AstNode*) = 0;
@@ -101,7 +101,7 @@ public:
  	virtual void visitLessThan(AstLessThan*){}
  	virtual void visitLeaf(AstLeaf*){}
  	virtual void visitInteger(AstInteger*){}
- 	virtual void visitString(AstString*){}
+   virtual void visitFunction(AstFunction*){}
  	virtual void visitNodeState(AstNodeState*){}
  	virtual void visitEventState(AstEventState*){}
  	virtual void visitNode(AstNode*);
@@ -135,7 +135,7 @@ public:
  	virtual void visitLessThan(AstLessThan*){}
  	virtual void visitLeaf(AstLeaf*){}
  	virtual void visitInteger(AstInteger*){}
- 	virtual void visitString(AstString*){}
+   virtual void visitFunction(AstFunction*){}
  	virtual void visitNodeState(AstNodeState*){}
  	virtual void visitEventState(AstEventState*){}
  	virtual void visitNode(AstNode*);
diff --git a/ANode/src/ExprParser.cpp b/ANode/src/ExprParser.cpp
index ebc2bc7..dd045b9 100644
--- a/ANode/src/ExprParser.cpp
+++ b/ANode/src/ExprParser.cpp
@@ -51,6 +51,7 @@
 #include "Indentor.hpp"
 #include "Log.hpp"
 #include "Str.hpp"
+#include "NodeAttr.hpp"
 
 // Reference
 //‘*’   Zero or more
@@ -75,59 +76,68 @@ typedef treematch_t::tree_iterator tree_iter_t;
 
 struct ExpressionGrammer : public grammar<ExpressionGrammer>
 {
-	// The parser object is copied a lot, so only use reference/pointer variables as data members
-	ExpressionGrammer(){}
-	~ExpressionGrammer(){}
-
-	static const int integer_ID  = 1;
-	static const int dot_path_ID = 2;
-	static const int equal_1_ID  = 3;
-	static const int equal_2_ID  = 4;
-	static const int not_equal_1_ID = 5;
-	static const int not_equal_2_ID = 6;
-	static const int node_name_ID   = 7;
-	static const int greater_equals_1_ID = 8;
-	static const int greater_equals_2_ID = 9;
-	static const int less_equals_1_ID   = 10;
-	static const int less_equals_2_ID   = 11;
-	static const int less_than_1_ID     = 12;
-	static const int less_than_2_ID     = 13;
-	static const int greater_than_1_ID  = 14;
-	static const int greater_than_2_ID  = 15;
+   // The parser object is copied a lot, so only use reference/pointer variables as data members
+   ExpressionGrammer(){}
+   ~ExpressionGrammer(){}
+
+   static const int integer_ID  = 1;
+   static const int dot_path_ID = 2;
+   static const int equal_1_ID  = 3;
+   static const int equal_2_ID  = 4;
+   static const int not_equal_1_ID = 5;
+   static const int not_equal_2_ID = 6;
+   static const int node_name_ID   = 7;
+   static const int greater_equals_1_ID = 8;
+   static const int greater_equals_2_ID = 9;
+   static const int less_equals_1_ID   = 10;
+   static const int less_equals_2_ID   = 11;
+   static const int less_than_1_ID     = 12;
+   static const int less_than_2_ID     = 13;
+   static const int greater_than_1_ID  = 14;
+   static const int greater_than_2_ID  = 15;
 	static const int node_state_unknown_ID    = 16;
 
- 	static const int node_state_complete_ID   = 18;
-	static const int node_state_queued_ID     = 19;
-	static const int node_state_submitted_ID  = 20;
-	static const int node_state_active_ID     = 21;
-	static const int node_state_aborted_ID    = 22;
-	static const int not1_ID           = 23;
+   static const int node_state_complete_ID   = 18;
+   static const int node_state_queued_ID     = 19;
+   static const int node_state_submitted_ID  = 20;
+   static const int node_state_active_ID     = 21;
+   static const int node_state_aborted_ID    = 22;
+
+   static const int not1_ID           = 23;
    static const int not2_ID          = 24;
    static const int not3_ID          = 25;
-	static const int and_ID           = 26;
-	static const int or_ID            = 27;
-	static const int event_ID         = 28;
- 	static const int dot_dot_path_ID     = 29;
-	static const int event_name_ID       = 30;
- 	static const int base_trigger_ID     = 31;
-	static const int sub_expression_ID   = 32;
-	static const int grouping_ID         = 33;
-	static const int node_path_state_ID  = 34;
-	static const int absolute_path_ID    = 35;
-	static const int some_string_ID      = 36;
-	static const int variable_ID         = 37;
-	static const int variable_path_ID    = 38;
-	static const int normal_variable_path_ID   = 39;
-	static const int grouped_variable_path_ID  = 40;
-	static const int variable_expression_ID    = 41;
-	static const int plus_ID      = 42;
-	static const int minus_ID     = 43;
-	static const int multiply_ID  = 44;
+   static const int and_ID           = 26;
+   static const int or_ID            = 27;
+   static const int dot_dot_path_ID     = 29;
+   static const int base_trigger_ID     = 31;
+   static const int sub_expression_ID   = 32;
+   static const int node_path_state_ID  = 34;
+   static const int absolute_path_ID    = 35;
+	static const int event_state_ID      = 36;
+   static const int variable_ID         = 37;
+   static const int plus_ID      = 42;
+   static const int minus_ID     = 43;
+   static const int multiply_ID  = 44;
    static const int divide_ID    = 45;
    static const int modulo_ID    = 46;
+   static const int calc_expression_ID    = 47;
+   static const int calc_factor_ID    = 48;
+   static const int calc_term_ID   = 49;
+   static const int calc_grouping_ID   = 50;
+   static const int calc_subexpression_ID   = 51;
+   static const int basic_variable_path_ID   = 52;
+   static const int compare_expression_ID   = 53;
+
+   static const int cal_date_to_julian_ID   = 54;
+   static const int cal_julian_to_date_ID   = 55;
+   static const int cal_argument_ID   = 56;
 
     template <typename ScannerT>
     struct definition {
+       rule<ScannerT,parser_tag<cal_date_to_julian_ID> > cal_date_to_julian;
+       rule<ScannerT,parser_tag<cal_julian_to_date_ID> > cal_julian_to_date;
+        rule<ScannerT,parser_tag<cal_argument_ID> > cal_argument;
+
         rule<ScannerT,parser_tag<integer_ID> > integer;
         rule<ScannerT,parser_tag<plus_ID> > plus;
         rule<ScannerT,parser_tag<minus_ID> > minus;
@@ -163,29 +173,27 @@ struct ExpressionGrammer : public grammar<ExpressionGrammer>
         rule<ScannerT,parser_tag<not3_ID> >   not3_r;
         rule<ScannerT,parser_tag<and_ID> >   and_r;
         rule<ScannerT,parser_tag<or_ID> >    or_r;
-        rule<ScannerT,parser_tag<event_ID> > event;
 
         rule<ScannerT,parser_tag<dot_path_ID> >      dotpath;
         rule<ScannerT,parser_tag<dot_dot_path_ID> >  dotdotpath;
         rule<ScannerT,parser_tag<absolute_path_ID> > absolutepath;
-        rule<ScannerT,parser_tag<event_name_ID> >    eventname;
 
-        rule<ScannerT,parser_tag<base_trigger_ID> >     baseTrigger;
-        rule<ScannerT,parser_tag<sub_expression_ID> >   subexpression;
-        rule<ScannerT,parser_tag<grouping_ID> >         grouping;
         rule<ScannerT,parser_tag<node_path_state_ID> >  nodepathstate;
 
-        rule<ScannerT,parser_tag<some_string_ID> >   some_string;
+        rule<ScannerT,parser_tag<event_state_ID> >   event_state;
         rule<ScannerT,parser_tag<variable_ID> >      variable;
-        rule<ScannerT,parser_tag<variable_path_ID> > variable_path;
-        rule<ScannerT,parser_tag<normal_variable_path_ID> >  normal_variable_path;
-        rule<ScannerT,parser_tag<grouped_variable_path_ID> > grouped_variable_path;
-        rule<ScannerT,parser_tag<variable_expression_ID> >   variable_expression;
 
-        rule<ScannerT> not_r,less_than_comparable,expression,andExpr,orExpr,operators;
-        rule<ScannerT> nodestate, equality_comparible, and_or, nodepath ;
-        rule<ScannerT> andsubexpression, orsubexpression,integerComparison,notGrouping ;
+        rule<ScannerT,parser_tag<calc_expression_ID> >   calc_expression;
+        rule<ScannerT,parser_tag<calc_factor_ID> >   calc_factor;
+        rule<ScannerT,parser_tag<calc_term_ID> >   calc_term;
+        rule<ScannerT,parser_tag<calc_grouping_ID> >   calc_grouping;
+        rule<ScannerT,parser_tag<calc_subexpression_ID> >   calc_subexpression;
+        rule<ScannerT,parser_tag<basic_variable_path_ID> >   basic_variable_path;
+        rule<ScannerT,parser_tag<compare_expression_ID> >   compare_expression;
 
+        rule<ScannerT> not_r,less_than_comparable,expression,andExpr,operators;
+        rule<ScannerT> nodestate, equality_comparible, and_or, nodepath ;
+  
         //        ‘*’   Zero or more
         //        ‘!’   Zero or one
         //        ‘+’   One or more
@@ -194,197 +202,186 @@ struct ExpressionGrammer : public grammar<ExpressionGrammer>
         //        ‘-‘   not
         definition(ExpressionGrammer const& /*self*/)
         {
-        	 nodename
+          nodename
                 = leaf_node_d[
-								  lexeme_d [ (alnum_p || ch_p('_')) >> *(alnum_p || ch_p('_'))  ]
+                          lexeme_d [ (alnum_p || ch_p('_')) >> *(alnum_p || ch_p('_'))  ]
                              ]
                 ;
 
-        	 // Can be /suite/family/task
-        	 //        family/task
-        	 //        family
-        	 absolutepath
-				 = 	leaf_node_d[
-								!(str_p("/")) >> nodename
-        									  >> *(
-        											+ str_p("/")  >> nodename
-        										  )
-        				   	  ]
-        		;
-        	 dotdotpath  // a kind of relative path
-				 = 	leaf_node_d[
-									str_p("..")
-									>> *(
-											+ str_p("/") >> str_p("..")
-										)
-									>> +(
-											+ str_p("/")  >> nodename
-										)
-				   	           ]
-				  ;
-        	 dotpath = leaf_node_d[ str_p(".") >> +( str_p("/") >> nodename) ];
-        	 nodepath =  absolutepath | dotdotpath | dotpath  ;
-
-        	 // Integer is distinct from task/family names that are integers, since nodes with integer
-        	 // names that occur in trigger/complete expression must have path ./0 ./1
-        	 integer  =   leaf_node_d[  uint_p  ];
-        	 plus = root_node_d [ str_p("+") ];
-        	 minus = root_node_d [ str_p("-") ];
-        	 divide = root_node_d [ str_p("/") ];
+          // Can be /suite/family/task ||  family/task ||   family
+          absolutepath
+             =    leaf_node_d[
+                        !(str_p("/")) >> nodename
+                                   >> *(
+                                         + str_p("/")  >> nodename
+                                       )
+                             ]
+            ;
+          dotdotpath  // a kind of relative path
+             =    leaf_node_d[
+                           str_p("..")
+                           >> *(
+                                 + str_p("/") >> str_p("..")
+                               )
+                           >> +(
+                                 + str_p("/")  >> nodename
+                               )
+                            ]
+              ;
+          dotpath = leaf_node_d[ str_p(".") >> +( str_p("/") >> nodename) ];
+          nodepath =  absolutepath | dotdotpath | dotpath  ;
+
+          // Integer is distinct from task/family names that are integers, since nodes with integer
+          // names that occur in trigger/complete expression must have path ./0 ./1
+          integer  =   leaf_node_d[  uint_p  ];
+          plus = root_node_d [ str_p("+") ];
+          minus = root_node_d [ str_p("-") ];
+          divide = root_node_d [ str_p("/") ];
           multiply = root_node_d [ str_p("*") ];
           modulo = root_node_d [ str_p("%") ];
-        	 operators = plus | minus | divide | multiply | modulo ;
-
-        	 equal_1 = root_node_d [ str_p("==") ];
-        	 equal_2 = root_node_d [ str_p("eq") ];
-        	 not_equal_1 = root_node_d [ str_p("!=") ];
-        	 not_equal_2 = root_node_d [ str_p("ne") ];
-        	 equality_comparible  = equal_1 | equal_2 | not_equal_2  | not_equal_1;
-
-        	 greater_equals_1 = root_node_d [ str_p(">=") ];
-        	 greater_equals_2 = root_node_d [ str_p("ge") ];
-        	 less_equals_1 = root_node_d [ str_p("<=") ];
-        	 less_equals_2 = root_node_d [ str_p("le") ];
-        	 less_than_1 = root_node_d [ str_p("<") ];
-        	 less_than_2 = root_node_d [ str_p("lt") ];
+          operators = plus | minus | divide | multiply | modulo ;
+
+          equal_1 = root_node_d [ str_p("==") ];
+          equal_2 = root_node_d [ str_p("eq") ];
+          not_equal_1 =  root_node_d [ str_p("!=") ] ;
+          not_equal_2 = root_node_d [ str_p("ne") ];
+          equality_comparible  = equal_1 | equal_2 | not_equal_2  | not_equal_1;
+
+          greater_equals_1 = root_node_d [ str_p(">=") ];
+          greater_equals_2 = root_node_d [ str_p("ge") ];
+          less_equals_1 = root_node_d [ str_p("<=") ];
+          less_equals_2 = root_node_d [ str_p("le") ];
+          less_than_1 = root_node_d [ str_p("<") ];
+          less_than_2 = root_node_d [ str_p("lt") ];
           greater_than_1 = root_node_d [ str_p(">") ];
           greater_than_2 = root_node_d [ str_p("gt") ];
           // Prioritise to most common first, to speed up parsing
-        	 less_than_comparable
-				 =  greater_equals_2
-				    | less_equals_2
-				    | greater_than_2
-				    | less_than_2
-				    | greater_equals_1
-				    | less_equals_1
-				    | less_than_1
-				    | greater_than_1
-				  ;
-
-        	 not1_r = root_node_d [ str_p("not ") ];
+          less_than_comparable
+             =  greater_equals_2
+                | less_equals_2
+                | greater_than_2
+                | less_than_2
+                | greater_equals_1
+                | less_equals_1
+                | less_than_1
+                | greater_than_1
+              ;
+
+          not1_r = root_node_d [ str_p("not ") ];
           not2_r = root_node_d [ str_p("~") ];
           not3_r = root_node_d [ str_p("!") ];
-        	 not_r = not1_r | not3_r | not2_r;
-
-        	 and_r = root_node_d [ str_p("and") ] || root_node_d [ str_p("&&") ] ;
-        	 or_r = root_node_d [ str_p("or") ]   || root_node_d [ str_p("||") ] ;
-        	 and_or =  and_r |  or_r;
-
-
-          eventname = leaf_node_d [ nodename ];
-        	 event
-				 =  nodepath
-				    >>  discard_node_d[ ch_p(':') ]
-				    >>  eventname
- 				  ;
-
-        	 some_string = leaf_node_d[ str_p("set") ] || leaf_node_d[ str_p("clear")] ;
-
-        	 variable = leaf_node_d [ nodename ];
-        	 normal_variable_path
-				 = nodepath
-				   >> discard_node_d[ ch_p(':') ]
-				   >> variable
-			      >> !(operators >> (integer | normal_variable_path))
-			     ;
-        	 grouped_variable_path
-				 =  discard_node_d[ ch_p('(') ]
-				    >> normal_variable_path
-				    >> discard_node_d[ ch_p(')') ]
-				 ;
-        	 variable_path = grouped_variable_path | normal_variable_path ;
-
-        	 variable_expression
-				  =   variable_path
- 					  >> ( less_than_comparable | equality_comparible  )
-					  >> !not_r
-					  >> ( variable_path | integer | some_string  )
-				  ;
-
-
-        	 node_state_unknown = root_node_d [ str_p("unknown") ];
+          not_r = not1_r | not3_r | not2_r;
+
+          and_r = root_node_d [str_p("and")] || root_node_d [str_p("&&")] || root_node_d [str_p("AND")];
+          or_r =  root_node_d [str_p("or") ] || root_node_d [str_p("||")] || root_node_d [str_p("OR")];
+          and_or =  and_r | or_r;
+
+        	 event_state = leaf_node_d[ str_p("set") ] || leaf_node_d[ str_p("clear")] ;
+
+          node_state_unknown = root_node_d [ str_p("unknown") ];
           node_state_complete = root_node_d [ str_p("complete") ];
-        	 node_state_queued = root_node_d [ str_p("queued") ];
-        	 node_state_submitted = root_node_d [ str_p("submitted") ];
-        	 node_state_active = root_node_d [ str_p("active") ];
-        	 node_state_aborted = root_node_d [ str_p("aborted") ];
-        	 nodestate
-				  =  node_state_complete
-				    | node_state_aborted
-				    | node_state_active
-				    | node_state_queued
-				    | node_state_submitted
- 				    | node_state_unknown
-				    ;
-        	  nodepathstate = nodepath >> equality_comparible >> nodestate;
-
-        	  integerComparison = integer >> ( less_than_comparable | equality_comparible) >> ( integer | variable_path );
-
-         	  baseTrigger
-				  =  !not_r
-				     >> (
-				    		nodepathstate
-				    		| variable_expression
-				    		| event                 // event if of the form  'a:name'
-				    		| integerComparison     // 1 eq 1
-				    	)
-				  ;
-        	  andExpr = baseTrigger >> and_r >> baseTrigger;
-        	  orExpr = baseTrigger >> or_r >> baseTrigger;
-
-        	  // We need to take special care so that 'and' has a higher priority then 'or'
-        	  andsubexpression = andExpr >> *(and_or >> subexpression);
-
-        	  orsubexpression =  baseTrigger >> +(or_r >> subexpression);
-
-        	  subexpression =  (andsubexpression |  orsubexpression | baseTrigger | notGrouping | integer)
-        	                   >> *(and_or >> subexpression );
-
-        	  grouping
-				  =  discard_node_d[ ch_p('(') ]
-				     >> subexpression
-				     >> discard_node_d[ ch_p(')') ]
-			      ;
-
-        	  notGrouping =  !not_r >> grouping >> *(and_or >> subexpression);
-        	  expression = ( notGrouping  | subexpression  ) >> end_p;
-
-              BOOST_SPIRIT_DEBUG_NODE(notGrouping);
-              BOOST_SPIRIT_DEBUG_NODE(expression);
-              BOOST_SPIRIT_DEBUG_NODE(andExpr);
-              BOOST_SPIRIT_DEBUG_NODE(not_r);
-              BOOST_SPIRIT_DEBUG_NODE(not1_r);
-              BOOST_SPIRIT_DEBUG_NODE(not2_r);
-              BOOST_SPIRIT_DEBUG_NODE(orExpr);
-              BOOST_SPIRIT_DEBUG_NODE(expression);
-              BOOST_SPIRIT_DEBUG_NODE(nodename);
-              BOOST_SPIRIT_DEBUG_NODE(nodepath);
-              BOOST_SPIRIT_DEBUG_NODE(dotdotpath);
-              BOOST_SPIRIT_DEBUG_NODE(dotpath);
-              BOOST_SPIRIT_DEBUG_NODE(absolutepath);
-              BOOST_SPIRIT_DEBUG_NODE(event);
-              BOOST_SPIRIT_DEBUG_NODE(less_than_comparable);
-              BOOST_SPIRIT_DEBUG_NODE(nodestate);
-              BOOST_SPIRIT_DEBUG_NODE(equality_comparible);
-              BOOST_SPIRIT_DEBUG_NODE(equal_1);
-              BOOST_SPIRIT_DEBUG_NODE(equal_2);
-              BOOST_SPIRIT_DEBUG_NODE(not_equal_1);
-              BOOST_SPIRIT_DEBUG_NODE(not_equal_2);
-              BOOST_SPIRIT_DEBUG_NODE(and_or);
-              BOOST_SPIRIT_DEBUG_NODE(operators);
-              BOOST_SPIRIT_DEBUG_NODE(baseTrigger);
-              BOOST_SPIRIT_DEBUG_NODE(subexpression);
-              BOOST_SPIRIT_DEBUG_NODE(andsubexpression);
-              BOOST_SPIRIT_DEBUG_NODE(orsubexpression);
-              BOOST_SPIRIT_DEBUG_NODE(grouping);
-              BOOST_SPIRIT_DEBUG_NODE(nodepathstate);
-              BOOST_SPIRIT_DEBUG_NODE(integer);
-              BOOST_SPIRIT_DEBUG_NODE(some_string);
-              BOOST_SPIRIT_DEBUG_NODE(variable);
-              BOOST_SPIRIT_DEBUG_NODE(variable_path);
-              BOOST_SPIRIT_DEBUG_NODE(variable_expression);
-              BOOST_SPIRIT_DEBUG_NODE(integerComparison);
-         };
+          node_state_queued = root_node_d [ str_p("queued") ];
+          node_state_submitted = root_node_d [ str_p("submitted") ];
+          node_state_active = root_node_d [ str_p("active") ];
+          node_state_aborted = root_node_d [ str_p("aborted") ];
+          nodestate
+              =  node_state_complete
+                | node_state_aborted
+                | node_state_queued
+                | node_state_active
+                | node_state_submitted
+                | node_state_unknown
+                ;
+
+          variable = leaf_node_d [ nodename ];
+          basic_variable_path = nodepath >> discard_node_d[ ch_p(':') ] >> variable ;
+
+          cal_argument = basic_variable_path | integer  ;
+          cal_date_to_julian
+             = str_p("cal::date_to_julian")
+                >>  discard_node_d[ ch_p('(')]
+                >> cal_argument
+                >> discard_node_d[ ch_p(')') ]
+             ;
+          cal_julian_to_date
+             = str_p("cal::julian_to_date")
+                >>  discard_node_d[ ch_p('(')]
+                >> cal_argument
+                >> discard_node_d[ ch_p(')') ]
+             ;
+
+          calc_factor
+               = integer
+                 | basic_variable_path
+                 | discard_node_d[ ch_p('(') ] >>  calc_expression >> discard_node_d[ ch_p(')') ]
+                 | root_node_d[operators] >>  calc_factor
+                 | cal_date_to_julian
+                 | cal_julian_to_date
+               ;
+          calc_term
+               = calc_factor
+                   >> *( root_node_d[operators] >> calc_factor )
+                 ;
+          calc_expression
+                 = calc_term
+                 >> *( root_node_d[operators] >> calc_term )
+                 ;
+
+          nodepathstate = nodepath >> equality_comparible >> nodestate;
+
+          compare_expression
+                 = nodepathstate |
+                   basic_variable_path >> equality_comparible >> event_state |
+                   root_node_d[
+                     calc_expression >> *(( equality_comparible | less_than_comparable) >> ( !not_r >> calc_expression))
+                   ]
+                 ;
+
+          // We need to take special care so that 'and' has a higher priority than 'or'
+          // (( This is done by have a custom rule for the and
+          andExpr = !not_r >> compare_expression >> *(and_r >> !not_r >> compare_expression) ;
+
+          calc_grouping = !not_r >> discard_node_d[ ch_p('(') ] >>  calc_subexpression >> discard_node_d[ ch_p(')') ];
+
+          calc_subexpression = ( andExpr | calc_grouping ) >> *( (and_r | or_r) >> calc_subexpression) ;
+
+          expression = calc_subexpression  >> end_p;
+
+          BOOST_SPIRIT_DEBUG_NODE(cal_argument);
+          BOOST_SPIRIT_DEBUG_NODE(cal_date_to_julian);
+          BOOST_SPIRIT_DEBUG_NODE(andExpr);
+          BOOST_SPIRIT_DEBUG_NODE(not_r);
+          BOOST_SPIRIT_DEBUG_NODE(not1_r);
+          BOOST_SPIRIT_DEBUG_NODE(not2_r);
+          BOOST_SPIRIT_DEBUG_NODE(expression);
+          BOOST_SPIRIT_DEBUG_NODE(nodename);
+          BOOST_SPIRIT_DEBUG_NODE(nodepath);
+          BOOST_SPIRIT_DEBUG_NODE(dotdotpath);
+          BOOST_SPIRIT_DEBUG_NODE(dotpath);
+          BOOST_SPIRIT_DEBUG_NODE(absolutepath);
+          BOOST_SPIRIT_DEBUG_NODE(less_than_comparable);
+          BOOST_SPIRIT_DEBUG_NODE(nodestate);
+          BOOST_SPIRIT_DEBUG_NODE(equality_comparible);
+          BOOST_SPIRIT_DEBUG_NODE(equal_1);
+          BOOST_SPIRIT_DEBUG_NODE(equal_2);
+          BOOST_SPIRIT_DEBUG_NODE(not_equal_1);
+          BOOST_SPIRIT_DEBUG_NODE(not_equal_2);
+          BOOST_SPIRIT_DEBUG_NODE(and_or);
+          BOOST_SPIRIT_DEBUG_NODE(plus);
+          BOOST_SPIRIT_DEBUG_NODE(minus);
+          BOOST_SPIRIT_DEBUG_NODE(divide);
+          BOOST_SPIRIT_DEBUG_NODE(multiply);
+          BOOST_SPIRIT_DEBUG_NODE(modulo);
+          BOOST_SPIRIT_DEBUG_NODE(nodepathstate);
+          BOOST_SPIRIT_DEBUG_NODE(integer);
+          BOOST_SPIRIT_DEBUG_NODE(event_state);
+          BOOST_SPIRIT_DEBUG_NODE(variable);
+          BOOST_SPIRIT_DEBUG_NODE(basic_variable_path);
+          BOOST_SPIRIT_DEBUG_NODE(calc_factor);
+          BOOST_SPIRIT_DEBUG_NODE(calc_expression);
+          BOOST_SPIRIT_DEBUG_NODE(calc_term);
+          BOOST_SPIRIT_DEBUG_NODE(compare_expression);
+        };
 
         rule<ScannerT> const& start() const { return expression; }
     };
@@ -396,8 +393,8 @@ void print(tree_parse_info<> info,
            const std::string& expr,
            const std::map< parser_id, std::string >& rule_names);
 
-AstTop* createAst( 	tree_parse_info< > info,
-					const std::string& expr,
+AstTop* createAst(   tree_parse_info< > info,
+               const std::string& expr,
 					const std::map< parser_id, std::string >& rule_names );
 
 /////////////////////////////////////////////////////////////////////////////////////////////
@@ -408,6 +405,10 @@ static std::map< parser_id, std::string > rule_names;
 static void populate_rule_names()
 {
    if (rule_names.empty()) {
+      rule_names[ExpressionGrammer::cal_date_to_julian_ID] = "cal_date_to_julian";
+      rule_names[ExpressionGrammer::cal_julian_to_date_ID] = "cal_julian_to_date";
+      rule_names[ExpressionGrammer::cal_argument_ID] = "cal_argument";
+      rule_names[ExpressionGrammer::modulo_ID] = "MODULO";
       rule_names[ExpressionGrammer::equal_1_ID] = "EQUALS";
       rule_names[ExpressionGrammer::equal_2_ID] = "EQUALS";
       rule_names[ExpressionGrammer::not_equal_1_ID] = "NOT_EQUAL";
@@ -433,113 +434,112 @@ static void populate_rule_names()
       rule_names[ExpressionGrammer::node_state_active_ID ] = "ACTIVE";
       rule_names[ExpressionGrammer::node_state_aborted_ID ] = "ABORTED";
       rule_names[ExpressionGrammer::integer_ID] = "INTEGER";
-      rule_names[ExpressionGrammer::event_ID ] = "EVENT";
       rule_names[ExpressionGrammer::dot_path_ID ] = "DOT_PATH";
       rule_names[ExpressionGrammer::dot_dot_path_ID ] = "DOT_DOT_PATH";
       rule_names[ExpressionGrammer::absolute_path_ID ] = "ABSOLUTE_PATH";
-      rule_names[ExpressionGrammer::event_name_ID ] = "EVENT_NAME";
 
       rule_names[ExpressionGrammer::base_trigger_ID  ] = "BASE_TRIGGER";
       rule_names[ExpressionGrammer::sub_expression_ID  ] = "SUB_EXPRESSION";
-      rule_names[ExpressionGrammer::grouping_ID  ] = "GROUPING";
       rule_names[ExpressionGrammer::node_path_state_ID  ] = "NODE_PATH_STATE";
 
-      rule_names[ExpressionGrammer::some_string_ID  ]   = "STRING";
+      rule_names[ExpressionGrammer::event_state_ID  ]   = "STRING";
       rule_names[ExpressionGrammer::variable_ID  ]      = "VARIABLE";
-      rule_names[ExpressionGrammer::variable_path_ID  ] = "VARIABLE_PATH";
-      rule_names[ExpressionGrammer::grouped_variable_path_ID  ] = "GROUPED_VARIABLE_PATH";
-      rule_names[ExpressionGrammer::normal_variable_path_ID  ] = "NORMAL_VARIABLE_PATH";
-      rule_names[ExpressionGrammer::variable_expression_ID  ] = "VARIABLE_EXPRESSION";
+
+      rule_names[ExpressionGrammer::calc_expression_ID  ] = "calc_expression_ID";
+      rule_names[ExpressionGrammer::calc_factor_ID  ] = "calc_factor_ID";
+      rule_names[ExpressionGrammer::calc_term_ID  ] = "calc_term_ID";
+      rule_names[ExpressionGrammer::calc_grouping_ID  ] = "calc_grouping_ID";
+      rule_names[ExpressionGrammer::calc_subexpression_ID  ] = "calc_subexpression_ID";
+      rule_names[ExpressionGrammer::basic_variable_path_ID  ] = "basic_variable_path_ID";
+      rule_names[ExpressionGrammer::compare_expression_ID  ] = "compare_expression_ID";
    }
 }
 
 bool ExprParser::doParse(std::string& errorMsg)
 {
-	if (expr_.empty()) {
-		errorMsg = "Expression is empty";
-		return false;
-	}
-
-	// =========================================================================
-	// For large designs > 90% of triggers are identical.
-	// We take advantage of this by only parsing the expression once
-	// and storing then Abstract Syntax tree( via cloning ) using a map
-	// This saves a huge amount of CPU time in re-parsing using spirit classic.
-	// =========================================================================
-	ast_ = ExprDuplicate::find(expr_);
-	if (ast_.get()) {
-		return true;
-	}
-
-	SimpleExprParser simpleParser(expr_);
-	if (simpleParser.doParse()) {
-	   ast_ = simpleParser.ast();
-	   ExprDuplicate::add(expr_,ast_.get());  // bypass spirit if same expression used
-	   return true;
-	}
-
-	// SPIRIT CLASSIC parsing: very slooooow....
-	ExpressionGrammer grammer;
+   if (expr_.empty()) {
+      errorMsg = "Expression is empty";
+      return false;
+   }
+
+   // =========================================================================
+   // For large designs > 90% of triggers are identical.
+   // We take advantage of this by only parsing the expression once
+   // and storing then Abstract Syntax tree( via cloning ) using a map
+   // This saves a huge amount of CPU time in re-parsing using spirit classic.
+   // =========================================================================
+   ast_ = ExprDuplicate::find(expr_);
+   if (ast_.get()) {
+      return true;
+   }
+
+   SimpleExprParser simpleParser(expr_);
+   if (simpleParser.doParse()) {
+      ast_ = simpleParser.ast();
+      ExprDuplicate::add(expr_,ast_.get());  // bypass spirit if same expression used
+      return true;
+   }
+
+   // SPIRIT CLASSIC parsing: very slooooow....
+   ExpressionGrammer grammer;
    BOOST_SPIRIT_DEBUG_NODE(grammer);
 
    // Use parser that generates a abstract syntax tree
    tree_parse_info<> info = ast_parse( expr_.c_str(), grammer, space_p);
    if (info.full) {
 
-	   populate_rule_names();
+      populate_rule_names();
 
 #if defined(BOOST_SPIRIT_DUMP_PARSETREE_AS_XML)
-		tree_to_xml( cout, info.trees, expr_.c_str(), rule_names );
+      tree_to_xml( cout, info.trees, expr_.c_str(), rule_names );
 #endif
 #if defined(PRINT_TREE)
-		print(info,expr_,rule_names);
+      print(info,expr_,rule_names);
 #endif
-		// Spirit has created a AST for us. However it is not use able as is
-		// we will traverse the AST and create our OWN  persist-able AST.
+      // Spirit has created a AST for us. However it is not use able as is
+      // we will traverse the AST and create our OWN
  		ast_.reset( createAst(info,expr_,rule_names) );
- 		if (ast_->empty())  errorMsg = "Abstract syntax tree creation failed";
- 		else {
- 		  ExprDuplicate::add(expr_,ast_.get());
- 		}
-		return errorMsg.empty();
- 	}
-	else {
-	   std::stringstream ss;
- 		ss << "Parsing failed\n";
-		ss << "length = " << std::dec << info.length << "\n";
-		ss << "stopped at: \": " << info.stop << "\"\n";
-		errorMsg = ss.str();
- 	}
-	return false;
+      if (ast_->empty())  errorMsg = "Abstract syntax tree creation failed";
+      else {
+        ExprDuplicate::add(expr_,ast_.get());
+      }
+      return errorMsg.empty();
+   }
+   else {
+      std::stringstream ss;
+      ss << "Parsing failed\n";
+      ss << "length = " << std::dec << info.length << "\n";
+      ss << "stopped at: \": " << info.stop << "\"\n";
+      errorMsg = ss.str();
+   }
+   return false;
 }
 
 
 // The evaluation function for the AST
 void do_print(const tree_iter_t& i,  const std::map< parser_id, std::string >& rule_names)
 {
-	Indentor in;
-	std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
-	if (iter != rule_names.end()) {
-		Indentor::indent(cout) << "Rule " << (*iter).second
-			<< "  " << string( i->value.begin(), i->value.end() ) << endl;
-	}
-	else {
-		Indentor::indent(cout) << "Unknown rule "
-			<< "  " << string( i->value.begin(), i->value.end() ) <<  endl;
-	}
-
-	Indentor in2;
- 	for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t) {
-		do_print( t, rule_names );
-	}
+   Indentor in;
+   std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
+   if (iter != rule_names.end()) {
+      Indentor::indent(cout) << "Rule " << (*iter).second << "(size:" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) << endl;
+   }
+   else {
+      Indentor::indent(cout) << "Unknown rule(id:" << i->value.id().to_long() << ")" << "(size:" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) <<  endl;
+   }
+
+   Indentor in2;
+   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t) { do_print( t, rule_names );  }
 }
 
 void print(tree_parse_info<> info,
            const std::string& expr,
            const std::map< parser_id, std::string >& rule_names)
 {
-	std::cout << "\nPRINT_TREE  " << expr << "\n";
-	do_print(info.trees.begin(),rule_names);
+   std::cout << "\nPRINT_TREE  " << expr << "\n";
+   do_print(info.trees.begin(),rule_names);
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////
@@ -547,101 +547,173 @@ void print(tree_parse_info<> info,
 AstRoot* createRootNode(const tree_iter_t& i,  const std::map< parser_id, std::string >& rule_names)
 {
 #if defined(PRINT_AST_TRAVERSAL)
- 	Indentor in;
-	std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
-	if (iter != rule_names.end()) {
-		Indentor::indent(cout) << "Root Rule " << (*iter).second
-			<< "  " << string( i->value.begin(), i->value.end() ) << endl;
-	}
-	else {
-		Indentor::indent(cout) << "Unknown root rule "
-			<< "  " << string( i->value.begin(), i->value.end() ) <<  endl;
-	}
+   Indentor in;
+   std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
+   if (iter != rule_names.end()) {
+      Indentor::indent(cout) << "Root Rule " << (*iter).second << "(" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) << endl;
+   }
+   else {
+      Indentor::indent(cout) << "Unknown root rule " << "(" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) <<  endl;
+   }
 #endif
 
-	if ( i->value.id() == ExpressionGrammer::equal_1_ID ) return new AstEqual();
-	if ( i->value.id() == ExpressionGrammer::equal_2_ID ) return new AstEqual();
-	if ( i->value.id() == ExpressionGrammer::and_ID ) return new AstAnd();
-	if ( i->value.id() == ExpressionGrammer::or_ID ) return new AstOr();
-	if ( i->value.id() == ExpressionGrammer::not1_ID ) return new AstNot();
-   if ( i->value.id() == ExpressionGrammer::not2_ID ) return new AstNot();
-   if ( i->value.id() == ExpressionGrammer::not3_ID ) return new AstNot();
-	if ( i->value.id() == ExpressionGrammer::plus_ID ) return new AstPlus();
-
-	if ( i->value.id() == ExpressionGrammer::not_equal_1_ID ) return new AstNotEqual();
-	if ( i->value.id() == ExpressionGrammer::not_equal_2_ID ) return new AstNotEqual();
-	if ( i->value.id() == ExpressionGrammer::greater_equals_1_ID ) return new AstGreaterEqual();
-	if ( i->value.id() == ExpressionGrammer::greater_equals_2_ID ) return new AstGreaterEqual();
-	if ( i->value.id() == ExpressionGrammer::less_equals_1_ID ) return new AstLessEqual();
-	if ( i->value.id() == ExpressionGrammer::less_equals_2_ID ) return new AstLessEqual();
-	if ( i->value.id() == ExpressionGrammer::less_than_1_ID ) return new AstLessThan();
-	if ( i->value.id() == ExpressionGrammer::less_than_2_ID ) return new AstLessThan();
-	if ( i->value.id() == ExpressionGrammer::greater_than_1_ID ) return new AstGreaterThan();
-	if ( i->value.id() == ExpressionGrammer::greater_than_2_ID ) return new AstGreaterThan();
-
-	if ( i->value.id() == ExpressionGrammer::minus_ID ) return new AstMinus();
-	if ( i->value.id() == ExpressionGrammer::multiply_ID ) return new AstMultiply();
+   if ( i->value.id() == ExpressionGrammer::equal_1_ID ) return new AstEqual();
+   if ( i->value.id() == ExpressionGrammer::equal_2_ID ) return new AstEqual();
+   if ( i->value.id() == ExpressionGrammer::and_ID ) return new AstAnd();
+   if ( i->value.id() == ExpressionGrammer::or_ID ) return new AstOr();
+   // Needed so that testing , when recreating expression uses same name for not.
+   if ( i->value.id() == ExpressionGrammer::not1_ID ) { AstNot* astnot = new AstNot(); astnot->set_root_name("not "); return astnot;}
+   if ( i->value.id() == ExpressionGrammer::not2_ID ) { AstNot* astnot = new AstNot(); astnot->set_root_name("~ "); return astnot;}
+   if ( i->value.id() == ExpressionGrammer::not3_ID ) { AstNot* astnot = new AstNot(); astnot->set_root_name("! "); return astnot;}
+   if ( i->value.id() == ExpressionGrammer::plus_ID ) return new AstPlus();
+
+   if ( i->value.id() == ExpressionGrammer::not_equal_1_ID ) return new AstNotEqual();
+   if ( i->value.id() == ExpressionGrammer::not_equal_2_ID ) return new AstNotEqual();
+   if ( i->value.id() == ExpressionGrammer::greater_equals_1_ID ) return new AstGreaterEqual();
+   if ( i->value.id() == ExpressionGrammer::greater_equals_2_ID ) return new AstGreaterEqual();
+   if ( i->value.id() == ExpressionGrammer::less_equals_1_ID ) return new AstLessEqual();
+   if ( i->value.id() == ExpressionGrammer::less_equals_2_ID ) return new AstLessEqual();
+   if ( i->value.id() == ExpressionGrammer::less_than_1_ID ) return new AstLessThan();
+   if ( i->value.id() == ExpressionGrammer::less_than_2_ID ) return new AstLessThan();
+   if ( i->value.id() == ExpressionGrammer::greater_than_1_ID ) return new AstGreaterThan();
+   if ( i->value.id() == ExpressionGrammer::greater_than_2_ID ) return new AstGreaterThan();
+
+   if ( i->value.id() == ExpressionGrammer::minus_ID ) return new AstMinus();
+   if ( i->value.id() == ExpressionGrammer::multiply_ID ) return new AstMultiply();
    if ( i->value.id() == ExpressionGrammer::divide_ID ) return new AstDivide();
    if ( i->value.id() == ExpressionGrammer::modulo_ID ) return new AstModulo();
-	LOG_ASSERT(false,"");
-	return NULL;
+   LOG_ASSERT(false,"");
+   return NULL;
+}
+
+//static bool is_node_state(const tree_iter_t& i) {
+//   if ( i->value.id() == ExpressionGrammer::node_state_unknown_ID  ) return true;
+//   if ( i->value.id() == ExpressionGrammer::node_state_complete_ID  ) return true;
+//   if ( i->value.id() == ExpressionGrammer::node_state_queued_ID  ) return true;
+//   if ( i->value.id() == ExpressionGrammer::node_state_submitted_ID  ) return true;
+//   if ( i->value.id() == ExpressionGrammer::node_state_active_ID  ) return true;
+//   if ( i->value.id() == ExpressionGrammer::node_state_aborted_ID  ) return true;
+//   return false;
+//}
+//static bool has_child_node_state(const tree_iter_t& i) {
+//   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t)  {
+//      if (is_node_state(t)) return true;
+//   }
+//   return false;
+//}
+//static bool has_child_event_state(const tree_iter_t& i) {
+//   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t)  {
+//      if ( t->value.id() == ExpressionGrammer::event_state_ID) return true;
+//   }
+//   return false;
+//}
+//static bool child_has_path(const tree_iter_t& i) {
+//   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t)  {
+//      if ( t->value.id() == ExpressionGrammer::dot_path_ID ) return true;
+//      if ( t->value.id() == ExpressionGrammer::dot_dot_path_ID ) return true;
+//      if ( t->value.id() == ExpressionGrammer::absolute_path_ID ) return true;
+//   }
+//   return false;
+//}
+//static bool is_comparable(const tree_iter_t& i) {
+//   if ( i->value.id() == ExpressionGrammer::equal_1_ID ) return true;
+//   if ( i->value.id() == ExpressionGrammer::equal_2_ID ) return true;
+//   if ( i->value.id() == ExpressionGrammer::not_equal_1_ID ) return true;
+//   if ( i->value.id() == ExpressionGrammer::not_equal_2_ID ) return true;
+//   return false;
+//}
+//static bool has_child_not(const tree_iter_t& i) {
+//   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t)  {
+//      if (is_not(t)) return true;
+//   }
+//   return false;
+//}
+
+static bool is_not(const tree_iter_t& i) {
+   if ( i->value.id() == ExpressionGrammer::not1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not3_ID ) return true;
+   return false;
+}
+static bool child_has(const tree_iter_t& i, int id) {
+   for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t)  {
+      if ( t->value.id() == id) return true;
+   }
+   return false;
+}
+static bool is_root_node(const tree_iter_t& i){
+   if ( i->value.id() == ExpressionGrammer::equal_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::equal_2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::and_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::or_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not3_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::plus_ID ) return true;
+
+   if ( i->value.id() == ExpressionGrammer::not_equal_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::not_equal_2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::greater_equals_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::greater_equals_2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::less_equals_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::less_equals_2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::less_than_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::less_than_2_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::greater_than_1_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::greater_than_2_ID ) return true;
+
+   if ( i->value.id() == ExpressionGrammer::minus_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::multiply_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::divide_ID ) return true;
+   if ( i->value.id() == ExpressionGrammer::modulo_ID ) return true;
+   return false;
 }
 
 Ast* createAst( const tree_iter_t& i, const std::map< parser_id, std::string >& rule_names ) {
 #if defined(PRINT_AST_TRAVERSAL)
-	Indentor in;
-	std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
-	if (iter != rule_names.end()) {
-		Indentor::indent(cout) << "Create AST Rule " << (*iter).second
-			<< "  '" << string( i->value.begin(), i->value.end() ) << "'\n";
-	}
-	else {
-		Indentor::indent(cout) << "Create AST Unknown rule "
-			<< "  '" << string( i->value.begin(), i->value.end() ) <<  "'\n";
-	}
+   Indentor in;
+   std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
+   if (iter != rule_names.end()) {
+      Indentor::indent(cout) << "Create AST Rule " << (*iter).second << "(" << i->children.size() << ")"
+         << "  '" << string( i->value.begin(), i->value.end() ) << "'\n";
+   }
+   else {
+      Indentor::indent(cout) << "Create AST Unknown rule " << "(" << i->children.size() << ")"
+         << "  '" << string( i->value.begin(), i->value.end() ) <<  "'\n";
+   }
 #endif
 
+   if ( i->value.id() == ExpressionGrammer::node_name_ID) {
 
-	if ( i->value.id() == ExpressionGrammer::node_name_ID) {
-
-	   string thevalue( i->value.begin(), i->value.end() );
-	   boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
-		LOG_ASSERT( !thevalue.empty(), "" );
-	 	return new AstNode( thevalue );
-	}
+      string thevalue( i->value.begin(), i->value.end() );
+      boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
+      LOG_ASSERT( !thevalue.empty(), "" );
+      return new AstNode( thevalue );
+   }
    else if ( i->value.id() == ExpressionGrammer::node_state_complete_ID) {
 
       return new AstNodeState( DState::COMPLETE );
    }
-	else if ( i->value.id() == ExpressionGrammer::normal_variable_path_ID) {
-
-		LOG_ASSERT((i->children.size() == 2 || i->children.size() == 4), "");
- 		tree_iter_t theNodePathIter = i->children.begin();
-		tree_iter_t theNameIter = i->children.begin()+1;
-
-		string nodePath( theNodePathIter->value.begin(), theNodePathIter->value.end() );
-		string name( theNameIter->value.begin(), theNameIter->value.end() );
-		boost::algorithm::trim(nodePath); // don't know why we get leading/trailing spaces
-		boost::algorithm::trim(name);     // don't know why we get leading/trailing spaces
-
-		if (  i->children.size() == 4) {
- 			AstRoot* operatorRoot = createRootNode(  i->children.begin()+2, rule_names  );
-			Ast* astInteger = createAst(i->children.begin()+3,  rule_names);
-
-			operatorRoot->addChild( new AstVariable( nodePath, name ));
-			operatorRoot->addChild(astInteger);
-			return operatorRoot;
-		}
+   else if ( i->value.id() == ExpressionGrammer::basic_variable_path_ID) {
+      LOG_ASSERT((i->children.size() == 2), "");
+      tree_iter_t theNodePathIter = i->children.begin();
+      tree_iter_t theNameIter = i->children.begin()+1;
 
- 		return new AstVariable( nodePath, name );
-	}
-	else if ( i->value.id() == ExpressionGrammer::dot_dot_path_ID) {
+      string nodePath( theNodePathIter->value.begin(), theNodePathIter->value.end() );
+      string name( theNameIter->value.begin(), theNameIter->value.end() );
+      boost::algorithm::trim(nodePath); // don't know why we get leading/trailing spaces
+      boost::algorithm::trim(name);     // don't know why we get leading/trailing spaces
+      return new AstVariable( nodePath, name );
+   }
+   else if ( i->value.id() == ExpressionGrammer::dot_dot_path_ID) {
 
-	   string thevalue( i->value.begin(), i->value.end() );
-	   boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
-		LOG_ASSERT( !thevalue.empty() , "");
-	 	return new AstNode( thevalue );
-	}
+      string thevalue( i->value.begin(), i->value.end() );
+      boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
+      LOG_ASSERT( !thevalue.empty() , "");
+      return new AstNode( thevalue );
+   }
    if ( i->value.id() == ExpressionGrammer::absolute_path_ID) {
 
       string thevalue( i->value.begin(), i->value.end() );
@@ -649,32 +721,21 @@ Ast* createAst( const tree_iter_t& i, const std::map< parser_id, std::string >&
       LOG_ASSERT( !thevalue.empty() ,"");
       return new AstNode( thevalue );
    }
-	else if ( i->value.id() == ExpressionGrammer::dot_path_ID) {
-
-	   string thevalue( i->value.begin(), i->value.end() );
-	   boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
-		LOG_ASSERT( !thevalue.empty() , "");
-	 	return new AstNode( thevalue );
-	}
-   else if ( i->value.id() == ExpressionGrammer::event_ID) {
-
-      LOG_ASSERT(i->children.size() >= 2, "");
-      tree_iter_t theNodePathIter = i->children.begin();
-      tree_iter_t theEventNameIter = i->children.begin()+1;
+   else if ( i->value.id() == ExpressionGrammer::dot_path_ID) {
 
-      string nodePath( theNodePathIter->value.begin(), theNodePathIter->value.end() );
-      string eventName( theEventNameIter->value.begin(), theEventNameIter->value.end() );
-      boost::algorithm::trim(nodePath);  // don't know why we get leading/trailing spaces
-      boost::algorithm::trim(eventName); // don't know why we get leading/trailing spaces
-
-      return new AstVariable( nodePath, eventName );
+      string thevalue( i->value.begin(), i->value.end() );
+      boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
+      LOG_ASSERT( !thevalue.empty() , "");
+      return new AstNode( thevalue );
    }
-	else if ( i->value.id() == ExpressionGrammer::some_string_ID) {
+	else if ( i->value.id() == ExpressionGrammer::event_state_ID) {
 
-	   string thevalue( i->value.begin(), i->value.end() );
-	   boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
- 		return new AstString(thevalue);
-	}
+      string thevalue( i->value.begin(), i->value.end() );
+      boost::algorithm::trim(thevalue); // don't know why we get leading/trailing spaces
+      if ( thevalue == Event::SET()) return new AstEventState(true);
+      assert(thevalue == Event::CLEAR());
+      return new AstEventState(false);
+   }
    else if ( i->value.id() == ExpressionGrammer::integer_ID) {
 
       string thevalue( i->value.begin(), i->value.end() );
@@ -682,38 +743,40 @@ Ast* createAst( const tree_iter_t& i, const std::map< parser_id, std::string >&
       int theInt = boost::lexical_cast<int>(thevalue);
       return new AstInteger(theInt);
    }
-	else if ( i->value.id() == ExpressionGrammer::node_state_aborted_ID) {
+   else if ( i->value.id() == ExpressionGrammer::node_state_aborted_ID) {
 
- 	 	return new AstNodeState( DState::ABORTED );
-	}
-	else if ( i->value.id() == ExpressionGrammer::node_state_active_ID) {
+      return new AstNodeState( DState::ABORTED );
+   }
+   else if ( i->value.id() == ExpressionGrammer::node_state_active_ID) {
 
- 	 	return new AstNodeState( DState::ACTIVE );
-	}
-	else if ( i->value.id() == ExpressionGrammer::node_state_queued_ID) {
+      return new AstNodeState( DState::ACTIVE );
+   }
+   else if ( i->value.id() == ExpressionGrammer::node_state_queued_ID) {
 
- 	 	return new AstNodeState( DState::QUEUED );
-	}
-	else if ( i->value.id() == ExpressionGrammer::node_state_submitted_ID) {
+      return new AstNodeState( DState::QUEUED );
+   }
+   else if ( i->value.id() == ExpressionGrammer::node_state_submitted_ID) {
 
- 	 	return new AstNodeState( DState::SUBMITTED );
-	}
-	else if ( i->value.id() == ExpressionGrammer::node_state_unknown_ID) {
+      return new AstNodeState( DState::SUBMITTED );
+   }
+   else if ( i->value.id() == ExpressionGrammer::node_state_unknown_ID) {
 
- 	 	return new AstNodeState( DState::UNKNOWN );
-	}
+      return new AstNodeState( DState::UNKNOWN );
+   }
+   else if ( i->value.id() == ExpressionGrammer::cal_date_to_julian_ID) {
 
- 	return NULL;
-}
+      LOG_ASSERT((i->children.size() == 2), ""); // 1st is function, 2nd is arg(integer | basic variable path)
 
-// Needed so that testing , when recreating expression uses same name for not.
-static void set_not_name(AstRoot* not_root, boost::spirit::classic::parser_id id)
-{
-   if (not_root) {
-      if (id == ExpressionGrammer::not1_ID)  not_root->set_root_name("not ");
-      if (id == ExpressionGrammer::not2_ID)  not_root->set_root_name("~ ");
-      if (id == ExpressionGrammer::not3_ID)  not_root->set_root_name("! ");
+      return new AstFunction(AstFunction::DATE_TO_JULIAN, createAst( i->children.begin()+1 , rule_names)  );
+   }
+   else if ( i->value.id() == ExpressionGrammer::cal_julian_to_date_ID) {
+
+      LOG_ASSERT((i->children.size() == 2), ""); // 1st is function, 2nd is arg(integer | basic variable path)
+
+      return new AstFunction(AstFunction::JULIAN_TO_DATE, createAst( i->children.begin()+1 , rule_names)  );
    }
+
+   return NULL;
 }
 
 // The evaluation function for the AST
@@ -722,133 +785,196 @@ Ast* doCreateAst(  const tree_iter_t& i,
                    Ast* top)
 {
 #if defined(PRINT_AST_TRAVERSAL)
-	Indentor in;
-	std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
-	if (iter != rule_names.end()) {
-		Indentor::indent(cout) << "Rule " << (*iter).second
-			<< "  " << string( i->value.begin(), i->value.end() ) << endl;
-	}
-	else {
-		Indentor::indent(cout) << "Unknown rule "
-			<< "  " << string( i->value.begin(), i->value.end() ) <<  endl;
-	}
+   Indentor in;
+   std::map< parser_id, std::string >::const_iterator iter = rule_names.find(i->value.id());
+   if (iter != rule_names.end()) {
+      Indentor::indent(cout) << "Rule " << (*iter).second << " (" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) << endl;
+   }
+   else {
+      Indentor::indent(cout) << "Unknown rule " << "(" << i->children.size() << ")"
+         << "  " << string( i->value.begin(), i->value.end() ) <<  endl;
+   }
 #endif
 
-	Indentor in2;
-	if ( i->value.id() == ExpressionGrammer::event_ID ) {
-		// Event need to handled in a custom way
-		LOG_ASSERT(i->children.size() == 2,"");
-		if (i->children.size() == 2) {
-		   // a:eventname ||  ../a/b:eventname
-		   // child 1: path                     a || ../a/b
-		   // child 2: event name
-		   // WE add an event state so that when the event is evaluated it is compared to true
-		   Ast* someRoot =  new AstEqual();
-		   Ast* leftEvent = createAst(i, rule_names);
-		   Ast* rightEvent = new AstEventState( true );
-		   someRoot->addChild(leftEvent);
-		   someRoot->addChild(rightEvent);
-		   top->addChild(someRoot);
-		}
- 	}
-	else if (i->children.size() == 4 &&
-			  (i->children.begin()->value.id() == ExpressionGrammer::not1_ID ||
-			   i->children.begin()->value.id() == ExpressionGrammer::not2_ID ||
-			   i->children.begin()->value.id() == ExpressionGrammer::not3_ID) ) {
-		// child 0: notRoot                 0
-		// child 1: notChild               +1
-		// child 2: someRoot(i.e ==,!=)    +2
-		// child 3: right                  +3
-		// Create as:         someRoot
-		//              notRoot          right
-		//      notChild
-		LOG_ASSERT((i->children.begin()->value.id() == ExpressionGrammer::not1_ID ||
-		            i->children.begin()->value.id() == ExpressionGrammer::not2_ID ||
-		            i->children.begin()->value.id() == ExpressionGrammer::not3_ID),"");
-		AstRoot* notRoot = createRootNode(  i->children.begin(), rule_names  );
-      set_not_name(notRoot,i->children.begin()->value.id());
-
-		Ast* notChild = doCreateAst(  i->children.begin() + 1, rule_names, notRoot/*top*/ );
-		if (notChild) notRoot->addChild(notChild);
-
-		AstRoot* someRoot = createRootNode(  i->children.begin() + 2, rule_names  );
-		someRoot->addChild(notRoot); //left
-
-		Ast* right = doCreateAst(  i->children.begin() + 3, rule_names,  someRoot/* top*/ );
- 		if (right) someRoot->addChild(right);
-		top->addChild(someRoot);
-	}
-	else if (i->children.size() == 4 && i->value.id() == ExpressionGrammer::variable_expression_ID  ) {
-		LOG_ASSERT((i->children.begin()->value.id() == ExpressionGrammer::normal_variable_path_ID), "");
-		// child 0: NORMAL_VARIABLE_PATH    0
-		// child 1: someRoot(i.e ==,!=)    +1
-		// child 2: NOT                    +2
-		// child 3: integer | variable     +3
-		//
-		// Create as:         someRoot
-		//              varPath          notRoot
-		//                                    notChild
-  		AstRoot* someRoot = createRootNode(  i->children.begin()+1, rule_names  );
-		Ast* varPath = doCreateAst(  i->children.begin(), rule_names, someRoot/*top*/ );
-
- 		AstRoot* notRoot = createRootNode(  i->children.begin()+2, rule_names  );
-		Ast* notChild = doCreateAst(  i->children.begin() + 3, rule_names, notRoot/*top*/ );
-
-		notRoot->addChild(notChild);
-
- 		someRoot->addChild(varPath); //left
- 		someRoot->addChild(notRoot); //right
-		top->addChild(someRoot);
-	}
-	else if (i->children.size() == 3) {
-		// child 1: left                0
-		// child 2: root(i.e ==,!=)    +1
-		// child 3: right              +2
-		AstRoot* someRoot = createRootNode(  i->children.begin() + 1, rule_names  );
-		Ast* left  = doCreateAst(  i->children.begin(), rule_names, someRoot );
-		Ast* right = doCreateAst(  i->children.begin() + 2, rule_names,  someRoot );
-		if (left) someRoot->addChild(left);
-		if (right) someRoot->addChild(right);
-		top->addChild(someRoot);
-	}
-	else if (i->children.size() == 2 &&
-			        (i->children.begin()->value.id() == ExpressionGrammer::not1_ID ||
-		            i->children.begin()->value.id() == ExpressionGrammer::not2_ID ||
-		            i->children.begin()->value.id() == ExpressionGrammer::not3_ID ) ) {
- 		// child 1: not     0
-		// child 2: left   +1
- 		AstRoot* someRoot = createRootNode(  i->children.begin(), rule_names  );
- 		set_not_name(someRoot,i->children.begin()->value.id());
-
-		Ast* left  = doCreateAst(  i->children.begin() + 1, rule_names, someRoot );
-  		if (left) someRoot->addChild(left);
- 		top->addChild(someRoot);
-	}
-	else {
-		return createAst(i,rule_names);
-	}
-	return NULL;
+   Indentor in2;
+   if (i->children.size() == 3) {
+      // child 1: left                0
+      // child 2: root(i.e ==,!=)    +1
+      // child 3: right              +2
+
+      //cout << "GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG\n";
+      AstRoot* someRoot = createRootNode(  i->children.begin() + 1, rule_names  );
+      if (someRoot ) {
+         Ast* left  = doCreateAst(  i->children.begin(), rule_names, someRoot);
+         if (left) someRoot->addChild(left);
+         Ast* right = doCreateAst(  i->children.begin() + 2, rule_names,  someRoot);
+         if (right) someRoot->addChild(right);
+
+         if (top) top->addChild(someRoot);
+         else return someRoot;
+      }
+   }
+   else if ( is_root_node(i) && i->children.size() == 2) {
+
+      //cout << "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\n";
+      AstRoot* someRoot = createRootNode(  i, rule_names  );
+
+      Ast* left  = doCreateAst(  i->children.begin() , rule_names    ,someRoot  );
+      if (left) someRoot->addChild(left);
+      Ast* right = doCreateAst(  i->children.begin() + 1, rule_names , someRoot  );
+      if (right) someRoot->addChild(right);
+
+      if (top) top->addChild(someRoot);
+      else return someRoot;
+   }
+   else if (i->children.size() == 4 && is_not(i->children.begin())) {
+      // child 0: notRoot                 0
+      // child 1: notChild               +1
+      // child 2: someRoot(i.e ==,!=)    +2
+      // child 3: right                  +3
+      // Create as:         someRoot
+      //              notRoot          right
+      //      notChild
+      //cout << "EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE\n";
+
+      LOG_ASSERT(is_not(i->children.begin()),"");
+      AstRoot* notRoot = createRootNode(  i->children.begin(), rule_names  );
+
+      Ast* notChild = doCreateAst(  i->children.begin() + 1, rule_names, notRoot/*top*/  );
+      if (notChild) notRoot->addChild(notChild);
+
+      AstRoot* someRoot = createRootNode(  i->children.begin() + 2, rule_names  );
+      someRoot->addChild(notRoot); //left
+
+      Ast* right = doCreateAst(  i->children.begin() + 3, rule_names,  someRoot/* top*/ );
+      if (right) someRoot->addChild(right);
+      if (top) top->addChild(someRoot);
+      else return someRoot;
+   }
+   else if (i->children.size() == 4 && is_root_node(i->children.begin()+1) && is_not(i->children.begin()+2)  ) {
+      // child 0: child                   0
+      // child 1: someRoot(i.e ==,!=)    +1
+      // child 2: NOT                    +2
+      // child 3: integer | variable     +3
+      //
+      // Create as:         someRoot
+      //              child          notRoot
+      //                                    notChild
+      //cout << "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF\n";
+      AstRoot* someRoot = createRootNode(  i->children.begin()+1, rule_names  );
+      Ast* varPath = doCreateAst(  i->children.begin(), rule_names, someRoot/*top*/);
+      if (varPath) someRoot->addChild(varPath); //left
+
+      AstRoot* notRoot = createRootNode(  i->children.begin()+2, rule_names  );
+      someRoot->addChild(notRoot); //right
+
+      Ast* notChild = doCreateAst(  i->children.begin() + 3, rule_names, notRoot/*top*/);
+      if (notChild) notRoot->addChild(notChild);
+
+      if (top) top->addChild(someRoot);
+      else return someRoot;
+   }
+   else if (i->children.size() == 2 && is_not(i->children.begin()) ) {
+      // child 1: not     0
+      // child 2: left   +1
+      //cout << "HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\n";
+
+      AstRoot* notRoot = createRootNode(  i->children.begin(), rule_names  );
+
+      if (child_has(i,ExpressionGrammer::basic_variable_path_ID)) {
+         // special case where we treat as a event i.e ! ../../../prod2diss/operation_is_late:yes
+         notRoot->addChild( createAst(i->children.begin() + 1, rule_names));
+      }
+      else {
+         Ast* left  = doCreateAst(  i->children.begin() + 1, rule_names, notRoot);
+         if (left) notRoot->addChild(left);
+      }
+
+      if (top) top->addChild(notRoot);
+      else return notRoot;
+   }
+   else if (i->children.size() >=5 ) {
+      // Must be multiple and's could have nots  Could have:
+      //     !a and b
+      //      a and !b
+      // We always treat the not as *child*
+      stack<Ast*> childs;
+      stack<Ast*> parents;
+      Ast* not_ast = NULL;
+      for (tree_iter_t t = i->children.begin(); t != i->children.end(); ++t) {
+         if (is_root_node(t) && !is_not(t)) {
+            Ast* and_ast = createRootNode(  t, rule_names  );
+            assert(and_ast);
+            assert(parents.empty());
+            parents.push( and_ast );
+         }
+         else {
+            if ( is_not(t)) {
+                assert(!not_ast);
+                not_ast = createRootNode(  t, rule_names  );
+                assert(not_ast);
+                childs.push( not_ast );
+            }
+            else {
+               Ast* child_ast = doCreateAst(t, rule_names, /*Top*/NULL);
+               assert(child_ast);
+               if (not_ast) {
+                  not_ast->addChild(child_ast);
+                  not_ast = NULL;
+               }
+               else {
+                  childs.push(child_ast );
+               }
+            }
+         }
+
+         if (parents.size() == 1 && childs.size() == 2) {
+            Ast* parent = parents.top(); parents.pop();
+            Ast* child1 = childs.top(); childs.pop();
+            Ast* child2 = childs.top(); childs.pop();
+            parent->addChild(child2);
+            parent->addChild(child1);
+            assert( parents.empty() && childs.empty());
+            childs.push(parent);
+         }
+      }
+      assert(top);
+      assert( childs.size() == 1);
+      if (top) top->addChild(childs.top());
+   }
+   else {
+      //cout << "JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ\n";
+      Ast* child = createAst(i,rule_names);
+      if (top && child) top->addChild(child);
+      else return child;
+   }
+   return NULL;
 }
 
-AstTop* createAst( 	tree_parse_info< > info,
-					const std::string& expr,
-					const std::map< parser_id, std::string >& rule_names
+AstTop* createAst(
+      tree_parse_info< > info,
+      const std::string& expr,
+      const std::map< parser_id, std::string >& rule_names
 )
 {
 #if defined(PRINT_AST_TRAVERSAL)
-	std::cout << "\nPRINT_AST_TRAVERSAL  " << expr << "\n";
+   std::cout << "\nPRINT_AST_TRAVERSAL  " << expr << "\n";
 #endif
 
-	std::auto_ptr<AstTop> ast(new AstTop);
-	(void)doCreateAst(info.trees.begin(),rule_names,ast.get());
+   std::auto_ptr<AstTop> ast(new AstTop);
+   (void)doCreateAst(info.trees.begin(),rule_names,ast.get() );
 
 #if defined(PRINT_AST)
- 	if (ast.get())  {
- 		std::cout << "\nPRINT_AST  " << expr << "\n";
- 		std::cout << *ast.get();
- 	}
+   if (ast.get())  {
+      std::stringstream s2;
+      ast->print_flat(s2,true/*add_brackets*/);
+      std::cout << "\nPRINT_AST  " << s2.str() << "\n";
+      std::cout   << "PRINT_AST  " << expr     << "\n";
+      std::cout << *ast.get();
+   }
 #endif
-	return ast.release();
+   return ast.release();
 }
 
 ///////////////////////////////////////////////////////////////////////////
diff --git a/ANode/src/Family.cpp b/ANode/src/Family.cpp
index 34311bd..231c276 100644
--- a/ANode/src/Family.cpp
+++ b/ANode/src/Family.cpp
@@ -35,6 +35,17 @@ using namespace std;
 /////////////////////////////////////////////////////////////////////////////////////////
 // The false below is used as a dummy argument to call the Variable constructor that does not
 // Check the variable names. i.e we know they are valid
+
+Family& Family::operator=(const Family& rhs)
+{
+   if (this != &rhs ) {
+      NodeContainer::operator=(rhs);
+      delete fam_gen_variables_;
+      fam_gen_variables_ = NULL;
+   }
+   return *this;
+}
+
 Family::~Family()
 {
    if (!Ecf::server()) {
diff --git a/ANode/src/Family.hpp b/ANode/src/Family.hpp
index 12a4f79..f7f608c 100644
--- a/ANode/src/Family.hpp
+++ b/ANode/src/Family.hpp
@@ -23,6 +23,9 @@ class Family : public NodeContainer {
 public:
    Family( const std::string& name ) : NodeContainer(name),fam_gen_variables_(NULL) {}
    Family() : fam_gen_variables_(NULL)  {}
+   Family(const Family& rhs) : NodeContainer(rhs), fam_gen_variables_(NULL) {}
+   Family& operator=(const Family&);
+
 	virtual ~Family();
 
 	static family_ptr create(const std::string& name);
diff --git a/ANode/src/Flag.hpp b/ANode/src/Flag.hpp
index 665568a..79d5808 100644
--- a/ANode/src/Flag.hpp
+++ b/ANode/src/Flag.hpp
@@ -56,7 +56,7 @@ public:
       JOBCMD_FAILED =  4,  // task*
       NO_SCRIPT     =  5,  // task*
       KILLED        =  6,  // task* do not run when try_no > ECF_TRIES, and task killed by user
-      MIGRATED      =  7,  // Node                                   ( NOT USED currently )
+      MIGRATED      =  7,  // Node,defs set during --get_state,--migrate, reused on replace cmd , to preserver state
       LATE          =  8,  // Node attribute, Task is late, or Defs checkpt takes to long
       MESSAGE       =  9,  // Node
       BYRULE        = 10,  // Node*, set if node is set to complete by complete trigger expression
diff --git a/ANode/src/InLimitMgr.cpp b/ANode/src/InLimitMgr.cpp
index 80da4e2..c0d01b2 100644
--- a/ANode/src/InLimitMgr.cpp
+++ b/ANode/src/InLimitMgr.cpp
@@ -28,6 +28,15 @@ using namespace std;
 
 ///////////////////////////////////////////////////////////////////////////////////////////
 
+InLimitMgr& InLimitMgr::operator=(const InLimitMgr& rhs)
+{
+   if (this != &rhs) {
+      inLimitVec_ = rhs.inLimitVec_;
+      node_ = NULL;
+   }
+   return *this;
+}
+
 std::ostream& InLimitMgr::print(std::ostream& os) const
 {
 	BOOST_FOREACH(const InLimit& i, inLimitVec_)     { i.print(os); }
@@ -402,13 +411,14 @@ limit_ptr InLimitMgr::find_limit(const InLimit& inLimit, std::string& errorMsg,
    }
 
    // *FOUND* the referenced LIMIT. inlimit tokens must be less than limit.
+   // ECFLOW-713 make this a warning and not error, it allows job control over multiple suites, at load/begin time
    if ( inLimit.tokens() > referencedLimit->theLimit() ) {
-      if (reportErrors) {
+      if (reportWarnings) {
          // in limit exceeds the LIMIT value
          std::stringstream ss;
          ss << node_->debugType() << " " << node_->absNodePath() << " has a " << inLimit.toString() << " reference\n";
          ss << " with value '" << inLimit.tokens() << "' which exceeds '" << referencedLimit->theLimit() << "' defined on the Limit\n";
-         errorMsg += ss.str();
+         warningMsg += ss.str();
       }
    }
    return referencedLimit;
diff --git a/ANode/src/InLimitMgr.hpp b/ANode/src/InLimitMgr.hpp
index 62b0f24..3a29547 100644
--- a/ANode/src/InLimitMgr.hpp
+++ b/ANode/src/InLimitMgr.hpp
@@ -36,12 +36,17 @@
 // base on the Ecf class,so that we need only update the pointers
 // when a structural modification is made.
 //
-class InLimitMgr : private boost::noncopyable {
+class InLimitMgr {
 public:
-	InLimitMgr(Node* n) : node_(n) {}
+   InLimitMgr(Node* n) : node_(n) {}
+   InLimitMgr(const InLimitMgr& rhs) : node_(NULL),inLimitVec_(rhs.inLimitVec_){}
 	InLimitMgr() : node_(NULL) {}
 
+   // needed by node copy constructor
+   void set_node(Node* n) { node_ = n; }
+
 // standard functions: ==============================================
+   InLimitMgr& operator=(const InLimitMgr&);
  	std::ostream& print(std::ostream&) const;
  	bool operator==(const InLimitMgr& rhs) const;
  	void clear() { inLimitVec_.clear(); }
@@ -113,15 +118,15 @@ private:
  	limit_ptr find_limit(const InLimit&, std::string& errorMsg, std::string& warningMsg,bool reportErrors, bool reportWarnings) const;
 
 private:
-	Node* node_; // Not persisted, constructor will always set this up.
+ 	Node* node_; // Not persisted, constructor will always set this up.
 
  	mutable std::vector<InLimit>        inLimitVec_;
 
-    friend class boost::serialization::access;
-    template<class Archive>
-    void serialize(Archive & ar, const unsigned int /*version*/) {
-         ar & inLimitVec_;
-    }
+ 	friend class boost::serialization::access;
+ 	template<class Archive>
+ 	void serialize(Archive & ar, const unsigned int /*version*/) {
+ 	   ar & inLimitVec_;
+ 	}
 };
 
 // This should ONLY be added to objects that are *NOT* serialised through a pointer
diff --git a/ANode/src/JobProfiler.cpp b/ANode/src/JobProfiler.cpp
index e5d22d3..6ae96e5 100644
--- a/ANode/src/JobProfiler.cpp
+++ b/ANode/src/JobProfiler.cpp
@@ -40,6 +40,9 @@ JobProfiler::JobProfiler(Task* node,JobsParam& jobsParam, size_t threshold)
   start_time_(boost::posix_time::microsec_clock::universal_time()),
   threshold_(threshold)
 {
+   // If job generation takes longer than the time to *reach* next_poll_time_, then time out.
+   // Hence we start out with 60 seconds, and time for job generation should decrease. Until reset back to 60
+   // Should allow greater child/user command communication.
 	if (!jobsParam_.next_poll_time().is_special() && start_time_ >= jobsParam_.next_poll_time()) {
 		jobsParam_.set_timed_out_of_job_generation(start_time_);
 	}
diff --git a/ANode/src/Jobs.cpp b/ANode/src/Jobs.cpp
index 42a3fe4..2674f5f 100644
--- a/ANode/src/Jobs.cpp
+++ b/ANode/src/Jobs.cpp
@@ -25,7 +25,6 @@
 #include "Signal.hpp"
 #include "System.hpp"
 #include "SuiteChanged.hpp"
-#include "JobProfiler.hpp"
 
 using namespace ecf;
 using namespace std;
diff --git a/ANode/src/JobsParam.hpp b/ANode/src/JobsParam.hpp
index 667d8b9..a563bd7 100644
--- a/ANode/src/JobsParam.hpp
+++ b/ANode/src/JobsParam.hpp
@@ -18,6 +18,7 @@
 #include <boost/date_time/posix_time/posix_time_types.hpp>
 #include <boost/noncopyable.hpp>
 #include "NodeFwd.hpp"
+#include "EcfFile.hpp"
 
 // Used as a utility class for controlling job creation.
 // Collates data during the node tree traversal
@@ -62,12 +63,19 @@ public:
    void set_next_poll_time(const boost::posix_time::ptime& next_poll_time) { next_poll_time_ = next_poll_time;}
    const boost::posix_time::ptime&  next_poll_time() const { return next_poll_time_;}
    const boost::posix_time::ptime&  time_out_time() const { return time_out_time_;}
+
+   // If job generation takes longer than the time to *reach* next_poll_time_, then time out.
+   // Hence we start out with 60 seconds, and time for job generation should decrease. Until reset back to 60
+   // Should allow greater child/user command communication.
    void set_timed_out_of_job_generation(const boost::posix_time::ptime& t) { time_out_time_ = t; timed_out_of_job_generation_ = true;}
    bool timed_out_of_job_generation() const { return timed_out_of_job_generation_; }
 
    // ensure that we avoid job generation close the server poll time.
    bool check_for_job_generation_timeout();
 
+   void set_ecf_file(const EcfFile& ecf_file) { ecf_file_ = ecf_file;}
+   EcfFile& ecf_file() { return ecf_file_;}
+
 private:
    bool timed_out_of_job_generation_;
 	bool createJobs_;
@@ -80,5 +88,6 @@ private:
 	NameValueMap user_edit_variables_;          // Used for User edit
 	boost::posix_time::ptime next_poll_time_;   // Aid early exit from job generation, if it takes to long
 	boost::posix_time::ptime time_out_time_;    // When we actually timed out must >= next_poll_time_
+	EcfFile ecf_file_;                          // keep for lifetime, to optimise memory and cache include file
 };
 #endif
diff --git a/ANode/src/Memento.cpp b/ANode/src/Memento.cpp
index b541789..e767f47 100644
--- a/ANode/src/Memento.cpp
+++ b/ANode/src/Memento.cpp
@@ -25,16 +25,13 @@ using namespace ecf;
 Memento::~Memento() {}
 
 // ===============================================================
-void CompoundMemento::incremental_sync(defs_ptr client_def,std::vector<std::string>& changed_nodes) const
+void CompoundMemento::incremental_sync(defs_ptr client_def) const
 {
    /// Clear out aspects, for this Memento.
    ///   Aspects are added via do_incremental_* / set_mememto functions
    ///   AND in *this* function when node attributes have been added or deleted.
    aspects_.clear();
 
-   // Record changes nodes for the Python interface
-   changed_nodes.push_back(absNodePath_);
-
 	node_ptr node = client_def->findAbsNode(absNodePath_);
  	if (!node.get()) {
  		if ( absNodePath_ != Str::ROOT_PATH()) throw std::runtime_error("CompoundMemento::incremental_sync: could not find path " + absNodePath_ );
diff --git a/ANode/src/Memento.hpp b/ANode/src/Memento.hpp
index 0d707d2..8b7c932 100644
--- a/ANode/src/Memento.hpp
+++ b/ANode/src/Memento.hpp
@@ -82,10 +82,12 @@ public:
 
    CompoundMemento() : clear_attributes_(false) {} // for serialization
 
-   void incremental_sync(defs_ptr client_def, std::vector<std::string>& changed_nodes) const;
+   void incremental_sync(defs_ptr client_def) const;
    void add(memento_ptr m) { vec_.push_back(m); }
    void clear_attributes() { clear_attributes_ = true;}
 
+   const std::string& abs_node_path() const { return absNodePath_;}
+
 private:
 
    bool clear_attributes_;
diff --git a/ANode/src/MiscAttrs.hpp b/ANode/src/MiscAttrs.hpp
index 91f93a3..f2abea5 100644
--- a/ANode/src/MiscAttrs.hpp
+++ b/ANode/src/MiscAttrs.hpp
@@ -28,6 +28,7 @@
 class MiscAttrs : private boost::noncopyable {
 public:
    MiscAttrs(Node* node) : node_(node) {}
+   MiscAttrs(const MiscAttrs& rhs) : node_(NULL),zombies_(rhs.zombies_),verifys_(rhs.verifys_) {}
    MiscAttrs() : node_(NULL) {}
 
    // needed by node serialisation
diff --git a/ANode/src/Node.cpp b/ANode/src/Node.cpp
index a0b5437..be5e5d7 100644
--- a/ANode/src/Node.cpp
+++ b/ANode/src/Node.cpp
@@ -1,4 +1,4 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+   /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 // Name        :
 // Author      : Avi
 // Revision    : $Revision: #305 $ 
@@ -16,6 +16,7 @@
 #include <deque>
 
 #include <boost/bind.hpp>
+#include <boost/make_shared.hpp>
 
 #include "Defs.hpp"
 #include "Suite.hpp"
@@ -84,6 +85,77 @@ Node::Node()
   graphic_ptr_(0)
 {}
 
+Node::Node(const Node& rhs)
+: parent_(NULL),
+  name_(rhs.name_),
+  suspended_(rhs.suspended_),
+  state_( rhs.state_),
+  defStatus_(rhs.defStatus_),
+  completeExpr_( (rhs.completeExpr_) ? new Expression(*rhs.completeExpr_) : NULL ),
+  triggerExpr_(  (rhs.triggerExpr_) ? new Expression(*rhs.triggerExpr_) : NULL ),
+  lateAttr_((rhs.lateAttr_) ? new ecf::LateAttr(*rhs.lateAttr_) : NULL),
+  autoCancel_( (rhs.autoCancel_) ? new ecf::AutoCancelAttr(*rhs.autoCancel_) : NULL),
+  time_dep_attrs_((rhs.time_dep_attrs_) ? new TimeDepAttrs(*rhs.time_dep_attrs_) : NULL),
+  child_attrs_((rhs.child_attrs_) ? new ChildAttrs(*rhs.child_attrs_) : NULL),
+  misc_attrs_((rhs.misc_attrs_) ? new MiscAttrs(*rhs.misc_attrs_) : NULL),
+  repeat_( rhs.repeat_),
+  varVec_(rhs.varVec_),
+  inLimitMgr_(rhs.inLimitMgr_),
+  flag_(rhs.flag_),
+  state_change_no_(0),variable_change_no_(0),suspended_change_no_(0),
+  graphic_ptr_(0)
+{
+   inLimitMgr_.set_node(this);
+   if ( time_dep_attrs_ ) time_dep_attrs_->set_node(this);
+   if ( child_attrs_ )    child_attrs_->set_node(this);
+   if ( misc_attrs_ )     misc_attrs_->set_node(this);
+
+   for (size_t l = 0;  l< rhs.limitVec_.size(); l++ ) {
+      limit_ptr the_limit = boost::make_shared<Limit>( *rhs.limitVec_[l]);
+      the_limit->set_node(this);
+      limitVec_.push_back( the_limit );
+   }
+}
+
+Node& Node::operator=(const Node& rhs)
+{
+   // parent must set parent_
+   if (this != &rhs) {
+      name_ = rhs.name_;
+      suspended_ = rhs.suspended_;
+      state_ =  rhs.state_;
+      defStatus_ = rhs.defStatus_;
+      completeExpr_ =  (rhs.completeExpr_) ? new Expression(*rhs.completeExpr_) : NULL  ;
+      triggerExpr_ =   (rhs.triggerExpr_) ? new Expression(*rhs.triggerExpr_) : NULL  ;
+      lateAttr_ = (rhs.lateAttr_) ? new ecf::LateAttr(*rhs.lateAttr_) : NULL ;
+      autoCancel_ =  (rhs.autoCancel_) ? new ecf::AutoCancelAttr(*rhs.autoCancel_) : NULL ;
+      time_dep_attrs_ = (rhs.time_dep_attrs_) ? new TimeDepAttrs(*rhs.time_dep_attrs_) : NULL ;
+      child_attrs_ = (rhs.child_attrs_) ? new ChildAttrs(*rhs.child_attrs_) : NULL ;
+      misc_attrs_ = (rhs.misc_attrs_) ? new MiscAttrs(*rhs.misc_attrs_) : NULL;
+      repeat_ =  rhs.repeat_ ;
+      varVec_ = rhs.varVec_ ;
+      inLimitMgr_ = rhs.inLimitMgr_ ;
+      inLimitMgr_.set_node(this);
+      flag_ = rhs.flag_ ;
+
+      state_change_no_ = 0;
+      variable_change_no_ = 0;
+      suspended_change_no_ = 0;
+      graphic_ptr_ = 0;
+
+      if ( time_dep_attrs_ ) time_dep_attrs_->set_node(this);
+      if ( child_attrs_ )    child_attrs_->set_node(this);
+      if ( misc_attrs_ )     misc_attrs_->set_node(this);
+
+      for (size_t l = 0;  l< rhs.limitVec_.size(); l++ ) {
+         limit_ptr the_limit = boost::make_shared<Limit>( *rhs.limitVec_[l]);
+         the_limit->set_node(this);
+         limitVec_.push_back( the_limit );
+      }
+   }
+   return *this;
+}
+
 Node::~Node() {
    delete completeExpr_;
    delete triggerExpr_;
@@ -166,6 +238,7 @@ void Node::requeue(
 #endif
    /// Note: we don't reset verify attributes as they record state stat's
 
+
    // Set the state without causing any side effects
    initState(clear_suspended_in_child_nodes);
 
@@ -321,7 +394,7 @@ void Node::checkForLateness(const ecf::Calendar& c)
    if (lateAttr_ && lateAttr_->check_for_lateness(state_,c)) {
       lateAttr_->setLate(true);
       flag().set(ecf::Flag::LATE);
-      cout << "Node::checkForLateness late flag set on " << absNodePath() << "\n";
+      // cout << "Node::checkForLateness late flag set on " << absNodePath() << "\n";
    }
 }
 
@@ -485,6 +558,11 @@ bool Node::resolveDependencies(JobsParam& jobsParam)
    LOG(Log::DBG,"   " << debugNodePath() << "::resolveDependencies " << NState::toString(state()) << " AT " << suite()->calendar().toString());
 #endif
 
+   // A node that is migrated/archived should not allow any change of state.
+   if (get_flag().is_set(ecf::Flag::MIGRATED)) {
+      return false;
+   }
+
    // Improve the granularity for the check for lateness (during job submission). See SUP-873 "late" functionality
    if (lateAttr_ && isSubmittable()) {
       // since the suite() traverse up the tree, only call when have a late attribute
@@ -943,6 +1021,7 @@ bool Node::variable_substitution(std::string& cmd, const NameValueMap& user_edit
       size_t secondPercentPos = cmd.find( micro, firstPercentPos + 1 );
       if ( secondPercentPos == string::npos ) break;
 
+      pos = 0;
       if ( secondPercentPos - firstPercentPos <= 1 ) {
          // handle %% with no characters in between, skip over
          // i.e to handle "printf %%02d %HOUR:00%" --> "printf %02d 00"   i.e if HOUR not defined
@@ -950,7 +1029,6 @@ bool Node::variable_substitution(std::string& cmd, const NameValueMap& user_edit
          double_micro_found = true;
          continue;
       }
-      else pos = 0;
 
       string percentVar( cmd.begin() + firstPercentPos+1, cmd.begin() + secondPercentPos );
 #ifdef DEBUG_S
@@ -967,21 +1045,22 @@ bool Node::variable_substitution(std::string& cmd, const NameValueMap& user_edit
       bool generated_variable = false;
       if ( percentVar.find("ECF_") != std::string::npos) {
          if ( percentVar.find(Str::ECF_PASS())         != std::string::npos) generated_variable = true;
-         else if ( percentVar.find(Str::ECF_TRYNO())   != std::string::npos) generated_variable = true;
-         else if ( percentVar.find(Str::ECF_JOB())     != std::string::npos) generated_variable = true;
-         else if ( percentVar.find(Str::ECF_JOBOUT())  != std::string::npos) generated_variable = true;
          else if ( percentVar.find(Str::ECF_PORT())    != std::string::npos) generated_variable = true;
          else if ( percentVar.find(Str::ECF_NODE())    != std::string::npos) generated_variable = true;
+         else if ( percentVar.find(Str::ECF_HOST())    != std::string::npos) generated_variable = true;
+         else if ( percentVar.find(Str::ECF_JOB())     != std::string::npos) generated_variable = true;
+         else if ( percentVar.find(Str::ECF_JOBOUT())  != std::string::npos) generated_variable = true;
          else if ( percentVar.find(Str::ECF_NAME())    != std::string::npos) generated_variable = true;
+         else if ( percentVar.find(Str::ECF_TRYNO())   != std::string::npos) generated_variable = true;
       }
 
-      // First search user variable (*ONLY* set when doing user edit's the script)
+      // First search user variable (*ONLY* set user edit's the script)
       // Handle case: cmd = "%fred:bill% and where we have user variable "fred:bill"
       // Handle case: cmd = "%fred%      and where we have user variable "fred"
       // If we fail to find the variable we return false.
       // Note: When a variable is found, it can have an empty value  which is still valid
       std::string varValue;
-      if (search_user_edit_variables(percentVar,varValue,user_edit_variables)) {
+      if (!user_edit_variables.empty() && search_user_edit_variables(percentVar,varValue,user_edit_variables)) {
          cmd.replace( firstPercentPos, secondPercentPos - firstPercentPos + 1, varValue );
       }
       else if (generated_variable && find_parent_gen_variable_value(percentVar,varValue)) {
@@ -1002,7 +1081,7 @@ bool Node::variable_substitution(std::string& cmd, const NameValueMap& user_edit
             cout << "   var " << var << "\n";
 #endif
 
-            if (search_user_edit_variables(var,varValue,user_edit_variables)) {
+            if (!user_edit_variables.empty() && search_user_edit_variables(var,varValue,user_edit_variables)) {
 #ifdef DEBUG_S
                cout << "   user var value = " << varValue << "\n";
 #endif
@@ -1166,6 +1245,11 @@ bool Node::variable_dollar_subsitution(std::string& cmd)
       }
 
       cmd.replace( firstPos, secondPos - firstPos , envValue );
+
+      if (envValue.find(env) != std::string::npos) {
+         // infinite loop
+         break;
+      }
    }
    return true;
 }
@@ -1191,29 +1275,28 @@ std::string Node::triggerExpression() const
    return string();
 }
 
-
-static void check_expressions(const Node* node, bool trigger, std::string& errorMsg)
+bool Node::check_expressions(Ast* ast,const std::string& expr,bool trigger, std::string& errorMsg) const
 {
-   Ast* ast = NULL;
-   if (trigger) ast = node->triggerAst();
-   else         ast = node->completeAst();
    if ( ast ) {
       // The expression have been parsed and we have created the abstract syntax tree
       // Try to resolve the path/node references in the expressions
       // Also resolve references to events,meter,repeats variables.
-      AstResolveVisitor astVisitor(node);
+      AstResolveVisitor astVisitor(this);
       ast->accept(astVisitor);
 
       if ( !astVisitor.errorMsg().empty() ) {
-         errorMsg += "Expression node tree references failed for ";
-         if ( trigger ) errorMsg += node->triggerExpression();
-         else           errorMsg += node->completeExpression();
+         errorMsg += "Expression node tree references failed for '";
+         if ( trigger ) errorMsg += "trigger ";
+         else           errorMsg += "complete ";
+         errorMsg += expr;
          errorMsg += "' at ";
-         errorMsg += node->absNodePath();
+         errorMsg += absNodePath();
          errorMsg += "\n ";
          errorMsg += astVisitor.errorMsg();
+         return false;
       }
    }
+   return true;
 }
 
 bool Node::check(std::string& errorMsg, std::string& warningMsg) const
@@ -1223,7 +1306,7 @@ bool Node::check(std::string& errorMsg, std::string& warningMsg) const
    //#endif
 
    /// ************************************************************************************
-   /// *IMPORTANT side effec: *
+   /// *IMPORTANT side effect: *
    /// The simulator relies AstResolveVisitor to set usedInTriggger() for events and meters
    /// *************************************************************************************
 
@@ -1231,25 +1314,36 @@ bool Node::check(std::string& errorMsg, std::string& warningMsg) const
    /// defs which fail parse errors should not be allowed to be loaded into the server
    /// Even if the code parses, check the expression for divide by zero, for divide and modulo operators
    AstTop* ctop = completeAst(errorMsg);
-   if (ctop && !ctop->check(errorMsg)) {
-      errorMsg += " ";
-      if (completeExpr_) errorMsg += completeExpr_->expression();
-      errorMsg += " on ";
-      errorMsg += debugNodePath();
+   if (ctop) {
+
+      // capture node path resolve errors
+      std::string expr;
+      if (completeExpr_) expr = completeExpr_->expression();
+      (void)check_expressions(ctop,expr,false,errorMsg);
+
+      if (!ctop->check(errorMsg)) {
+         errorMsg += " ";
+         errorMsg += expr;
+         errorMsg += " on ";
+         errorMsg += debugNodePath();
+      }
    }
    AstTop* ttop = triggerAst(errorMsg);
-   if (ttop && !ttop->check(errorMsg)) {
-      errorMsg += " ";
-      if (triggerExpr_) errorMsg += triggerExpr_->expression();
-      errorMsg += " on ";
-      errorMsg += debugNodePath();
+   if (ttop) {
+
+      // capture node path resolve errors
+      std::string expr;
+      if (triggerExpr_) expr = triggerExpr_->expression();
+      (void)check_expressions(ttop,expr,true,errorMsg);
+
+      if (!ttop->check(errorMsg)) {
+         errorMsg += " ";
+         errorMsg += expr;
+         errorMsg += " on ";
+         errorMsg += debugNodePath();
+      }
    }
 
-
-   // capture node path resolve errors
-   check_expressions(this, true,errorMsg);
-   check_expressions(this, false,errorMsg);
-
    // check inLimit references to limits.
    // Client: Unresolved references, which are not in the externs reported as errors/warnings
    // Server: There are no exerns, all unresolved references reported as errors
@@ -1346,7 +1440,7 @@ std::ostream& Node::print(std::ostream& os) const
          }
       }
    }
-   repeat_.print(os);
+   repeat_.print(os);  // if repeat is empty print(..) does nothing
 
    BOOST_FOREACH(const Variable& v, varVec_ )       { v.print(os); }
 
@@ -1772,8 +1866,7 @@ AstTop* Node::completeAst() const
 {
    if (completeExpr_) {
       std::string ignoredErrorMsg;
-      (void) completeAst(ignoredErrorMsg);
-      return completeExpr_->get_ast();
+      return completeAst(ignoredErrorMsg);
    }
    return NULL;
 }
@@ -1782,19 +1875,21 @@ AstTop* Node::triggerAst() const
 {
    if (triggerExpr_) {
       std::string ignoredErrorMsg;
-      (void) triggerAst(ignoredErrorMsg);
-      return triggerExpr_->get_ast();
+      return triggerAst(ignoredErrorMsg);
    }
    return NULL;
 }
 
 AstTop* Node::completeAst(std::string& errorMsg) const
 {
-   if (completeExpr_ && completeExpr_->get_ast() == NULL) {
-      completeExpr_->createAST(const_cast<Node*>(this),"complete",errorMsg);
+   if (completeExpr_) {
+      if (completeExpr_->get_ast() == NULL) {
+
+         completeExpr_->createAST(const_cast<Node*>(this),"complete",errorMsg);
 #ifdef DEBUG
-      if (errorMsg.empty()) LOG_ASSERT(completeExpr_->get_ast(),"");
+         if (errorMsg.empty()) LOG_ASSERT(completeExpr_->get_ast(),"");
 #endif
+      }
       return completeExpr_->get_ast();
    }
    return NULL;
@@ -1802,11 +1897,14 @@ AstTop* Node::completeAst(std::string& errorMsg) const
 
 AstTop* Node::triggerAst(std::string& errorMsg) const
 {
-   if (triggerExpr_ && triggerExpr_->get_ast() == NULL) {
-      triggerExpr_->createAST(const_cast<Node*>(this),"trigger",errorMsg);
+   if (triggerExpr_) {
+      if (triggerExpr_->get_ast() == NULL) {
+
+         triggerExpr_->createAST(const_cast<Node*>(this),"trigger",errorMsg);
 #ifdef DEBUG
-      if (errorMsg.empty()) LOG_ASSERT(triggerExpr_->get_ast(),"");
+         if (errorMsg.empty()) LOG_ASSERT(triggerExpr_->get_ast(),"");
 #endif
+      }
       return triggerExpr_->get_ast();
    }
    return NULL;
@@ -1848,7 +1946,6 @@ size_t Node::position() const
    return std::numeric_limits<std::size_t>::max();
 }
 
-
 void Node::gen_variables(std::vector<Variable>& vec) const
 {
    if (!repeat_.empty()) {
@@ -1864,8 +1961,23 @@ const Variable& Node::findGenVariable(const std::string& name) const
 
 void Node::update_repeat_genvar() const
 {
+   repeat_.update_repeat_genvar();  // if repeat_ is empty update_repeat_genvar() does nothing
+}
+
+void Node::get_time_resolution_for_simulation(boost::posix_time::time_duration& resol) const
+{
+   if ( time_dep_attrs_ ) {
+      time_dep_attrs_->get_time_resolution_for_simulation(resol);
+   }
+}
+
+void Node::get_max_simulation_duration(boost::posix_time::time_duration& duration) const
+{
+   if ( time_dep_attrs_ ) {
+      time_dep_attrs_->get_max_simulation_duration(duration);
+   }
    if (!repeat_.empty()) {
-      repeat_.update_repeat_genvar();
+      duration = hours(8760);  // year
    }
 }
 
@@ -1914,6 +2026,15 @@ void Node::detach(AbstractObserver* obs)
    }
 }
 
+bool Node::is_observed(AbstractObserver* obs) const
+{
+   for(size_t i = 0; i < observers_.size(); i++) {
+      if (observers_[i] == obs) {
+         return true;
+      }
+   }
+   return false;
+}
 
 static std::vector<ecf::TimeAttr>  timeVec_;
 static std::vector<ecf::TodayAttr> todayVec_;
diff --git a/ANode/src/Node.hpp b/ANode/src/Node.hpp
index 79f6053..130be27 100644
--- a/ANode/src/Node.hpp
+++ b/ANode/src/Node.hpp
@@ -62,16 +62,22 @@ class AbstractObserver;
 namespace ecf { class Simulator; class SimulatorVisitor; class DefsAnalyserVisitor; class FlatAnalyserVisitor; } // forward declare for friendship
 namespace ecf { class Calendar; class NodeTreeVisitor; } // forward declare class
 
-class Node : public boost::enable_shared_from_this<Node>, private boost::noncopyable {
+class Node : public boost::enable_shared_from_this<Node>  {
 protected:
    Node(const std::string& name);
    Node();
 public:
+   Node& operator=(const Node&);
+   Node(const Node& rhs);
    virtual ~Node();
 
    /// The Parent Must set the parent pointer. For a Suite however this will be NULL
    void set_parent(Node* p) { parent_ = p; }
 
+   /// Both these function can throw
+   bool archive(std::string& error_msg);
+   bool restore(std::string& error_msg);
+
    // Server called functions:
    /// Required when we have time attributes, when time related attribute are free they stay free
    virtual void calendarChanged(const ecf::Calendar&, std::vector<node_ptr>& auto_cancelled_nodes,const ecf::LateAttr* inherited_late);
@@ -291,6 +297,11 @@ public:
    virtual bool hasTimeDependencies() const { return (time_dep_attrs_) ? true : false; }
    bool isTimeFree() const { return (time_dep_attrs_) ? time_dep_attrs_->timeDependenciesFree() : false;}
 
+   /// If no time dependencies then we have a resolution of 1 hour.
+   /// If we have just day/date then we have a resolution of 1 hour
+   /// Otherwise if we have time/today/cron with minutes, then resolution is 1 minute
+   void get_time_resolution_for_simulation(boost::posix_time::time_duration& resol) const;
+   void get_max_simulation_duration(boost::posix_time::time_duration& resol) const;
 
    /// A hierarchical function
    virtual bool hasAutoCancel() const { return (autoCancel_) ? true : false;}
@@ -547,6 +558,12 @@ public:
    /// ** For Aliases we only update the limits, and do not bubble up state changes
    virtual void handleStateChange() = 0; // can end up changing state
 
+   /// update change numbers to force sync
+   virtual void force_sync(){};
+
+   /// check trigger expression have nodes that resolve
+   bool check_expressions(Ast*,const std::string& expr, bool trigger, std::string& errorMsg) const;
+
 protected:
    /// Used in conjunction with Node::position()
    /// returns std::numeric_limits<std::size_t>::max() if child not found
@@ -610,6 +627,7 @@ public:
    void notify(const std::vector<ecf::Aspect::Type>& aspects);
    void attach(AbstractObserver*);
    void detach(AbstractObserver*);
+   bool is_observed(AbstractObserver*) const ; // return true if we have this observer in our list
 
 private:
    void why(std::vector<std::string>& theReasonWhy) const;
@@ -648,7 +666,6 @@ private: // alow simulator access
    friend class ecf::Simulator;
    std::vector<Meter>&  ref_meters();// allow simulator set meter value
    std::vector<Event>&  ref_events();// allow simulator set event value
-   Repeat& ref_repeat()              { return repeat_;} // allow simulator to modify repeat
 
    /// Note: If the complete expression evaluation fails. we should continue resolving dependencies
    ///       If the complete expression evaluation evaluates, then we set node to complete
diff --git a/ANode/src/NodeChange.cpp b/ANode/src/NodeChange.cpp
index 839592d..452c27a 100644
--- a/ANode/src/NodeChange.cpp
+++ b/ANode/src/NodeChange.cpp
@@ -108,6 +108,13 @@ void Node::changeTrigger(const std::string& expression)
 		throw std::runtime_error( ss.str() );
 	}
 
+	std::string errorMsg;
+   if (!check_expressions(ast.get(),expression,true/*trigger*/,errorMsg)) {
+      std::stringstream ss;
+      ss << "Node::changeTrigger: Failed checking. " << errorMsg ;
+      throw std::runtime_error( ss.str() );
+   }
+
 	deleteTrigger();
 	add_trigger( expression );
 }
@@ -123,6 +130,13 @@ void Node::changeComplete(const std::string& expression)
 		throw std::runtime_error( ss.str() );
 	}
 
+   std::string errorMsg;
+   if (!check_expressions(ast.get(),expression,false/*complete*/,errorMsg)) {
+      std::stringstream ss;
+      ss << "Node::changeComplete: Failed checking. " << errorMsg ;
+      throw std::runtime_error( ss.str() );
+   }
+
 	deleteComplete();
 	add_complete( expression );
 }
diff --git a/ANode/src/NodeContainer.cpp b/ANode/src/NodeContainer.cpp
index 72c7622..dcef371 100644
--- a/ANode/src/NodeContainer.cpp
+++ b/ANode/src/NodeContainer.cpp
@@ -47,8 +47,50 @@ using namespace std;
 /////////////////////////////////////////////////////////////////////////////////////////
 NodeContainer::NodeContainer( const std::string& name )
 : Node(name),order_state_change_no_(0), add_remove_state_change_no_(0) {}
+
 NodeContainer::NodeContainer()
 : order_state_change_no_(0),add_remove_state_change_no_(0) {}
+
+void NodeContainer::copy(const NodeContainer& rhs)
+{
+   size_t theSize = rhs.nodeVec_.size();
+   for(size_t s = 0; s < theSize; s++) {
+      Task* task = rhs.nodeVec_[s]->isTask();
+      if ( task ) {
+         task_ptr task_copy = boost::make_shared<Task>( *task );
+         task_copy->set_parent(this);
+         nodeVec_.push_back(task_copy);
+      }
+      else {
+         Family* family = rhs.nodeVec_[s]->isFamily();
+         assert(family);
+         family_ptr family_copy = boost::make_shared<Family>( *family );
+         family_copy->set_parent(this);
+         nodeVec_.push_back(family_copy);
+      }
+   }
+}
+
+NodeContainer::NodeContainer(const NodeContainer& rhs )
+  : Node(rhs),
+    order_state_change_no_(0),
+    add_remove_state_change_no_(0)
+{
+   copy(rhs);
+}
+
+NodeContainer& NodeContainer::operator=(const NodeContainer& rhs)
+{
+   if (this != &rhs) {
+      Node::operator=(rhs);
+      nodeVec_.clear();
+      copy(rhs);
+      order_state_change_no_ = 0;
+      add_remove_state_change_no_ = Ecf::incr_state_change_no();
+   }
+   return *this;
+}
+
 NodeContainer::~NodeContainer() {}
 
 void NodeContainer::accept(ecf::NodeTreeVisitor& v)
@@ -72,13 +114,18 @@ void NodeContainer::begin()
 }
 
 void NodeContainer::requeue(
-         bool resetRepeats,
-         int clear_suspended_in_child_nodes,
-         bool reset_next_time_slot
-         )
+      bool resetRepeats,
+      int clear_suspended_in_child_nodes,
+      bool reset_next_time_slot
+)
 {
 //	LOG(Log::DBG,"   " << debugType() << "::requeue() " << absNodePath() << " resetRepeats = " << resetRepeats);
-	Node::requeue(resetRepeats,clear_suspended_in_child_nodes,reset_next_time_slot);
+
+   // Node::requeue(..) will clear ecf::Flag::MIGRATED,
+   // this should cause children to be added in client def's, provided we force a sync
+   if (get_flag().is_set(ecf::Flag::MIGRATED)) force_sync();
+
+   Node::requeue(resetRepeats,clear_suspended_in_child_nodes,reset_next_time_slot);
 
 	// For negative numbers, do nothing, i.e do not clear
 	if (clear_suspended_in_child_nodes >=0) clear_suspended_in_child_nodes++;
@@ -156,7 +203,14 @@ void NodeContainer::incremental_changes( DefsDelta& changes, compound_memento_pt
    /// There no point doing a OrderMemento if children have been added/delete
    if (add_remove_state_change_no_ > changes.client_state_change_no()) {
       if (!comp.get()) comp = boost::make_shared<CompoundMemento>(absNodePath());
-      comp->add( boost::make_shared<ChildrenMemento>( nodeVec_ ) );
+
+      if (get_flag().is_set(ecf::Flag::MIGRATED)) {
+         // Treat node as having no children
+         comp->add( boost::make_shared<ChildrenMemento>( std::vector<node_ptr>() ) );
+      }
+      else {
+         comp->add( boost::make_shared<ChildrenMemento>( nodeVec_ ) );
+      }
    }
    else if (order_state_change_no_ > changes.client_state_change_no()) {
       if (!comp.get()) comp = boost::make_shared<CompoundMemento>(absNodePath());
@@ -311,6 +365,11 @@ void NodeContainer::calendarChanged(
          std::vector<node_ptr>& auto_cancelled_nodes,
          const ecf::LateAttr* inherited_late)
 {
+   // A node that is migrate should not allow any change of state.
+   if (get_flag().is_set(ecf::Flag::MIGRATED)) {
+      return;
+   }
+
    // The late attribute is inherited, we only set late on the task/alias
 	Node::calendarChanged(c,auto_cancelled_nodes,NULL);
 
@@ -391,6 +450,11 @@ NState::State NodeContainer::computedState(Node::TraverseType traverseType) cons
   	return ecf::theComputedNodeState(nodeVec_, (traverseType == Node::IMMEDIATE_CHILDREN) );
 }
 
+void NodeContainer::force_sync()
+{
+   add_remove_state_change_no_ = Ecf::incr_state_change_no();
+}
+
 node_ptr NodeContainer::removeChild(Node* child)
 {
  	size_t node_vec_size = nodeVec_.size();
@@ -854,64 +918,73 @@ std::vector<family_ptr> NodeContainer::familyVec() const
 
 bool NodeContainer::operator==(const NodeContainer& rhs) const
 {
-	size_t node_vec_size = nodeVec_.size();
-	if ( node_vec_size != rhs.nodeVec_.size()) {
+   // Ignore equality of nodeVec *IF* both nodes have ecf::Flag::MIGRATED set.
+   // i.e server will have a nodeVec_ and client will have an empty nodeVec_ ECFLOW-763
+   bool test_nodeVec_equality = true;
+   if (get_flag().is_set(ecf::Flag::MIGRATED) && rhs.get_flag().is_set(ecf::Flag::MIGRATED)) {
+      test_nodeVec_equality = false;
+   }
+
+   if ( test_nodeVec_equality ) {
+      size_t node_vec_size = nodeVec_.size();
+      if ( node_vec_size != rhs.nodeVec_.size()) {
 #ifdef DEBUG
-		if (Ecf::debug_equality()) {
-			std::cout << "NodeContainer::operator==  node_vec_size != rhs.nodeVec_.size() " << absNodePath() << "\n";
-			std::cout << "   nodeVec_.size() = " << node_vec_size << "  rhs.nodeVec_.size() = " << rhs.nodeVec_.size() << "\n";
-		}
+         if (Ecf::debug_equality()) {
+            std::cout << "NodeContainer::operator==  node_vec_size != rhs.nodeVec_.size() " << absNodePath() << "\n";
+            std::cout << "   nodeVec_.size() = " << node_vec_size << "  rhs.nodeVec_.size() = " << rhs.nodeVec_.size() << "\n";
+         }
 #endif
- 		return false;
-	}
+         return false;
+      }
 
-	for(size_t i =0; i < node_vec_size; ++i) {
+      for(size_t i =0; i < node_vec_size; ++i) {
 
-		Task* task = nodeVec_[i]->isTask();
-		if (task) {
-			Task* rhs_task = rhs.nodeVec_[i]->isTask();
-			if ( !rhs_task ) {
+         Task* task = nodeVec_[i]->isTask();
+         if (task) {
+            Task* rhs_task = rhs.nodeVec_[i]->isTask();
+            if ( !rhs_task ) {
 #ifdef DEBUG
-				if (Ecf::debug_equality()) {
-					std::cout << "NodeContainer::operator==  if ( !rhs_task ) " << absNodePath() << "\n";
-				}
+               if (Ecf::debug_equality()) {
+                  std::cout << "NodeContainer::operator==  if ( !rhs_task ) " << absNodePath() << "\n";
+               }
 #endif
-				return false;
-			}
+               return false;
+            }
 
-			if ( !( *task == *rhs_task )) {
+            if ( !( *task == *rhs_task )) {
 #ifdef DEBUG
-				if (Ecf::debug_equality()) {
-					std::cout << "NodeContainer::operator==  if ( !( *task == *rhs_task )) " << absNodePath() << "\n";
-				}
+               if (Ecf::debug_equality()) {
+                  std::cout << "NodeContainer::operator==  if ( !( *task == *rhs_task )) " << absNodePath() << "\n";
+               }
 #endif
-				return false;
-			}
-		}
-		else {
-			Family* rhs_family = rhs.nodeVec_[i]->isFamily();
-			if ( !rhs_family ) {
+               return false;
+            }
+         }
+         else {
+            Family* rhs_family = rhs.nodeVec_[i]->isFamily();
+            if ( !rhs_family ) {
 #ifdef DEBUG
-				if (Ecf::debug_equality()) {
-					std::cout << "NodeContainer::operator==  if ( !rhs_family ) " << absNodePath() << "\n";
-				}
+               if (Ecf::debug_equality()) {
+                  std::cout << "NodeContainer::operator==  if ( !rhs_family ) " << absNodePath() << "\n";
+               }
 #endif
-				return false;
-			}
+               return false;
+            }
 
-			Family* family = nodeVec_[i]->isFamily(); LOG_ASSERT( family, "" );
-			if ( !( *family == *rhs_family )) {
+            Family* family = nodeVec_[i]->isFamily(); LOG_ASSERT( family, "" );
+            if ( !( *family == *rhs_family )) {
 #ifdef DEBUG
-				if (Ecf::debug_equality()) {
-					std::cout << "NodeContainer::operator==  if ( !( *family == *rhs_family )) " << absNodePath() << "\n";
-				}
+               if (Ecf::debug_equality()) {
+                  std::cout << "NodeContainer::operator==  if ( !( *family == *rhs_family )) " << absNodePath() << "\n";
+               }
 #endif
-				return false;
-			}
-		}
-	}
+               return false;
+            }
+         }
+      }
+   }
 
-	return Node::operator==(rhs);
+   return Node::operator==(rhs);
 }
 
 std::ostream& NodeContainer::print(std::ostream& os) const
diff --git a/ANode/src/NodeContainer.hpp b/ANode/src/NodeContainer.hpp
index 737ce69..1b1a6a4 100644
--- a/ANode/src/NodeContainer.hpp
+++ b/ANode/src/NodeContainer.hpp
@@ -18,10 +18,14 @@
 
 #include <limits>
 #include "Node.hpp"
+#include "CheckPtContext.hpp"
 
 class NodeContainer : public Node {
+protected:
+   NodeContainer& operator=(const NodeContainer&);
 public:
-	NodeContainer ( const std::string& name );
+   NodeContainer( const std::string& name );
+   NodeContainer(const NodeContainer& );
 	NodeContainer();
 	virtual ~NodeContainer();
 
@@ -121,10 +125,18 @@ protected:
    unsigned int order_state_change_no_;     // no need to persist
    unsigned int add_remove_state_change_no_;// no need to persist
 
+   virtual void force_sync();
+
    void incremental_changes( DefsDelta& changes, compound_memento_ptr& comp) const;
 
 private:
+   void copy(const NodeContainer& rhs);
 	friend class boost::serialization::access;
+
+	// distinguish between check-pointing and server->client comm's
+	// *when* handling Flag::MIGRATED.
+	// Check-pointing should always persist nodeVec_
+	// Flag::MIGRATED should not persist nodeVec_ when in server->client command context
 	template<class Archive>
 	void serialize(Archive & ar, const unsigned int /*version*/)
 	{
@@ -133,7 +145,20 @@ private:
 
 	   // serialise base class information
 	   ar & boost::serialization::base_object<Node>(*this);
-	   ar & nodeVec_;
+
+	   // Handle ecf::Flag::MIGRATED, don't save nodeVec_
+	   // When check-pointing we always need to save the children
+	   if (Archive::is_saving::value &&
+	         get_flag().is_set(ecf::Flag::MIGRATED) &&
+	         ! ecf::CheckPtContext::in_checkpt()
+	       ) {
+
+	      std::vector<node_ptr> nodeVec;
+	      ar & nodeVec;
+	   }
+	   else {
+	      ar & nodeVec_;
+	   }
 
       // Setup the parent pointers. Since they are not serialised
       if (Archive::is_loading::value) {
diff --git a/ANode/src/NodeFind.cpp b/ANode/src/NodeFind.cpp
index d21d133..bd5361b 100644
--- a/ANode/src/NodeFind.cpp
+++ b/ANode/src/NodeFind.cpp
@@ -33,9 +33,10 @@ ostream& operator<<(ostream& os, const vector<T>& v)
 
 bool Node::findParentVariableValue(const std::string& name, std::string& theValue) const
 {
-   if (findVariableValue(name,theValue)) return true;
-   const Repeat& repeat = findRepeat(name);
-   if (!repeat.empty())  { theValue = repeat.valueAsString(); return true; }
+   if (!varVec_.empty() && findVariableValue(name,theValue)) return true;
+   if (!repeat_.empty() && repeat_.name() == name) {
+      theValue = repeat_.valueAsString(); return true;
+   }
    if (findGenVariableValue(name,theValue)) return true;
 
 
@@ -43,8 +44,10 @@ bool Node::findParentVariableValue(const std::string& name, std::string& theValu
    while (theParent) {
 
       if (theParent->findVariableValue(name,theValue)) return true;
-      const Repeat& repeatVar = theParent->findRepeat(name);
-      if (!repeatVar.empty()) { theValue = repeatVar.valueAsString(); return true; }
+      const Repeat& rep = theParent->repeat();
+      if (!rep.empty() && rep.name() == name) {
+         theValue = rep.valueAsString(); return true;
+      }
       if (theParent->findGenVariableValue(name,theValue)) return true;
 
       theParent =  theParent->parent();
@@ -53,7 +56,7 @@ bool Node::findParentVariableValue(const std::string& name, std::string& theValu
    // If all else fails search defs environment, returns empty string if match not found
    // The defs environment is constructed via:
    //   o/ default settings for ECF_HOME,ECF_LOG, ECF_CHECK,ECF_CHECKOLD,ECF_CHECKINTERVAL
-   //                           ECF_INTERVAL ECF_CHECKMODE ECF_JOB_CMD ECF_MICRO ECF_TRIES ECF_PORT, ECF_NODE
+   //                           ECF_INTERVAL ECF_CHECKMODE ECF_JOB_CMD ECF_MICRO ECF_TRIES ECF_PORT, ECF_HOST
    //   o/ These values are updated from the server environment when the BEGIN cmd is called.
    Defs* the_defs = defs();
    if ( the_defs ) {
@@ -76,7 +79,7 @@ bool Node::find_parent_gen_variable_value(const std::string& name, std::string&
     // If all else fails search defs environment, returns empty string if match not found
     // The defs environment is constructed via:
     //   o/ default settings for ECF_HOME,ECF_LOG, ECF_CHECK,ECF_CHECKOLD,ECF_CHECKINTERVAL
-    //                           ECF_INTERVAL ECF_CHECKMODE ECF_JOB_CMD ECF_MICRO ECF_TRIES ECF_PORT, ECF_NODE
+    //                           ECF_INTERVAL ECF_CHECKMODE ECF_JOB_CMD ECF_MICRO ECF_TRIES ECF_PORT, ECF_HOST
     //   o/ These values are updated from the server environment when the BEGIN cmd is called.
     Defs* the_defs = defs();
     if ( the_defs ) {
@@ -152,6 +155,8 @@ bool Node::user_variable_exists(const std::string& name) const
 
 const Variable& Node::findVariable(const std::string& name) const
 {
+   if (varVec_.empty())  return Variable::EMPTY();
+
    size_t theSize = varVec_.size();
    for(size_t i = 0; i < theSize; i++) {
       if (varVec_[i].name() == name) {
@@ -325,6 +330,9 @@ bool Node::findExprVariable( const std::string& name)
    const Variable& gen_variable = findGenVariable( name );
    if (!gen_variable.empty()) return true;
 
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) return true;
+
    return false;
 }
 
@@ -355,6 +363,10 @@ int Node::findExprVariableValue( const std::string& name) const
 
    const Variable& gen_variable =  findGenVariable( name );
    if ( !gen_variable.empty() )  return gen_variable.value();
+
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) return limit->value();
+
    return 0;
 }
 
@@ -385,6 +397,10 @@ int Node::findExprVariableValueAndPlus(const std::string& name, int val) const
 
    const Variable& gen_variable =  findGenVariable( name );
    if ( !gen_variable.empty() )  return (gen_variable.value()+val);
+
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) return (limit->value() + val);
+
    return val;
 }
 
@@ -415,6 +431,10 @@ int Node::findExprVariableValueAndMinus(const std::string& name, int val) const
 
    const Variable& gen_variable = findGenVariable( name );
    if ( !gen_variable.empty() )  return (gen_variable.value() - val);
+
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) return (limit->value() - val);
+
    return -val;
 }
 
@@ -445,6 +465,12 @@ int Node::findExprVariableValueAndType( const std::string& name, std::string& va
       varType = "gen-variable";
       return gen_variable.value();
    }
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) {
+      varType = "limit";
+      return limit->value();
+   }
+
    varType = "variable-not-found";
    return 0;
 }
@@ -476,6 +502,11 @@ void Node::findExprVariableAndPrint( const std::string& name, ostream& os) const
       os << "GEN-VARIABLE " << gen_variable.dump();
       return;
    }
+   limit_ptr limit = find_limit( name );
+   if (limit.get()) {
+      os << limit->toString() << " value(" << limit->value() << ")";
+      return;
+   }
 }
 
 
diff --git a/ANode/src/ResolveExternsVisitor.hpp b/ANode/src/ResolveExternsVisitor.hpp
index cdf7de2..5de331f 100644
--- a/ANode/src/ResolveExternsVisitor.hpp
+++ b/ANode/src/ResolveExternsVisitor.hpp
@@ -65,7 +65,7 @@ public:
  	virtual void visitLessThan(AstLessThan*){}
  	virtual void visitLeaf(AstLeaf*){}
  	virtual void visitInteger(AstInteger*){}
- 	virtual void visitString(AstString*){}
+   virtual void visitFunction(AstFunction*){}
  	virtual void visitNodeState(AstNodeState*){}
  	virtual void visitEventState(AstEventState*){}
  	virtual void visitNode(AstNode*);
diff --git a/ANode/src/ServerState.cpp b/ANode/src/ServerState.cpp
index 72b2ed7..1369b93 100644
--- a/ANode/src/ServerState.cpp
+++ b/ANode/src/ServerState.cpp
@@ -37,6 +37,17 @@ ServerState::ServerState() :
 	setup_default_env();
 }
 
+ServerState::ServerState(const ServerState& rhs)
+: state_change_no_(0),
+  variable_state_change_no_(0),
+  server_state_(rhs.server_state_),
+  server_variables_(rhs.server_variables_),
+  user_variables_(rhs.user_variables_),
+  jobSubmissionInterval_(rhs.jobSubmissionInterval_),
+  jobGeneration_(rhs.jobGeneration_),
+  hostPort_(rhs.hostPort_)
+{}
+
 bool ServerState::operator==(const ServerState& rhs) const
 {
    if ( get_state() != rhs.get_state()) {
@@ -65,7 +76,7 @@ bool ServerState::operator==(const ServerState& rhs) const
       return false;
    }
 
-   /// Check pointing, SAVES server variables, since they are visualised by client like ecflowview
+   /// Check pointing, SAVES server variables, since they are visualised by client like ecflow_ui
    /// HOWEVER PrintStyle::MIGRATE does not save the server variables, since they should
    /// not take part in migration. However the testing compares migration files with check point files
    /// This would always fail. Hence we do not compare server variables.
@@ -456,7 +467,8 @@ void ServerState::setup_default_server_variables(std::vector<Variable>&  server_
    // The server sets these variable for use by the client. i.e when creating the jobs
    // The clients then uses them to communicate with the server.
    server_variables.push_back( Variable(Str::ECF_PORT(),port) );
-   server_variables.push_back( Variable(Str::ECF_NODE(),Str::LOCALHOST()) );
+   server_variables.push_back( Variable(Str::ECF_NODE(),"%ECF_HOST%") );
+   server_variables.push_back( Variable(Str::ECF_HOST(),Str::LOCALHOST()) );
 }
 
 /// determines why the node is not running.
diff --git a/ANode/src/ServerState.hpp b/ANode/src/ServerState.hpp
index d9b95b0..1faf9da 100644
--- a/ANode/src/ServerState.hpp
+++ b/ANode/src/ServerState.hpp
@@ -15,7 +15,6 @@
 // Description :
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#include <boost/noncopyable.hpp>
 #include <boost/serialization/serialization.hpp>
 #include <boost/serialization/string.hpp>         // no need to include <string>
 
@@ -33,11 +32,12 @@
 //
 // Note The default state here is RUNNING while in the server the default state is HALTED
 // By choosing RUNNING, it allows the Defs related test, to run without explicitly setting the state
-class ServerState : private boost::noncopyable {
+class ServerState {
 public:
-	ServerState();
+   ServerState();
+   ServerState(const ServerState&);
 
-   /// Check pointing, SAVES server variables, since they are visualised by client like ecflowview
+   /// Check pointing, SAVES server variables, since they are visualised by client like ecflow_ui
    /// HOWEVER PrintStyle::MIGRATE does not save the server variables, since they should
    /// not take part in migration. However the testing compares migration files with check point files
    /// This would always fail. Hence we do not compare server variables.
diff --git a/ANode/src/Submittable.cpp b/ANode/src/Submittable.cpp
index 03dcad3..3322118 100644
--- a/ANode/src/Submittable.cpp
+++ b/ANode/src/Submittable.cpp
@@ -51,6 +51,23 @@ const std::string& Submittable::DUMMY_JOBS_PASSWORD()        { static const std:
 const std::string& Submittable::FREE_JOBS_PASSWORD()         { static const std::string FREE_JOBS_PASSWORD = "FREE"; return FREE_JOBS_PASSWORD;}
 const std::string& Submittable::DUMMY_PROCESS_OR_REMOTE_ID() { static const std::string DUMMY_PROCESS_OR_REMOTE_ID = "_RID_"; return DUMMY_PROCESS_OR_REMOTE_ID;}
 
+Submittable& Submittable::operator=(const Submittable& rhs)
+{
+   if (this != &rhs) {
+      Node::operator=(rhs);
+      jobsPassword_ = rhs.jobsPassword_;
+      process_or_remote_id_ = rhs.process_or_remote_id_;
+      abortedReason_ = rhs.abortedReason_;
+      tryNo_ = rhs.tryNo_;
+
+      delete sub_gen_variables_;
+      sub_gen_variables_ = NULL;
+
+      state_change_no_ = Ecf::incr_state_change_no();
+   }
+   return *this;
+}
+
 Submittable::~Submittable()
 {
    delete sub_gen_variables_;
@@ -300,9 +317,10 @@ EcfFile Submittable::locatedEcfFile() const
       return EcfFile( const_cast<Submittable*>(this), genvar_ecfscript.theValue() );
    }
    else {
-      std::stringstream ss; ss << "   ECF_SCRIPT(" << genvar_ecfscript.theValue() << ") does not exist:\n";
-      reasonEcfFileNotFound += ss.str();
-   }
+      reasonEcfFileNotFound += "   ECF_SCRIPT(";
+      reasonEcfFileNotFound += genvar_ecfscript.theValue();
+      reasonEcfFileNotFound += ") does not exist:\n";
+    }
 
    // Caution: This is not used in operations or research, equally is has not been tested.
    std::string ecf_fetch_cmd;
@@ -315,8 +333,9 @@ EcfFile Submittable::locatedEcfFile() const
          return EcfFile( const_cast<Submittable*>(this), ecf_fetch_cmd, EcfFile::ECF_FETCH_CMD);
       }
       else {
-         std::stringstream ss; ss << "   Variable ECF_FETCH(" << ecf_fetch_cmd << ") defined, but variable substitution has failed:\n";
-         reasonEcfFileNotFound += ss.str();
+         reasonEcfFileNotFound += "   Variable ECF_FETCH(";
+         reasonEcfFileNotFound +=  ecf_fetch_cmd;
+         reasonEcfFileNotFound +=  ") defined, but variable substitution has failed:\n";
          throw std::runtime_error( reasonEcfFileNotFound ) ;
       }
    }
@@ -334,8 +353,9 @@ EcfFile Submittable::locatedEcfFile() const
          return EcfFile( const_cast<Submittable*>(this), ecf_script_cmd, EcfFile::ECF_SCRIPT_CMD);
       }
       else {
-         std::stringstream ss; ss << "   Variable ECF_SCRIPT_CMD(" << ecf_script_cmd << ") defined, but variable substitution has failed:\n";
-         reasonEcfFileNotFound += ss.str();
+         reasonEcfFileNotFound += "   Variable ECF_SCRIPT_CMD(";
+         reasonEcfFileNotFound += ecf_script_cmd;
+         reasonEcfFileNotFound += ") defined, but variable substitution has failed:\n";
          throw std::runtime_error( reasonEcfFileNotFound ) ;
       }
    }
@@ -354,16 +374,33 @@ EcfFile Submittable::locatedEcfFile() const
          // If File::backwardSearch fails it returns an empty string, i.e failure to locate script (Task/.ecf || Alias/.usr) file
          std::string searchResult = File::backwardSearch( ecf_filesDirectory, theAbsNodePath, script_extension() );
          if ( searchResult.empty()) {
-            std::stringstream ss; ss << "   Search of directory ECF_FILES(" << ecf_filesDirectory << ") failed:\n";
-            reasonEcfFileNotFound += ss.str();
-         }
-         else {
-            return EcfFile(const_cast<Submittable*>(this), searchResult);
+            reasonEcfFileNotFound += "   Search of directory ECF_FILES(";
+            reasonEcfFileNotFound += ecf_filesDirectory;
+            reasonEcfFileNotFound += ") failed:\n";
          }
+         else  return EcfFile(const_cast<Submittable*>(this), searchResult);
       }
       else {
-         std::stringstream ss; ss << "   Directory ECF_FILES(" << ecf_filesDirectory << ") does not exist:\n";
-         reasonEcfFileNotFound += ss.str();
+         // Before failing try again but with variable Subsitution. ECFLOW-788
+         std::string original_ecf_filesDirectory = ecf_filesDirectory;
+         variableSubsitution(ecf_filesDirectory);
+         if ( !ecf_filesDirectory.empty() && fs::exists(ecf_filesDirectory) && fs::is_directory(ecf_filesDirectory))
+         {
+            // If File::backwardSearch fails it returns an empty string, i.e failure to locate script (Task/.ecf || Alias/.usr) file
+            std::string searchResult = File::backwardSearch( ecf_filesDirectory, theAbsNodePath, script_extension() );
+            if ( searchResult.empty()) {
+               std::stringstream ss; ss << "   Search of directory ECF_FILES(variable substituted)(" << ecf_filesDirectory << ") failed:\n";
+               reasonEcfFileNotFound += ss.str();
+            }
+            else return EcfFile(const_cast<Submittable*>(this), searchResult);
+         }
+         else {
+            std::stringstream ss;
+            ss << "   Directory ECF_FILES(" << original_ecf_filesDirectory << ") does not exist:\n";
+            if (original_ecf_filesDirectory != ecf_filesDirectory )
+               ss << "   Directory ECF_FILES(" << ecf_filesDirectory << ") after variable substitution does not exist:\n";
+            reasonEcfFileNotFound += ss.str();
+         }
       }
    }
    else {
@@ -379,22 +416,26 @@ EcfFile Submittable::locatedEcfFile() const
       // If File::backwardSearch fails it returns an empty string, i.e failure to locate script (Task/.ecf || Alias/.usr) file
       std::string searchResult = File::backwardSearch( ecf_home, theAbsNodePath, script_extension() );
       if ( searchResult.empty()) {
-         std::stringstream ss; ss << "   Search of directory ECF_HOME(" << ecf_home << ") failed:\n";
-         reasonEcfFileNotFound += ss.str();
+         reasonEcfFileNotFound += "   Search of directory ECF_HOME(";
+         reasonEcfFileNotFound += ecf_home;
+         reasonEcfFileNotFound += ") failed:\n";
       }
       else {
          return EcfFile(const_cast<Submittable*>(this), searchResult);
       }
    }
    else {
-      std::stringstream ss; ss << "   Directory ECF_HOME(" << ecf_home << ") does not exist:\n";
-      reasonEcfFileNotFound += ss.str();
+      reasonEcfFileNotFound += "   Directory ECF_HOME(";
+      reasonEcfFileNotFound += ecf_home;
+      reasonEcfFileNotFound += ") does not exist:\n";
    }
 
    // failed to find  .ecf file
-   std::stringstream ss;
-   ss << "   Script for " << theAbsNodePath << " can not be found:\n" << reasonEcfFileNotFound;
-   throw std::runtime_error( ss.str() ) ;
+   std::string error_msg = "   Script for ";
+   error_msg += theAbsNodePath;
+   error_msg += " can not be found:\n";
+   error_msg += reasonEcfFileNotFound;
+   throw std::runtime_error( error_msg ) ;
 }
 
 void Submittable::set_jobs_password(const std::string& p)
@@ -466,15 +507,29 @@ bool Submittable::submit_job_only( JobsParam& jobsParam)
    flag().clear(ecf::Flag::JOBCMD_FAILED);
    requeue_labels(); // ECFLOW-195, requeue no longer resets labels on tasks, hence we do it at task run time.
 
+   theValue.clear();
+   if (findParentUserVariableValue(Str::ECF_NO_SCRIPT(),theValue)) {
+      // The script is based on the ECF_JOB_CMD
+      return non_script_based_job_submission(jobsParam);
+   }
+
+   return script_based_job_submission(jobsParam);
+}
+
+bool Submittable::script_based_job_submission(JobsParam& jobsParam)
+{
    try {
-      // Locate the ecf files corresponding to the jobs.
-      EcfFile ecf_file = locatedEcfFile();
+      // Locate the ecf files corresponding to the task.
+      // Assign lifetime of EcfFile to JobsParam.
+      // Minimise memory allocation/deallocation with Job lines and allow include file caching
+      jobsParam.set_ecf_file( locatedEcfFile() );
 
-      // Pre-process sms file (i.e expand includes, remove comments,manual) and perform
+      // Pre-process ecf file (i.e expand includes, remove comments,manual) and perform
       // variable substitution. This will then form the '.job' files.
       // If the job file already exist it is overridden
+      // The job file SHOULD be referenced in ECF_JOB_CMD
       try {
-         const std::string& job_size = ecf_file.create_job( jobsParam );
+         const std::string& job_size = jobsParam.ecf_file().create_job( jobsParam );
 
          //... make sure ECF_PASS is set on the task, This is substituted in <head.h> file
          //... and hence must be done before variable substitution in ECF_/JOB file
@@ -483,7 +538,6 @@ bool Submittable::submit_job_only( JobsParam& jobsParam)
             set_state(NState::SUBMITTED, false, job_size );
             return true;
          }
-
          // Fall through job submission failed.
       }
       catch ( std::exception& e) {
@@ -499,7 +553,6 @@ bool Submittable::submit_job_only( JobsParam& jobsParam)
       }
    }
    catch (std::exception& e) {
-
       flag().set(ecf::Flag::NO_SCRIPT);
       std::stringstream ss; ss << "Submittable::submit_job_only: Script location failed for task " << absNodePath() << " :\n" << e.what() << "\n";
       jobsParam.errorMsg() += ss.str();
@@ -516,6 +569,30 @@ bool Submittable::submit_job_only( JobsParam& jobsParam)
    return false;
 }
 
+bool Submittable::non_script_based_job_submission(JobsParam& jobsParam)
+{
+   // No script(i.e .ecf file), hence it is assumed the ECF_JOB_CMD will call:
+   //  ECF_PASS=%ECF_PASS%;ECF_PORT=%ECF_PORT%;ECF_HOST=%ECF_HOST%;ECF_NAME=%ECF_NAME%;ECF_TRYNO=%ECF_TRYNO%;
+   //  ecflow_client --init %%;
+   //     . some user script, or in-line command, should use full path.;
+   //     ecflow_client (--meter,--event,--label);
+   //  ecflow_client --hcomplete
+
+   if (createChildProcess(jobsParam)) {
+      set_state(NState::SUBMITTED, false, Str::EMPTY()/*job size*/ );
+      return true;
+   }
+
+   // Fall through job submission failed.
+   flag().set(ecf::Flag::JOBCMD_FAILED);
+   std::string reason = " Job creation failed for task ";
+   reason += absNodePath();
+   reason += " could not create child process.";
+   jobsParam.errorMsg() += reason;
+   set_aborted_only( reason );
+   return false;
+}
+
 
 void Submittable::check_job_creation( job_creation_ctrl_ptr jobCtrl)
 {
@@ -848,14 +925,15 @@ void Submittable::set_genvar_ecfrid(const std::string& value)
 // Check the variable names. i.e we know they are valid
 SubGenVariables::SubGenVariables(const Submittable* sub)
 : submittable_(sub),
-  genvar_task_("TASK", "", false),
-  genvar_ecfrid_(Str::ECF_RID(), "", false),
-  genvar_ecftryno_(Str::ECF_TRYNO(), "", false),
-  genvar_ecfname_(Str::ECF_NAME(), "", false),
-  genvar_ecfpass_(Str::ECF_PASS(), "", false),
   genvar_ecfjob_(Str::ECF_JOB(), "", false),
   genvar_ecfjobout_(Str::ECF_JOBOUT(), "", false),
-  genvar_ecfscript_(Str::ECF_SCRIPT(), "", false) {}
+  genvar_ecftryno_(Str::ECF_TRYNO(), "", false),
+  genvar_task_("TASK", "", false),
+  genvar_ecfpass_(Str::ECF_PASS(), "", false),
+  genvar_ecfscript_(Str::ECF_SCRIPT(), "", false),
+  genvar_ecfname_(Str::ECF_NAME(), "", false),
+  genvar_ecfrid_(Str::ECF_RID(), "", false)
+  {}
 
 void SubGenVariables::update_generated_variables() const
 {
@@ -931,14 +1009,14 @@ void SubGenVariables::update_dynamic_generated_variables(const std::string& ecf_
 
 const Variable& SubGenVariables::findGenVariable(const std::string& name) const
 {
-   if (genvar_task_.name() == name) return genvar_task_;
-   if (genvar_ecftryno_.name() == name) return genvar_ecftryno_;
-   if (genvar_ecfjob_.name() == name) return genvar_ecfjob_;
-   if (genvar_ecfscript_.name() == name) return genvar_ecfscript_;
-   if (genvar_ecfjobout_.name() == name) return genvar_ecfjobout_;
-   if (genvar_ecfrid_.name() == name) return genvar_ecfrid_;
-   if (genvar_ecfname_.name() == name) return genvar_ecfname_;
-   if (genvar_ecfpass_.name() == name) return genvar_ecfpass_;
+   if (genvar_ecfjob_.name() == name)     return genvar_ecfjob_;
+   if (genvar_ecfjobout_.name() == name)  return genvar_ecfjobout_;
+   if (genvar_ecftryno_.name() == name)   return genvar_ecftryno_;
+   if (genvar_ecfname_.name() == name)    return genvar_ecfname_;
+   if (genvar_task_.name() == name)       return genvar_task_;
+   if (genvar_ecfpass_.name() == name)    return genvar_ecfpass_;
+   if (genvar_ecfscript_.name() == name)  return genvar_ecfscript_;
+   if (genvar_ecfrid_.name() == name)     return genvar_ecfrid_;
    return Variable::EMPTY();
 }
 
diff --git a/ANode/src/Submittable.hpp b/ANode/src/Submittable.hpp
index a0619ec..8c06af8 100644
--- a/ANode/src/Submittable.hpp
+++ b/ANode/src/Submittable.hpp
@@ -34,6 +34,17 @@ protected:
      state_change_no_(0),
      sub_gen_variables_(NULL) {}
 
+   Submittable(const Submittable& rhs)
+   : Node(rhs),
+     jobsPassword_(rhs.jobsPassword_),
+     process_or_remote_id_(rhs.process_or_remote_id_),
+     abortedReason_(rhs.abortedReason_),
+     tryNo_(rhs.tryNo_),
+     state_change_no_(0),
+     sub_gen_variables_(NULL) {}
+
+   Submittable& operator=(const Submittable&);
+
    bool operator==(const Submittable& rhs) const;
 
 public:
@@ -132,16 +143,15 @@ private:
    friend class AlterCmd;
 
    void set_jobs_password(const std::string& p);
-
    void set_process_or_remote_id(const std::string&);
 
    // Use when we _only_ want to set the state,
    void set_aborted_only(const std::string& reason);
-
    bool createChildProcess(JobsParam& jobsParam);
-
    void clear(); // process_id password and aborted reason
 
+   bool script_based_job_submission(JobsParam& jobsParam);
+   bool non_script_based_job_submission(JobsParam& jobsParam);
 
    void update_static_generated_variables(const std::string& ecf_home, const std::string& theAbsNodePath) const;
    const Variable& get_genvar_ecfrid() const;
@@ -193,14 +203,14 @@ public:
 
 private:
    const Submittable* submittable_;
-   mutable Variable genvar_task_;
-   mutable Variable genvar_ecfrid_;
-   mutable Variable genvar_ecftryno_;
-   mutable Variable genvar_ecfname_;
-   mutable Variable genvar_ecfpass_;
    mutable Variable genvar_ecfjob_;
    mutable Variable genvar_ecfjobout_;
+   mutable Variable genvar_ecftryno_;
+   mutable Variable genvar_task_;
+   mutable Variable genvar_ecfpass_;
    mutable Variable genvar_ecfscript_;
+   mutable Variable genvar_ecfname_;
+   mutable Variable genvar_ecfrid_;
 };
 
 #endif
diff --git a/ANode/src/Suite.cpp b/ANode/src/Suite.cpp
index b575c31..4b077eb 100644
--- a/ANode/src/Suite.cpp
+++ b/ANode/src/Suite.cpp
@@ -46,6 +46,46 @@ using namespace boost::gregorian;
 // is abstract syntax tree during the post process call
 
 
+Suite::Suite(const Suite& rhs)
+: NodeContainer(rhs),
+  defs_(NULL),
+  begun_(rhs.begun_),
+  state_change_no_(0),
+  modify_change_no_(0),
+  begun_change_no_(0),
+  calendar_change_no_(0),
+  suite_gen_variables_(NULL)
+{
+   if (rhs.clockAttr_.get())
+      clockAttr_ = boost::make_shared<ClockAttr>( *rhs.clockAttr_ );
+
+   if (rhs.clock_end_attr_.get())
+      clock_end_attr_ = boost::make_shared<ClockAttr>( *rhs.clock_end_attr_ );
+
+   calendar_ = rhs.calendar_;
+}
+
+Suite& Suite::operator=(const Suite& rhs)
+{
+   // defs_ not set
+   if (this != &rhs) {
+      NodeContainer::operator=(rhs);
+      begun_ = rhs.begun_;
+      if (rhs.clockAttr_.get()) clockAttr_ = boost::make_shared<ClockAttr>( *rhs.clockAttr_ );
+      if (rhs.clock_end_attr_.get()) clock_end_attr_ = boost::make_shared<ClockAttr>( *rhs.clock_end_attr_ );
+      calendar_ = rhs.calendar_;
+
+      state_change_no_ = 0;
+      modify_change_no_ = Ecf::incr_modify_change_no();
+      begun_change_no_ = 0;
+      calendar_change_no_ = 0;
+
+      delete suite_gen_variables_;
+      suite_gen_variables_ = NULL;
+   }
+   return *this;
+}
+
 Suite::~Suite()
 {
 //	std::cout << "Suite::~Suite() " << debugNodePath() << "\n";
@@ -111,7 +151,7 @@ void Suite::requeue(
    SuiteChanged1 changed(this); //
 
    // requeue can cause thousands of mementos to be created, to avoid this we
-   // update the modify change number.
+   // update the modify change number, this will force a full sync in client
    Ecf::incr_modify_change_no();
 
    requeue_calendar();
@@ -251,7 +291,8 @@ std::ostream& Suite::print(std::ostream& os) const
 	Node::print(os);
 
 	// make sure clock attribute is written before
-	if (clockAttr_.get()) clockAttr_->print(os);
+   if (clockAttr_.get()) clockAttr_->print(os);
+   if (clock_end_attr_.get()) clock_end_attr_->print(os);
 	if (!PrintStyle::defsStyle()) {
 	   std::string calendar_state = calendar_.write_state();
 	   if (!calendar_state.empty()) {
@@ -292,8 +333,17 @@ void Suite::addClock( const ClockAttr& c,bool initialize_calendar)
 	if ( clockAttr_.get()) {
  		throw std::runtime_error("Add Clock failed: Suite can only have one clock " + absNodePath());
  	}
+   if (clock_end_attr_.get()) {
+       if (clock_end_attr_->ptime() <= c.ptime()) {
+          throw std::runtime_error("Add Clock failed:: End time must be greater than start time " + absNodePath());
+       }
+    }
+
 	clockAttr_ = boost::make_shared<ClockAttr>(c);
 	if (initialize_calendar) clockAttr_->init_calendar(calendar_);
+
+   // clock_end_attr_ is always same type as clock
+   if (clock_end_attr_.get())  clock_end_attr_->hybrid(clockAttr_->hybrid());
 }
 
 void Suite::changeClock( const ClockAttr& c)
@@ -303,6 +353,25 @@ void Suite::changeClock( const ClockAttr& c)
  	addClock( c , false);
 }
 
+void Suite::add_end_clock( const ClockAttr& c)
+{
+   // end clock is for for simulator only
+   if ( clock_end_attr_.get()) {
+      throw std::runtime_error("Add end Clock failed: Suite can only have one end clock " + absNodePath());
+   }
+   if (clockAttr_.get()) {
+      if (c.ptime() <=  clockAttr_->ptime()) {
+         throw std::runtime_error("Add end Clock failed: End time must be greater than start time " + absNodePath());
+      }
+   }
+
+   clock_end_attr_ = boost::make_shared<ClockAttr>(c);
+   clock_end_attr_->set_end_clock();
+
+   // clock_end_attr_ is always same type as clock
+   if (clockAttr_.get())  clock_end_attr_->hybrid(clockAttr_->hybrid());
+}
+
 void Suite::changeClockType(const std::string& clockType)
 {
    // ISSUES:
@@ -335,6 +404,9 @@ void Suite::changeClockType(const std::string& clockType)
       addClock( ClockAttr( clockType == "hybrid") ); // will update state change_no
    }
 
+   // clock_end_attr_ is always same type as clock
+   if (clock_end_attr_.get()) clock_end_attr_->hybrid(clockAttr_->hybrid());
+
    // re-sync suite calendar for clock attribute, re-queue all time based attributes
    handle_clock_attribute_change();
 }
@@ -621,6 +693,8 @@ void Suite::gen_variables(std::vector<Variable>& vec) const
 SuiteGenVariables::SuiteGenVariables(const Suite* s)
 :  suite_(s),
    genvar_suite_("SUITE", "", false),
+   genvar_ecf_time_("ECF_TIME", "", false ),
+   genvar_time_("TIME", "", false ),
    genvar_yyyy_("YYYY","", false),
    genvar_dow_("DOW", "", false),
    genvar_doy_("DOY", "", false),
@@ -629,9 +703,8 @@ SuiteGenVariables::SuiteGenVariables(const Suite* s)
    genvar_dd_("DD", "", false ),
    genvar_mm_("MM", "", false ),
    genvar_month_("MONTH", "", false ),
-   genvar_smsdate_("ECF_DATE", "", false ),
-   genvar_clock_("ECF_CLOCK", "", false ),
-   genvar_time_("ECF_TIME", "", false ),
+   genvar_ecf_date_("ECF_DATE", "", false ),
+   genvar_ecf_clock_("ECF_CLOCK", "", false ),
    force_update_(false){}
 
 void SuiteGenVariables::update_generated_variables() const
@@ -673,44 +746,51 @@ void SuiteGenVariables::update_generated_variables() const
    //#endif
 
    char smstime[255];
-   sprintf(smstime,"%02d:%02d", time_of_day.hours(),time_of_day.minutes());
+   sprintf(smstime,"%02d%02d", time_of_day.hours(),time_of_day.minutes());
    genvar_time_.set_value( smstime );
 
+   sprintf(smstime,"%02d:%02d", time_of_day.hours(),time_of_day.minutes());
+   genvar_ecf_time_.set_value( smstime );
+
+   //cout << "genvar_time_ = " << genvar_time_.theValue() << "\n";
+   //cout << "genvar_ecf_time_ = " << genvar_ecf_time_.theValue() << "\n";
+
+
    // **********************************************************************
    // The following generated variable need only be updated if NULL or if day changed
    // Under: HYBRID the day will never change, hence a one time update
    // **********************************************************************
-   if (genvar_yyyy_.theValue().empty() || suite_->calendar_.dayChanged() || force_update_) {
+   if (suite_->calendar_.dayChanged() || genvar_yyyy_.theValue().empty() || force_update_) {
 
       force_update_ = false;
       genvar_yyyy_.set_value(boost::lexical_cast<std::string>(suite_->calendar_.year()));
       genvar_dow_.set_value( boost::lexical_cast<std::string>(suite_->calendar_.day_of_week()) );
       genvar_doy_.set_value( boost::lexical_cast<std::string>(suite_->calendar_.day_of_year()) );
-      //cout << "genvar_yyyy_ = " << genvar_yyyy_->theValue() << "\n";
-      //cout << "genvar_dow_ = " << genvar_dow_->theValue() << "\n";
-      //cout << "genvar_doy_ = " << genvar_doy_->theValue() << "\n";
+      //cout << "genvar_yyyy_ = " << genvar_yyyy_.theValue() << "\n";
+      //cout << "genvar_dow_ = " << genvar_dow_.theValue() << "\n";
+      //cout << "genvar_doy_ = " << genvar_doy_.theValue() << "\n";
 
       char ddmmyyyyBuffer[255];
       sprintf(ddmmyyyyBuffer,"%02d.%02d.%04d", suite_->calendar_.day_of_month(), suite_->calendar_.month(), suite_->calendar_.year());
       genvar_date_.set_value( ddmmyyyyBuffer );
-      //cout << "genvar_date_ = " << genvar_date_->theValue() << "\n";
+      //cout << "genvar_date_ = " << genvar_date_.theValue() << "\n";
 
       char *day_name[]= { const_cast<char*>("sunday"),   const_cast<char*>("monday"),
                           const_cast<char*>("tuesday"),  const_cast<char*>("wednesday"),
                           const_cast<char*>("thursday"), const_cast<char*>("friday"),
                           const_cast<char*>("saturday"), NULL };
       genvar_day_.set_value( day_name[suite_->calendar_.day_of_week()]  );
-      //cout << "genvar_day_ = " << genvar_day_->theValue() << "\n";
+      //cout << "genvar_day_ = " << genvar_day_.theValue() << "\n";
 
       char dd[255];
       sprintf(dd,"%02d",suite_->calendar_.day_of_month());
       genvar_dd_.set_value( dd  );
-      //cout << "genvar_dd_ = " << genvar_dd_->theValue() << "\n";
+      //cout << "genvar_dd_ = " << genvar_dd_.theValue() << "\n";
 
       char mm[255];
       sprintf(mm,"%02d",suite_->calendar_.month());
       genvar_mm_.set_value( mm  );
-      //cout << "genvar_mm_ = " << genvar_mm_->theValue() << "\n";
+      //cout << "genvar_mm_ = " << genvar_mm_.theValue() << "\n";
 
       char *month_name[]
                        = { const_cast<char*>("january"),   const_cast<char*>("february"),  const_cast<char*>("march"),
@@ -719,24 +799,24 @@ void SuiteGenVariables::update_generated_variables() const
                            const_cast<char*>("october"),   const_cast<char*>("november"),  const_cast<char*>("december"),
                                 NULL } ;
       genvar_month_.set_value( month_name[suite_->calendar_.month()-1]  );
-      //cout << "genvar_month_ = " << genvar_month_->theValue() << "\n";
+      //cout << "genvar_month_ = " << genvar_month_.theValue() << "\n";
 
       char smsdate[255];
       sprintf(smsdate,"%04d%02d%02d", suite_->calendar_.year(), suite_->calendar_.month() , suite_->calendar_.day_of_month());
-      genvar_smsdate_.set_value( smsdate );
-      //cout << "genvar_smsdate_ = " << genvar_smsdate_->theValue() << "\n";
+      genvar_ecf_date_.set_value( smsdate );
+      //cout << "genvar_ecf_date_ = " << genvar_ecf_date_.theValue() << "\n";
 
       char smsclock[255];
       sprintf(smsclock,"%s:%s:%d:%d", day_name[suite_->calendar_.day_of_week()], month_name[suite_->calendar_.month()-1],suite_->calendar_.day_of_week(),suite_->calendar_.day_of_year());
-      genvar_clock_.set_value( smsclock );
-      //cout << "genvar_clock_ = " << genvar_clock_->theValue() << "\n";
+      genvar_ecf_clock_.set_value( smsclock );
+      //cout << "genvar_ecf_clock_ = " << genvar_ecf_clock_.theValue() << "\n";
    }
 }
 
 const Variable& SuiteGenVariables::findGenVariable(const std::string& name) const
 {
    if (genvar_suite_.name() == name) return genvar_suite_;
-   if (genvar_smsdate_.name() == name) return genvar_smsdate_;
+   if (genvar_ecf_date_.name() == name) return genvar_ecf_date_;
    if (genvar_yyyy_.name() == name) return genvar_yyyy_;
    if (genvar_dow_.name() == name) return genvar_dow_;
    if (genvar_doy_.name() == name) return genvar_doy_;
@@ -745,7 +825,8 @@ const Variable& SuiteGenVariables::findGenVariable(const std::string& name) cons
    if (genvar_dd_.name() == name) return genvar_dd_;
    if (genvar_mm_.name() == name) return genvar_mm_;
    if (genvar_month_.name() == name) return genvar_month_;
-   if (genvar_clock_.name() == name) return genvar_clock_;
+   if (genvar_ecf_clock_.name() == name) return genvar_ecf_clock_;
+   if (genvar_ecf_time_.name() == name) return genvar_ecf_time_;
    if (genvar_time_.name() == name) return genvar_time_;
    return Variable::EMPTY();
 }
@@ -753,7 +834,7 @@ const Variable& SuiteGenVariables::findGenVariable(const std::string& name) cons
 void SuiteGenVariables::gen_variables(std::vector<Variable>& vec) const
 {
    vec.push_back(genvar_suite_);
-   vec.push_back(genvar_smsdate_);
+   vec.push_back(genvar_ecf_date_);
    vec.push_back(genvar_yyyy_);
    vec.push_back(genvar_dow_);
    vec.push_back(genvar_doy_);
@@ -762,6 +843,7 @@ void SuiteGenVariables::gen_variables(std::vector<Variable>& vec) const
    vec.push_back(genvar_dd_);
    vec.push_back(genvar_mm_);
    vec.push_back(genvar_month_);
-   vec.push_back(genvar_clock_);
+   vec.push_back(genvar_ecf_clock_);
+   vec.push_back(genvar_ecf_time_);
    vec.push_back(genvar_time_);
 }
diff --git a/ANode/src/Suite.hpp b/ANode/src/Suite.hpp
index e210bca..4ff8e72 100644
--- a/ANode/src/Suite.hpp
+++ b/ANode/src/Suite.hpp
@@ -45,6 +45,9 @@ public:
      suite_gen_variables_(NULL)
      {}
 
+   Suite( const Suite&);
+   Suite& operator=(const Suite&);
+
    virtual ~Suite();
 
    static suite_ptr create(const std::string& name);
@@ -80,6 +83,7 @@ public:
    std::ostream& print(std::ostream&) const;
 
    void addClock( const ClockAttr& , bool initialize_calendar = true); // throw std::run_time if more than one clock is added
+   void add_end_clock( const ClockAttr& );
    void changeClock( const ClockAttr& );
    void changeClockType(const std::string& theType);
    void changeClockDate(const std::string& theDate);
@@ -90,6 +94,7 @@ public:
    const ecf::Calendar& calendar() const { return calendar_;}
    ecf::Calendar& set_calendar() { return calendar_;}
    clock_ptr clockAttr() const { return clockAttr_;}
+   clock_ptr clock_end_attr() const { return clock_end_attr_;}
 
    virtual bool checkInvariants(std::string& errorMsg) const;
 
@@ -135,7 +140,8 @@ private:
    Defs*                      defs_;                // *NOT* persisted, set by parent Defs
    bool                       begun_;
    clock_ptr                  clockAttr_;
-   ecf::Calendar              calendar_;              // *Only* persisted since used by the why() on client side
+   clock_ptr                  clock_end_attr_;      // *NOT* persisted, used by simulator only
+   ecf::Calendar              calendar_;            // *Only* persisted since used by the why() on client side
    unsigned int               state_change_no_;     // no need to persist
    unsigned int               modify_change_no_;    // no need to persist
    unsigned int               begun_change_no_;     // no need to persist,  record changes to begun_. Needed for SSyncCmd
@@ -160,18 +166,19 @@ public:
 
 private:
    const Suite* suite_;
-   mutable Variable genvar_suite_;   // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_yyyy_;    // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_dow_;     // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_doy_;     // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_date_;    // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_day_;     // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_dd_;      // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_mm_;      // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_month_;   // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_smsdate_; // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_clock_;   // *NOT* persisted, can be generated by calling update_generated_variables()
-   mutable Variable genvar_time_;    // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_suite_;    // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_ecf_time_; // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_time_;     // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_yyyy_;     // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_dow_;      // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_doy_;      // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_date_;     // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_day_;      // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_dd_;       // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_mm_;       // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_month_;    // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_ecf_date_; // *NOT* persisted, can be generated by calling update_generated_variables()
+   mutable Variable genvar_ecf_clock_;// *NOT* persisted, can be generated by calling update_generated_variables()
    mutable bool force_update_;
 };
 
diff --git a/ANode/src/Task.cpp b/ANode/src/Task.cpp
index f389aa1..b88f4b2 100644
--- a/ANode/src/Task.cpp
+++ b/ANode/src/Task.cpp
@@ -48,6 +48,40 @@ using namespace std;
 using namespace boost;
 
 //#define DEBUG_TASK_LOCATION 1
+void Task::copy(const Task& rhs)
+{
+   size_t theSize = rhs.aliases_.size();
+   for(size_t s = 0; s < theSize; s++) {
+      alias_ptr alias_copy = boost::make_shared<Alias>( *rhs.aliases_[s] );
+      alias_copy->set_parent(this);
+      aliases_.push_back( alias_copy );
+   }
+}
+
+Task::Task(const Task& rhs)
+: Submittable(rhs),
+  order_state_change_no_(0),
+  add_remove_state_change_no_(0),
+  alias_change_no_(0),
+  alias_no_(rhs.alias_no_)
+{
+   copy(rhs);
+}
+
+Task& Task::operator=(const Task& rhs)
+{
+   if (this != &rhs) {
+      Submittable::operator=(rhs);
+      aliases_.clear();
+      alias_no_ = rhs.alias_no_;
+      copy(rhs);
+
+      order_state_change_no_ = 0;
+      alias_change_no_ = 0;
+      add_remove_state_change_no_ = Ecf::incr_state_change_no();
+   }
+   return *this;
+}
 
 Task::~Task()
 {
@@ -410,7 +444,7 @@ bool Task::resolveDependencies(JobsParam& jobsParam)
  	// from the children, hence we can't use the same same algorithm for containers nodes and leaf
  	// nodes like task.
 	NState::State task_state = state();
-	if ( task_state == NState::ACTIVE || task_state == NState::SUBMITTED || task_state == NState::UNKNOWN || task_state == NState::COMPLETE) {
+	if ( task_state == NState::COMPLETE || task_state == NState::ACTIVE || task_state == NState::SUBMITTED || task_state == NState::UNKNOWN ) {
 #ifdef DEBUG_DEPENDENCIES
 		LOG(Log::DBG,"   Task::resolveDependencies() " << absNodePath() << " HOLDING as task state " << NState::toString(state()) << " is not valid for job submission" );
 #endif
diff --git a/ANode/src/Task.hpp b/ANode/src/Task.hpp
index 6ccac2f..12adcad 100644
--- a/ANode/src/Task.hpp
+++ b/ANode/src/Task.hpp
@@ -33,6 +33,9 @@ public:
      alias_no_(0)
      {}
 
+   Task(const Task& rhs);
+   Task& operator=(const Task&);
+
 	virtual ~Task();
 
 	static task_ptr create(const std::string& name);
@@ -115,6 +118,7 @@ public:
 
    virtual void read_state(const std::string& line,const std::vector<std::string>& lineTokens);
 private:
+   void copy(const Task&);
    virtual size_t child_position(const Node*) const;
    virtual std::string write_state() const;
 
diff --git a/ANode/src/TaskScriptGenerator.cpp b/ANode/src/TaskScriptGenerator.cpp
index 0ce852c..e55b04b 100644
--- a/ANode/src/TaskScriptGenerator.cpp
+++ b/ANode/src/TaskScriptGenerator.cpp
@@ -210,7 +210,7 @@ void TaskScriptGenerator::generate_head_file() const
    contents += "\n";
    contents += "# Defines the variables that are needed for any communication with ECF\n";
    contents += "export ECF_PORT=%ECF_PORT%    # The server port number\n";
-   contents += "export ECF_NODE=%ECF_NODE%    # The name of ecf host that issued this task\n";
+   contents += "export ECF_HOST=%ECF_HOST%    # The name of ecf host that issued this task\n";
    contents += "export ECF_NAME=%ECF_NAME%    # The name of this current task\n";
    contents += "export ECF_PASS=%ECF_PASS%    # A unique password\n";
    contents += "export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task\n";
diff --git a/ANode/src/TimeDepAttrs.cpp b/ANode/src/TimeDepAttrs.cpp
index 632bcdb..96b9a06 100644
--- a/ANode/src/TimeDepAttrs.cpp
+++ b/ANode/src/TimeDepAttrs.cpp
@@ -31,6 +31,17 @@ using namespace boost::posix_time;
 
 ///////////////////////////////////////////////////////////////////////////////////////////
 
+TimeDepAttrs::TimeDepAttrs(const TimeDepAttrs& rhs)
+: node_(NULL),
+  timeVec_(rhs.timeVec_),
+  todayVec_(rhs.todayVec_),
+  dates_(rhs.dates_),
+  days_(rhs.days_),
+  crons_(rhs.crons_)
+{
+   // users must call set_node() afterwards
+}
+
 void TimeDepAttrs::begin()
 {
    // Let time base attributes use, relative duration if applicable
@@ -73,35 +84,34 @@ void TimeDepAttrs::calendarChanged(const ecf::Calendar& c )
    // (Otherwise we will end up running the task at Monday Midnight
    //  and not Monday at 10.00)
    //
-   bool have_day = false;
-   bool at_least_one_day_free = false;
-   for(size_t i = 0; i < days_.size(); i++){
-      have_day = true;
-      days_[i].calendarChanged(c);
-      if (!at_least_one_day_free) at_least_one_day_free = days_[i].isFree(c);
-   }
 
-   bool have_date = false;
-   bool at_least_one_date_free = false;
-   for(size_t i = 0; i < dates_.size(); i++) {
-      have_date = true;
-      dates_[i].calendarChanged(c);
-      if (!at_least_one_date_free) at_least_one_date_free = dates_[i].isFree(c);
+   if (days_.empty() && dates_.empty() ) {
+
+      // No Day or Date, If time matches  calendarChanged(c) will free time dependencies
+      for(size_t i = 0; i < timeVec_.size(); i++)  {  timeVec_[i].calendarChanged(c); }
+      for(size_t i = 0; i < todayVec_.size(); i++) { todayVec_[i].calendarChanged(c); }
+      for(size_t i = 0; i < crons_.size(); i++)    {    crons_[i].calendarChanged(c); }
    }
+   else {
+
+      bool at_least_one_day_free = false;
+      for(size_t i = 0; i < days_.size(); i++){
+         days_[i].calendarChanged(c);
+         if (!at_least_one_day_free) at_least_one_day_free = days_[i].isFree(c);
+      }
+
+      bool at_least_one_date_free = false;
+      for(size_t i = 0; i < dates_.size(); i++) {
+         dates_[i].calendarChanged(c);
+         if (!at_least_one_date_free) at_least_one_date_free = dates_[i].isFree(c);
+      }
 
-   if (have_day || have_date ) {
       if ( at_least_one_day_free || at_least_one_date_free)  {
-         for(size_t i = 0; i < crons_.size(); i++)    {    crons_[i].calendarChanged(c); }
-         for(size_t i = 0; i < todayVec_.size(); i++) { todayVec_[i].calendarChanged(c); }
          for(size_t i = 0; i < timeVec_.size(); i++)  {  timeVec_[i].calendarChanged(c); }
+         for(size_t i = 0; i < todayVec_.size(); i++) { todayVec_[i].calendarChanged(c); }
+         for(size_t i = 0; i < crons_.size(); i++)    {    crons_[i].calendarChanged(c); }
       }
    }
-   else {
-      // No Day or Date, If time matches  calendarChanged(c) will free time dependencies
-      for(size_t i = 0; i < crons_.size(); i++)    {    crons_[i].calendarChanged(c); }
-      for(size_t i = 0; i < todayVec_.size(); i++) { todayVec_[i].calendarChanged(c); }
-      for(size_t i = 0; i < timeVec_.size(); i++)  {  timeVec_[i].calendarChanged(c); }
-   }
 }
 
 void TimeDepAttrs::markHybridTimeDependentsAsComplete()
@@ -870,3 +880,41 @@ bool TimeDepAttrs::set_memento( const NodeDateMemento* memento,std::vector<ecf::
    return false;
 }
 
+void TimeDepAttrs::get_time_resolution_for_simulation(boost::posix_time::time_duration& resol) const
+{
+   for(size_t i = 0; i < timeVec_.size(); i++){
+      const TimeSeries& time_series = timeVec_[i].time_series();
+      if (time_series.start().minute() != 0 )  { resol = minutes(1); return; }
+      if (time_series.hasIncrement()) {
+         if (time_series.finish().minute() != 0 ) { resol = minutes(1); return; }
+         if (time_series.incr().minute() != 0 )   { resol = minutes(1); return; }
+      }
+   }
+
+   for(size_t i = 0; i < todayVec_.size(); i++){
+      const TimeSeries& time_series = todayVec_[i].time_series();
+      if (time_series.start().minute() != 0 )     { resol = minutes(1); return; }
+      if (time_series.hasIncrement()) {
+         if (time_series.finish().minute() != 0 ) { resol = minutes(1); return; }
+         if (time_series.incr().minute() != 0 )   { resol = minutes(1); return; }
+      }
+   }
+
+   for(size_t i = 0; i < crons_.size(); i++){
+      const TimeSeries& time_series = crons_[i].time_series();
+      if (time_series.start().minute() != 0 )     { resol = minutes(1); return; }
+      if (time_series.hasIncrement()) {
+         if (time_series.finish().minute() != 0 ) { resol = minutes(1); return; }
+         if (time_series.incr().minute() != 0 )   { resol = minutes(1); return; }
+      }
+   }
+}
+
+void TimeDepAttrs::get_max_simulation_duration(boost::posix_time::time_duration& duration) const
+{
+   // don't override a higher value of duration
+   if ((!timeVec_.empty() || !todayVec_.empty()) && duration < hours(24)) duration = hours(24); // day
+   if (!days_.empty()  && duration < hours(168))     duration = hours(168);                     // week
+   if (!dates_.empty() && duration < hours(24*7*31)) duration = hours(24*7*31);                 // month
+   if (!crons_.empty()) duration = hours(8760);                                                 // year
+}
diff --git a/ANode/src/TimeDepAttrs.hpp b/ANode/src/TimeDepAttrs.hpp
index 7c75007..5e24d65 100644
--- a/ANode/src/TimeDepAttrs.hpp
+++ b/ANode/src/TimeDepAttrs.hpp
@@ -31,6 +31,7 @@
 class TimeDepAttrs  {
 public:
    TimeDepAttrs(Node* node) : node_(node) {}
+   TimeDepAttrs(const TimeDepAttrs&); // users must call set_node() afterwards
    TimeDepAttrs() : node_(NULL) {}
 
    // needed by node serialisation
@@ -116,15 +117,18 @@ public:
    std::vector<ecf::CronAttr>::const_iterator cron_begin() const { return crons_.begin();}
    std::vector<ecf::CronAttr>::const_iterator cron_end() const { return crons_.end();}
 
-
    void clear(); /// Clear *ALL* internal attributes
 
-
    /// Under the hybrid calendar some time dependent attributes may not be applicable
    /// i.e if day,date,cron attributes does correspond to 24 hours of today, then we
    /// need make them as complete.
    void markHybridTimeDependentsAsComplete();
 
+   /// If we have just day/date then we have a resolution of 1 hour
+   /// Otherwise if we have time/today/cron with minutes, then resolution is 1 minute
+   void get_time_resolution_for_simulation(boost::posix_time::time_duration& resol) const;
+   void get_max_simulation_duration(boost::posix_time::time_duration& duration) const;
+
 private:
    Node*        node_; // *NOT* persisted must be set by the parent class
 
diff --git a/ANode/test/TestAssignmentOperator.cpp b/ANode/test/TestAssignmentOperator.cpp
new file mode 100644
index 0000000..b9f5969
--- /dev/null
+++ b/ANode/test/TestAssignmentOperator.cpp
@@ -0,0 +1,48 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <stdlib.h>
+#include <iostream>
+#include <boost/test/unit_test.hpp>
+
+#include "MyDefsFixture.hpp"
+#include "Ecf.hpp"
+
+using namespace std;
+using namespace ecf;
+
+BOOST_AUTO_TEST_SUITE( NodeTestSuite )
+
+BOOST_AUTO_TEST_CASE( test_assignment_operator )
+{
+   cout << "ANode:: ...test_assignment_operator\n";
+   MyDefsFixture theDefsFixture;
+
+   Ecf::set_debug_equality(true);
+   Defs defs;
+   defs = theDefsFixture.defsfile_;
+   BOOST_CHECK_MESSAGE( defs == theDefsFixture.defsfile_,"assignment failed");
+
+   Defs empty;
+   defs = empty;
+   BOOST_CHECK_MESSAGE( defs == empty,"assignment failed");
+   Ecf::set_debug_equality(false);
+
+   BOOST_CHECK_MESSAGE( !(defs == theDefsFixture.defsfile_),"assignment failure EXPECTED");
+
+   theDefsFixture.defsfile_ =  empty;
+   Ecf::set_debug_equality(true);
+   BOOST_CHECK_MESSAGE( theDefsFixture.defsfile_ == empty,"assignment failed");
+   Ecf::set_debug_equality(false);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestCopyConstructor.cpp b/ANode/test/TestCopyConstructor.cpp
new file mode 100644
index 0000000..b9310ac
--- /dev/null
+++ b/ANode/test/TestCopyConstructor.cpp
@@ -0,0 +1,36 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <stdlib.h>
+#include <iostream>
+#include <boost/test/unit_test.hpp>
+
+#include "MyDefsFixture.hpp"
+#include "Ecf.hpp"
+
+using namespace std;
+using namespace ecf;
+
+BOOST_AUTO_TEST_SUITE( NodeTestSuite )
+
+BOOST_AUTO_TEST_CASE( test_copy_constructors )
+{
+   cout << "ANode:: ...test_copy_constructors\n";
+   MyDefsFixture theDefsFixture;
+
+   Ecf::set_debug_equality(true);
+   Defs copy = Defs(theDefsFixture.defsfile_);
+   BOOST_CHECK_MESSAGE( copy == theDefsFixture.defsfile_,"copy constructor failed");
+   Ecf::set_debug_equality(false);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestEcfFile.cpp b/ANode/test/TestEcfFile.cpp
index f0d41db..ac1b4d2 100644
--- a/ANode/test/TestEcfFile.cpp
+++ b/ANode/test/TestEcfFile.cpp
@@ -30,6 +30,7 @@
 #include "Str.hpp"
 #include "Ecf.hpp"
 #include "PrintStyle.hpp"
+#include "Pid.hpp"
 
 using namespace std;
 using namespace ecf;
@@ -85,7 +86,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_simple_include_file )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_simple_include_file")  );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addTask( task_t1 );
@@ -110,7 +111,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_simple_include_file )
    ecf_file += tail;
 
    string ecf_file_location = ecf_home  + task_t1->absNodePath() + File::ECF_EXTN();
-   // cout << "file_location = " << ecf_file_location << "\n";
+   //cout << "file_location = " << ecf_file_location << "\n";
    BOOST_CHECK_MESSAGE(File::createMissingDirectories(ecf_file_location),"Could not create missing dir\n");
 
    string errormsg;
@@ -158,10 +159,13 @@ BOOST_AUTO_TEST_CASE( test_ECFLOW_495 )
    //  task t1
    //endsuite
    Defs theDefs;
-   suite_ptr suite = theDefs.add_suite("suite");
+   suite_ptr suite = theDefs.add_suite(Pid::unique_name("test_ECFLOW_495"));
    suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
    task_ptr task_t1 = suite->add_task("t1");
 
+   //PrintStyle style(PrintStyle::STATE);
+   //std::cout << theDefs << "\n";
+
    // Override ECF_HOME. ECF_HOME is as default location for .ecf files, when ECF_INCLUDE not specified
    // or when file does not exist in ECF_INCLUDE
    std::string ecf_home = File::test_data("ANode/test/data","ANode");
@@ -225,7 +229,7 @@ BOOST_AUTO_TEST_CASE( test_ECF_SCRIPT_CMD_ECFLOW_427 )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "test_ECF_SCRIPT_CMD_ECFLOW_427"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ECF_SCRIPT_CMD_ECFLOW_427")  );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addTask( task_t1 );
@@ -334,7 +338,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_include_file )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_include_file")  );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addVariable( Variable( "SLEEPTIME", "1" ) );
@@ -412,7 +416,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_include_multi_paths_ECFLOW_261 )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_include_multi_paths_ECFLOW_261")  );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/empty_include1:$ECF_HOME/empty_include2:$ECF_HOME/includes:$ECF_HOME/includes2" ) );
       suite->addTask( task_t1 );
@@ -489,7 +493,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_include_ECFLOW_274 )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_include_ECFLOW_274")  );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addTask( task_t1 );
@@ -546,8 +550,9 @@ BOOST_AUTO_TEST_CASE( test_ecf_include_ECFLOW_274 )
    std::string job_file_contents;
    BOOST_CHECK_MESSAGE(File::open(job_file_location,job_file_contents),"Could not open job file " << job_file_location);
 
-   /// Remove all the generated files
-   boost::filesystem::remove_all( ecf_home + suite->absNodePath() );
+   /// Remove all the generated files. This occasionally fails on ecgb/lxg ???
+   try { boost::filesystem::remove_all( ecf_home + suite->absNodePath() ); }
+   catch (...) {  cout << "Could not remove directory " << ecf_home + suite->absNodePath() << "\n";}
 }
 
 
@@ -577,7 +582,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_simple_used_variables )
    task_ptr task_t1;
    suite_ptr suite;
    Defs theDefs; {
-      suite = theDefs.add_suite("suite");
+      suite = theDefs.add_suite(Pid::unique_name("test_ecf_simple_used_variables"));
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->add_variable("ESUITE","suite");
       task_t1 = suite->add_family("f1")->add_task( "t1" );
@@ -648,7 +653,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_simple_used_variables_with_comments )
    task_ptr task_t1;
    suite_ptr suite;
    Defs theDefs; {
-      suite = theDefs.add_suite("suite");
+      suite = theDefs.add_suite(Pid::unique_name("test_ecf_simple_used_variables_with_comments"));
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->add_variable("ETASK","suite");
       suite->add_variable("FRED","fred");
@@ -717,7 +722,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_simple_used_variables_errors )
    task_ptr task_t1;
    suite_ptr suite;
    Defs theDefs; {
-      suite = theDefs.add_suite("suite");
+      suite = theDefs.add_suite(Pid::unique_name("test_ecf_simple_used_variables_errors"));
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->add_variable("ETASK","suite");
       task_t1 = suite->add_family("f1")->add_task( "t1" );
@@ -787,7 +792,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_file )
 
    // Create a defs file, where the task name mirrors the sms files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_file") );
    std::pair<std::string,std::string> p;
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
@@ -915,6 +920,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_file )
 //    cout << "\n" << job_file_contents << "\n";
     BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_PORT%") == string::npos,"Expected variables to be substituted:");
     BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_NODE%") == string::npos,"Expected variables to be substituted:");
+    BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_HOST%") == string::npos,"Expected variables to be substituted:");
     BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_NAME%") == string::npos,"Expected variables to be substituted:");
     BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_PASS%") == string::npos,"Expected variables to be substituted");
     BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_TRYNO%") == string::npos,"Expected variables to be substituted");
@@ -954,7 +960,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_file_includenoop )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
-   suite_ptr suite = Suite::create( "suite_test_ecf_file_includenopp"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_file_includenoop") );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addVariable( Variable( "SLEEPTIME", "1" ) );
@@ -1005,7 +1011,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_file_includenoop )
    //cout << "\n" << job_file_contents << "\n";
    BOOST_CHECK_MESSAGE(job_file_contents.find("%includenopp") == string::npos,"Expected all includes to be removed");
    BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_PORT%") != string::npos,"Expected variables as is:");
-   BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_NODE%") != string::npos,"Expected variables as is:");
+   BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_HOST%") != string::npos,"Expected variables as is:");
    BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_NAME%") != string::npos,"Expected variables as is:");
    BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_PASS%") != string::npos,"Expected variables as is:");
    BOOST_CHECK_MESSAGE(job_file_contents.find("%ECF_TRYNO%") != string::npos,"Expected variables as is:");
@@ -1045,7 +1051,7 @@ BOOST_AUTO_TEST_CASE( test_ecf_file_override_ECF_JOB )
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    task_ptr task_t1 = Task::create( "t1" );
    task_t1->addVariable( Variable( "ECF_JOB",  job_file_location  ) );
-   suite_ptr suite = Suite::create( "test_ecf_file_override_ECF_JOB"  );
+   suite_ptr suite = Suite::create( Pid::unique_name("test_ecf_file_override_ECF_JOB") );
    Defs theDefs; {
       suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
       suite->addVariable( Variable( "SLEEPTIME", "1" ) );
@@ -1118,7 +1124,7 @@ BOOST_AUTO_TEST_CASE( test_manual_files )
 
    // Create a defs file, where the task name mirrors the ecf files in the given directory
    Defs theDefs;
-   suite_ptr suite = theDefs.add_suite( "suite"  );
+   suite_ptr suite = theDefs.add_suite( "suite") ;  // ** relies on name of suite, in SMSHOME/suite
    suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/../includes" ) );
    family_ptr family = suite->add_family("family");
    task_ptr task_t1 = family->add_task("t1");
@@ -1135,8 +1141,8 @@ BOOST_AUTO_TEST_CASE( test_manual_files )
    // Create the generated variables
    task_t1->update_generated_variables();
 
-//   PrintStyle style(PrintStyle::STATE);
-//   std::cout << theDefs << "\n";
+   //PrintStyle style(PrintStyle::STATE);
+   //std::cout << theDefs << "\n";
 
    /// Now finally the test
 
@@ -1181,4 +1187,228 @@ BOOST_AUTO_TEST_CASE( test_manual_files )
    }
 }
 
+BOOST_AUTO_TEST_CASE( test_ECFLOW_672 )
+{
+   // test for recursive includes that are not recursive
+   cout << "ANode:: ...test_ECFLOW_672";
+   if (getenv("ECFLOW_CRAY_BATCH")) {
+      cout << " **** SKIPPING test, until HPC team can fix File::createMissingDirectories.(like mkdir -p)  *****\n";
+      return;
+   }
+   cout << "\n";
+
+   // Create the defs file corresponding to the text below
+   //suite ECFLOW_672
+   //  edit ECF_INCLUDE $ECF_HOME/ECFLOW_672
+   //  task t
+   //endsuite
+   Defs theDefs;
+   suite_ptr suite = theDefs.add_suite("ECFLOW_672");
+   suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/ECFLOW_672") );
+   task_ptr task_t1 = suite->add_task("t");
+
+   // Override ECF_HOME. ECF_HOME is as default location for .ecf files, when ECF_INCLUDE not specified
+   // or when file does not exist in ECF_INCLUDE
+   std::string ecf_home = File::test_data("ANode/test/data","ANode");
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),ecf_home);
+
+   /// begin , will cause creation of generated variables. The generated variables
+   /// are use in client scripts and used to locate the ecf files
+   theDefs.beginAll();
+
+   string ecf_file_location = ecf_home  + task_t1->absNodePath() + File::ECF_EXTN();
+   BOOST_CHECK_MESSAGE(fs::exists(ecf_file_location), "Expected File " << ecf_file_location << " to exist");
+
+   // Create the generated variables
+   task_t1->update_generated_variables();
+
+   /// Now finally the test
+   EcfFile ecfFile(task_t1.get(),ecf_file_location);
+
+   JobsParam jobsParam(true); // spawn_jobs = false
+   try { ecfFile.create_job(jobsParam); }
+   catch ( std::exception& e) { BOOST_CHECK_MESSAGE(false,"Expected job creation to succeed " << e.what());}
+
+   string job_file_location = ecf_home  + task_t1->absNodePath() + File::JOB_EXTN() + task_t1->tryNo();
+   BOOST_CHECK_MESSAGE(fs::exists(job_file_location), "Expected File " << job_file_location << " to exist");
+
+   /// Remove generate file
+   boost::filesystem::remove( job_file_location );
+}
+
+
+static void basic_test_template(
+      const std::string& test_name,
+      const std::string& ecf_file1,
+      const std::string& expected_job_file_contents,
+      bool expect_success = true
+      )
+{
+   cout << "ANode:: ..." << test_name;
+   // This test FAIL's randomly on the cray in BATCH mode, but passes in interactive mode.
+   if (getenv("ECFLOW_CRAY_BATCH")) {
+      cout << " **** SKIPPING test, until HPC team can  fix File::createMissingDirectories.(like mkdir -p)  *****\n";
+      return;
+   }
+   cout << "\n";
+
+   // Create the defs file corresponding to the text below
+   //suite suite
+   //  edit ECF_INCLUDE $ECF_HOME/includes
+   //  task t1
+   //endsuite
+
+   // Create a defs file, where the task name mirrors the ecf files in the given directory
+   task_ptr task_t1 = Task::create( "t1" );
+   suite_ptr suite = Suite::create( Pid::unique_name(test_name) );
+   Defs theDefs; {
+      suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
+      suite->add_variable("simple","simple" );
+      suite->add_variable("tail","tail" );
+      suite->addTask( task_t1 );
+      theDefs.addSuite( suite );
+   }
+
+   // Override ECF_HOME. ECF_HOME is as default location for .ecf files, when ECF_INCLUDE not specified
+   // or when file does not exist in ECF_INCLUDE
+   std::string ecf_home = File::test_data("ANode/test/data","ANode");
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),ecf_home);
+
+   /// begin , will cause creation of generated variables. The generated variables
+   /// are use in client scripts and used to locate the sms files
+   theDefs.beginAll();
+
+   // generate the ecf file;
+   string ecf_file = ecf_file1;
+   string ecf_file_location = ecf_home  + task_t1->absNodePath() + File::ECF_EXTN();
+   // cout << "file_location = " << ecf_file_location << "\n";
+   BOOST_CHECK_MESSAGE(File::createMissingDirectories(ecf_file_location),"Could not create missing dir\n");
+
+   string errormsg;
+   BOOST_CHECK_MESSAGE(File::create(ecf_file_location, ecf_file, errormsg), errormsg);
+   BOOST_CHECK_MESSAGE(fs::exists(ecf_file_location), "Expected File " << ecf_file_location << " to exist");
+
+   // Create the generated variables
+   task_t1->update_generated_variables();
+
+   /// Now finally the test
+   EcfFile ecfFile(task_t1.get(),ecf_file_location);
+
+   /// Check generation of '.usr' and job files
+   JobsParam jobsParam(true); // spawn_jobs = false
+   if (expect_success) {
+      try { ecfFile.create_job(jobsParam); }
+      catch ( std::exception& e) { BOOST_CHECK_MESSAGE(false,"Expected job creation to succeed " << e.what());}
+
+      string job_file_location = ecf_home  + task_t1->absNodePath() + File::JOB_EXTN() + task_t1->tryNo();
+      BOOST_CHECK_MESSAGE(fs::exists(job_file_location), "Expected File " << job_file_location << " to exist");
+
+      // Open the job file, make sure it matches our expected file
+      std::string job_file_contents;
+      BOOST_CHECK_MESSAGE(File::open(job_file_location,job_file_contents),"Could not open job file " << job_file_location);
+      BOOST_CHECK_MESSAGE(job_file_contents == expected_job_file_contents ,"Expected\n" <<expected_job_file_contents << "' but found \n" <<  job_file_contents << "'");
+   }
+   else {
+      BOOST_REQUIRE_THROW(ecfFile.create_job(jobsParam), std::runtime_error );
+   }
+
+   /// Remove all the generated files
+   boost::filesystem::remove_all( ecf_home + suite->absNodePath() );
+}
+
+BOOST_AUTO_TEST_CASE( test_includeonce )
+{
+   // simplest test of include once, no hierarchy
+   // generate the ecf file;
+   string ecf_file = "%includeonce <simple_head.h>\n";
+   ecf_file += "%includeonce <simple_head.h>\n";
+   ecf_file += "%include <simple_head.h>\n";
+   ecf_file += "#body\n";
+   ecf_file += "%includeonce <simple_tail.h>\n";
+   ecf_file += "%include <simple_tail.h>\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_includeonce",ecf_file,expected_job_file_contents);
+}
+
+BOOST_AUTO_TEST_CASE( test_includeonce_hierarchical )
+{
+   // Test the pre-processing is done depth first, ( < 4.1.1 it was done breadth first)
+   // generate the ecf file;
+   string ecf_file = "%includeonce <AA.h>\n";
+   ecf_file += "%includeonce <BB.h>\n";
+   ecf_file += "%includeonce <CC.h>\n";
+
+   std::string expected_job_file_contents = "#startAA\n#startBB\n#CC\n#endBB\n#endAA";
+
+   basic_test_template("test_includeonce_hierarchical",ecf_file,expected_job_file_contents);
+}
+
+BOOST_AUTO_TEST_CASE( test_include_with_variables )
+{
+   // Test includes with variables %include <%head%.h> ECFLOW-765
+
+   string ecf_file;
+   ecf_file += "%include <%simple%_head.h>\n";
+   ecf_file += "#body\n";
+   ecf_file += "%include <simple_%tail%.h>\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_include_with_variables",ecf_file,expected_job_file_contents);
+}
+
+BOOST_AUTO_TEST_CASE( test_include_with_variable_alternative )
+{
+   string ecf_file;
+   ecf_file += "%include %FRED:<simple_head.h>%\n";
+   ecf_file += "#body\n";
+   ecf_file += "%include %TAIL:<simple_tail.h>%\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_include_with_variable_alternative",ecf_file,expected_job_file_contents);
+}
+
+BOOST_AUTO_TEST_CASE( test_include_with_variables_change_micro )
+{
+   string ecf_file;
+   ecf_file += "%ecfmicro &\n";
+   ecf_file += "&include <&simple&_head.h>\n";
+   ecf_file += "#body\n";
+   ecf_file += "&ecfmicro *\n";
+   ecf_file += "*include <simple_*tail*.h>\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_include_with_variables_change_micro",ecf_file,expected_job_file_contents);
+}
+
+BOOST_AUTO_TEST_CASE( test_include_with_variables_mismatched_micros )
+{
+   // generate the ecf file, where include file has missmatched ecf_micro
+   string ecf_file;
+   ecf_file += "%include <%simple%_head%.h>\n";
+   ecf_file += "#body\n";
+   ecf_file += "%include <simple_%tail%.h>\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_include_with_variables_mismatched_micros",ecf_file,expected_job_file_contents,false/*expect failure*/);
+}
+
+BOOST_AUTO_TEST_CASE( test_include_with_variable_not_defined )
+{
+   string ecf_file;
+   ecf_file += "%include %simple_head.h%\n";
+   ecf_file += "#body\n";
+   ecf_file += "%include <simple_%tail%.h>\n";
+
+   std::string expected_job_file_contents = "#head.h\n#body\n#tail.h";
+
+   basic_test_template("test_include_with_variable_not_defined",ecf_file,expected_job_file_contents,false/*expect failure*/);
+}
+
+
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestEcfFileLocator.cpp b/ANode/test/TestEcfFileLocator.cpp
new file mode 100644
index 0000000..e079021
--- /dev/null
+++ b/ANode/test/TestEcfFileLocator.cpp
@@ -0,0 +1,256 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <iostream>
+#include <stdlib.h>
+
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+#include <boost/test/unit_test.hpp>
+
+#include "Defs.hpp"
+#include "Suite.hpp"
+#include "Family.hpp"
+#include "Task.hpp"
+#include "EcfFile.hpp"
+#include "Str.hpp"
+#include "File.hpp"
+
+using namespace std;
+using namespace ecf;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( NodeTestSuite )
+
+BOOST_AUTO_TEST_CASE( test_ecf_file_locator )
+{
+	cout << "ANode:: ...test_ecf_file_locator\n";
+
+	// SET ECF_HOME
+   std::string smshome = File::test_data("ANode/test/data/SMSHOME","ANode");
+
+	// Create a defs file corresponding to:
+ 	//# Test the sms file can be found via ECF_SCRIPT
+	//#
+	//suite suite
+	//	edit ECF_INCLUDE $ECF_HOME/includes
+	//	edit SLEEPTIME 10
+	//	family family
+	//   		task t1
+	//   		task t2
+	//    		task t3
+	//  	endfamily
+	//endsuite
+	//
+	//#
+	//# This test suite should force a backwards search since the ecf files
+	//# are located in ECF_HOME
+	//suite suite1
+	//  	family family
+	//   		task suite1_task1
+	//   		task suite1_task2
+	//    		task suite1_task3
+	//    endfamily
+	//endsuite
+	//
+	//#
+	//# This suite is used to test command substition with ECF_FETCH command
+	//#
+	//suite suite2
+	//	edit ECF_INCLUDE $ECF_HOME/includes
+	//	edit ECF_FILES   $ECF_HOME
+	//	family family
+	//		edit SMSFETCH "smsfetch -F %ECF_FILES% -I %ECF_INCLUDE%"
+	//		task t2
+	//	endfamily
+	//endsuite
+ 	Defs theDefs;
+ 	{
+ 	   suite_ptr suite = theDefs.add_suite("suite");
+		suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
+ 		suite->addVariable( Variable( "SLEEPTIME", "10" ) );
+ 		family_ptr fam = suite->add_family( "family" );
+		fam->add_task( "t1" );
+		fam->add_task( "t2" );
+		fam->add_task( "t3" );
+ 	}
+ 	{
+      suite_ptr suite = theDefs.add_suite("suite1");
+      family_ptr fam = suite->add_family( "family" );
+      fam->add_task( "suite1_task1" );
+      fam->add_task( "suite1_task2" );
+      fam->add_task( "suite1_task3" );
+ 	}
+ 	{
+      suite_ptr suite2 = theDefs.add_suite("suite2");
+		suite2->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
+ 		suite2->addVariable( Variable( Str::ECF_FILES(), "$ECF_HOME" ) );
+      family_ptr fam = suite2->add_family( "family" );
+		fam->addVariable( Variable( Str::ECF_FETCH(), "smsfetch -F %ECF_FILES% -I %ECF_INCLUDE%" ) );
+ 		fam->add_task( "t2" );
+ 	}
+// 	cerr << theDefs << "\n";
+
+	// get all the task, assume non hierarchical families
+	std::vector<Task*> theTasks;
+ 	theDefs.getAllTasks(theTasks);
+	BOOST_REQUIRE_MESSAGE(theTasks.size() == 7, "Expected 7 tasks but found, " << theTasks.size());
+
+	// Override ECF_HOME.   ECF_HOME is need to locate to the ecf files
+	theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),smshome);
+
+
+	/// begin , will cause creation of generated variables. The generated variables
+	/// are use in client scripts and used to locate the sms files
+	theDefs.beginAll();
+
+	// Test for ECF_ file location
+  	BOOST_FOREACH(Task* t, theTasks) {
+  		try {
+  			EcfFile ecf_file = t->locatedEcfFile();
+  			BOOST_REQUIRE_MESSAGE( ecf_file.valid(), "Could not locate ecf file for task ");
+  		}
+  		catch (std::exception& e) {
+  			BOOST_REQUIRE_MESSAGE(false,"Could not locate ecf file for task " << e.what());
+  		}
+	}
+}
+
+
+BOOST_AUTO_TEST_CASE( test_ecf_file_locator_using_ECF_FILES )
+{
+   cout << "ANode:: ...test_ecf_file_locator_using_ECF_FILES\n";
+
+   // This test will check we can locate the ecf files in ECF_FILES directory
+
+   // SET ECF_HOME. *** TO A DIRECTORY WHERE THERE ARE NO .ECF FILES **
+   std::string smshome = File::test_data("ANode/test/data","ANode");
+
+   // set ECF_FILES where we do have some .ecf files
+   std::string ecf_files = File::test_data("ANode/test/data/SMSHOME/suite/family","ANode");
+
+   // Create a defs file corresponding to:
+   //# Test the sms file can be found via ECF_SCRIPT
+   //#
+   //edit ECF_HOME    ANode/test/data
+   //edit ECF_FILES   ANode/test/data/SMSHOME/suite/family
+   //suite suite
+   // edit ECF_INCLUDE $ECF_HOME/includes
+   // edit SLEEPTIME 10
+   // family family
+   //       task t1
+   //       task t2
+   //       task t3
+   Defs theDefs;
+   {
+      suite_ptr suite = theDefs.add_suite("suite");
+      suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
+      suite->addVariable( Variable( "SLEEPTIME", "10" ) );
+      family_ptr fam = suite->add_family( "family" );
+      fam->add_task( "t1" );
+      fam->add_task( "t2" );
+      fam->add_task( "t3" );
+   }
+
+   // get all the task, assume non hierarchical families
+   std::vector<Task*> theTasks;
+   theDefs.getAllTasks(theTasks);
+   BOOST_REQUIRE_MESSAGE(theTasks.size() == 3, "Expected 3 tasks but found, " << theTasks.size());
+
+   // ECF_HOME, a directory with no .ecf files
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),smshome);
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_FILES(),ecf_files);
+
+//    cerr << theDefs << "\n";
+
+   /// begin , will cause creation of generated variables. The generated variables
+   /// are use in client scripts and used to locate the sms files
+   theDefs.beginAll();
+
+   // Test for ECF_ file location
+   BOOST_FOREACH(Task* t, theTasks) {
+      try {
+         EcfFile ecf_file = t->locatedEcfFile();
+         BOOST_REQUIRE_MESSAGE( ecf_file.valid(), "Could not locate ecf file for task\n");
+      }
+      catch (std::exception& e) {
+         BOOST_REQUIRE_MESSAGE(false,"Could not locate ecf file for task\n" << e.what());
+      }
+   }
+}
+
+BOOST_AUTO_TEST_CASE( test_ecf_file_locator_using_ECF_FILES_variable_substitution )
+{
+   cout << "ANode:: ...test_ecf_file_locator_using_ECF_FILES_variable_substitution\n";
+
+   // ECFLOW-788
+   // This test will check we can locate the ecf files in ECF_FILES directory
+   // Will attempt variable substitution, on ECF_FILES is directory does not exist
+
+   // SET ECF_HOME. ***TO A DIRECTORY WHERE THERE ARE NO .ECF FILE **
+   std::string smshome = File::test_data("ANode/test/data","ANode");
+
+   // set ECF_FILES where we do have some .ecf files
+   std::string ecf_files = File::test_data("ANode/test/data/SMSHOME/suite/%FAMILY%","ANode");
+
+   // Create a defs file corresponding to:
+   //# Test the sms file can be found via ECF_SCRIPT
+   //#
+   //edit ECF_HOME    ANode/test/data
+   //edit ECF_FILES   ANode/test/data/SMSHOME/suite/%FAMILY%   # test we variable substitute
+   //suite suite
+   // edit ECF_INCLUDE $ECF_HOME/includes
+   // edit SLEEPTIME 10
+   // family family
+   //       task t1
+   //       task t2
+   //       task t3
+   Defs theDefs;
+   {
+      suite_ptr suite = theDefs.add_suite("suite");
+      suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
+      suite->addVariable( Variable( "SLEEPTIME", "10" ) );
+      family_ptr fam = suite->add_family( "family" );
+      fam->addVariable( Variable( "FAMILY", "family" ) );
+      fam->add_task( "t1" );
+      fam->add_task( "t2" );
+      fam->add_task( "t3" );
+   }
+
+   // get all the task, assume non hierarchical families
+   std::vector<Task*> theTasks;
+   theDefs.getAllTasks(theTasks);
+   BOOST_REQUIRE_MESSAGE(theTasks.size() == 3, "Expected 3 tasks but found, " << theTasks.size());
+
+   // ECF_HOME, a directory with no .ecf files
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),smshome);
+   theDefs.set_server().add_or_update_user_variables(Str::ECF_FILES(),ecf_files);
+
+//    cerr << theDefs << "\n";
+
+   /// begin , will cause creation of generated variables. The generated variables
+   /// are use in client scripts and used to locate the sms files
+   theDefs.beginAll();
+
+   // Test for ECF_ file location
+   BOOST_FOREACH(Task* t, theTasks) {
+      try {
+         EcfFile ecf_file = t->locatedEcfFile();
+         BOOST_REQUIRE_MESSAGE( ecf_file.valid(), "Could not locate ecf file for task\n");
+      }
+      catch (std::exception& e) {
+         BOOST_REQUIRE_MESSAGE(false,"Could not locate ecf file for task\n" << e.what());
+      }
+   }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestEnviromentSubstitution.cpp b/ANode/test/TestEnviromentSubstitution.cpp
index 1f1ebaf..cb6aecc 100644
--- a/ANode/test/TestEnviromentSubstitution.cpp
+++ b/ANode/test/TestEnviromentSubstitution.cpp
@@ -41,13 +41,19 @@ BOOST_AUTO_TEST_CASE( test_environment_substitution )
   		env.push_back( std::make_pair(Str::ECF_HOME(), string("/home/smshome")) );
   		env.push_back( std::make_pair(string("FRED"),    string("/home/fred")) );
   		env.push_back( std::make_pair(string("BILL"),    string("/home/bill")) );
-  		env.push_back( std::make_pair(string("JANE"),    string("/home/jane")) );
+      env.push_back( std::make_pair(string("JANE"),    string("/home/jane")) );
+      env.push_back( std::make_pair(string("REP"),    string("$REP/bill")) );
   		defs.set_server().add_or_update_user_variables( env );
 	}
 
+   // Check for recursive, in which case we only substitute once
+   string expected = "$REP/bill";
+   std::string cmd = "$REP";
+   BOOST_REQUIRE_MESSAGE(s->variable_dollar_subsitution(cmd)," substitution failed");
+   BOOST_CHECK_MESSAGE( cmd == expected, "expected '" << expected << "' but found '" << cmd << "'");
+
  	// See page 31, section 5.1 variable inheritance, of SMS users guide
-	string expected = "/home/smshome";
- 	std::string cmd = "$ECF_HOME";
+ 	cmd = "$ECF_HOME"; expected = "/home/smshome";
  	BOOST_REQUIRE_MESSAGE(s->variable_dollar_subsitution(cmd)," substitution failed");
  	BOOST_CHECK_MESSAGE( cmd == expected, "expected '" << expected << "' but found '" << cmd << "'");
 
diff --git a/ANode/test/TestExprParser.cpp b/ANode/test/TestExprParser.cpp
index a007a16..f93b781 100644
--- a/ANode/test/TestExprParser.cpp
+++ b/ANode/test/TestExprParser.cpp
@@ -11,18 +11,25 @@
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-#include "ExprParser.hpp"
-#include "ExprAst.hpp"
-#include "Expression.hpp"
 
-#include <boost/test/unit_test.hpp>
-#include <boost/foreach.hpp>
 #include <string>
 #include <map>
 #include <iostream>
 #include <fstream>
-using namespace std;
 
+#include <boost/test/unit_test.hpp>
+#include <boost/foreach.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/date_time/posix_time/conversion.hpp>
+#include <boost/date_time/posix_time/time_formatters.hpp>  // requires boost date and time lib, for to_simple_string
+
+#include "ExprParser.hpp"
+#include "ExprAst.hpp"
+#include "Expression.hpp"
+
+using namespace std;
+using namespace boost::gregorian;
+using namespace boost::posix_time;
 
 BOOST_AUTO_TEST_SUITE( NodeTestSuite )
 
@@ -124,10 +131,10 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
 {
     std::cout <<  "ANode:: ...test_parser_good_expressions\n";
 
-	// The map key  = trigger expression,
+   // The map key  = trigger expression,
     // value.first  = type of the expected root abstract syntax tree
     // value.second = result of expected evaluation
-	map<string,std::pair<string,bool> > exprMap;
+   map<string,std::pair<string,bool> > exprMap;
 
    exprMap["a:value == 0"] = std::make_pair(AstEqual::stype(),true);
    exprMap["a:value == 10"] = std::make_pair(AstEqual::stype(),false);
@@ -138,7 +145,7 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["a:value gt 10"] = std::make_pair(AstGreaterThan::stype(),false);
    exprMap["a:value >= 10"] = std::make_pair(AstGreaterEqual::stype(),false);
    exprMap["a:value ge 10"] = std::make_pair(AstGreaterEqual::stype(),false);
- 	exprMap["a:value < 10"] = std::make_pair(AstLessThan::stype(),true);
+   exprMap["a:value < 10"] = std::make_pair(AstLessThan::stype(),true);
    exprMap["a:value lt 10"] = std::make_pair(AstLessThan::stype(),true);
    exprMap["a:value <= 10"] = std::make_pair(AstLessEqual::stype(),true);
    exprMap["a:value le 10"] = std::make_pair(AstLessEqual::stype(),true);
@@ -156,10 +163,10 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["10 <= a:value"] = std::make_pair(AstLessEqual::stype(),false);
    exprMap["10 le a:value"] = std::make_pair(AstLessEqual::stype(),false);
 
-	exprMap["a == complete"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["a==complete"]   = std::make_pair(AstEqual::stype(),false);
-	exprMap["a eq complete"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["a ne complete"] = std::make_pair(AstNotEqual::stype(),true);
+   exprMap["a == complete"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["a==complete"]   = std::make_pair(AstEqual::stype(),false);
+   exprMap["a eq complete"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["a ne complete"] = std::make_pair(AstNotEqual::stype(),true);
 
    exprMap["0 eq 1"] = std::make_pair(AstEqual::stype(),false);
    exprMap["1000 eq 9"] = std::make_pair(AstEqual::stype(),false);
@@ -167,6 +174,7 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["10 ge 4"] = std::make_pair(AstGreaterEqual::stype(),true);
    exprMap["10 le 4"] = std::make_pair(AstLessEqual::stype(),false);
 
+   exprMap["0 == 0"] = std::make_pair(AstEqual::stype(),true);
    exprMap["0 == 1"] = std::make_pair(AstEqual::stype(),false);
    exprMap["0 != 1"] = std::make_pair(AstNotEqual::stype(),true);
    exprMap["0 < 1"] = std::make_pair(AstLessThan::stype(),true);
@@ -178,33 +186,59 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["0 > 1"] = std::make_pair(AstGreaterThan::stype(),false);
    exprMap["10 > 1"] = std::make_pair(AstGreaterThan::stype(),true);
 
-	exprMap["a:eventname"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["./a/b:eventname"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["/a/b:eventname"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["../a/b:eventname == set"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["../a/b:eventname == clear"] = std::make_pair(AstEqual::stype(),true);
-	exprMap["../a/b:eventname != clear"] = std::make_pair(AstNotEqual::stype(),false);
+   exprMap["a:eventname"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["a:eventname == 0"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["./a/b:eventname"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["/a/b:eventname"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["../a/b:eventname == set"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["../a/b:eventname == clear"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["../a/b:eventname != clear"] = std::make_pair(AstNotEqual::stype(),false);
    exprMap["a:eventname == set"] = std::make_pair(AstEqual::stype(),false);
    exprMap["a:eventname != set"] = std::make_pair(AstNotEqual::stype(),true);
    exprMap["a:eventname == clear"] = std::make_pair(AstEqual::stype(),true);
 
-	exprMap["a:metername >= 100"] = std::make_pair(AstGreaterEqual::stype(),false);
-	exprMap["b:metername le 100"] = std::make_pair(AstLessEqual::stype(),true);
-	exprMap["./b:metername <= 100"] = std::make_pair(AstLessEqual::stype(),true);
-	exprMap["../a/b:metername ge 100"] = std::make_pair(AstGreaterEqual::stype(),false);
-	exprMap["../a/b/c:metername >= 100"] = std::make_pair(AstGreaterEqual::stype(),false);
-
-	exprMap["./a == unknown"] = std::make_pair(AstEqual::stype(),true);
-	exprMap["./a/b != queued"] = std::make_pair(AstNotEqual::stype(),true);
-	exprMap["../a == complete"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["../a/b == aborted"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["../a/b/c != aborted"] = std::make_pair(AstNotEqual::stype(),true);
-
-	exprMap["a eq unknown and b ne complete"] = std::make_pair(AstAnd::stype(),true);
-	exprMap["a eq complete or b eq complete"] = std::make_pair(AstOr::stype(),false);
-	exprMap["a eq complete or b eq unknown"] = std::make_pair(AstOr::stype(),true);
-	exprMap["a eq complete and b eq complete"] = std::make_pair(AstAnd::stype(),false);
-	exprMap["(a eq complete and b == complete)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["a:metername >= 100"] = std::make_pair(AstGreaterEqual::stype(),false);
+   exprMap["b:metername le 100"] = std::make_pair(AstLessEqual::stype(),true);
+   exprMap["./b:metername <= 100"] = std::make_pair(AstLessEqual::stype(),true);
+   exprMap["../a/b:metername ge 100"] = std::make_pair(AstGreaterEqual::stype(),false);
+   exprMap["../a/b/c:metername >= 100"] = std::make_pair(AstGreaterEqual::stype(),false);
+
+   exprMap["!a:a  &&   b:b"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["a:a   && ! b:b"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["! a:a ||   b:b"] = std::make_pair(AstOr::stype(),true);
+   exprMap["a:a   || ! b:b"] = std::make_pair(AstOr::stype(),true);
+   exprMap["! a:a &&   b:b &&   c:c"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["! a:a &&   b:b ||   c:c"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a:a && !   b:b &&   c:c"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["a:a && !   b:b ||   c:c"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a:a ||     b:b && ! c:c"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a:a ||     b:b || ! c:c"] = std::make_pair(AstOr::stype(),true);
+
+   exprMap["a:b && b:c && c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["! a:b && b:c && c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["! a:b || b:c && c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstOr::stype(),true);
+   exprMap["a:b || b:c && ! c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a:b && b:c && c:d && ../c:b && ./x:y && ! z:x"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["x:x || a:b && b:c && c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstOr::stype(),false);
+   exprMap["x:x == 0 || a:b && b:c && c:d && ../c:b && ./x:y && z:x"] = std::make_pair(AstOr::stype(),true);
+   exprMap["! a:a && ! b:b && ! c:c && ! d:d "] = std::make_pair(AstAnd::stype(),true);
+   exprMap["! a:a || ! b:b || ! c:c || ! d:d "] = std::make_pair(AstOr::stype(),true);
+
+   exprMap["./a == unknown"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["./a/b != queued"] = std::make_pair(AstNotEqual::stype(),true);
+   exprMap["../a == complete"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["../a/b == aborted"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["../a/b/c != aborted"] = std::make_pair(AstNotEqual::stype(),true);
+
+   exprMap["inigroup:YMD == ! 1"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["1 != ! 1"] = std::make_pair(AstNotEqual::stype(),true);
+   exprMap["b == complete or nodepath:eventname"] = std::make_pair(AstOr::stype(),false);
+
+   exprMap["a eq unknown and b ne complete"] = std::make_pair(AstAnd::stype(),true);
+   exprMap["a eq complete or b eq complete"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a eq complete or b eq unknown"] = std::make_pair(AstOr::stype(),true);
+   exprMap["a eq complete and b eq complete"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["(a eq complete and b == complete)"] = std::make_pair(AstAnd::stype(),false);
 
    exprMap["a == unknown && b != complete"] = std::make_pair(AstAnd::stype(),true);
    exprMap["a == complete || b == complete"] = std::make_pair(AstOr::stype(),false);
@@ -212,55 +246,63 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["a eq complete && b eq complete"] = std::make_pair(AstAnd::stype(),false);
    exprMap["(a == complete && b == complete)"] = std::make_pair(AstAnd::stype(),false);
 
-	// This should be interpreted as '(a == complete and b == complete) or c == complete'
-	// because 'and' has a higher priority than the 'or'. Hence 'OR' must be at the root.
+   // This should be interpreted as '(a == complete and b == complete) or c == complete'
+   // because 'and' has a higher priority than the 'or'. Hence 'OR' must be at the root.
    exprMap["a == complete and b == complete or c == complete"] = std::make_pair(AstOr::stype(),false);
    exprMap["a == complete &&  b == complete || c == complete"] = std::make_pair(AstOr::stype(),false);
-	exprMap["a == complete and b == complete or c == unknown"] = std::make_pair(AstOr::stype(),true);
-	exprMap["a == complete and (b == complete or c == complete)"] = std::make_pair(AstAnd::stype(),false);
-	exprMap["a == complete or b == complete and c == complete"] = std::make_pair(AstOr::stype(),false);
-	exprMap["((a == complete or b == complete)) and c == complete"] = std::make_pair(AstAnd::stype(),false);
-
-	exprMap["(a != aborted and b == unknown or c != queued)"] = std::make_pair(AstOr::stype(),true);
- 	exprMap["(a == complete and b == complete) or nodepath:eventname"] = std::make_pair(AstOr::stype(),false);
-	exprMap["(a == complete and b == complete) or (a == complete and b == complete)"] = std::make_pair(AstOr::stype(),false);
-	exprMap["a == complete and (b == complete or a == complete) and b == complete"] = std::make_pair(AstAnd::stype(),false);
-
-	// Expression that initially fail to parse for the operational suites
+   exprMap["a == complete and b == complete or c == unknown"] = std::make_pair(AstOr::stype(),true);
+   exprMap["a == complete and (b == complete or c == complete)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["a == complete or b == complete and c == complete"] = std::make_pair(AstOr::stype(),false);
+   exprMap["((a == complete or b == complete)) and c == complete"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["a == complete && b == complete and c == complete or x:a == 0"] = std::make_pair(AstOr::stype(),true);
+   exprMap["a == complete || b == complete and c == complete and x:a == 0 || x == complete"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a == complete || b == complete and c == complete and x:a || x == complete"] = std::make_pair(AstOr::stype(),false);
+
+   exprMap["(a != aborted and b == unknown or c != queued)"] = std::make_pair(AstOr::stype(),true);
+   exprMap["(a == complete and b == complete) or nodepath:eventname"] = std::make_pair(AstOr::stype(),false);
+   exprMap["(a == complete and b == complete) or (a == complete and b == complete)"] = std::make_pair(AstOr::stype(),false);
+   exprMap["a == complete and (b == complete or a == complete) and b == complete"] = std::make_pair(AstAnd::stype(),false);
+
+   // Expression that initially fail to parse for the operational suites
    exprMap["(/skull/consumer/admin/leader:1 and (0 le /skull/consumer/produce1/produce:STEP)) or (not /skull/consumer/admin/leader:1)"] = std::make_pair(AstOr::stype(),true);
-	exprMap["./pdb eq complete and  (  not ../../../prod2diss/operation_is_late:yes or ../000/q2diss eq complete)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["./pdb eq complete and  (  not ../../../prod2diss/operation_is_late:yes or ../000/q2diss eq complete)"] = std::make_pair(AstAnd::stype(),false);
    exprMap["! ../../../prod2diss//operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
- 	exprMap["not ../../../prod2diss//operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
- 	exprMap["not ../../../prod2diss/operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
- 	exprMap["not ../../../prod2diss/operation_is_late:yes or a == complete "] = std::make_pair(AstOr::stype(),true);
-	exprMap["not ../../../prod2diss/operation_is_late:yes or not a == complete "] = std::make_pair(AstOr::stype(),true);
- 	exprMap["not ( a == complete )"] = std::make_pair(AstNot::stype(),true);
- 	exprMap["not ( a == unknown )"] = std::make_pair(AstNot::stype(),false);
+   exprMap["not ../../../prod2diss//operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
+   exprMap["not ../../../prod2diss/operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
+   exprMap["not ../../../prod2diss/operation_is_late:yes or a == complete "] = std::make_pair(AstOr::stype(),true);
+   exprMap["not ../../../prod2diss/operation_is_late:yes or not a == complete "] = std::make_pair(AstOr::stype(),true);
+   exprMap["not ( a == complete )"] = std::make_pair(AstNot::stype(),true);
+   exprMap["not ( a == unknown )"] = std::make_pair(AstNot::stype(),false);
    exprMap["~ ( a == unknown )"] = std::make_pair(AstNot::stype(),false);
    exprMap["~ ( a != unknown )"] = std::make_pair(AstNot::stype(),true);
    exprMap["! ( a == unknown )"] = std::make_pair(AstNot::stype(),false);
    exprMap["!( a == unknown )"] = std::make_pair(AstNot::stype(),false);
- 	exprMap["inigroup:YMD eq ~ 1"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["inigroup:YMD eq ~ 1"] = std::make_pair(AstEqual::stype(),true);
    exprMap["inigroup:YMD eq ~ 0"] = std::make_pair(AstEqual::stype(),false);
    exprMap["inigroup:YMD eq ! 0"] = std::make_pair(AstEqual::stype(),false);
-	exprMap["/net/main:YMD le /net/cleanplus1:YMD and 1"] = std::make_pair(AstAnd::stype(),true);
+   exprMap["/net/main:YMD le /net/cleanplus1:YMD and 1"] = std::make_pair(AstAnd::stype(),true);
 
- 	exprMap["bins/wamabs eq complete and links eq complete"] = std::make_pair(AstAnd::stype(),false);
- 	exprMap["/mc/main:YMD le /mc/main/ref:MC_STOP"] = std::make_pair(AstLessEqual::stype(),true);
- 	exprMap["/mc//main:YMD le /mc/main//ref:MC_STOP"] = std::make_pair(AstLessEqual::stype(),true);
- 	exprMap["(  ( /o/main/12/an/slwet eq complete and  ( /o/main/12/an/4dvar/ifstraj:finalwave or /o/main/12/an/4dvar eq complete)) or /o/main/12/an eq complete)"] = std::make_pair(AstOr::stype(),false);
-	exprMap["../../sv/getsvs eq complete and  ( getae:1 or getae eq complete)"] = std::make_pair(AstAnd::stype(),false);
-	exprMap["(  ( /o/lag:YMD gt /sync/o/o/lag:YMD) or  ( /o/main:YMD gt /sync/o/o/main:YMD) or 1 eq 0) and /sync/o ne active and /sync/o ne submitted"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["! ../../../operation_is_late:yes == set"] = std::make_pair(AstNot::stype(),true);
+   exprMap["2 == (((/seasplots/lag:YMD / 100 ) % 100) % 3)"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["(((/seasplots/lag:YMD / 100 ) % 100) % 3) ==  2"] = std::make_pair(AstEqual::stype(),false);
+   exprMap["! ../../../a:yes == set or ! a == complete or y == aborted"] = std::make_pair(AstOr::stype(),true);
 
+   exprMap["bins/wamabs eq complete and links eq complete"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["/mc/main:YMD le /mc/main/ref:MC_STOP"] = std::make_pair(AstLessEqual::stype(),true);
+   exprMap["/mc//main:YMD le /mc/main//ref:MC_STOP"] = std::make_pair(AstLessEqual::stype(),true);
+   exprMap["(  ( /o/main/12/an/slwet eq complete and  ( /o/main/12/an/4dvar/ifstraj:finalwave or /o/main/12/an/4dvar eq complete)) or /o/main/12/an eq complete)"] = std::make_pair(AstOr::stype(),false);
+   exprMap["../../sv/getsvs eq complete and  ( getae:1 or getae eq complete)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["(  ( /o/lag:YMD gt /sync/o/o/lag:YMD) or  ( /o/main:YMD gt /sync/o/o/main:YMD) or 1 eq 0) and /sync/o ne active and /sync/o ne submitted"] = std::make_pair(AstAnd::stype(),false);
 
- 	exprMap["t:step + 20 le 19"] = std::make_pair(AstLessEqual::stype(),false);
- 	exprMap["(t:step + 20) le 19"] = std::make_pair(AstLessEqual::stype(),false);
- 	exprMap["t:step + 20 ge 120"] = std::make_pair(AstGreaterEqual::stype(),false);
- 	exprMap["t:step - 20 ge 120"] = std::make_pair(AstGreaterEqual::stype(),false);
- 	exprMap["t:step + 20 ge t:step1 - 20"] = std::make_pair(AstGreaterEqual::stype(),true);
- 	exprMap["(t:step + 20) ge (t:step1 - 20)"] = std::make_pair(AstGreaterEqual::stype(),true);
 
- 	// Note: t:step will evaluate to 0,  0 % number  == 0, however 20 % 0 is a runtime error, same as divide by zero
+   exprMap["t:step + 20 le 19"] = std::make_pair(AstLessEqual::stype(),false);
+   exprMap["(t:step + 20) le 19"] = std::make_pair(AstLessEqual::stype(),false);
+   exprMap["t:step + 20 ge 120"] = std::make_pair(AstGreaterEqual::stype(),false);
+   exprMap["t:step - 20 ge 120"] = std::make_pair(AstGreaterEqual::stype(),false);
+   exprMap["t:step + 20 ge t:step1 - 20"] = std::make_pair(AstGreaterEqual::stype(),true);
+   exprMap["(t:step + 20) ge (t:step1 - 20)"] = std::make_pair(AstGreaterEqual::stype(),true);
+
+   // Note: t:step will evaluate to 0,  0 % number  == 0, however 20 % 0 is a runtime error, same as divide by zero
    exprMap["t:step % 20 < 19"] = std::make_pair(AstLessThan::stype(),true);
    exprMap["t:step % 10 == 0"] = std::make_pair(AstEqual::stype(),true);
    exprMap["t:step % 20 ge 19"] = std::make_pair(AstGreaterEqual::stype(),false);
@@ -271,33 +313,157 @@ BOOST_AUTO_TEST_CASE( test_parser_good_expressions )
    exprMap["(t:step % 20) ge (t:step1 - 20)"] = std::make_pair(AstGreaterEqual::stype(),true);
    exprMap["(t:step % 20) == (t:step1 % 10)"] = std::make_pair(AstEqual::stype(),true);
 
- 	exprMap["( obs:YMD le  ( main:YMD + 1)) and ../make/setup eq complete and  ( obs:YMD le /o/lag:YMD)"] = std::make_pair(AstAnd::stype(),false);
- 	exprMap["( stage eq complete or ./stage:YMD gt ./retrieve:YMD) and ( ./retrieve:YMD - ./load:YMD lt 5)"] = std::make_pair(AstAnd::stype(),false);
- 	exprMap["./a:YMD - ./b:YMD lt 5"] = std::make_pair(AstLessThan::stype(),true);
+   exprMap["( obs:YMD le  ( main:YMD + 1)) and ../make/setup eq complete and  ( obs:YMD le /o/lag:YMD)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["( stage eq complete or ./stage:YMD gt ./retrieve:YMD) and ( ./retrieve:YMD - ./load:YMD lt 5)"] = std::make_pair(AstAnd::stype(),false);
+   exprMap["./a:YMD - ./b:YMD lt 5"] = std::make_pair(AstLessThan::stype(),true);
 
    exprMap["comp == complete and notready == complete"] = std::make_pair(AstAnd::stype(),false);
 
- 	std::pair<string, std::pair<string,bool> > p;
-	BOOST_FOREACH(p, exprMap ) {
+   int parse_failure = 0;
+   int ast_failure = 0;
+   std::pair<string, std::pair<string,bool> > p;
+   BOOST_FOREACH(p, exprMap ) {
+
+      //cout << "parsing: " << p.first << "\n";
+      ExprParser theExprParser(p.first);
+      std::string errorMsg;
+      bool ok = theExprParser.doParse(errorMsg);
+      if (!ok) parse_failure++;
+      BOOST_CHECK_MESSAGE(ok,errorMsg + "failed for " + p.first);
+
+      if (ok) {
+         string expectedRootType       = p.second.first;
+         bool expectedEvaluationResult = p.second.second;
+
+         Ast* top = theExprParser.getAst();
+         if (!top) ast_failure++;
+         BOOST_CHECK_MESSAGE( top ,"No abstract syntax tree "+ p.first);
+         if (top) {
+            BOOST_CHECK_MESSAGE( top->left() ,"No root created "+ p.first);
+            BOOST_CHECK_MESSAGE( top->left()->isRoot() || top->left()->is_variable() ,"First child of top should be a root or variable " + p.first);
+            BOOST_CHECK_MESSAGE( top->left()->is_evaluateable(),"expected ast to be evaluatable. found: " << top->left()->type() << " " << p.first);
+            BOOST_CHECK_MESSAGE( top->left()->type() == expectedRootType || top->left()->type() == "variable","expected root type '" << expectedRootType << "' or 'variable' but found '" << top->left()->type() << "' " << p.first);
+            BOOST_CHECK_MESSAGE( expectedEvaluationResult == top->evaluate(),"evaluation not as expected for:\n" << p.first << "\n" << *top);
+
+            std::string error_msg;
+            BOOST_CHECK_MESSAGE(  top->check(error_msg),error_msg << ":  Check failed for " << *top);
+         }
+      }
+   }
+   BOOST_REQUIRE_MESSAGE( parse_failure == 0 &&  ast_failure == 0,"Found failures parse_failure:" << parse_failure << " ast failure:" << ast_failure);
+}
+
+
+BOOST_AUTO_TEST_CASE( test_trigger_functions )
+{
+    std::cout <<  "ANode:: ...test_trigger_functions\n";
+
+   // The map key  = trigger expression,
+    // value.first  = type of the expected root abstract syntax tree
+    // value.second = result of expected evaluation
+   map<string,std::pair<string,bool> > exprMap;
+
+   exprMap["cal::date_to_julian(A:x) == 0"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["cal::date_to_julian( 0 ) == cal::date_to_julian( 0 )"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["cal::date_to_julian( 0 ) == cal::date_to_julian( A:x )"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["2457620 == cal::date_to_julian( 20160819 )"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["20160819 == cal::julian_to_date( 2457620 )"] = std::make_pair(AstEqual::stype(),true);
+
+   // test 10 digit integer, ie yyyymmddhh
+   exprMap["2457620 == cal::date_to_julian( 2016081912 )"] = std::make_pair(AstEqual::stype(),true);
+
+   int parse_failure = 0;
+   int ast_failure = 0;
+   std::pair<string, std::pair<string,bool> > p;
+   BOOST_FOREACH(p, exprMap ) {
+
+      //cout << "parsing: " << p.first << "\n";
+      ExprParser theExprParser(p.first);
+      std::string errorMsg;
+      bool ok = theExprParser.doParse(errorMsg);
+      if (!ok) parse_failure++;
+      BOOST_CHECK_MESSAGE(ok,errorMsg + "failed for " + p.first);
+
+      if (ok) {
+         string expectedRootType       = p.second.first;
+         bool expectedEvaluationResult = p.second.second;
+
+         Ast* top = theExprParser.getAst();
+         if (!top) ast_failure++;
+         BOOST_CHECK_MESSAGE( top ,"No abstract syntax tree "+ p.first);
+         if (top) {
+            BOOST_CHECK_MESSAGE( top->left() ,"No root created "+ p.first);
+            BOOST_CHECK_MESSAGE( top->left()->isRoot() || top->left()->is_variable() ,"First child of top should be a root or variable " + p.first);
+            BOOST_CHECK_MESSAGE( top->left()->is_evaluateable(),"expected ast to be evaluatable. found: " << top->left()->type() << " " << p.first);
+            BOOST_CHECK_MESSAGE( top->left()->type() == expectedRootType || top->left()->type() == "variable","expected root type '" << expectedRootType << "' or 'variable' but found '" << top->left()->type() << "' " << p.first);
+            BOOST_CHECK_MESSAGE( expectedEvaluationResult == top->evaluate(),"evaluation not as expected for:\n" << p.first << "\n" << *top);
+
+            std::string error_msg;
+            BOOST_CHECK_MESSAGE(  top->check(error_msg),error_msg << ":  Check failed for " << *top);
+         }
+      }
+   }
+   BOOST_REQUIRE_MESSAGE( parse_failure == 0 &&  ast_failure == 0,"Found failures parse_failure:" << parse_failure << " ast failure:" << ast_failure);
+}
 
-	   ExprParser theExprParser(p.first);
-		std::string errorMsg;
-		bool ok = theExprParser.doParse(errorMsg);
-		BOOST_REQUIRE_MESSAGE(ok,errorMsg);
+BOOST_AUTO_TEST_CASE( test_trigger_functions_with_boost_date )
+{
+   std::cout <<  "ANode:: ...test_trigger_functions_with_boost_date\n";
+   // The map key  = trigger expression,
+   // value.first  = type of the expected root abstract syntax tree
+   // value.second = result of expected evaluation
+   map<string,std::pair<string,bool> > exprMap;
 
-		string expectedRootType       = p.second.first;
-		bool expectedEvaluationResult = p.second.second;
+   boost::gregorian::date startDate(2016,1,1);
+   boost::gregorian::date endDate(2016,12,31);
+   while(startDate != endDate) {
+      long julian_day = startDate.julian_day();
+      std::string str_julian_day = boost::lexical_cast<std::string>(julian_day);
+      std::string eight_digit_iso_string =  to_iso_string(startDate);
+      string expr = str_julian_day + " ==  cal::date_to_julian(" + eight_digit_iso_string + ")";
+      exprMap[expr] = std::make_pair(AstEqual::stype(),true);
+
+      std::string ten_digit_string = eight_digit_iso_string + "12" ;
+      expr = str_julian_day + " ==  cal::date_to_julian(" + ten_digit_string + ")";
+      exprMap[expr] = std::make_pair(AstEqual::stype(),true);
+
+      string expr2 = to_iso_string(startDate) + " == cal::julian_to_date(" + str_julian_day + ")";
+      exprMap[expr2] = std::make_pair(AstEqual::stype(),true);
+      startDate += days(1);
+   }
 
-		Ast* top = theExprParser.getAst();
-		BOOST_REQUIRE_MESSAGE( top ,"No abstract syntax tree");
- 		BOOST_CHECK_MESSAGE( top->left() ,"No root created");
- 		BOOST_CHECK_MESSAGE( top->left()->isRoot() ,"First child of top should be a root");
- 		BOOST_CHECK_MESSAGE( top->left()->type() == expectedRootType,"expected root type " << expectedRootType << " but found " << top->left()->type());
- 		BOOST_CHECK_MESSAGE( expectedEvaluationResult == top->evaluate(),"evaluation not as expected for:\n" << p.first << "\n" << *top);
+   int parse_failure = 0;
+   int ast_failure = 0;
+   std::pair<string, std::pair<string,bool> > p;
+   BOOST_FOREACH(p, exprMap ) {
 
- 		std::string error_msg;
-      BOOST_CHECK_MESSAGE(  top->check(error_msg),error_msg << ":  Check failed for " << *top);
-	}
+      //cout << "parsing: " << p.first << "\n";
+      ExprParser theExprParser(p.first);
+      std::string errorMsg;
+      bool ok = theExprParser.doParse(errorMsg);
+      if (!ok) parse_failure++;
+      BOOST_CHECK_MESSAGE(ok,errorMsg + "failed for " + p.first);
+
+      if (ok) {
+         string expectedRootType       = p.second.first;
+         bool expectedEvaluationResult = p.second.second;
+
+         Ast* top = theExprParser.getAst();
+         if (!top) ast_failure++;
+         BOOST_CHECK_MESSAGE( top ,"No abstract syntax tree "+ p.first);
+         if (top) {
+            BOOST_CHECK_MESSAGE( top->left() ,"No root created "+ p.first);
+            BOOST_CHECK_MESSAGE( top->left()->isRoot() || top->left()->is_variable() ,"First child of top should be a root or variable " + p.first);
+            BOOST_CHECK_MESSAGE( top->left()->is_evaluateable(),"expected ast to be evaluatable. found: " << top->left()->type() << " " << p.first);
+            BOOST_CHECK_MESSAGE( top->left()->type() == expectedRootType || top->left()->type() == "variable","expected root type '" << expectedRootType << "' or 'variable' but found '" << top->left()->type() << "' " << p.first);
+            BOOST_CHECK_MESSAGE( expectedEvaluationResult == top->evaluate(),"evaluation not as expected for:\n" << p.first << "\n" << *top);
+
+            std::string error_msg;
+            BOOST_CHECK_MESSAGE(  top->check(error_msg),error_msg << ":  Check failed for " << *top);
+         }
+      }
+   }
+   BOOST_REQUIRE_MESSAGE( parse_failure == 0 &&  ast_failure == 0,"Found failures parse_failure:" << parse_failure << " ast failure:" << ast_failure);
 }
 
 
@@ -340,23 +506,30 @@ BOOST_AUTO_TEST_CASE( test_trigger_expression_divide_by_zero )
    }
 }
 
-BOOST_AUTO_TEST_CASE( test_parser_bad_expressions )
+
+BOOST_AUTO_TEST_CASE( test_parser_bad_expressions ) 
 {
-    std::cout <<  "ANode:: ...test_parser_bad_expressions\n";
-	vector<string> exprvec;
+   std::cout << "ANode:: ...test_parser_bad_expressions\n";
+   vector<string> exprvec;
+   exprvec.push_back("a <= complete");
+   exprvec.push_back("a >= complete");
    exprvec.push_back("a = complete");
    exprvec.push_back("a e complete");
    exprvec.push_back("a=complete");
    exprvec.push_back("a ! complete");
    exprvec.push_back("a==complet e");
    exprvec.push_back("a eq complet e");
-	exprvec.push_back("a::eventname");
-	exprvec.push_back("a:eventname =  set");
-	exprvec.push_back("a:eventname == ");
+   exprvec.push_back("a::eventname");
+   exprvec.push_back("a:eventname =  set");
+   exprvec.push_back("a:eventname == ");
    exprvec.push_back("a:eventname !  set");
    exprvec.push_back("a:eventname ! = set");
    exprvec.push_back("a:eventname %");
- 	exprvec.push_back("a:metername  100");
+   exprvec.push_back("a:event <= set");
+   exprvec.push_back("a:event >= set");
+   exprvec.push_back("a:event >= clear");
+   exprvec.push_back("a:event >= fred");
+   exprvec.push_back("a:metername  100");
    exprvec.push_back(". == complete");
    exprvec.push_back("/ == complete");
    exprvec.push_back(". == error");
@@ -365,35 +538,34 @@ BOOST_AUTO_TEST_CASE( test_parser_bad_expressions )
    exprvec.push_back(".a == unknown");
    exprvec.push_back(".a/. == unknown");
    exprvec.push_back(".. == unknown");
-	exprvec.push_back(".a/b == queued");
-	exprvec.push_back("./a/b/ == active");
+   exprvec.push_back(".a/b == queued");
+   exprvec.push_back("./a/b/ == active");
    exprvec.push_back("..a == complete");
    exprvec.push_back(".../a == complete");
    exprvec.push_back("../.../a == complete");
    exprvec.push_back(".. /a == complete");
    exprvec.push_back("../.. /a == complete");
    exprvec.push_back("../../.a == complete");
-	exprvec.push_back("..a/b == aborted");
-	exprvec.push_back("..a/b/c == aborted");
+   exprvec.push_back("..a/b == aborted");
+   exprvec.push_back("..a/b/c == aborted");
    exprvec.push_back("a == complete and");
    exprvec.push_back("a %");
-	exprvec.push_back("(a == complete   b == complete)");
-	exprvec.push_back("a == complete and  b == complete)");
-	exprvec.push_back("(a == complete and  b == complete");
-	exprvec.push_back("(a = complete and b = complete or c = complete)");
-	exprvec.push_back("(a erro complete and b == complete) or nodepath:eventname");
-	exprvec.push_back("(a == complete and b == complete or (a == complete and b == complete)");
-    // triggers that dont make sense in the operational suites.
-	exprvec.push_back("../../../legA/fc/pf/01 eq complete eq complete");
-
-	BOOST_FOREACH(const string& expr, exprvec ) {
-
-		//std::cout << "parsing expression " << expr << "\n";
-		ExprParser theExprParser(expr);
-		std::string errorMsg;
- 		BOOST_CHECK_MESSAGE( !theExprParser.doParse( errorMsg), expr << " expected to fail " );
- 	}
+   exprvec.push_back("(a == complete   b == complete)");
+   exprvec.push_back("a == complete and  b == complete)");
+   exprvec.push_back("(a == complete and  b == complete");
+   exprvec.push_back("(a = complete and b = complete or c = complete)");
+   exprvec.push_back("(a erro complete and b == complete) or nodepath:eventname");
+   exprvec.push_back("(a == complete and b == complete or (a == complete and b == complete)");
+   // triggers that dont make sense in the operational suites.
+   exprvec.push_back("../../../legA/fc/pf/01 eq complete eq complete");
+
+   BOOST_FOREACH(const string& expr, exprvec ) {
+
+      //std::cout << "parsing expression " << expr << "\n";
+      ExprParser theExprParser(expr);
+      std::string errorMsg;
+      BOOST_CHECK_MESSAGE(!theExprParser.doParse(errorMsg), expr << " expected to fail ");
+   }
 }
 
 BOOST_AUTO_TEST_SUITE_END()
-
diff --git a/ANode/test/TestFlagMigrated.cpp b/ANode/test/TestFlagMigrated.cpp
new file mode 100644
index 0000000..9465e9a
--- /dev/null
+++ b/ANode/test/TestFlagMigrated.cpp
@@ -0,0 +1,241 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <boost/test/unit_test.hpp>
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+
+#include "Ecf.hpp"
+#include "Defs.hpp"
+#include "Suite.hpp"
+#include "Family.hpp"
+#include "Task.hpp"
+#include "File.hpp"
+
+using namespace std;
+using namespace ecf;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( NodeTestSuite )
+
+BOOST_AUTO_TEST_CASE( test_flag_migrated )
+{
+   cout << "ANode:: ...test_flag_migrated\n" ;
+   // This will test that when the migrate flag is set
+   // we do not persist the children of Suites and families.
+   // However we should always persist when check-pointing
+
+   Defs defs;
+   suite_ptr s = defs.add_suite("test_flag_migrated");
+   family_ptr f1 = s->add_family("f1");
+   f1->add_task("t1");
+   task_ptr t2 = f1->add_task("t2");
+   size_t expected_all_nodes = 4;
+
+   // Remove host dependent variables from server state, so that we can run on other platforms
+   defs.set_server().delete_server_variable("ECF_LOG");
+   defs.set_server().delete_server_variable("ECF_CHECK");
+   defs.set_server().delete_server_variable("ECF_CHECKOLD");
+
+   std::string file_name = File::test_data("ANode/test/data/test_flag_migrated","ANode");
+   {
+      defs.save_as_checkpt(file_name);
+      Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+
+      Ecf::set_debug_equality(true);
+      BOOST_CHECK_MESSAGE(defs == restored_defs, "Saved and restored defs not the same");
+      Ecf::set_debug_equality(false);
+
+      std::vector<node_ptr> all_nodes;
+      restored_defs.get_all_nodes(all_nodes);
+      BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+
+      fs::remove(file_name);
+   }
+
+   {
+      // this time we only expect 1 node
+      s->flag().set(ecf::Flag::MIGRATED);
+
+      {
+         defs.save_as_checkpt(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+      {
+         std::string the_string;
+         defs.save_checkpt_as_string(the_string);
+         Defs restored_defs; restored_defs.restore_from_string(the_string);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+      }
+      {
+         defs.save_as_filename(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==1,"expected 1 nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+
+      s->flag().clear(ecf::Flag::MIGRATED);
+   }
+
+   {
+      // this time we only expect 2 node
+      f1->flag().set(ecf::Flag::MIGRATED);
+
+      {
+         defs.save_as_checkpt(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+      {
+         std::string the_string;
+         defs.save_checkpt_as_string(the_string);
+         Defs restored_defs; restored_defs.restore_from_string(the_string);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+      }
+      {
+         defs.save_as_filename(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==2,"expected 2 nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+
+      f1->flag().clear(ecf::Flag::MIGRATED);
+   }
+
+   {
+      // this time expected_all_nodes
+      t2->flag().set(ecf::Flag::MIGRATED);
+
+      {
+         defs.save_as_checkpt(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+      {
+         std::string the_string;
+         defs.save_checkpt_as_string(the_string);
+         Defs restored_defs; restored_defs.restore_from_string(the_string);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+      }
+      {
+         defs.save_as_filename(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+   }
+}
+
+BOOST_AUTO_TEST_CASE( test_flag_migrated_with_reque )
+{
+   cout << "ANode:: ...test_flag_migrated_with_reque\n" ;
+   // This will test the re-queue should clear the migrated flag, and cause children of
+   // suite/families to appear once again.
+
+   Defs defs;
+   suite_ptr s = defs.add_suite("test_flag_migrated_with_reque");
+   family_ptr f1 = s->add_family("f1");
+   f1->add_task("t1");
+   task_ptr t2 = f1->add_task("t2");
+   size_t expected_all_nodes = 4;
+
+   defs.beginAll();
+
+   // Remove host dependent variables from server state, so that we can run on other platforms
+   defs.set_server().delete_server_variable("ECF_LOG");
+   defs.set_server().delete_server_variable("ECF_CHECK");
+   defs.set_server().delete_server_variable("ECF_CHECKOLD");
+
+   std::string file_name = File::test_data("ANode/test/data/test_flag_migrated_with_reque","ANode");
+   {
+      // this time we only expect 1 node
+      s->flag().set(ecf::Flag::MIGRATED);
+
+      {
+         defs.save_as_checkpt(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes; restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+      {
+         std::string the_string;
+         defs.save_checkpt_as_string(the_string);
+         Defs restored_defs; restored_defs.restore_from_string(the_string);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+      }
+
+      {
+         defs.save_as_filename(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes; restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==1,"expected 1 nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+   }
+
+   {
+      // Reque means migrate flag was cleared, hence we expect full set of nodes.
+      defs.requeue(); // this should clear the migrate flag
+
+      BOOST_CHECK_MESSAGE(!s->get_flag().is_set(ecf::Flag::MIGRATED),"Expected migrate flag to be cleared");
+
+      {
+         defs.save_as_checkpt(file_name);
+         Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+         std::vector<node_ptr> all_nodes; restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+         fs::remove(file_name);
+      }
+      {
+         std::string the_string;
+         defs.save_checkpt_as_string(the_string);
+         Defs restored_defs; restored_defs.restore_from_string(the_string);
+         std::vector<node_ptr> all_nodes;
+         restored_defs.get_all_nodes(all_nodes);
+         BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+      }
+
+      {
+          defs.save_as_filename(file_name);
+          Defs restored_defs; restored_defs.restore_from_checkpt(file_name);
+          std::vector<node_ptr> all_nodes; restored_defs.get_all_nodes(all_nodes);
+          BOOST_CHECK_MESSAGE(all_nodes.size()==expected_all_nodes,"expected " << expected_all_nodes << " nodes but found " << all_nodes.size());
+          fs::remove(file_name);
+       }
+   }
+}
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestLimit.cpp b/ANode/test/TestLimit.cpp
index 7850e44..0a1b9f8 100644
--- a/ANode/test/TestLimit.cpp
+++ b/ANode/test/TestLimit.cpp
@@ -156,6 +156,9 @@ BOOST_AUTO_TEST_CASE( test_limit_decrement )
    BOOST_CHECK_MESSAGE( limit.state_change_no() == expected_state_change_no,"Expected no change to state change no, expected " << expected_state_change_no << " but found " <<  limit.state_change_no());
 
    Ecf::set_server(false); // needed to test state_change_numbers
+   // reset, to avoid effecting downstream tests
+   Ecf::set_state_change_no(0);
+   Ecf::set_modify_change_no(0);
 }
 
 
diff --git a/ANode/test/TestPersistence.cpp b/ANode/test/TestPersistence.cpp
index e162430..83ceb1e 100644
--- a/ANode/test/TestPersistence.cpp
+++ b/ANode/test/TestPersistence.cpp
@@ -15,6 +15,11 @@
 #include "boost/filesystem/path.hpp"
 
 #include "MyDefsFixture.hpp"
+#include "Ecf.hpp"
+#include "Defs.hpp"
+#include "Suite.hpp"
+#include "Family.hpp"
+#include "Task.hpp"
 
 using namespace std;
 using namespace ecf;
diff --git a/ANode/test/TestPreProcessing.cpp b/ANode/test/TestPreProcessing.cpp
index c102f40..d3dfc5b 100644
--- a/ANode/test/TestPreProcessing.cpp
+++ b/ANode/test/TestPreProcessing.cpp
@@ -127,7 +127,7 @@ void test_sms_preprocessing(const std::string& directory, bool pass)
 //	cerr << " directory =  " << directory << "\n";
 
 	// SET ECF_HOME
-	std::string smshome = directory;
+	std::string ecf_home = directory;
 
 	fs::path full_path( fs::initial_path<fs::path>() );
 	full_path = fs::system_complete( fs::path( directory ) );
@@ -148,7 +148,7 @@ void test_sms_preprocessing(const std::string& directory, bool pass)
 		// variable substitution. hence if variable substitution fails its likely to be
 		// a bug in autoDiscoverVariables
 		std::set<std::string> discoveredVariables;
-		autoDiscoverVariables(smshome + "/includes", discoveredVariables );
+		autoDiscoverVariables(ecf_home + "/includes", discoveredVariables );
 		BOOST_FOREACH(const string& var, discoveredVariables) {
 // 			cerr << "autoDiscoverVariables = " << var << "\n";
 			suite->addVariable( Variable( var, "gobblygook" ) );
@@ -160,12 +160,12 @@ void test_sms_preprocessing(const std::string& directory, bool pass)
 			try {
 				fs::path relPath( directory + "/" + dir_itr->path().filename().string());
 
-				// Ignore directores were only interested in .ecf files.
+				// Ignore directories were only interested in .ecf files.
  				if (fs::is_directory(relPath)) continue;
             if (File::getExt(relPath.filename().string()) != "ecf" ) continue; // ignore other files
 
 				//std::cout << "......Parsing file " << relPath.string() << "\n";
- 				//std::cout << "adding task name " << relPath.leaf() << "\n";
+ 				//std::cout << "      adding task name " << relPath.leaf() << "\n";
  				fam->add_task( relPath.stem().string() );
 			}
 			catch ( const std::exception & ex ) {
@@ -180,7 +180,7 @@ void test_sms_preprocessing(const std::string& directory, bool pass)
  	theDefs.getAllTasks(theTasks);
 
 	// Override ECF_HOME.   ECF_HOME is need to locate the ecf files
-	theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),smshome);
+	theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),ecf_home);
 
 	/// begin , will cause creation of generated variables. The generated variables
 	/// are used in client scripts(sms) and used to locate the sms files
@@ -189,7 +189,7 @@ void test_sms_preprocessing(const std::string& directory, bool pass)
 	// Test Job creator, this will pre-process and perform variable substitution on ecf files
 	BOOST_FOREACH(Task* t, theTasks) {
 
-	   //cout << "task " << t->absNodePath() << "\n";
+	   //cout << "  task " << t->absNodePath() << "\n";
 	   JobsParam jobsParam; // create jobs =  false, spawn_jobs = false
 	   bool ok = t-> submitJob( jobsParam ) ;
 
diff --git a/ANode/test/TestReplace.cpp b/ANode/test/TestReplace.cpp
index e1790b7..08f890f 100644
--- a/ANode/test/TestReplace.cpp
+++ b/ANode/test/TestReplace.cpp
@@ -11,9 +11,6 @@
 // nor does it submit to any jurisdiction.
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 #include <boost/test/unit_test.hpp>
-#include "boost/filesystem/operations.hpp"
-#include "boost/filesystem/path.hpp"
-#include <boost/make_shared.hpp>
 
 #include "Defs.hpp"
 #include "Suite.hpp"
@@ -23,7 +20,34 @@
 
 using namespace std;
 using namespace ecf;
-namespace fs = boost::filesystem;
+
+class ExpectStateChange  {
+public:
+   ExpectStateChange() : state_change_no_(Ecf::state_change_no()) {Ecf::set_server(true); }
+   ~ExpectStateChange() { BOOST_CHECK_MESSAGE(state_change_no_ != Ecf::state_change_no() ,"Expected state change" );Ecf::set_server(false); }
+private:
+   unsigned int state_change_no_;
+};
+
+class ExpectModifyChange  {
+public:
+   ExpectModifyChange() : modify_change_no_(Ecf::modify_change_no()) {Ecf::set_server(true); }
+   ~ExpectModifyChange() { BOOST_CHECK_MESSAGE(modify_change_no_ != Ecf::modify_change_no() ,"Expected Modify change" );Ecf::set_server(false);}
+private:
+   unsigned int modify_change_no_;
+};
+
+class ExpectNoChange {
+public:
+   ExpectNoChange() : state_change_no_(Ecf::state_change_no()), modify_change_no_(Ecf::modify_change_no()) { Ecf::set_server(true);}
+   ~ExpectNoChange() {
+      BOOST_CHECK_MESSAGE(state_change_no_ == Ecf::state_change_no() && modify_change_no_ == Ecf::modify_change_no(),"Expected no change" );
+      Ecf::set_server(false);
+   }
+private:
+   unsigned int state_change_no_;
+   unsigned int modify_change_no_;
+};
 
 BOOST_AUTO_TEST_SUITE( NodeTestSuite )
 
@@ -53,6 +77,7 @@ BOOST_AUTO_TEST_CASE( test_replace_add_task )
       expectedDefs.addSuite( suite );
    }
 
+   ExpectStateChange expect_state_change;
    std::string errorMsg;
    BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
    BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
@@ -79,8 +104,8 @@ BOOST_AUTO_TEST_CASE( test_replace_add_suite )
          fam->add_task( "t2"  );
       }
 
-      // Server defs is empty
-      Defs serverDefs;
+      ExpectModifyChange expect_state_change;
+      Defs serverDefs;  // Server defs is empty
 
       std::string errorMsg;
       BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
@@ -96,8 +121,8 @@ BOOST_AUTO_TEST_CASE( test_replace_add_suite )
           fam->add_task( "t2"  );
        }
 
-       // Server defs is empty
-       Defs serverDefs;
+       ExpectModifyChange expect_state_change;
+       Defs serverDefs; // Server defs is empty
 
        std::string errorMsg;
        BOOST_REQUIRE_MESSAGE(serverDefs.replaceChild("/suite1/family",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
@@ -113,8 +138,8 @@ BOOST_AUTO_TEST_CASE( test_replace_add_suite )
           fam->add_task( "t2"  );
        }
 
-       // Server defs is empty
-       Defs serverDefs;
+       ExpectModifyChange expect_state_change;
+       Defs serverDefs;  // Server defs is empty
 
        std::string errorMsg;
        BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
@@ -141,6 +166,7 @@ BOOST_AUTO_TEST_CASE( test_replace_child )
  	}
 	BOOST_CHECK_MESSAGE(comparisonDef == *clientDef,"client and comparisonDef should be the same");
 
+   ExpectModifyChange expect_state_change;
  	std::string errorMsg;
  	Defs serverDefs;
  	BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
@@ -176,6 +202,7 @@ BOOST_AUTO_TEST_CASE( test_replace_add_preserves_states )
    }
 
    //cout << serverDefs;
+   ExpectStateChange expect_state_change;
    std::string errorMsg;
    BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/family/t4",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
 
@@ -218,6 +245,7 @@ BOOST_AUTO_TEST_CASE( test_replace_preserves_sibling_states )
       fam->add_task( "t4"  );
    }
 
+   ExpectStateChange expect_state_change;
    std::string errorMsg;
    BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/family/t4",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
    BOOST_REQUIRE_MESSAGE(t1->state() == NState::COMPLETE," state on task t1 not preserved after replace");
@@ -248,6 +276,7 @@ BOOST_AUTO_TEST_CASE( test_replace_preserves_begun_status )
    }
    serverDefs->beginAll();
 
+   ExpectStateChange expect_state_change;
    std::string errorMsg;
    BOOST_REQUIRE_MESSAGE( serverDefs->replaceChild("/suite1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
    BOOST_REQUIRE_MESSAGE( serverDefs->findSuite("suite1"),"Can't find suite1");
@@ -287,7 +316,9 @@ BOOST_AUTO_TEST_CASE( test_replace_add_node )
   		suite->addFamily( fam );
  		serverDefs.addSuite( suite );
  	}
- 	std::string errorMsg;
+
+   ExpectStateChange expect_state_change;
+   std::string errorMsg;
  	BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
 	BOOST_CHECK_MESSAGE(comparisonDef == serverDefs,"comparisonDef and servers defs should be the same");
 }
@@ -330,7 +361,9 @@ BOOST_AUTO_TEST_CASE( test_replace_add_hierarchy )
 		suite_ptr suite = Suite::create( "suite1" ) ;
   		serverDefs.addSuite( suite );
  	}
- 	std::string errorMsg;
+
+   ExpectStateChange expect_state_change;
+   std::string errorMsg;
  	BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/fa/fb/fc/fd/t1",clientDef,true/*create nodes as needed*/, false/*force*/,errorMsg), errorMsg  );
 	BOOST_CHECK_MESSAGE(comparisonDef == serverDefs,"comparisonDef and servers defs should be the same");
 }
@@ -361,14 +394,21 @@ BOOST_AUTO_TEST_CASE( test_replace_order_preserved_for_suite )
    }
 
    std::string errorMsg;
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   {
+      ExpectModifyChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectModifyChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectModifyChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/s3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
 }
 
 
@@ -401,12 +441,21 @@ BOOST_AUTO_TEST_CASE( test_replace_order_preserved_for_family )
 
    std::string errorMsg;
    Ecf::set_debug_equality(true);  // only has affect in DEBUG build
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
    Ecf::set_debug_equality(false);
 }
 
@@ -442,12 +491,21 @@ BOOST_AUTO_TEST_CASE( test_replace_order_preserved_for_task )
 
    std::string errorMsg;
    Ecf::set_debug_equality(true);  // only has affect in DEBUG build
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
-   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
-   BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t1",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
+   {
+      ExpectStateChange expect_state_change;
+      BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/f1/t3",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+      BOOST_CHECK_MESSAGE(expectedDefs == serverDefs,"expectedDefs and servers defs should be the same");
+   }
    Ecf::set_debug_equality(false);
 }
 
@@ -462,6 +520,8 @@ BOOST_AUTO_TEST_CASE( test_replace_child_errors )
   		suite->addTask(  Task::create( "t2" ) );
  		clientDef->addSuite( suite );
  	}
+
+	ExpectNoChange expect_no_change;
  	Defs serverDefs;
  	std::string errorMsg;
  	BOOST_REQUIRE_MESSAGE(!serverDefs.replaceChild("/suite1/i/dont/exist", clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), "Expected failure"  );
@@ -486,17 +546,21 @@ BOOST_AUTO_TEST_CASE( test_replace_child_errors_2 )
  		serverDefs.addSuite( suite );
  	}
 
-  	// because createNodesAsNeeded is false, child adoption should fail since /suite1/t2
-  	// does not exist on the server
- 	std::string errorMsg;
- 	BOOST_REQUIRE_MESSAGE(!serverDefs.replaceChild("/suite1/t2", clientDef , false/*create nodes as needed*/, false, errorMsg), "Expected failure");
-
- 	// With flag now set, we will create any missing nodes even if they dont exist in the server
- 	errorMsg.clear();
- 	BOOST_REQUIRE_MESSAGE(serverDefs.replaceChild("/suite1/t2", clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), "Expected success " << errorMsg );
+  	std::string errorMsg;
+  	{
+  	   ExpectNoChange expect_no_change;
+  	   // because createNodesAsNeeded is false, child adoption should fail since /suite1/t2
+  	   // does not exist on the server
+  	   BOOST_REQUIRE_MESSAGE(!serverDefs.replaceChild("/suite1/t2", clientDef , false/*create nodes as needed*/, false, errorMsg), "Expected failure");
+  	}
+  	{
+  	   // With flag now set, we will create any missing nodes even if they dont exist in the server
+      ExpectStateChange expect_state_change;
+  	   errorMsg.clear();
+  	   BOOST_REQUIRE_MESSAGE(serverDefs.replaceChild("/suite1/t2", clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), "Expected success " << errorMsg );
+  	}
 }
 
-
 BOOST_AUTO_TEST_CASE( test_replace_child_errors_3 )
 {
 	// test force option
@@ -521,13 +585,20 @@ BOOST_AUTO_TEST_CASE( test_replace_child_errors_3 )
 
  		t2->set_state( NState::ACTIVE ); // Must be done after parent has been setup
  	}
+
  	std::string errorMsg;
- 	BOOST_REQUIRE_MESSAGE( !serverDefs.replaceChild("/suite1/t2", clientDef, true/*create nodes as needed*/, false/*force*/, errorMsg), "Expected failure since server task t2 is active, and force not used");
- 	errorMsg.clear();
- 	BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/t2",  clientDef, true/*create nodes as needed*/, true/*force*/, errorMsg),  errorMsg);
+ 	{
+      ExpectNoChange expect_no_change;
+ 	   BOOST_REQUIRE_MESSAGE( !serverDefs.replaceChild("/suite1/t2", clientDef, true/*create nodes as needed*/, false/*force*/, errorMsg),
+ 	      "Expected failure since server task t2 is active, and force not used");
+ 	}
+ 	{
+ 	   errorMsg.clear();
+      ExpectStateChange expect_state_change;
+ 	   BOOST_REQUIRE_MESSAGE( serverDefs.replaceChild("/suite1/t2",  clientDef, true/*create nodes as needed*/, true/*force*/, errorMsg),  errorMsg);
+ 	}
 }
 
-
 BOOST_AUTO_TEST_CASE( test_replace_add_task_with_bad_trigger )
 {
    cout << "ANode:: ...test_replace_add_task_with_bad_trigger\n" ;
@@ -545,9 +616,18 @@ BOOST_AUTO_TEST_CASE( test_replace_add_task_with_bad_trigger )
       fam->add_task( "t1"  );
    }
 
-   // expect to fail since trigger expression on added task, should not resolve
+   // Expect to pass, since the replace part is ok.
    std::string errorMsg;
-   BOOST_REQUIRE_MESSAGE( !serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+   node_ptr replaced_node;
+   {
+      ExpectStateChange expect_state_change;
+      replaced_node = serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg);
+      BOOST_REQUIRE_MESSAGE( replaced_node, "Expected replaced to succeed, even though triggers are dodgy"  );
+   }
+
+   // Although we have change the data model, Check if the trigger expressions are still valid. Should fail
+   std::string warning_msg;
+   BOOST_REQUIRE_MESSAGE(!replaced_node->suite()->check(errorMsg,warning_msg),"Expected failure " << errorMsg);
 }
 
 BOOST_AUTO_TEST_CASE( test_replace_add_suite_with_bad_triggers )
@@ -567,9 +647,22 @@ BOOST_AUTO_TEST_CASE( test_replace_add_suite_with_bad_triggers )
    // Server defs is empty
    Defs serverDefs;
 
-   // expect failure since trigger expression should not resolve
+   // Expect to pass, since the replace part is ok.
    std::string errorMsg;
-   BOOST_REQUIRE_MESSAGE( !serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg), errorMsg  );
+   node_ptr replaced_node;
+   {
+      ExpectModifyChange expect_state_change;
+      replaced_node = serverDefs.replaceChild("/suite1/family/t2",clientDef,true/*create nodes as needed*/, false/*force*/, errorMsg);
+      BOOST_REQUIRE_MESSAGE( replaced_node, "Expected replaced to succeed, even though triggers are dodgy"  );
+   }
+
+   // Although we have changed the data model, Check if the trigger expressions are still valid. Should fail.
+   std::string warning_msg;
+   BOOST_REQUIRE_MESSAGE(!replaced_node->suite()->check(errorMsg,warning_msg),"Expected failure " << errorMsg);
+
+   // reset, to avoid effecting downstream tests
+   Ecf::set_state_change_no(0);
+   Ecf::set_modify_change_no(0);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestSingleExprParse.cpp b/ANode/test/TestSingleExprParse.cpp
index b223c2b..8bb3c89 100644
--- a/ANode/test/TestSingleExprParse.cpp
+++ b/ANode/test/TestSingleExprParse.cpp
@@ -13,21 +13,28 @@
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 #include "ExprParser.hpp"
 #include "ExprAst.hpp"
+#include "ExprDuplicate.hpp"
 
 #include <boost/test/unit_test.hpp>
 #include <boost/foreach.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/date_time/posix_time/conversion.hpp>
+#include <boost/date_time/posix_time/time_formatters.hpp>  // requires boost date and time lib, for to_simple_string
+
 #include <string>
 #include <map>
 #include <iostream>
 #include <fstream>
 using namespace std;
-
+using namespace boost::gregorian;
+using namespace boost::posix_time;
 
 // DEBUG AID: to see the expression tree, invert the expected evaluation
 //            so that test fail's
 
 BOOST_AUTO_TEST_SUITE( NodeTestSuite )
 
+
 BOOST_AUTO_TEST_CASE( test_single_expression )
 {
     std::cout <<  "ANode:: ...test_single_expression\n";
@@ -37,17 +44,8 @@ BOOST_AUTO_TEST_CASE( test_single_expression )
     // value.second = result of expected evaluation
 	map<string,std::pair<string,bool> > exprMap;
 
-//  	exprMap["inigroup:YMD eq not 1"] = std::make_pair(AstEqual::stype(),true);
-//	exprMap["/net/main:YMD le /net/cleanplus1:YMD and 1"] = std::make_pair(AstAnd::stype(),true);
-//   exprMap["!../../../prod2diss//operation_is_late:yes"] = std::make_pair(AstNot::stype(),true);
-// 	exprMap["../obs:YMD ge  ( 19720101 + 6576 - 1)"] = std::make_pair(AstGreaterEqual::stype(),true);
-// 	exprMap["../obs:YMD ge  ( (19720101 + 6576) - (12 + 1) )"] = std::make_pair(AstGreaterEqual::stype(),true);
-
-   exprMap["../timers/end/ymd:YMD >= ./hind:YMD and hind_info == complete and comp == complete and notready == complete"] = std::make_pair(AstAnd::stype(),false);
-//   exprMap["comp == complete and ! ready == complete"] = std::make_pair(AstAnd::stype(),false);
-//   exprMap["comp == complete and not ready == complete"] = std::make_pair(AstAnd::stype(),false);
-//   exprMap["comp == complete and ~ ready == complete"] = std::make_pair(AstAnd::stype(),false);
-
+   exprMap["20160819 == cal::julian_to_date( 2457620 )"] = std::make_pair(AstEqual::stype(),true);
+   exprMap["2457620 == cal::date_to_julian( 20160819 )"] = std::make_pair(AstEqual::stype(),true);
 
  	std::pair<string, std::pair<string,bool> > p;
 	BOOST_FOREACH(p, exprMap ) {
@@ -65,12 +63,44 @@ BOOST_AUTO_TEST_CASE( test_single_expression )
 		Ast* top = theExprParser.getAst();
 		BOOST_REQUIRE_MESSAGE( top ,"No abstract syntax tree");
 		BOOST_REQUIRE_MESSAGE( top->left() ,"No root created");
-		BOOST_REQUIRE_MESSAGE( top->left()->isRoot() ,"First child of top should be a root");
-		BOOST_REQUIRE_MESSAGE( top->left()->type() == expectedRootType,"expected root type " << expectedRootType << " but found " << top->left()->type());
+		BOOST_REQUIRE_MESSAGE( top->left()->isRoot() || top->left()->is_variable() ,"First child of top should be a root or variable " + p.first);
+		BOOST_REQUIRE_MESSAGE( top->left()->is_evaluateable(),"expected ast to be evaluatable. found: " << top->left()->type() << " " << p.first);
+		BOOST_REQUIRE_MESSAGE( top->left()->type() == expectedRootType || top->left()->type() == "variable","expected root type " << expectedRootType << " or 'variable' but found " << top->left()->type() << " " << p.first);
       top->print_flat(ss);
 		BOOST_REQUIRE_MESSAGE( expectedEvaluationResult == top->evaluate(),"evaluation not as expected for:\n" << p.first << "\n" << ss.str() << "\n" << *top);
 	}
 }
 
-BOOST_AUTO_TEST_SUITE_END()
 
+//BOOST_AUTO_TEST_CASE( test_expression_read_from_file )
+//{
+//   std::cout <<  "ANode:: ...test_expression_read_from_file\n";
+//
+//   std::string filename = "/var/tmp/ma0/BIG_DEFS/triggers.list";
+//   std::ifstream the_file(filename.c_str(),std::ios_base::in);
+//   BOOST_REQUIRE_MESSAGE(the_file,"file " << filename << "not found");
+//
+//   int  i = 0;
+//   string line;
+//   while ( std::getline(the_file,line) ) {
+//      i++;
+//      // cout << i << ": " << line << "\n";
+//      ExprParser theExprParser(line);
+//      std::string errorMsg;
+//      bool ok = theExprParser.doParse(errorMsg);
+//      BOOST_CHECK_MESSAGE(ok,errorMsg << " line: " << i );
+//
+//      if (ok) {
+//         Ast* top = theExprParser.getAst();
+//         BOOST_REQUIRE_MESSAGE( top ,"No abstract syntax tree " + line);
+//         BOOST_REQUIRE_MESSAGE( top->left() ,"No root created " + line);
+//         BOOST_REQUIRE_MESSAGE( top->left()->isRoot() || top->left()->is_variable() ,"First child of top should be a root or variable " + line);
+//         //top->print_flat(ss);
+//      }
+//   }
+//
+//   ExprDuplicate reclaim_cloned_ast_memory;
+//   cout << " read " << i << " expressions\n";
+//}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestSmsLocator.cpp b/ANode/test/TestSmsLocator.cpp
deleted file mode 100644
index 389220a..0000000
--- a/ANode/test/TestSmsLocator.cpp
+++ /dev/null
@@ -1,128 +0,0 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        :
-// Author      : Avi
-// Revision    : $Revision: #10 $
-//
-// Copyright 2009-2016 ECMWF.
-// This software is licensed under the terms of the Apache Licence version 2.0
-// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-// In applying this licence, ECMWF does not waive the privileges and immunities
-// granted to it by virtue of its status as an intergovernmental organisation
-// nor does it submit to any jurisdiction.
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-#include <iostream>
-#include <stdlib.h>
-
-#include "boost/filesystem/operations.hpp"
-#include "boost/filesystem/path.hpp"
-#include <boost/test/unit_test.hpp>
-
-#include "Defs.hpp"
-#include "Suite.hpp"
-#include "Family.hpp"
-#include "Task.hpp"
-#include "EcfFile.hpp"
-#include "Str.hpp"
-#include "File.hpp"
-
-using namespace std;
-using namespace ecf;
-namespace fs = boost::filesystem;
-
-BOOST_AUTO_TEST_SUITE( NodeTestSuite )
-
-BOOST_AUTO_TEST_CASE( test_sms_file_locator )
-{
-	cout << "ANode:: ...test_sms_file_locator\n";
-
-	// SET ECF_HOME
-   std::string smshome = File::test_data("ANode/test/data/SMSHOME","ANode");
-
-	// Create a defs file corresponding to:
- 	//# Test the sms file can be found via ECF_SCRIPT
-	//#
-	//suite suite
-	//	edit ECF_INCLUDE $ECF_HOME/includes
-	//	edit SLEEPTIME 10
-	//	family family
-	//   		task t1
-	//   		task t2
-	//    		task t3
-	//  	endfamily
-	//endsuite
-	//
-	//#
-	//# This test suite should force a backwards search since the ecf files
-	//# are located in ECF_HOME
-	//suite suite1
-	//  	family family
-	//   		task suite1_task1
-	//   		task suite1_task2
-	//    		task suite1_task3
-	//    endfamily
-	//endsuite
-	//
-	//#
-	//# This suite is used to test command substition with ECF_FETCH command
-	//#
-	//suite suite2
-	//	edit ECF_INCLUDE $ECF_HOME/includes
-	//	edit ECF_FILES   $ECF_HOME
-	//	family family
-	//		edit SMSFETCH "smsfetch -F %ECF_FILES% -I %ECF_INCLUDE%"
-	//		task t2
-	//	endfamily
-	//endsuite
- 	Defs theDefs;
- 	{
- 	   suite_ptr suite = theDefs.add_suite("suite");
-		suite->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
- 		suite->addVariable( Variable( "SLEEPTIME", "10" ) );
- 		family_ptr fam = suite->add_family( "family" );
-		fam->add_task( "t1" );
-		fam->add_task( "t2" );
-		fam->add_task( "t3" );
- 	}
- 	{
-      suite_ptr suite = theDefs.add_suite("suite1");
-      family_ptr fam = suite->add_family( "family" );
-      fam->add_task( "suite1_task1" );
-      fam->add_task( "suite1_task2" );
-      fam->add_task( "suite1_task3" );
- 	}
- 	{
-      suite_ptr suite2 = theDefs.add_suite("suite2");
-		suite2->addVariable( Variable( Str::ECF_INCLUDE(), "$ECF_HOME/includes" ) );
- 		suite2->addVariable( Variable( Str::ECF_FILES(), "$ECF_HOME" ) );
-      family_ptr fam = suite2->add_family( "family" );
-		fam->addVariable( Variable( Str::ECF_FETCH(), "smsfetch -F %ECF_FILES% -I %ECF_INCLUDE%" ) );
- 		fam->add_task( "t2" );
- 	}
-// 	cerr << theDefs << "\n";
-
-	// get all the task, assume non hierarchical families
-	std::vector<Task*> theTasks;
- 	theDefs.getAllTasks(theTasks);
-	BOOST_REQUIRE_MESSAGE(theTasks.size() == 7, "Expected 7 tasks but found, " << theTasks.size());
-
-	// Override ECF_HOME.   ECF_HOME is need to locate to the ecf files
-	theDefs.set_server().add_or_update_user_variables(Str::ECF_HOME(),smshome);
-
-
-	/// begin , will cause creation of generated variables. The generated variables
-	/// are use in client scripts and used to locate the sms files
-	theDefs.beginAll();
-
-	// Test for ECF_ file location
-  	BOOST_FOREACH(Task* t, theTasks) {
-  		try {
-  			EcfFile ecf_file = t->locatedEcfFile();
-  			BOOST_REQUIRE_MESSAGE( ecf_file.valid(), "Could not locate ecf file for task ");
-  		}
-  		catch (std::exception& e) {
-  			BOOST_REQUIRE_MESSAGE(false,"Could not locate ecf file for task " << e.what());
-  		}
-	}
-}
-
-BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestTimeDependencies.cpp b/ANode/test/TestTimeDependencies.cpp
index 7f3c702..955b1d9 100644
--- a/ANode/test/TestTimeDependencies.cpp
+++ b/ANode/test/TestTimeDependencies.cpp
@@ -18,6 +18,7 @@
 #include <boost/date_time/posix_time/time_formatters.hpp>
 
 #include "Task.hpp"
+#include "Family.hpp"
 #include "Suite.hpp"
 #include "Defs.hpp"
 #include "Jobs.hpp"
@@ -35,7 +36,7 @@ BOOST_AUTO_TEST_CASE( test_day_time_combination )
 {
    cout << "ANode:: ...test_day_time_combination\n";
    // See ECFLOW-337 , this is where the job was being run twice in a week instead of once.
-   //                  i.e because the day for still free past midnight.
+   //                  i.e because the day was still free past midnight.
 
    // Create the suite, starting on a sunday
    Defs  defs;
@@ -50,17 +51,17 @@ BOOST_AUTO_TEST_CASE( test_day_time_combination )
 
    CalendarUpdateParams calUpdateParams( hours(1) );
    boost::posix_time::ptime expected_time = boost::posix_time::ptime(date(2015,6,8),time_duration(10,0,0)); //Monday & 10
-    //cout << "expected_time =  " << expected_time << "\n";
+   //cout << "expected_time =  " << expected_time << "\n";
 
-   bool submitted = false;
-   for(int m=1; m < 100; m++) {
+   int submitted = 0;
+   for(int m=1; m < 120; m++) {  // run for 5 days
 
       Jobs jobs(&defs);
       JobsParam jobsParam;
       jobs.generate(jobsParam);
 
       if (jobsParam.submitted().size() ) {
-         submitted = true;
+         submitted++;
          //cout << "submitted at " << suite->calendar().suiteTime() << "\n";
 
          BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time,"\nExpected to submit at " << expected_time << " only, but also found " << suite->calendar().suiteTime());
@@ -70,9 +71,11 @@ BOOST_AUTO_TEST_CASE( test_day_time_combination )
 
       defs.updateCalendar(calUpdateParams);
    }
-   BOOST_CHECK_MESSAGE( submitted ,"Expected one submission but found none");
+   BOOST_CHECK_MESSAGE( submitted == 1 ,"Expected one submission but found " << submitted);
 }
 
+
+
 BOOST_AUTO_TEST_CASE( test_date_time_combination )
 {
    // See ECFLOW-337
@@ -93,7 +96,7 @@ BOOST_AUTO_TEST_CASE( test_date_time_combination )
    boost::posix_time::ptime expected_time = boost::posix_time::ptime(date(2015,6,8),time_duration(10,0,0)); // Monday & 10
    //cout << "expected_time =  " << expected_time << "\n";
 
-   bool submitted = false;
+   int submitted = 0;
    for(int m=1; m < 100; m++) {
 
       Jobs jobs(&defs);
@@ -101,7 +104,7 @@ BOOST_AUTO_TEST_CASE( test_date_time_combination )
       jobs.generate(jobsParam);
 
       if (jobsParam.submitted().size() ) {
-         submitted = true;
+         submitted++;
          //cout << "submitted at " << suite->calendar().suiteTime() << "\n";
 
          BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time,"\nExpected to submit at " << expected_time << " only, but also found " << suite->calendar().suiteTime());
@@ -110,7 +113,108 @@ BOOST_AUTO_TEST_CASE( test_date_time_combination )
 
       defs.updateCalendar(calUpdateParams);
    }
-   BOOST_CHECK_MESSAGE( submitted ,"Expected one submission but found none");
+   BOOST_CHECK_MESSAGE( submitted == 1 ,"Expected one submission but found " << submitted);
+}
+
+
+BOOST_AUTO_TEST_CASE( test_day_time_combination_in_hierarchy )
+{
+   cout << "ANode:: ...test_day_time_combination_in_hierarchy\n";
+   // See ECFLOW-833. Also See Note: ACore/doc/TimeDependencies.ddoc
+   // ***** This behaviour is not intuitive *****
+
+   // Create the suite, starting on a sunday
+   Defs  defs;
+   suite_ptr suite = defs.add_suite("s1");
+   boost::posix_time::ptime the_time = boost::posix_time::ptime(date(2015,6,7),time_duration(0,0,0)); //sunday
+   suite->addClock( ClockAttr(the_time) );
+   family_ptr f1 = suite->add_family("f1");
+   f1->addDay( DayAttr(DayAttr::MONDAY) );
+   task_ptr t1 = f1->add_task("t1");
+   t1->addTime( ecf::TimeAttr(ecf::TimeSlot(10,0)) );
+
+   defs.beginAll();
+
+   CalendarUpdateParams calUpdateParams( hours(1) );
+   boost::posix_time::ptime expected_time1 = boost::posix_time::ptime(date(2015,6,8),time_duration(0,0,0)); //Monday & midnight
+   boost::posix_time::ptime expected_time2 = boost::posix_time::ptime(date(2015,6,8),time_duration(10,0,0)); //Monday & 10
+   //cout << "expected_time =  " << expected_time << "\n";
+
+   int submitted = 0;
+   for(int m=1; m < 120; m++) {  // run for 5 days
+
+      Jobs jobs(&defs);
+      JobsParam jobsParam;
+      jobs.generate(jobsParam);
+
+      if (jobsParam.submitted().size() ) {
+         submitted++;
+         //cout << "submitted at " << suite->calendar().suiteTime() << "\n";
+
+         // Unexpected, since time has been free'd on the sunday, and will stay this way for the following day
+         // i.e one a time is free, it stays free until re-queued.
+         if ( submitted == 1)
+            BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time1,"\nExpected to submit at " << expected_time1 << " only, but also found " << suite->calendar().suiteTime());
+
+         if ( submitted == 2)
+            BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time2,"\nExpected to submit at " << expected_time2 << " only, but also found " << suite->calendar().suiteTime());
+
+         t1->requeue(true/*resetRepeats*/,0/*clear_suspended_in_child_nodes*/,true/*reset_next_time_slot*/);
+      }
+
+      defs.updateCalendar(calUpdateParams);
+   }
+   BOOST_CHECK_MESSAGE( submitted == 2 ,"Expected two submission but found " << submitted);
+}
+
+BOOST_AUTO_TEST_CASE( test_date_time_combination_in_hierarchy )
+{
+   // See ECFLOW-833, See Note: ACore/doc/TimeDependencies.ddoc
+   // ***** This behaviour is not intuitive *****
+   cout << "ANode:: ...test_date_time_combination_in_hierarchy\n";
+
+   // Create the suite, starting on a sunday
+   Defs  defs;
+   suite_ptr suite = defs.add_suite("s1");
+   boost::posix_time::ptime the_time = boost::posix_time::ptime(date(2015,6,7),time_duration(0,0,0)); //sunday
+   suite->addClock( ClockAttr(the_time) );
+   family_ptr f1 = suite->add_family("f1");
+   f1->addDate( DateAttr(8,6,2015) );   // Monday
+   task_ptr t1 = f1->add_task("t1");
+   t1->addTime( ecf::TimeAttr(ecf::TimeSlot(10,0)) );
+
+   defs.beginAll();
+
+   CalendarUpdateParams calUpdateParams( hours(1) );
+   boost::posix_time::ptime expected_time1 = boost::posix_time::ptime(date(2015,6,8),time_duration(0,0,0)); // Monday & midnight
+   boost::posix_time::ptime expected_time2 = boost::posix_time::ptime(date(2015,6,8),time_duration(10,0,0)); // Monday & 10
+   //cout << "expected_time =  " << expected_time << "\n";
+
+   int submitted = 0;
+   for(int m=1; m < 100; m++) {
+
+      Jobs jobs(&defs);
+      JobsParam jobsParam;
+      jobs.generate(jobsParam);
+
+      if (jobsParam.submitted().size() ) {
+         submitted++;
+         //cout << "submitted at " << suite->calendar().suiteTime() << "\n";
+
+         // Unexpected, since time has been free'd on the sunday, and will stay this way for the following day
+         // i.e one a time is free, it stays free until re-queued.
+         if ( submitted == 1)
+            BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time1,"\nExpected to submit at " << expected_time1 << " only, but also found " << suite->calendar().suiteTime());
+
+         if ( submitted == 2)
+            BOOST_CHECK_MESSAGE( suite->calendar().suiteTime() == expected_time2,"\nExpected to submit at " << expected_time2 << " only, but also found " << suite->calendar().suiteTime());
+
+         t1->requeue(true/*resetRepeats*/,0/*clear_suspended_in_child_nodes*/,true/*reset_next_time_slot*/);
+      }
+
+      defs.updateCalendar(calUpdateParams);
+   }
+   BOOST_CHECK_MESSAGE( submitted == 2 ,"Expected one submission but found " << submitted);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/ANode/test/TestVariableSubstitution.cpp b/ANode/test/TestVariableSubstitution.cpp
index 018e0ef..154ebe5 100644
--- a/ANode/test/TestVariableSubstitution.cpp
+++ b/ANode/test/TestVariableSubstitution.cpp
@@ -343,7 +343,8 @@ static std::vector<std::string> required_server_variables()
 {
    std::vector<std::string> required_server_variables;
    required_server_variables.push_back( Str::ECF_PORT() );
-   required_server_variables.push_back( std::string("ECF_NODE") );
+   required_server_variables.push_back( Str::ECF_NODE() );
+   required_server_variables.push_back( Str::ECF_HOST() );
 
    required_server_variables.push_back( Str::ECF_HOME() );
    required_server_variables.push_back( std::string("ECF_LOG") );
diff --git a/ANode/test/data/ECFLOW_672/base_date.h b/ANode/test/data/ECFLOW_672/base_date.h
new file mode 100644
index 0000000..a3b3d11
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/base_date.h
@@ -0,0 +1 @@
+#base_date.h
diff --git a/ANode/test/data/ECFLOW_672/base_ic.h b/ANode/test/data/ECFLOW_672/base_ic.h
new file mode 100644
index 0000000..e937c50
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/base_ic.h
@@ -0,0 +1,3 @@
+#base_ic.h
+%include <suite.h>
+%include <date.h>
diff --git a/ANode/test/data/ECFLOW_672/base_se.h b/ANode/test/data/ECFLOW_672/base_se.h
new file mode 100644
index 0000000..c51ccd2
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/base_se.h
@@ -0,0 +1,5 @@
+#base_se.h
+%include <suite.h>
+%include <lib.h>
+%include <date.h>
+%include <ic.h>
diff --git a/ANode/test/data/ECFLOW_672/date.h b/ANode/test/data/ECFLOW_672/date.h
new file mode 100644
index 0000000..5c69fc5
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/date.h
@@ -0,0 +1,3 @@
+#date.h
+%include <base_date.h>
+%include <hc_date.h>
diff --git a/ANode/test/data/ECFLOW_672/hc_date.h b/ANode/test/data/ECFLOW_672/hc_date.h
new file mode 100644
index 0000000..169ba92
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/hc_date.h
@@ -0,0 +1 @@
+#hc_date.h
diff --git a/ANode/test/data/ECFLOW_672/ic.h b/ANode/test/data/ECFLOW_672/ic.h
new file mode 100644
index 0000000..064dad7
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/ic.h
@@ -0,0 +1,4 @@
+#ic.h
+%include <suite.h>
+%include <base_ic.h>
+%include <hc_date.h>
diff --git a/ANode/test/data/ECFLOW_672/lib.h b/ANode/test/data/ECFLOW_672/lib.h
new file mode 100644
index 0000000..9cc1930
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/lib.h
@@ -0,0 +1 @@
+#lib.h
diff --git a/ANode/test/data/ECFLOW_672/ms.h b/ANode/test/data/ECFLOW_672/ms.h
new file mode 100644
index 0000000..d646303
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/ms.h
@@ -0,0 +1,3 @@
+#ms.h
+%include <suite.h>
+%include <ic.h>
diff --git a/ANode/test/data/ECFLOW_672/ms_mem.h b/ANode/test/data/ECFLOW_672/ms_mem.h
new file mode 100644
index 0000000..61cab73
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/ms_mem.h
@@ -0,0 +1,2 @@
+#ms_mem.h
+%include <ms.h>
diff --git a/ANode/test/data/ECFLOW_672/se.h b/ANode/test/data/ECFLOW_672/se.h
new file mode 100644
index 0000000..c2b4056
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/se.h
@@ -0,0 +1,2 @@
+#se.h
+%include <base_se.h>
diff --git a/ANode/test/data/ECFLOW_672/se_mem.h b/ANode/test/data/ECFLOW_672/se_mem.h
new file mode 100644
index 0000000..21767a1
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/se_mem.h
@@ -0,0 +1,2 @@
+#se_mem.h
+%include <se.h>
diff --git a/ANode/test/data/ECFLOW_672/suite.h b/ANode/test/data/ECFLOW_672/suite.h
new file mode 100644
index 0000000..49c10fc
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/suite.h
@@ -0,0 +1 @@
+#suite.h
diff --git a/ANode/test/data/ECFLOW_672/t.ecf b/ANode/test/data/ECFLOW_672/t.ecf
new file mode 100644
index 0000000..f757d6e
--- /dev/null
+++ b/ANode/test/data/ECFLOW_672/t.ecf
@@ -0,0 +1,2 @@
+%include <se_mem.h>
+%include <ms_mem.h>
diff --git a/ANode/test/data/SMSHOME/suite/family/head.h b/ANode/test/data/SMSHOME/suite/family/head.h
index 68c9593..d895ac7 100644
--- a/ANode/test/data/SMSHOME/suite/family/head.h
+++ b/ANode/test/data/SMSHOME/suite/family/head.h
@@ -15,7 +15,7 @@ set -x # echo script lines as they are executed
 # communication with ECF_
 
 export ECF_PORT=%ECF_PORT%    # ECF_ port numner
-export ECF_NODE=%ECF_NODE%    # The name ecf server that issued this task
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/ANode/test/data/SMSHOME2/bad/bad.ecf b/ANode/test/data/SMSHOME2/bad/bad.ecf
index 6829195..ea44901 100644
--- a/ANode/test/data/SMSHOME2/bad/bad.ecf
+++ b/ANode/test/data/SMSHOME2/bad/bad.ecf
@@ -3,4 +3,3 @@
 
 %manual
 	OPERATORS: This is an example of using a manual
-  
diff --git a/ANode/test/data/SMSHOME2/bad/bad12.ecf b/ANode/test/data/SMSHOME2/bad/bad12.ecf
new file mode 100644
index 0000000..8603e6f
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/bad12.ecf
@@ -0,0 +1,2 @@
+sleep %SLEEPTIME # test for uneven number for microcharacter's with comments, start of line
+                 # this is different to bad9.ecf
\ No newline at end of file
diff --git a/ANode/test/data/SMSHOME2/bad/bad8.ecf b/ANode/test/data/SMSHOME2/bad/bad8.ecf
index c158283..0db2304 100644
--- a/ANode/test/data/SMSHOME2/bad/bad8.ecf
+++ b/ANode/test/data/SMSHOME2/bad/bad8.ecf
@@ -1,8 +1,2 @@
- 
- 
 # test for uneven number for microcharacter's
- 
 sleep %SLEEPTIME
-
- 
- 
\ No newline at end of file
diff --git a/ANode/test/data/SMSHOME2/bad/bad9.ecf b/ANode/test/data/SMSHOME2/bad/bad9.ecf
index 823d9e2..2274308 100644
--- a/ANode/test/data/SMSHOME2/bad/bad9.ecf
+++ b/ANode/test/data/SMSHOME2/bad/bad9.ecf
@@ -1,12 +1,2 @@
-#======================================================================
-# test recursive include
-#======================================================================
-%include <recursive_head.h>
 
-
-echo do some work
-sleep 10
-echo end of job
-
-
- 
\ No newline at end of file
+sleep %SLEEPTIME # test for uneven number for microcharacter's with comments
diff --git a/ANode/test/data/SMSHOME2/bad/includes/a.h b/ANode/test/data/SMSHOME2/bad/includes/a.h
new file mode 100644
index 0000000..7c455fd
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/a.h
@@ -0,0 +1,3 @@
+# a.h
+%include <b.h>
+%include <c.h>
diff --git a/ANode/test/data/SMSHOME2/bad/includes/b.h b/ANode/test/data/SMSHOME2/bad/includes/b.h
new file mode 100644
index 0000000..11f0d93
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/b.h
@@ -0,0 +1,3 @@
+# b.h
+%include <d.h>
+%include <e.h>
diff --git a/ANode/test/data/SMSHOME2/bad/includes/c.h b/ANode/test/data/SMSHOME2/bad/includes/c.h
new file mode 100644
index 0000000..d960e23
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/c.h
@@ -0,0 +1 @@
+# c.h
diff --git a/ANode/test/data/SMSHOME2/bad/includes/d.h b/ANode/test/data/SMSHOME2/bad/includes/d.h
new file mode 100644
index 0000000..e182c79
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/d.h
@@ -0,0 +1 @@
+# d.h
diff --git a/ANode/test/data/SMSHOME2/bad/includes/e.h b/ANode/test/data/SMSHOME2/bad/includes/e.h
new file mode 100644
index 0000000..23cb656
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/e.h
@@ -0,0 +1 @@
+%include <b.h>
diff --git a/ANode/test/data/SMSHOME2/bad/includes/ok.h b/ANode/test/data/SMSHOME2/bad/includes/ok.h
new file mode 100644
index 0000000..1629fdd
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/includes/ok.h
@@ -0,0 +1 @@
+# file ok.h
diff --git a/ANode/test/data/SMSHOME2/bad/bad9.ecf b/ANode/test/data/SMSHOME2/bad/recursive_include1.ecf
similarity index 100%
copy from ANode/test/data/SMSHOME2/bad/bad9.ecf
copy to ANode/test/data/SMSHOME2/bad/recursive_include1.ecf
diff --git a/ANode/test/data/SMSHOME2/bad/recursive_include2.ecf b/ANode/test/data/SMSHOME2/bad/recursive_include2.ecf
new file mode 100644
index 0000000..6cf25e6
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/bad/recursive_include2.ecf
@@ -0,0 +1,6 @@
+# test for recursive includes
+%include <a.h>
+
+# a.h -> b.h -> d.h
+#               e.h -> b.h
+#        c.h
\ No newline at end of file
diff --git a/ANode/test/data/SMSHOME2/good/ecf_micro_2.ecf b/ANode/test/data/SMSHOME2/good/ecf_micro_2.ecf
index 59f833c..65e5e0c 100644
--- a/ANode/test/data/SMSHOME2/good/ecf_micro_2.ecf
+++ b/ANode/test/data/SMSHOME2/good/ecf_micro_2.ecf
@@ -1,10 +1,8 @@
 
-
 %ecfmicro ^
 exe_time=`date +%s -r ACore/bin/^COMPILER_TEST_PATH:gcc^/u_acore`
 ^ecfmicro %
 
-
 %manual
   Rest of the manual page is placed here, closer to the code
 %end
\ No newline at end of file
diff --git a/ANode/test/data/SMSHOME2/good/ecfmicro.ecf b/ANode/test/data/SMSHOME2/good/ecfmicro.ecf
index ec2b56c..bf0057c 100644
--- a/ANode/test/data/SMSHOME2/good/ecfmicro.ecf
+++ b/ANode/test/data/SMSHOME2/good/ecfmicro.ecf
@@ -2,7 +2,6 @@
 # test exfmicro with a pound sign, this is multi-character
 %ecfmicro £  
 
-
 £VAR:sub£
 
 £ecfmicro %
diff --git a/ANode/test/data/SMSHOME2/good/good.ecf b/ANode/test/data/SMSHOME2/good/good.ecf
index eeb2b4c..6dad56a 100644
--- a/ANode/test/data/SMSHOME2/good/good.ecf
+++ b/ANode/test/data/SMSHOME2/good/good.ecf
@@ -3,15 +3,9 @@
 	First include head.h
 %end
 
- 
-
-
 echo do some work
 echo end of job
 
-
- 
-
 %manual
   Rest of the manual page is placed here, closer to the code
 %end
diff --git a/ANode/test/data/SMSHOME2/good/good1.ecf b/ANode/test/data/SMSHOME2/good/good1.ecf
index 0077333..58940a5 100644
--- a/ANode/test/data/SMSHOME2/good/good1.ecf
+++ b/ANode/test/data/SMSHOME2/good/good1.ecf
@@ -1,5 +1,4 @@
- 
-#============================================================
+ #============================================================
 # test for include included twice. 
 # This is not a recursive include
 #=========================================================
diff --git a/ANode/test/data/SMSHOME2/good/good2.ecf b/ANode/test/data/SMSHOME2/good/good2.ecf
new file mode 100644
index 0000000..6cf0d6a
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/good/good2.ecf
@@ -0,0 +1,6 @@
+# sleep %SLEEPTIME test for uneven number for microcharacter's
+sleep %SLEEPTIME%
+# sleep %SLEEPTIME test for uneven number for microcharacter's
+# %fred
+# fred%
+        # %%fred%
diff --git a/ANode/test/data/SMSHOME2/good/includeonce.ecf b/ANode/test/data/SMSHOME2/good/includeonce.ecf
new file mode 100644
index 0000000..71809ad
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/good/includeonce.ecf
@@ -0,0 +1,5 @@
+%includeonce <head.h>
+%includeonce <head.h>
+%include <head.h>
+%includeonce <tail.h>
+%include <tail.h>
diff --git a/ANode/test/data/SMSHOME2/good/includeonce_recursive.ecf b/ANode/test/data/SMSHOME2/good/includeonce_recursive.ecf
new file mode 100644
index 0000000..5a3b2c0
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/good/includeonce_recursive.ecf
@@ -0,0 +1 @@
+%includeonce <recursive_include.h>
diff --git a/ANode/test/data/SMSHOME2/good/includes/head.h b/ANode/test/data/SMSHOME2/good/includes/head.h
index e12e0fe..a4fd5d9 100644
--- a/ANode/test/data/SMSHOME2/good/includes/head.h
+++ b/ANode/test/data/SMSHOME2/good/includes/head.h
@@ -13,8 +13,8 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF_
 
-export ECF_PORT=%ECF_PORT%  # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The name sms that issued this task
+export ECF_PORT=%ECF_PORT%    # The port on the ecflow server
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/ANode/test/data/SMSHOME2/good/includes/recursive_include.h b/ANode/test/data/SMSHOME2/good/includes/recursive_include.h
new file mode 100644
index 0000000..e6fbdf0
--- /dev/null
+++ b/ANode/test/data/SMSHOME2/good/includes/recursive_include.h
@@ -0,0 +1,2 @@
+# test includeonce with a recursive include
+%include <recursive_include.h>
diff --git a/ANode/test/data/SMSHOME2/good/includes/sms.h b/ANode/test/data/SMSHOME2/good/includes/sms.h
index 3843b43..a0d8cc0 100644
--- a/ANode/test/data/SMSHOME2/good/includes/sms.h
+++ b/ANode/test/data/SMSHOME2/good/includes/sms.h
@@ -12,7 +12,7 @@
 set -a
 
 ECF_PASS=%ECF_PASS%
-ECF_NODE=%ECF_NODE%
+ECF_HOST=%ECF_HOST%
 ECF_NAME=%ECF_NAME%
 ECF_TRYNO=%ECF_TRYNO%
 ECF_RID=$(echo $QSUB_REQID | cut -f1 -d.)
diff --git a/ANode/test/data/SMSHOME2/good/includes/trap.h b/ANode/test/data/SMSHOME2/good/includes/trap.h
index edebcf9..fa92e53 100644
--- a/ANode/test/data/SMSHOME2/good/includes/trap.h
+++ b/ANode/test/data/SMSHOME2/good/includes/trap.h
@@ -17,7 +17,7 @@ banner trap.h
 typeset -l ARCH
 
 if [[ "$ARCH" = hpia64 ]] ; then
-  rcp /home/ma/emos/data/dummy.output emos@%ECF_NODE%:%ECF_JOBOUT% || true
+  rcp /home/ma/emos/data/dummy.output emos@%ECF_HOST%:%ECF_JOBOUT% || true
 fi
 
 set -a
@@ -49,7 +49,7 @@ else
 fi
 
 ECF_PASS=%ECF_PASS%
-ECF_NODE=%ECF_NODE%
+ECF_HOST=%ECF_HOST%
 ECF_NAME=%ECF_NAME%
 ECF_TRYNO=%ECF_TRYNO%
 ECF_HOSTFILE=$HOME/.smshostfile
diff --git a/ANode/test/data/SMSHOME2/good/micro_in_comment.ecf b/ANode/test/data/SMSHOME2/good/micro_in_comment.ecf
index ed50b43..7e74b61 100644
--- a/ANode/test/data/SMSHOME2/good/micro_in_comment.ecf
+++ b/ANode/test/data/SMSHOME2/good/micro_in_comment.ecf
@@ -1,4 +1,3 @@
-
 echo do %% some work
 
 # mismatched micro characters staring with a # are not reported as errors
diff --git a/ANode/test/data/SMSHOME2/good/operations.ecf b/ANode/test/data/SMSHOME2/good/operations.ecf
index 347f7cf..6d48f4a 100644
--- a/ANode/test/data/SMSHOME2/good/operations.ecf
+++ b/ANode/test/data/SMSHOME2/good/operations.ecf
@@ -1,12 +1,10 @@
 
-
 # Since we have comment out, this should not appear in the jobs file
 #%include <qsub.h>
 # QSUB -lT 3500
 # QSUB -lt 3500
 # QSUB -lM 50mb
 
-
 %include <config.h>
 
 %include <trap.h>
diff --git a/ANode/test/data/includes/AA.h b/ANode/test/data/includes/AA.h
new file mode 100644
index 0000000..ca6eeb2
--- /dev/null
+++ b/ANode/test/data/includes/AA.h
@@ -0,0 +1,3 @@
+#startAA
+%includeonce <BB.h>
+#endAA
diff --git a/ANode/test/data/includes/BB.h b/ANode/test/data/includes/BB.h
new file mode 100644
index 0000000..defb48b
--- /dev/null
+++ b/ANode/test/data/includes/BB.h
@@ -0,0 +1,3 @@
+#startBB
+%includeonce <CC.h>
+#endBB
diff --git a/ANode/test/data/includes/CC.h b/ANode/test/data/includes/CC.h
new file mode 100644
index 0000000..31a56b3
--- /dev/null
+++ b/ANode/test/data/includes/CC.h
@@ -0,0 +1 @@
+#CC
diff --git a/ANode/test/data/includes/head.h b/ANode/test/data/includes/head.h
index 0b4d722..ded6592 100644
--- a/ANode/test/data/includes/head.h
+++ b/ANode/test/data/includes/head.h
@@ -22,8 +22,8 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF
 
-export ECF_PORT=%ECF_PORT%  # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The name sms that issued this task
+export ECF_PORT=%ECF_PORT%    # The port number on the server
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/ANode/test/data/includes/used_variables.h b/ANode/test/data/includes/used_variables.h
index 980d42f..5f3d9f5 100644
--- a/ANode/test/data/includes/used_variables.h
+++ b/ANode/test/data/includes/used_variables.h
@@ -7,6 +7,6 @@ suite=%ECF_JOB%
 suite=%ECF_JOBOUT%
 suite=%ECF_PASS%
 suite=%ECF_PORT%
-suite=%ECF_NODE%
+suite=%ECF_HOST%
 suite=%ECF_NAME%
 suite=%ESUITE%
diff --git a/AParser/Jamfile.jam b/AParser/Jamfile.jam
index 3980f4f..2f53f03 100644
--- a/AParser/Jamfile.jam
+++ b/AParser/Jamfile.jam
@@ -107,20 +107,4 @@ exe perf_aparser_only : test/ParseOnly.cpp
            <variant>debug:<define>DEBUG
         ;
         
-#
-# Tests job generation performance, relies on python (Pyext/samples/TestJobGenPerf.py) to setup data
-#
-exe perf_job_gen : test/TestJobGenPerf.cpp   
-           pthread
-           /theCore//core
-           /theNodeAttr//nodeattr
-           /theNode//node
-           libparser
-           /site-config//boost_system
-           /site-config//boost_serialization
-           /site-config//boost_filesystem
-           /site-config//boost_datetime
-         : <include>../ANode/test 
-           <variant>debug:<define>DEBUG
-        ;
 	     
\ No newline at end of file
diff --git a/AParser/src/ClockParser.cpp b/AParser/src/ClockParser.cpp
index 164dabd..edf2f2f 100644
--- a/AParser/src/ClockParser.cpp
+++ b/AParser/src/ClockParser.cpp
@@ -141,3 +141,65 @@ bool ClockParser::doParse( const std::string& line,
 	return true;
 }
 
+
+bool EndClockParser::doParse( const std::string& line, std::vector<std::string >& lineTokens )
+{
+   // Note: endclock > clock
+   // Also endclock will be same type as the clock
+
+   // endclock 300
+   // endclock 300
+   // endclock +01:00
+   // endclock 20.1.2007
+   // endclock 20.1.2007 +01:00
+
+   // Allow clock to be stopped/started when the server is stopped/started
+   // and hence always honour time dependencies. See Calendar.h for more details
+   if ( lineTokens.size() < 2 ) {
+      throw std::runtime_error( "ClockEndParser::doParse: Invalid clock :" + line );
+   }
+   if ( nodeStack().empty() ) {
+      throw std::runtime_error("ClockEndParser::doParse: Could not add end clock as node stack is empty at line: " + line );
+   }
+
+
+   ClockAttr clockAttr(false);
+
+   if ( lineTokens.size() >= 2 && lineTokens[1][0] != '#' ) {
+      // if third token is not a comment the time must be of the form
+      // endclock 300
+      // endclock +01:00
+      // endclock 20.1.2007
+
+      if ( lineTokens[1].find(".") != std::string::npos ) {
+         // endclock 20.1.2007
+
+         // If 0 returned then day,month,year is of form *, and not valid
+         int day,month,year;
+         DateAttr::getDate(lineTokens[1],day,month,year);
+
+         // This will throw std::out_of_range for an invalid clock date. Note no wild carding allowed.
+         clockAttr.date(day,month,year); // this will check the date
+
+         if ( lineTokens.size() >= 3 && lineTokens[2][0] != '#' ) {
+            // endclock 20.1.2007 +01:00
+            // endclock 20.1.2007 +300
+            // endclock 20.1.2007 350
+            extractTheGain(lineTokens[2], clockAttr);
+         }
+      }
+      else {
+         // endclock 300
+         // endclock +01:00
+         extractTheGain(lineTokens[1], clockAttr);
+      }
+   }
+
+   Suite* suite =  nodeStack_top()->isSuite();
+   if (!suite) throw std::runtime_error("Clock can only be added to suites and not " + nodeStack_top()->debugType()  );
+
+   suite->add_end_clock(clockAttr);
+
+   return true;
+}
+
diff --git a/AParser/src/ClockParser.hpp b/AParser/src/ClockParser.hpp
index 0bd3785..38bbf90 100644
--- a/AParser/src/ClockParser.hpp
+++ b/AParser/src/ClockParser.hpp
@@ -26,4 +26,11 @@ public:
 	virtual bool doParse(const std::string& line, std::vector<std::string>& lineTokens);
 };
 
+class EndClockParser : public Parser {
+public:
+   EndClockParser(DefsStructureParser* p) : Parser(p) {}
+   virtual const char* keyword() const { return "endclock"; }
+   virtual bool doParse(const std::string& line, std::vector<std::string>& lineTokens);
+};
+
 #endif
diff --git a/AParser/src/DefsParser.cpp b/AParser/src/DefsParser.cpp
index aafddce..169ed9b 100644
--- a/AParser/src/DefsParser.cpp
+++ b/AParser/src/DefsParser.cpp
@@ -342,7 +342,7 @@ class SuiteParser : public Parser {
 public:
 	SuiteParser(DefsStructureParser* p) : Parser(p), started_(false)
 	{
-      reserve_vec(17);
+      reserve_vec(18);
 	   addParser( new VariableParser(p) );
 	   addParser( new FamilyParser(p) );
 	   addParser( new TaskParser(p,this) );
@@ -360,6 +360,7 @@ public:
       addParser( new LabelParser(p) );
       addParser( new CalendarParser(p) );
       addParser( new MeterParser(p) );
+      addParser( new EndClockParser(p) );
  	}
 
 	virtual bool doParse(const std::string& line, std::vector<std::string>& lineTokens) {
diff --git a/AParser/test/TestJobGenPerf.cpp b/AParser/test/TestJobGenPerf.cpp
deleted file mode 100644
index 1018544..0000000
--- a/AParser/test/TestJobGenPerf.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        :
-// Author      : Avi
-// Revision    : $Revision: #10 $
-//
-// Copyright 2009-2016 ECMWF.
-// This software is licensed under the terms of the Apache Licence version 2.0
-// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
-// In applying this licence, ECMWF does not waive the privileges and immunities
-// granted to it by virtue of its status as an intergovernmental organisation
-// nor does it submit to any jurisdiction.
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-#include <iostream>
-
-#include "boost/filesystem/operations.hpp"
-#include "boost/filesystem/path.hpp"
-
-#include "Defs.hpp"
-#include "Str.hpp"
-#include "File.hpp"
-#include "Log.hpp"
-#include "Jobs.hpp"
-#include "JobsParam.hpp"
-#include "DefsStructureParser.hpp"
-#include "JobProfiler.hpp"
-
-using namespace std;
-using namespace ecf;
-namespace fs = boost::filesystem;
-
-
-// This relies on Pyext/samples/TestJobGenPerf.py to make any defs amenable
-// for this test program.
-//
-// The defs is in /var/tmp/ma0/ECFLOW_TEST/TestJobGenPerf
-//
-int main(int argc, char* argv[])
-{
-   if (argc != 2) {
-      cout << "Expect single argument which is path to a defs file\n";
-      return 1;
-   }
-
-   // delete the log file if it exists.
-   std::string log_path = File::test_data("AParser/test/TestJobGenPerf.log","AParser");
-   fs::remove(log_path);
-
-
-   std::string path = argv[1];
-
-   Defs defs;
-   DefsStructureParser checkPtParser( &defs, path);
-   std::string errorMsg,warningMsg;
-   if (!checkPtParser.doParse(errorMsg,warningMsg)) {
-      cout << errorMsg << "\n";
-      cout << warningMsg << "\n";
-      return 1;
-   }
-
-   // Check number of tasks, if the submitted output below is too low
-   // Then remove, limits,triggers,time,cron so more jobs can be generated.
-   std::vector<Task*> tasks;
-   defs.getAllTasks(tasks);
-   cout << "Tasks = " << tasks.size() << "\n";
-
-   defs.beginAll();
-
-
-   // Create a new log, file, place after begin to avoid queued state
-   Log::create(log_path);
-
-   // This controls the log output when job generation > submitJobsInterval
-   JobProfiler::set_task_threshold(0);
-
-   JobsParam jobParam(20 /*submitJobsInterval*/, true /*createJobs*/, false/* spawn jobs */);
-   Jobs job(&defs);
-   bool ok = job.generate( jobParam );
-   if (!ok) cout << " generate failed: " << jobParam.getErrorMsg();
-   cout << "submitted " << jobParam.submitted().size() << "\n";
-
-   // fs::remove(log_path);
-
-   return 0;
-}
diff --git a/AParser/test/TestParser.cpp b/AParser/test/TestParser.cpp
index f3ef508..7026026 100644
--- a/AParser/test/TestParser.cpp
+++ b/AParser/test/TestParser.cpp
@@ -28,6 +28,7 @@
 #include "PrintStyle.hpp"
 #include "PersistHelper.hpp"
 #include "File.hpp"
+#include "Ecf.hpp"
 
 namespace fs = boost::filesystem;
 using namespace std;
@@ -73,6 +74,12 @@ void test_defs(const std::string& directory, bool pass)
  					PersistHelper helper;
 					BOOST_CHECK_MESSAGE( helper.test_persist_and_reload(defs,parser.get_file_type()), relPath.string() << " " << helper.errorMsg());
 					BOOST_CHECK_MESSAGE( helper.test_checkpt_and_reload(defs), relPath.string() << " " << helper.errorMsg());
+
+					// test copy constructor
+				   Ecf::set_debug_equality(true);
+					Defs copy_of_defs = Defs(defs);
+					BOOST_CHECK_MESSAGE(copy_of_defs == defs,"Error copy constructor failed " << relPath);
+				   Ecf::set_debug_equality(false);
 				}
  			}
 			else {
diff --git a/AParser/test/data/bad_defs/clock/clock1.def b/AParser/test/data/bad_defs/clock/clock1.def
index 904d6ab..5ac56a9 100644
--- a/AParser/test/data/bad_defs/clock/clock1.def
+++ b/AParser/test/data/bad_defs/clock/clock1.def
@@ -1,12 +1,11 @@
-suite suiteName
-    clock real 0.1.2006   # clock date should not have wild carding
+suite s1
+ clock real 0.1.2006 # clock date should not have wild carding
 endsuite
 
-suite suiteName1
-    clock real 1.0.2006   # clock date should not have wild carding
+suite s2
+ clock real 1.0.2006 # clock date should not have wild carding
 endsuite
 
-suite suiteName1
-    clock real 1.12.0   # clock date should not have wild carding
+suite s3
+ clock real 1.12.0  # clock date should not have wild carding
 endsuite
-
diff --git a/AParser/test/data/bad_defs/clock/clock2.def b/AParser/test/data/bad_defs/clock/clock2.def
index 97f0bca..98fd09f 100644
--- a/AParser/test/data/bad_defs/clock/clock2.def
+++ b/AParser/test/data/bad_defs/clock/clock2.def
@@ -1,11 +1,9 @@
-suite suiteName
-    clock real 99.1.2006   # day out of range
+suite s1
+ clock real 99.1.2006   # day out of range
 endsuite
-
-suite suiteName
-    clock real 1.15.2006   # month out of range
+suite s2
+ clock real 1.15.2006   # month out of range
 endsuite
-
-suite suiteName
-    clock real 1.15.0000   # 0 year out of range
+suite s3
+ clock real 1.15.0000   # 0 year out of range
 endsuite
diff --git a/AParser/test/data/bad_defs/clock/clock3.def b/AParser/test/data/bad_defs/clock/clock3.def
new file mode 100644
index 0000000..7a9d63e
--- /dev/null
+++ b/AParser/test/data/bad_defs/clock/clock3.def
@@ -0,0 +1,4 @@
+suite suiteName
+  clock real 20.1.2006
+  endclock  19.1.2006    # endclock should be greater than clock start
+endsuite
diff --git a/AParser/test/data/bad_defs/clock/clock4.def b/AParser/test/data/bad_defs/clock/clock4.def
new file mode 100644
index 0000000..8c6b5f8
--- /dev/null
+++ b/AParser/test/data/bad_defs/clock/clock4.def
@@ -0,0 +1,4 @@
+suite s1
+ clock real 400  #  
+ endclock  300  #  # endclock should be greater than clock start
+endsuite
\ No newline at end of file
diff --git a/AParser/test/data/bad_defs/clock/clock5.def b/AParser/test/data/bad_defs/clock/clock5.def
new file mode 100644
index 0000000..b4ab48c
--- /dev/null
+++ b/AParser/test/data/bad_defs/clock/clock5.def
@@ -0,0 +1,4 @@
+suite s1
+ clock real 400  #  
+ endclock  real 300  #   should not have real, clock end same type as clock start, or default to real
+endsuite
\ No newline at end of file
diff --git a/AParser/test/data/bad_defs/clock/clock6.def b/AParser/test/data/bad_defs/clock/clock6.def
new file mode 100644
index 0000000..1f9067f
--- /dev/null
+++ b/AParser/test/data/bad_defs/clock/clock6.def
@@ -0,0 +1,4 @@
+suite suiteName
+  endclock   19.1.2006  # endclock should be greater than clock start
+  clock real 19.1.2017
+endsuite
diff --git a/AParser/test/data/bad_defs/clock/clock7.def b/AParser/test/data/bad_defs/clock/clock7.def
new file mode 100644
index 0000000..d398f41
--- /dev/null
+++ b/AParser/test/data/bad_defs/clock/clock7.def
@@ -0,0 +1,4 @@
+suite s1
+ endclock  300  # endclock should be greater than clock start
+ clock real 400  #  
+endsuite
diff --git a/AParser/test/data/bad_defs/limit/limit.def b/AParser/test/data/bad_defs/limit/limit.def
deleted file mode 100644
index fcfe559..0000000
--- a/AParser/test/data/bad_defs/limit/limit.def
+++ /dev/null
@@ -1,10 +0,0 @@
- 
-suite suite
-    limit disk 50
-    
-    family anon    
-    	inlimit /suite:disk 100    # inlimit value is greater than the LIMIT
-    	task t1
-    	task t2
-    endfamily
-endsuite
diff --git a/AParser/test/data/good_defs/clock/clock.def b/AParser/test/data/good_defs/clock/clock.def
index 8397868..7720f26 100644
--- a/AParser/test/data/good_defs/clock/clock.def
+++ b/AParser/test/data/good_defs/clock/clock.def
@@ -1,5 +1,10 @@
 suite suiteName
-	clock real 300
+ clock real 300
+ endclock 400
 endsuite
 
-suite s1; clock real 300;endsuite
\ No newline at end of file
+suite s1
+ clock real 300
+endsuite
+
+suite s2; clock real 300; endclock 400; endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/clock/clock1.def b/AParser/test/data/good_defs/clock/clock1.def
index c22a2c3..54ea01f 100644
--- a/AParser/test/data/good_defs/clock/clock1.def
+++ b/AParser/test/data/good_defs/clock/clock1.def
@@ -1,5 +1,6 @@
 suite suiteName
-	clock real +01:00
+ clock real +01:00
+ endclock   +02:00
 endsuite
 
-suite s1; clock real +01:00;endsuite
\ No newline at end of file
+suite s1; clock real +01:00; endclock +01:00; endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/clock/clock2.def b/AParser/test/data/good_defs/clock/clock2.def
index 716b51a..6f4bc2c 100644
--- a/AParser/test/data/good_defs/clock/clock2.def
+++ b/AParser/test/data/good_defs/clock/clock2.def
@@ -1,5 +1,6 @@
 suite suiteName
-	clock real 01:00
+ clock real 01:00
+ endclock  02:00
 endsuite
 
-suite s1; clock real 01:00;endsuite
\ No newline at end of file
+suite s1; clock real 01:00; endclock 10:00;endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/clock/clock3.def b/AParser/test/data/good_defs/clock/clock3.def
index 8316ebc..54275de 100644
--- a/AParser/test/data/good_defs/clock/clock3.def
+++ b/AParser/test/data/good_defs/clock/clock3.def
@@ -1,5 +1,6 @@
 suite suiteName
-	clock real 20.1.2006
+ clock real 20.1.2006
+ endclock  24.1.2006
 endsuite
 
-suite s1;clock real 20.1.2006;endsuite
\ No newline at end of file
+suite s1;clock real 20.1.2006;endclock 20.1.2017; endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/clock/clock4.def b/AParser/test/data/good_defs/clock/clock4.def
index 8c92d95..aca122b 100644
--- a/AParser/test/data/good_defs/clock/clock4.def
+++ b/AParser/test/data/good_defs/clock/clock4.def
@@ -1,6 +1,7 @@
 suite suiteName
-	clock real 20.1.2006 +02:00
+ clock real 20.1.2006 +02:00
+ endclock   23.1.2006 +04:14
 endsuite
  
-suite s1; clock real 20.1.2006 +02:00;endsuite
+suite s1; clock real 20.1.2006 +02:00; endclock 23.1.2006 +02:00;endsuite
  
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/clock/clock6.def b/AParser/test/data/good_defs/clock/clock6.def
index 105984a..653617d 100644
--- a/AParser/test/data/good_defs/clock/clock6.def
+++ b/AParser/test/data/good_defs/clock/clock6.def
@@ -1,24 +1,25 @@
 suite s1
-  clock real 300 -s                #  
+ clock real 300 -s    #  
+ endclock  400  #  
 endsuite
  
 suite s3
-  clock real 20.1.1992 300 -s  
+ clock real 20.1.1992 300 -s  
+ endclock 23.1.1992 300 
 endsuite
 
 suite s4
-  clock real 20.1.1992 +01:00 -s
+ clock real 20.1.1992 +01:00 -s
 endsuite
 
-
-suite s01
-  clock real 300  -s            # -s means stop start calendar with server
+suite s5
+ clock real 300  -s  # -s means stop start calendar with server
 endsuite
 
-suite s02
-  clock real +01:00  -s         # 
+suite s6
+ clock real +01:00  -s # 
 endsuite
 
-suite s03
-  clock real 20.1.1992 +01:00   -s
+suite s7
+ clock real 20.1.1992 +01:00   -s # comment
 endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/limit/limit3.def b/AParser/test/data/good_defs/limit/limit3.def
new file mode 100644
index 0000000..374fa38
--- /dev/null
+++ b/AParser/test/data/good_defs/limit/limit3.def
@@ -0,0 +1,19 @@
+# ECFLOW-713, moved from bad_defs/limit to good_defs/limit
+# Allow Limit value of zero, i.e inlimit greater than limit, as a way of controlling job submission.
+suite suite
+    limit disk 50
+    family anon    
+    	inlimit /suite:disk 100    # inlimit value is greater than the LIMIT
+    	task t1
+    	task t2
+    endfamily
+endsuite
+
+suite suite1
+    limit disk 0
+    family anon    
+        inlimit /suite1:disk 100    # inlimit value is greater than the LIMIT
+        task t1
+        task t2
+    endfamily
+endsuite
\ No newline at end of file
diff --git a/AParser/test/data/good_defs/trigger/complex_trigger.txt b/AParser/test/data/good_defs/trigger/complex_trigger.txt
index ce6156f..12dc550 100644
--- a/AParser/test/data/good_defs/trigger/complex_trigger.txt
+++ b/AParser/test/data/good_defs/trigger/complex_trigger.txt
@@ -26,11 +26,13 @@ suite suiteName
    		task c
    			trigger ../familyName/a == complete
    		task d
-   			trigger ../familyName/b == aborted
+   			trigger ../familyName/b != aborted
    		task e
    			trigger (a == complete and b == complete)
+        task ee
+            trigger (a == complete AND b == complete)
    		task f
-   			trigger (a == complete and b == complete or ../familyName/a == complete)
+   			trigger (a == complete and b == complete OR ../familyName/a == complete)
    		task g
    			trigger a:theEventName and a:aEvent
    		task h
@@ -40,9 +42,11 @@ suite suiteName
    		task j
    			trigger a == complete                      # this is a comment
    		task k
-   		    trigger (a == complete and b == complete) or (c == complete and d == complete)
+   		    trigger (a == complete AND b == complete) or (c == complete && d == complete)
    		task l
-   			trigger (a == complete and b == complete) or ../familyName/a:theEventName == set
+   			trigger (a == complete and b == complete) OR ../familyName/a:theEventName == set
+        task ll
+            trigger (a == complete and b == complete) || ../familyName/a:theEventName == set
    		task m
    			trigger ../familyName/heir_familyName/taskName0 == complete
    		task n
diff --git a/AParser/test/data/good_defs/trigger/limit.def b/AParser/test/data/good_defs/trigger/limit.def
new file mode 100644
index 0000000..c7a75de
--- /dev/null
+++ b/AParser/test/data/good_defs/trigger/limit.def
@@ -0,0 +1,27 @@
+extern /limits:c1a
+extern /limits:linux_cluster
+
+suite suiteName
+    limit sg1  100
+    limit mars 100
+endsuite
+
+suite obs
+    inlimit /limits:c1a
+    family limits
+        limit hpcd 20
+    endfamily
+    
+    family anon    
+        inlimit limits:hpcd       
+        task t1
+            inlimit /suiteName:sg1        # another suite limit
+            trigger /suiteName:sg1 < 30
+        task t2
+            inlimit /obs/limits:hpcd      # This suite limit
+            trigger /obs/limits:hpcd > 10
+        task t3
+            inlimit /limits:c1a           # extern suite limit
+            trigger /limits:c1a > 10
+    endfamily
+endsuite
diff --git a/Base/CMakeLists.txt b/Base/CMakeLists.txt
index 55ff526..677427f 100644
--- a/Base/CMakeLists.txt
+++ b/Base/CMakeLists.txt
@@ -8,6 +8,7 @@
  src/Stats.cpp
  src/Client.cpp
  src/ServerReply.cpp
+ src/Connection.cpp
  src/stc/DefsCmd.cpp
  src/stc/PreAllocatedReply.cpp
  src/stc/SStringVecCmd.cpp
@@ -62,13 +63,17 @@
  src/cts/ServerVersionCmd.cpp
 )
 
+if(OPENSSL_FOUND)
+  list( APPEND srcs src/Openssl.cpp )
+endif()
+
 ecbuild_add_library( TARGET   base
                      NOINSTALL
                      TYPE     STATIC
                      SOURCES  ${srcs}
-                     LIBS     libparser node nodeattr core 
+                     LIBS     libparser node nodeattr core
                      INCLUDES src
-                              ../ACore/src 
+                              ../ACore/src
                               ../ANattr/src
                               ../ANode/src
                               ../AParser/src
@@ -79,7 +84,7 @@ ecbuild_add_library( TARGET   base
 
 # This ensures that for debug config, we only link with debug boost libs, for other configs, we link with optimised boost libs
 target_link_libraries(base debug ${Boost_PROGRAM_OPTIONS_LIBRARY_DEBUG}   ${Boost_PROGRAM_OPTIONS_LIBRARY_RELEASE})
- 
+
 list( APPEND test_srcs
    test/TestAlterCmd.cpp
    test/TestClientHandleCmd.cpp
@@ -99,12 +104,12 @@ list( APPEND test_srcs
    test/TestSSyncCmd.cpp
    test/TestSSyncCmdOrder.cpp
 )
+
+# if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 ecbuild_add_test( TARGET       u_base
                   BOOST
                   SOURCES      ${test_srcs}
-                  LIBS         base       
-                               pthread 
+                  LIBS         base pthread ${OPENSSL_LIBRARIES}
                   INCLUDES     ../ANode/test
                   TEST_DEPENDS u_aparser
                   )
-                  
\ No newline at end of file
diff --git a/Base/Jamfile.jam b/Base/Jamfile.jam
index 26c952c..a75f299 100644
--- a/Base/Jamfile.jam
+++ b/Base/Jamfile.jam
@@ -51,8 +51,8 @@ lib base : [ glob src/*.cpp ] [ glob src/cts/*.cpp ] [ glob src/stc/*.cpp ]
 # on the link line
 #
 lib pthread ;
-
-exe u_base : [ glob test/*.cpp  ]
+
+exe u_base : [ glob test/*.cpp : test/TestJobGenPerf.cpp ]
            /theCore//core
            /theNodeAttr//nodeattr
            /theNode//node
@@ -66,5 +66,24 @@ exe u_base : [ glob test/*.cpp  ]
            /site-config//boost_test
            pthread
          : <include>../ANode/test
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
            <variant>debug:<define>DEBUG
 	     ;
+	     
+#
+# Tests job generation performance, relies on python (Pyext/samples/TestJobGenPerf.py) to setup data
+#
+exe perf_job_gen : test/TestJobGenPerf.cpp   
+           pthread
+           /theCore//core
+           /theNodeAttr//nodeattr
+           /theNode//node
+           /theParser//libparser
+           base
+           /site-config//boost_system
+           /site-config//boost_serialization
+           /site-config//boost_filesystem
+           /site-config//boost_datetime
+         : <include>../ANode/test 
+           <variant>debug:<define>DEBUG
+        ;
\ No newline at end of file
diff --git a/Base/src/AbstractClientEnv.hpp b/Base/src/AbstractClientEnv.hpp
index 1455be1..539087f 100644
--- a/Base/src/AbstractClientEnv.hpp
+++ b/Base/src/AbstractClientEnv.hpp
@@ -57,6 +57,10 @@ public:
 	/// debug client, when environment variable ECF_CLIENT_DEBUG is set.
 	virtual bool debug() const = 0 ;
 
+   // Returns the user password. This value is cached, so we only read passwd file once
+	// Only returns a value if ECF_SECURE_USER is defined, otherwise return an empty string
+   virtual const std::string& get_user_password() const = 0;
+
 	/// Some commands work on construction. to avoid this under test. Call set_test
 	/// i.e Command like CtsCmd::SERVER_LOAD can be client side only, in which case
 	/// when testing the client interface we want to avoid opening the log file.
diff --git a/Base/src/AbstractServer.hpp b/Base/src/AbstractServer.hpp
index 6cc5153..c8e3bc3 100644
--- a/Base/src/AbstractServer.hpp
+++ b/Base/src/AbstractServer.hpp
@@ -119,17 +119,22 @@ public:
 	/// If errors arise the exist user still stay in affect
 	virtual bool reloadWhiteListFile(std::string& errorMsg)  = 0;
 
-	/// There are several kinds of authentifications:
+   virtual bool reloadPasswdFile(std::string& errorMsg) = 0;
+
+	/// There are several kinds of authentications:
 	///     a/ None
 	///     b/ List mode.   ASCII file based on ECF_LISTS is defined. referred as white list file
-	///     c/ Secure mode. binary file based ECF_PASSWD is defined. Referred to as black list file
-	/// At the moment we will only implement options a/ and b/
+	///     c/ Secure mode. ASCII file based ECF_PASSWD is defined. Referred to as black list file
 	//
 	/// Returns true if the given user has access to the server, false otherwise
-	virtual bool authenticateReadAccess(const std::string& user) = 0;
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd) = 0;
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::string& path) = 0;
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::vector<std::string>& paths) = 0;
 
 	/// Returns true if user has matching write access privileges.
-	virtual bool authenticateWriteAccess(const std::string& user ) = 0;
+   virtual bool authenticateWriteAccess(const std::string& user) = 0;
+   virtual bool authenticateWriteAccess(const std::string& user, const std::string& path) = 0;
+   virtual bool authenticateWriteAccess(const std::string& user, const std::vector<std::string>& paths) = 0;
 
 	/// Shutdown the server and let 'user' has have exclusive lock on it.
 	/// If the lock succeeds return true, (This will end up calling the shutdown()
diff --git a/Base/src/Client.cpp b/Base/src/Client.cpp
index d412a8a..3b8a329 100644
--- a/Base/src/Client.cpp
+++ b/Base/src/Client.cpp
@@ -33,12 +33,22 @@
 
 /// Constructor starts the asynchronous connect operation.
 Client::Client( boost::asio::io_service& io_service,
+#ifdef ECF_OPENSSL
+           boost::asio::ssl::context& context,
+#endif
 				Cmd_ptr cmd_ptr,
 				const std::string& host,
 				const std::string& port,
 				int timeout
 			  )
-: stopped_(false),host_( host ), port_( port ), connection_( io_service ),deadline_(io_service),timeout_(timeout)
+: stopped_(false),host_( host ), port_( port ),
+#ifdef ECF_OPENSSL
+  connection_(io_service,context),
+#else
+  connection_(io_service),
+#endif
+  deadline_(io_service),
+  timeout_(timeout)
 {
 	/// Avoid sending a NULL request to the server
 	if (!cmd_ptr.get())  throw std::runtime_error("Client::Client: No request specified !");
@@ -55,6 +65,7 @@ Client::Client( boost::asio::io_service& io_service,
 
   	outbound_request_.set_cmd( cmd_ptr );
 
+
   	// Host name resolution is performed using a resolver, where host and service
   	// names(or ports) are looked up and converted into one or more end points
  	boost::asio::ip::tcp::resolver resolver( io_service );
@@ -105,7 +116,7 @@ bool Client::start_connect(boost::asio::ip::tcp::resolver::iterator endpoint_ite
       deadline_.expires_from_now(boost::posix_time::seconds(timeout_));
 
       boost::asio::ip::tcp::endpoint endpoint = *endpoint_iterator;
-      connection_.socket().async_connect(
+      connection_.socket_ll().async_connect(
                endpoint,
                boost::bind(
                         &Client::handle_connect,
@@ -133,7 +144,7 @@ void Client::handle_connect(  const boost::system::error_code& e,
   // The async_connect() function automatically opens the socket at the start
   // of the asynchronous operation. If the socket is closed at this time then
   // the timeout handler must have run first.
-  if (!connection_.socket().is_open())
+  if (!connection_.socket_ll().is_open())
   {
 #ifdef DEBUG_CLIENT
      std::cout << "   Client::handle_connect: *Connect timeout*:  Trying next end point" << std::endl;
@@ -156,7 +167,7 @@ void Client::handle_connect(  const boost::system::error_code& e,
 
      // Some kind of error. We need to close the socket used in the previous connection attempt
      // before starting a new one.
-     connection_.socket().close();
+     connection_.socket_ll().close();
 
      // Try the next end point.
      if (!start_connect( ++endpoint_iterator)) {
@@ -170,12 +181,51 @@ void Client::handle_connect(  const boost::system::error_code& e,
 #ifdef DEBUG_CLIENT
      std::cout << "   Client::handle_connect **Successfully** established connection to the server: Sending Out bound request = " << outbound_request_ << std::endl;
 #endif
+
      // **Successfully** established connection to the server
+#ifdef ECF_OPENSSL
+     start_handshake();
+#else
      // Start operation to *SEND* a request to the server
      start_write();
+#endif
   }
 }
 
+#ifdef ECF_OPENSSL
+void Client::start_handshake()
+{
+#ifdef DEBUG_CLIENT
+   std::cout << "   Client::start_handshake " << outbound_request_ << std::endl;
+#endif
+   // expires_from_now cancels any pending asynchronous waits, and returns the number of asynchronous waits that were cancelled.
+   // If it returns 0 then you were too late and the wait handler has already been executed, or will soon be executed.
+   // If it returns 1 then the wait handler was successfully cancelled.
+   // Set a deadline for the write operation.
+   deadline_.expires_from_now(boost::posix_time::seconds(timeout_));
+
+   connection_.socket().async_handshake(boost::asio::ssl::stream_base::client,
+        boost::bind(&Client::handle_handshake, this, boost::asio::placeholders::error));
+}
+
+void Client::handle_handshake( const boost::system::error_code& e )
+{
+#ifdef DEBUG_CLIENT
+   std::cout << "   Client::handle_handshake " << std::endl;
+#endif
+   if (!e) {
+      start_write();
+   }
+   else {
+      // An error occurred.
+      stop();
+
+      std::stringstream ss;  ss << "Client::handle_handshake: error (" << e.message() << " ) for request( " << outbound_request_ << " ) on " << host_ << ":" <<  port_;
+      throw std::runtime_error(ss.str());
+   }
+}
+#endif
+
 void Client::start_write()
 {
    // expires_from_now cancels any pending asynchronous waits, and returns the number of asynchronous waits that were cancelled.
@@ -297,7 +347,7 @@ void Client::handle_read( const boost::system::error_code& e )
 void Client::stop()
 {
    stopped_ = true;
-   connection_.socket().close();
+   connection_.socket_ll().close();
    deadline_.cancel();
 }
 
diff --git a/Base/src/Client.hpp b/Base/src/Client.hpp
index 4aa0d6f..8523e6e 100644
--- a/Base/src/Client.hpp
+++ b/Base/src/Client.hpp
@@ -28,7 +28,13 @@
 class Client {
 public:
 	/// Constructor starts the asynchronous connect operation.
-	Client( boost::asio::io_service& io_service, Cmd_ptr cmd_ptr, const std::string& host, const std::string& port , int timout = 0);
+	Client( boost::asio::io_service& io_service,
+#ifdef ECF_OPENSSL
+	        boost::asio::ssl::context& context,
+#endif
+	        Cmd_ptr cmd_ptr,
+	        const std::string& host, const std::string& port,
+	        int timout = 0);
 	~Client();
 
 	/// Client side, get the server response, handles reply from server
@@ -50,6 +56,11 @@ private:
 	void check_deadline();
 
 	bool start_connect(boost::asio::ip::tcp::resolver::iterator);
+
+#ifdef ECF_OPENSSL
+	void start_handshake();
+	void handle_handshake( const boost::system::error_code& e );
+#endif
 	void start_write();
 	void start_read();
 
diff --git a/Base/src/ClientToServerRequest.hpp b/Base/src/ClientToServerRequest.hpp
index c879173..fcd8170 100644
--- a/Base/src/ClientToServerRequest.hpp
+++ b/Base/src/ClientToServerRequest.hpp
@@ -25,7 +25,6 @@ class ClientToServerRequest : private boost::noncopyable {
 public:
 
    ClientToServerRequest() {}
-   ClientToServerRequest(const Cmd_ptr& cmd) : cmd_(cmd) { cmd_->setup_user_authentification();}
    ~ClientToServerRequest() {}
 
    void set_cmd(const Cmd_ptr& cmd) { cmd_ = cmd; cmd_->setup_user_authentification(); }
diff --git a/Base/src/Connection.cpp b/Base/src/Connection.cpp
new file mode 100644
index 0000000..03ee7d0
--- /dev/null
+++ b/Base/src/Connection.cpp
@@ -0,0 +1,87 @@
+//============================================================================
+// Name        : Connection.cpp
+// Author      : Avi
+// Revision    : $Revision: #26 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description : Serves as the connection between client server
+//============================================================================
+
+#include "Connection.hpp"
+
+
+connection::~connection() {
+#ifdef DEBUG_CONNECTION
+   std::cout << "Connection::~connection  socket_.is_open() = " << socket_.is_open() << "\n\n";
+#endif
+}
+
+#ifdef ECF_OPENSSL
+connection::connection(boost::asio::io_service& io_service , boost::asio::ssl::context& context)
+: allow_new_client_old_server_(0),
+  allow_old_client_new_server_(0),
+  socket_(io_service,context)
+{
+#ifdef DEBUG_CONNECTION
+   std::cout << "Connection::connection openssl\n";
+#endif
+   socket_.set_verify_mode(boost::asio::ssl::verify_peer);
+
+   // If we want server to verify client certificate, the use as below:
+   // However this requires that certificate is installed.
+   //if (Ecf::server())  socket_.set_verify_mode(boost::asio::ssl::verify_peer|boost::asio::ssl::verify_fail_if_no_peer_cert);
+   //else                socket_.set_verify_mode(boost::asio::ssl::verify_peer);
+   socket_.set_verify_callback(boost::bind(&connection::verify_certificate, this, _1, _2));
+}
+
+bool connection::verify_certificate(bool preverified,boost::asio::ssl::verify_context& ctx)
+{
+    // The verify callback can be used to check whether the certificate that is
+    // being presented is valid for the peer. For example, RFC 2818 describes
+    // the steps involved in doing this for HTTPS. Consult the OpenSSL
+    // documentation for more details. Note that the callback is called once
+    // for each certificate in the certificate chain, starting from the root
+    // certificate authority.
+
+    // In this example we will simply print the certificate's subject name.
+    char subject_name[256];
+    X509* cert = X509_STORE_CTX_get_current_cert(ctx.native_handle());
+    X509_NAME_oneline(X509_get_subject_name(cert), subject_name, 256);
+    // std::cout << "Verifying " << subject_name << "\n";
+
+    return preverified;
+}
+#else
+connection::connection(boost::asio::io_service& io_service)
+: allow_new_client_old_server_(0),
+  allow_old_client_new_server_(0),
+  socket_(io_service)
+{
+#ifdef DEBUG_CONNECTION
+   std::cout << "Connection::connection\n";
+#endif
+}
+#endif
+
+
+void connection::log_error(const char* msg) const
+{
+   const char* in_context = ", in client";
+   if (Ecf::server()) in_context = ", in server";
+   ecf::LogToCout logToCout;
+   LOG(ecf::Log::ERR, msg << in_context);
+}
+
+void connection::log_archive_error(const char* msg,const boost::archive::archive_exception& ae) const
+{
+   const char* in_context = ", in client";
+   if (Ecf::server()) in_context = ", in server";
+   ecf::LogToCout logToCout;
+   LOG(ecf::Log::ERR, msg << ae.what() << in_context);
+}
diff --git a/Base/src/Connection.hpp b/Base/src/Connection.hpp
index 4a71443..851e057 100644
--- a/Base/src/Connection.hpp
+++ b/Base/src/Connection.hpp
@@ -34,6 +34,11 @@
 #include "Ecf.hpp"
 #include "Serialization.hpp"
 
+#ifdef ECF_OPENSSL
+#include <boost/asio/ssl.hpp>
+typedef boost::asio::ssl::stream<boost::asio::ip::tcp::socket> ssl_socket;
+#endif
+
 #ifdef DEBUG
 //#define DEBUG_CONNECTION 1
 //#define DEBUG_CONNECTION_MEMORY 1
@@ -59,27 +64,21 @@ class connection {
 public:
 	/// Allow tentative support for new client to talk to old server
    /// by changing the boost serialisation archive version, hence tentative
-	connection(boost::asio::io_service& io_service)
-    : allow_new_client_old_server_(0),
-      allow_old_client_new_server_(0),
-      socket_(io_service)
-	{
-#ifdef DEBUG_CONNECTION
-		std::cout << "Connection::connection\n";
-#endif
-	}
+	~connection();
 
-	~connection() {
-#ifdef DEBUG_CONNECTION
-		std::cout << "Connection::~connection  socket_.is_open() = " << socket_.is_open() << "\n\n";
-#endif
-	}
+#ifdef ECF_OPENSSL
+	connection(boost::asio::io_service& io_service,boost::asio::ssl::context& context);
+	bool verify_certificate(bool preverified, boost::asio::ssl::verify_context& ctx);
 
 	/// Get the underlying socket. Used for making a connection or for accepting
 	/// an incoming connection.
-	boost::asio::ip::tcp::socket& socket() {
-		return socket_;
-	}
+	ssl_socket::lowest_layer_type& socket_ll() { return socket_.lowest_layer();}
+	boost::asio::ssl::stream<boost::asio::ip::tcp::socket>& socket() { return socket_;}
+#else
+   connection(boost::asio::io_service& io_service);
+   boost::asio::ip::tcp::socket& socket_ll() { return socket_; }
+   boost::asio::ip::tcp::socket& socket() { return socket_; }
+#endif
 
 	// support for forward compatibility, by changing boost archive version, used in client context
 	// See: ACore/src/boost_archive.hpp for details about serialisation migration issues
@@ -285,24 +284,17 @@ private:
 
 private:
 
-	void log_error(const char* msg) {
-      const char* in_context = ", in client";
-      if (Ecf::server()) in_context = ", in server";
-      ecf::LogToCout logToCout;
-      LOG(ecf::Log::ERR, msg << in_context);
-	}
-
-   void log_archive_error(const char* msg,const boost::archive::archive_exception& ae) {
-      const char* in_context = ", in client";
-      if (Ecf::server()) in_context = ", in server";
-      ecf::LogToCout logToCout;
-      LOG(ecf::Log::ERR, msg << ae.what() << in_context);
-   }
+	void log_error(const char* msg) const;
+   void log_archive_error(const char* msg,const boost::archive::archive_exception& ae) const;
 
 private:
    int allow_new_client_old_server_;
    int allow_old_client_new_server_;
+#ifdef ECF_OPENSSL
+	boost::asio::ssl::stream<boost::asio::ip::tcp::socket> socket_;
+#else
 	boost::asio::ip::tcp::socket socket_;/// The underlying socket.
+#endif
 	std::string outbound_header_;        /// Holds an out-bound header.
 	std::string outbound_data_;          /// Holds the out-bound data.
 	enum { header_length = 8 };          /// The size of a fixed length header.
diff --git a/ACore/src/TimeStamp.hpp b/Base/src/Openssl.cpp
similarity index 54%
copy from ACore/src/TimeStamp.hpp
copy to Base/src/Openssl.cpp
index cf232cd..b924c6b 100644
--- a/ACore/src/TimeStamp.hpp
+++ b/Base/src/Openssl.cpp
@@ -1,9 +1,7 @@
-#ifndef TIMESTAMP_HPP_
-#define TIMESTAMP_HPP_
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// Name        : Log
+// Name        :
 // Author      : Avi
-// Revision    : $Revision: #31 $
+// Revision    : $Revision: #10 $
 //
 // Copyright 2009-2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
@@ -12,24 +10,21 @@
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
 //
+// Description :
+//
 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#include <string>
-#include <boost/noncopyable.hpp>
+#include "Openssl.hpp"
+#include <stdlib.h>  // getenv
+using namespace std;
 
 namespace ecf {
 
-// returns a string of format : "[%02d:%02d:%02d %d.%d.%d] "
-//                              "[hour:min:sec day.month.year] "
-// i.e                          "[05:26:20 29.10.2014] "
-class TimeStamp : private boost::noncopyable {
-public:
-   static std::string now();
-   static void now(std::string&);
-private:
-   TimeStamp();
-};
-
+std::string Openssl::certificates_dir()
+{
+   std::string home_path = getenv("HOME");
+   home_path += "/.ecflowrc/ssl/";
+   return home_path;
 }
 
-#endif
+}
diff --git a/Base/src/Openssl.hpp b/Base/src/Openssl.hpp
new file mode 100644
index 0000000..296599a
--- /dev/null
+++ b/Base/src/Openssl.hpp
@@ -0,0 +1,50 @@
+#ifndef OPENSSL_HPP_
+#define OPENSSL_HPP_
+
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #5 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+
+#include <boost/noncopyable.hpp>
+#include <boost/asio/ssl.hpp>
+#include <string>
+
+namespace ecf {
+
+class Openssl : private boost::noncopyable {
+public:
+
+   /// Directory where ssl certificates are held
+   static std::string certificates_dir();
+
+   /// There is no SSL protocol version named SSLv23.
+   /// The SSLv23_method() API and its variants choose SSLv2, SSLv3, or TLSv1 for compatibility with the peer
+   /// Consider the incompatibility among the SSL/TLS versions when you develop
+   /// SSL client/server applications. For example, a TLSv1 server cannot understand
+   /// a client-hello message from an SSLv2 or SSLv3 client.
+   /// The SSLv2 client/server recognises messages from only an SSLv2 peer.
+   /// The SSLv23_method() API and its variants may be used when the compatibility with the peer is important.
+   /// An SSL server with the SSLv23 method can understand any of the SSLv2, SSLv3, and TLSv1 hello messages.
+   /// However, the SSL client using the SSLv23 method cannot establish connection with the SSL server
+   //  with the SSLv3/TLSv1 method because SSLv2 hello message is sent by the client
+   static boost::asio::ssl::context::method method() { return boost::asio::ssl::context::sslv23;}
+
+private:
+   Openssl();
+};
+
+}
+
+#endif
diff --git a/Base/src/Stats.cpp b/Base/src/Stats.cpp
index 53781c5..c651652 100644
--- a/Base/src/Stats.cpp
+++ b/Base/src/Stats.cpp
@@ -40,6 +40,9 @@ Stats::Stats() :
 	shutdown_server_(0),
 	halt_server_(0),
  	reload_white_list_file_(0),
+#ifdef ECF_SECURE_USER
+ 	reload_passwd_file_(0),
+#endif
    ping_(0),
    debug_server_on_(0),
    debug_server_off_(0),
@@ -163,6 +166,9 @@ void Stats::reset()
    shutdown_server_ = 0;
    halt_server_ = 0;
    reload_white_list_file_ = 0;
+#ifdef ECF_SECURE_USER
+   reload_passwd_file_ = 0;
+#endif
    ping_ = 0;
    debug_server_on_ = 0;
    debug_server_off_ = 0;
@@ -292,6 +298,9 @@ void Stats::show(std::ostream& os) const
        node_resume_ || node_kill_ || node_status_ || node_edit_history_ || log_cmd_ || log_msg_cmd_ || order_node_ || run_node_ || replace_ ||
        force_ || free_dep_ || suites_ || edit_script_ || alter_cmd_ || ch_cmd_ || plug_ || move_ || group_cmd_ ||
        reload_white_list_file_ || server_load_cmd_ ||  stats_ || check_
+#ifdef ECF_SECURE_USER
+       || reload_passwd_file_
+#endif
        )  os << "\n";
    if (load_defs_ != 0)         os << left << setw(width) << "   Load definition " << load_defs_ << "\n";
    if (begin_cmd_ != 0)         os << left << setw(width) << "   Begin " << begin_cmd_ << "\n";
@@ -322,7 +331,9 @@ void Stats::show(std::ostream& os) const
    if (stats_ != 0)             os << left << setw(width) << "   stats cmd " << stats_ << "\n";
    if (check_ != 0)             os << left << setw(width) << "   checks " << check_ << "\n";
    if (reload_white_list_file_ != 0) os << left << setw(width) << "   Reload white list file " << reload_white_list_file_ << "\n";
-   
+#ifdef ECF_SECURE_USER
+   if (reload_passwd_file_ != 0)     os << left << setw(width) << "   Reload password file " << reload_passwd_file_ << "\n";
+#endif
    if (file_ecf_ || file_job_ || file_jobout_ || file_manual_ || file_cmdout_)  os << "\n";
    if (file_ecf_ != 0)    os << left << setw(width) << "   File ECF " << file_ecf_ << "\n";
    if (file_job_ != 0) os << left << setw(width) << "   File job " << file_job_ << "\n";
diff --git a/Base/src/Stats.hpp b/Base/src/Stats.hpp
index f9187e1..c3d998b 100644
--- a/Base/src/Stats.hpp
+++ b/Base/src/Stats.hpp
@@ -59,6 +59,9 @@ struct Stats {
 	unsigned int shutdown_server_;
 	unsigned int halt_server_;
  	unsigned int reload_white_list_file_;
+#ifdef ECF_SECURE_USER
+ 	unsigned int reload_passwd_file_;
+#endif
    unsigned int ping_;
    unsigned int debug_server_on_;
    unsigned int debug_server_off_;
@@ -150,6 +153,9 @@ private:
 		ar & shutdown_server_;
 		ar & halt_server_;
  		ar & reload_white_list_file_;
+#ifdef ECF_SECURE_USER
+ 		ar & reload_passwd_file_;
+#endif
  		ar & ping_;
  	   ar & debug_server_on_;
  	   ar & debug_server_off_;
diff --git a/Base/src/cts/AlterCmd.cpp b/Base/src/cts/AlterCmd.cpp
index a846cd3..db60db9 100644
--- a/Base/src/cts/AlterCmd.cpp
+++ b/Base/src/cts/AlterCmd.cpp
@@ -272,8 +272,8 @@ STC_Cmd_ptr AlterCmd::alter_server_state(AbstractServer* as) const
 	}
 	else if ( change_attr_type_ == AlterCmd::VARIABLE  || add_attr_type_ == AlterCmd::ADD_VARIABLE) {
 
-	   // ECFLOW-380: ECF_NODE, ECF_PORT, ECF_PID, ECF_VERSION, ECF_LISTS
-	   if (name_ == Str::ECF_NODE() || name_ == Str::ECF_PORT() || name_ == "ECF_PID" || name_ == "ECF_VERSION" || name_ == "ECF_LISTS" ) {
+	   // ECFLOW-380: Some variable should be read only
+	   if (name_ == Str::ECF_HOST() || name_ == Str::ECF_NODE() || name_ == Str::ECF_PORT() || name_ == "ECF_PID" || name_ == "ECF_VERSION" || name_ == "ECF_LISTS" ) {
 	      std::stringstream ss; ss << "AlterCmd:: Can not add or change read only server variable " << name_;
 	      throw std::runtime_error(ss.str());
 	   }
@@ -383,6 +383,11 @@ STC_Cmd_ptr AlterCmd::doHandleRequest(AbstractServer* as) const
 		if (flag_type_ != Flag::NOT_SET) {
 			if (flag_) node->flag().set(flag_type_);
 			else       node->flag().clear(flag_type_);
+
+			if (flag_type_ == ecf::Flag::MIGRATED) {
+			   // This should force client to sync since suite/family have added or deleted its children
+			   node->force_sync();
+			}
 		}
 	}
 
@@ -394,6 +399,11 @@ STC_Cmd_ptr AlterCmd::doHandleRequest(AbstractServer* as) const
 	return doJobSubmission( as );
 }
 
+bool AlterCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 const char* AlterCmd::arg()  { return CtsApi::alterArg();}
 const char* AlterCmd::desc() {
    /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
diff --git a/Base/src/cts/CFileCmd.cpp b/Base/src/cts/CFileCmd.cpp
index 36ab13f..c8bcd54 100644
--- a/Base/src/cts/CFileCmd.cpp
+++ b/Base/src/cts/CFileCmd.cpp
@@ -260,6 +260,11 @@ STC_Cmd_ptr CFileCmd::doHandleRequest(AbstractServer* as) const
 	return PreAllocatedReply::string_cmd(fileContents);
 }
 
+bool CFileCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,pathToNode_);
+}
+
 const char* CFileCmd::arg()  { return CtsApi::fileArg();}
 const char* CFileCmd::desc() {
 	        /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
diff --git a/Base/src/cts/ClientHandleCmd.cpp b/Base/src/cts/ClientHandleCmd.cpp
index d646b38..c1b8f8e 100644
--- a/Base/src/cts/ClientHandleCmd.cpp
+++ b/Base/src/cts/ClientHandleCmd.cpp
@@ -171,7 +171,7 @@ void ClientHandleCmd::addOption(boost::program_options::options_description& des
 			         "   --ch_drop=10            # drop the client handle 10\n"
 			         "An error is returned if the handle had not previously been registered\n"
 			         "The handle stored on the local client is set to zero\n"
-			         "To list all suites and handles use --suites"
+			         "To list all suites and handles use --ch_suites"
  			);
 			break;
 		}
@@ -186,7 +186,7 @@ void ClientHandleCmd::addOption(boost::program_options::options_description& des
                   "   --ch_drop_user=ma0    # drop all handles associated with user ma0\n"
                   "   --ch_drop_user        # drop all handles associated with current user\n"
                   "An error is returned if no registered handles\n"
-                  "To list all suites and handles use --suites"
+                  "To list all suites and handles use --ch_suites"
          );
          break;
       }
@@ -200,7 +200,7 @@ void ClientHandleCmd::addOption(boost::program_options::options_description& des
 					"   --ch_add=10 s2 s3 s4    # add suites s2 s3,s4 to  handle 10\n"
 					"An error is returned if the handle had not previously been registered\n"
 					"The handle is created with --ch_register command\n"
-					"To list all suites and handles use --suites"
+					"To list all suites and handles use --ch_suites"
 			);
 			break;
 		}
@@ -213,7 +213,7 @@ void ClientHandleCmd::addOption(boost::program_options::options_description& des
 					"Usage:\n"
 					"   --ch_rem=10 s2 s3 s4     # remove suites s2 s3,s4 from handle 10\n"
 					"The handle is created with --ch_register command\n"
-					"To list all suites and handles use --suites"
+					"To list all suites and handles use --ch_suites"
 			);
  			break;
 		}
@@ -227,7 +227,7 @@ void ClientHandleCmd::addOption(boost::program_options::options_description& des
 					" --ch_auto_add=10 true     # modify handle 10 so that new suites, get added automatically to it\n"
 					" --ch_auto_add=10 false    # modify handle 10 so that no new suites are added\n"
 					"The handle is created with --ch_register command\n"
-					"To list all suites and handles use --suites"
+					"To list all suites and handles use --ch_suites"
 			);
 			break;
 		}
diff --git a/Base/src/cts/ClientToServerCmd.hpp b/Base/src/cts/ClientToServerCmd.hpp
index bf5412a..503d555 100644
--- a/Base/src/cts/ClientToServerCmd.hpp
+++ b/Base/src/cts/ClientToServerCmd.hpp
@@ -94,7 +94,9 @@ public:
    /// This Must be called for client->server commands.As this is required
    /// for authentication. *However* task based commands have their own authentication
    /// mechanism, and don't need setup_user_authentification().
-   virtual void setup_user_authentification() = 0;
+   virtual void setup_user_authentification(const std::string& user, const std::string& passwd) = 0; // Used by PlugCmd
+   virtual void setup_user_authentification(AbstractClientEnv&) = 0; // set user and passwd(ECF_SECURE_USER)
+   virtual void setup_user_authentification() = 0;                   // if user empty setup.
 
    /// Allow control over connection to different servers/hosts if the main server is down
    /// i.e for a getCmd, we do not want to wait 24 hours, trying all the servers
@@ -202,9 +204,11 @@ public:
    virtual bool connect_to_different_servers() const { return true; }
 
 protected:
-   /// Overridden to do nothing since Task based commands don't need _user_
-   /// based authentification
+   /// Overridden to do nothing since Task based commands don't need _user_ based authentication
+   virtual void setup_user_authentification(const std::string& user, const std::string& passwd){}
+   virtual void setup_user_authentification(AbstractClientEnv&){}
    virtual void setup_user_authentification(){}
+
    virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const; /// Task have their own mechanism,can throw std::runtime_error
    Submittable* get_submittable(AbstractServer* as) const ; // can throw std::runtime_error
 
@@ -494,13 +498,20 @@ class UserCmd : public ClientToServerCmd {
 public:
    UserCmd(){}
 
+   static std::string get_user();
    const std::string& user() const { return user_;}
+   const std::string& passwd() const { return passwd_;}
+
+   virtual void setup_user_authentification(const std::string& user, const std::string& passwd);
+   virtual void setup_user_authentification(AbstractClientEnv&);
    virtual void setup_user_authentification();
 
 protected:
 
    virtual bool equals(ClientToServerCmd*) const;
    virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
+   bool do_authenticate(AbstractServer* as, STC_Cmd_ptr&, const std::string& path) const;
+   bool do_authenticate(AbstractServer* as, STC_Cmd_ptr&, const std::vector<std::string>& paths) const;
 
    /// Prompt the user for confirmation: If user responds with no, will exit client
    static void prompt_for_confirmation(const std::string& prompt);
@@ -518,12 +529,18 @@ protected:
 
 private:
    std::string user_;
+   std::string passwd_;     // only valid with ECF_SECURE_USER
+   std::string hostname_;   // only valid with ECF_SECURE_USER, not used at the moment
 
    friend class boost::serialization::access;
    template<class Archive>
    void serialize( Archive & ar, const unsigned int /*version*/ ) {
       ar & boost::serialization::base_object< ClientToServerCmd >( *this );
       ar & user_;
+#ifdef ECF_SECURE_USER
+      ar & passwd_;
+      ar & hostname_;
+#endif
    }
 };
 
@@ -574,6 +591,7 @@ public:
       PING, GET_ZOMBIES, STATS, SUITES,
       DEBUG_SERVER_ON, DEBUG_SERVER_OFF,
       SERVER_LOAD, STATS_RESET
+      ,RELOAD_PASSWD_FILE
      };
 
    CtsCmd(Api a) : api_(a) {}
@@ -630,6 +648,7 @@ public:
 private:
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
 
+private:
    ecf::CheckPt::Mode mode_;
    int check_pt_interval_;
    int check_pt_save_time_alarm_;
@@ -816,6 +835,7 @@ public:
             AbstractClientEnv* clientEnv ) const;
 private:
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
 private:
    Api api_;
@@ -861,6 +881,7 @@ public:
             AbstractClientEnv* clientEnv ) const;
 private:
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
    std::ostream& my_print(std::ostream& os, const std::vector<std::string>& paths) const;
 
@@ -982,6 +1003,7 @@ private:
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
 
+private:
    std::string suiteName_;
    bool        force_;      // reset begin status on suites & bypass checks, can create zombies, used in test only
 
@@ -1062,6 +1084,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
 private:
    mutable std::vector<std::string>  paths_;  // mutable to allow swap to clear & reclaim memory, as soon as possible
@@ -1099,7 +1122,9 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
+private:
    std::string   absNodepath_;
    NOrder::Order      option_;
 
@@ -1142,6 +1167,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
 private:
    std::vector<std::string> paths_;
@@ -1270,6 +1296,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
    bool        createNodesAsNeeded_;
    bool        force_;
@@ -1331,6 +1358,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
 private:
    std::vector<std::string> paths_;
@@ -1392,6 +1420,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
 private:
    std::vector<std::string> paths_;
@@ -1482,6 +1511,7 @@ private:
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
    STC_Cmd_ptr alter_server_state(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
    void createAdd(    Cmd_ptr& cmd,       std::vector<std::string>& options,       std::vector<std::string>& paths) const;
    void createDelete( Cmd_ptr& cmd, const std::vector<std::string>& options, const std::vector<std::string>& paths) const;
@@ -1550,6 +1580,7 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
    File_t        file_;
    std::string   pathToNode_;
@@ -1620,7 +1651,9 @@ private:
    static const char* desc(); // The description of the argument as provided to user
 
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
+   virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
 
+private:
    EditType      edit_type_;
    std::string   path_to_node_;
    mutable std::vector<std::string>  user_file_contents_;
@@ -1769,7 +1802,10 @@ private:
    static const char* arg();  // used for argument parsing
    static const char* desc(); // The description of the argument as provided to user
 
+   virtual void setup_user_authentification(const std::string& user, const std::string& passwd);
+   virtual void setup_user_authentification(AbstractClientEnv&);
    virtual void setup_user_authentification();
+
    virtual bool authenticate(AbstractServer*, STC_Cmd_ptr&) const;
    virtual STC_Cmd_ptr doHandleRequest(AbstractServer*) const;
 
diff --git a/Base/src/cts/CtsApi.cpp b/Base/src/cts/CtsApi.cpp
index 5dbf1c2..12f5f35 100644
--- a/Base/src/cts/CtsApi.cpp
+++ b/Base/src/cts/CtsApi.cpp
@@ -657,6 +657,9 @@ const char* CtsApi::alterArg() { return "alter"; }
 std::string CtsApi::reloadwsfile()     { return "--reloadwsfile"; }
 const char* CtsApi::reloadwsfileArg()  { return "reloadwsfile"; }
 
+std::string CtsApi::reloadpasswdfile()     { return "--reloadpasswdfile"; }
+const char* CtsApi::reloadpasswdfile_arg() { return "reloadpasswdfile";}
+
 std::string CtsApi::group(const std::string& cmds) {
    std::string ret = "--group=";
    ret += cmds;
diff --git a/Base/src/cts/CtsApi.hpp b/Base/src/cts/CtsApi.hpp
index a3ef970..2f25e69 100644
--- a/Base/src/cts/CtsApi.hpp
+++ b/Base/src/cts/CtsApi.hpp
@@ -129,6 +129,7 @@ public:
                                          const std::string& value = "");
 
 	static std::string reloadwsfile();
+   static std::string reloadpasswdfile();
 
 	// "expect string of the form "shutdown; get" must be ';' separated
 	static std::string group(const std::string& cmds);
@@ -149,6 +150,7 @@ public:
  	                                            bool create_alias = false,
  	                                            bool run = true);
 
+
  	// Only to be used in Cmd
    static const char* server_version_arg();
    static const char* statsArg();
@@ -208,6 +210,7 @@ public:
 	static const char* fileArg();
 	static const char* plugArg();
 	static const char* reloadwsfileArg();
+   static const char* reloadpasswdfile_arg();
 	static const char* groupArg();
 	static const char* forceDependencyEvalArg();
 	static const char* alterArg();
diff --git a/Base/src/cts/CtsCmd.cpp b/Base/src/cts/CtsCmd.cpp
index e879fc2..f659c13 100644
--- a/Base/src/cts/CtsCmd.cpp
+++ b/Base/src/cts/CtsCmd.cpp
@@ -42,6 +42,7 @@ std::ostream& CtsCmd::print(std::ostream& os) const
       case CtsCmd::HALT_SERVER:                return user_cmd(os,CtsApi::haltServer()); break;
       case CtsCmd::TERMINATE_SERVER:           return user_cmd(os,CtsApi::terminateServer()); break;
       case CtsCmd::RELOAD_WHITE_LIST_FILE:     return user_cmd(os,CtsApi::reloadwsfile()); break;
+      case CtsCmd::RELOAD_PASSWD_FILE:         return user_cmd(os,CtsApi::reloadpasswdfile()); break;
       case CtsCmd::FORCE_DEP_EVAL:             return user_cmd(os,CtsApi::forceDependencyEval()); break;
       case CtsCmd::PING:                       return user_cmd(os,CtsApi::pingServer()); break;
       case CtsCmd::STATS:                      return user_cmd(os,CtsApi::stats()); break;
@@ -74,6 +75,7 @@ bool CtsCmd::isWrite() const
       case CtsCmd::HALT_SERVER:      return true; break;  // requires write privilege
       case CtsCmd::TERMINATE_SERVER: return true; break;  // requires write privilege
       case CtsCmd::RELOAD_WHITE_LIST_FILE:return true; break;  // requires write privilege
+      case CtsCmd::RELOAD_PASSWD_FILE:return true; break;      // requires write privilege
       case CtsCmd::FORCE_DEP_EVAL:   return true; break;       // requires write privilege
       case CtsCmd::PING:             return false; break;      // read only
       case CtsCmd::STATS:            return false; break;      // read only
@@ -105,6 +107,7 @@ const char* CtsCmd::theArg() const
       case CtsCmd::HALT_SERVER:      return CtsApi::haltServerArg(); break;
       case CtsCmd::TERMINATE_SERVER: return CtsApi::terminateServerArg(); break;
       case CtsCmd::RELOAD_WHITE_LIST_FILE:return CtsApi::reloadwsfileArg(); break;
+      case CtsCmd::RELOAD_PASSWD_FILE:return CtsApi::reloadpasswdfile_arg(); break;
       case CtsCmd::FORCE_DEP_EVAL:   return CtsApi::forceDependencyEvalArg(); break;
       case CtsCmd::PING:             return CtsApi::pingServerArg(); break;
       case CtsCmd::STATS:            return CtsApi::statsArg(); break;
@@ -150,6 +153,16 @@ STC_Cmd_ptr CtsCmd::doHandleRequest(AbstractServer* as) const
          }
          break;
       }
+      case CtsCmd::RELOAD_PASSWD_FILE: {
+#ifdef ECF_SECURE_USER
+         as->update_stats().reload_passwd_file_++;
+#endif
+         std::string errorMsg;
+         if (!as->reloadPasswdFile(errorMsg)) {
+            throw std::runtime_error( errorMsg ) ;
+         }
+         break;
+      }
       case CtsCmd::FORCE_DEP_EVAL: {
          // The Default JobsParam does *not* allow Job creation, & hence => does not submit jobs
          // The default does *not* allow job spawning
@@ -303,6 +316,34 @@ void CtsCmd::addOption(boost::program_options::options_description& desc) const
          );
          break;
       }
+      case CtsCmd::RELOAD_PASSWD_FILE:{
+         desc.add_options()( CtsApi::reloadpasswdfile_arg(),
+               "Reload the server password file.\n"
+               "Although the password file can be reloaded(i.e to add/remove users), its location can't be changed\n"
+               "The password file is located by the ECF_PASSWD environment variable, both for the client and server\n"
+               "On the server the default file name is <host>.<port>.ecf.passwd\n"
+               "On the client the default file name is ecf.passwd\n"
+               "The format of the file is same for client and server:\n\n"
+               "4.5.0\n"
+               "# comment\n"
+               "<user> <host> <port> <passwd> # comment\n\n"
+               "i.e\n"
+               "4.5.0 # the version\n"
+               "fred machine1 3142 xxyyyd\n"
+               "fred machine2 3133 xxyyyd # comment\n"
+               "bill machine2 3133 xxyggyyd\n\n"
+               "The same user may appear multiple times. i.e with different host/port. This allows the password file\n"
+               "to be used for multiple servers\n"
+               "For the password authentication to work. It must be:\n"
+               "  - Defined for the client and server\n"
+               "  - Creating an empty password file,(i.e with just the version) will mean, no client can reload it.\n"
+               "    Hence at least the server administrator needs to added to the file\n"
+               "  - The password file permission's must be set for reading by the user only\n"
+               "Usage:\n"
+               " --reloadpasswdfile"
+         );
+         break;
+      }
       case CtsCmd::FORCE_DEP_EVAL:{
          desc.add_options()( CtsApi::forceDependencyEvalArg(),
                   "Force dependency evaluation. Used for DEBUG only."
@@ -313,12 +354,12 @@ void CtsCmd::addOption(boost::program_options::options_description& desc) const
          desc.add_options()( CtsApi::pingServerArg(),
                   "Check if server is running on given host/port. Result reported to standard output.\n"
                   "Usage:\n"
-                  "  --ping --host=mach --port=3144 # Check if server alive on host mach & port 3144\n"
+                  "  --ping --host=mach --port=3144  # Check if server alive on host mach & port 3144\n"
                   "  --ping --host=fred              # Check if server alive on host fred and port ECF_PORT,\n"
                   "                                  # otherwise default port of 3141\n"
                   "  --ping                          # Check if server alive by using environment variables\n"
-                  "                                  # ECF_NODE and ECF_PORT\n"
-                  "If ECF_NODE not defined uses 'localhost', if ECF_PORT not defined assumes 3141"
+                  "                                  # ECF_HOST and ECF_PORT\n"
+                  "If ECF_HOST not defined uses 'localhost', if ECF_PORT not defined assumes 3141"
          );
          break;
       }
diff --git a/Base/src/cts/CtsCmdRegistry.cpp b/Base/src/cts/CtsCmdRegistry.cpp
index 1950391..4bd6aee 100644
--- a/Base/src/cts/CtsCmdRegistry.cpp
+++ b/Base/src/cts/CtsCmdRegistry.cpp
@@ -41,6 +41,9 @@ CtsCmdRegistry::CtsCmdRegistry(bool addGroupCmd)
 	vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::SHUTDOWN_SERVER));
 	vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::TERMINATE_SERVER));
 	vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::RELOAD_WHITE_LIST_FILE));
+#ifdef ECF_SECURE_USER
+	vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::RELOAD_PASSWD_FILE));
+#endif
 	vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::FORCE_DEP_EVAL));
    vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::STATS));
    vec_.push_back( boost::make_shared<CtsCmd>(CtsCmd::STATS_RESET));
diff --git a/Base/src/cts/CtsNodeCmd.cpp b/Base/src/cts/CtsNodeCmd.cpp
index e5d3e59..2a99784 100644
--- a/Base/src/cts/CtsNodeCmd.cpp
+++ b/Base/src/cts/CtsNodeCmd.cpp
@@ -180,6 +180,11 @@ STC_Cmd_ptr CtsNodeCmd::doHandleRequest(AbstractServer* as) const
    return PreAllocatedReply::ok_cmd();
 }
 
+bool CtsNodeCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,absNodePath_);
+}
+
 static const char* job_gen_only_desc() {
    return
             "Test hierarchical Job generation only, for chosen Node.\n"
diff --git a/Base/src/cts/EditScriptCmd.cpp b/Base/src/cts/EditScriptCmd.cpp
index 9d7b53b..5c818fd 100644
--- a/Base/src/cts/EditScriptCmd.cpp
+++ b/Base/src/cts/EditScriptCmd.cpp
@@ -113,7 +113,7 @@ STC_Cmd_ptr EditScriptCmd::doHandleRequest(AbstractServer* as) const
  	      // This way at job submission we use the latest/correct value, which is in-sync with JOB OUTPUT
  	      // Note: Otherwise the job output will not be in sync
  			//
- 	      // Custom handling of ECF_PORT,ECF_NODE,ECF_NAME do not show these variables, these veriables
+ 	      // Custom handling of ECF_PORT,ECF_HOST,ECF_NAME do not show these variables, these veriables
  	      // including ECF_PASS appear in the script. If the user accidentally edits them,
  	      // Child communication with the server will be broken. Hence not shown
  			//
@@ -242,6 +242,11 @@ STC_Cmd_ptr EditScriptCmd::doHandleRequest(AbstractServer* as) const
 	return PreAllocatedReply::ok_cmd();
 }
 
+bool EditScriptCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,path_to_node_);
+}
+
 const char* EditScriptCmd::arg()  { return CtsApi::edit_script_arg();}
 const char* EditScriptCmd::desc() {
 	/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
diff --git a/Base/src/cts/ForceCmd.cpp b/Base/src/cts/ForceCmd.cpp
index 4fe8851..76b8e22 100644
--- a/Base/src/cts/ForceCmd.cpp
+++ b/Base/src/cts/ForceCmd.cpp
@@ -147,6 +147,11 @@ STC_Cmd_ptr ForceCmd::doHandleRequest(AbstractServer* as) const
    return doJobSubmission( as );
 }
 
+bool ForceCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 const char* ForceCmd::arg()  { return CtsApi::forceArg();}
 const char* ForceCmd::desc() {
             /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
diff --git a/Base/src/cts/FreeDepCmd.cpp b/Base/src/cts/FreeDepCmd.cpp
index fdb5567..b54d5f9 100644
--- a/Base/src/cts/FreeDepCmd.cpp
+++ b/Base/src/cts/FreeDepCmd.cpp
@@ -87,6 +87,11 @@ STC_Cmd_ptr FreeDepCmd::doHandleRequest(AbstractServer* as) const
    return doJobSubmission( as );
 }
 
+bool FreeDepCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 const char* FreeDepCmd::arg()  { return CtsApi::freeDepArg();}
 const char* FreeDepCmd::desc() {
    return
diff --git a/Base/src/cts/GroupCTSCmd.cpp b/Base/src/cts/GroupCTSCmd.cpp
index 1305ce8..f3796e6 100644
--- a/Base/src/cts/GroupCTSCmd.cpp
+++ b/Base/src/cts/GroupCTSCmd.cpp
@@ -176,14 +176,30 @@ void GroupCTSCmd::addChild(Cmd_ptr childCmd)
 	cmdVec_.push_back(childCmd);
 }
 
-void GroupCTSCmd::setup_user_authentification()
+void GroupCTSCmd::setup_user_authentification(const std::string& user, const std::string& passwd)
 {
-   UserCmd::setup_user_authentification();
+   UserCmd::setup_user_authentification(user,passwd);
  	for(size_t i = 0; i < cmdVec_.size(); i++) {
- 		cmdVec_[i]->setup_user_authentification();
+ 		cmdVec_[i]->setup_user_authentification(user,passwd);
  	}
 }
 
+void GroupCTSCmd::setup_user_authentification(AbstractClientEnv& env)
+{
+   UserCmd::setup_user_authentification(env);
+   for(size_t i = 0; i < cmdVec_.size(); i++) {
+      cmdVec_[i]->setup_user_authentification(env);
+   }
+}
+
+void GroupCTSCmd::setup_user_authentification()
+{
+   UserCmd::setup_user_authentification();
+   for(size_t i = 0; i < cmdVec_.size(); i++) {
+      cmdVec_[i]->setup_user_authentification();
+   }
+}
+
 bool GroupCTSCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& errorMsg) const
 {
 	// Can only run Group cmd if all child commands authenticate
diff --git a/Base/src/cts/OrderNodeCmd.cpp b/Base/src/cts/OrderNodeCmd.cpp
index f4bf593..b096313 100644
--- a/Base/src/cts/OrderNodeCmd.cpp
+++ b/Base/src/cts/OrderNodeCmd.cpp
@@ -53,6 +53,11 @@ STC_Cmd_ptr OrderNodeCmd::doHandleRequest(AbstractServer* as) const
    return doJobSubmission( as );
 }
 
+bool OrderNodeCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,absNodepath_);
+}
+
 const char* OrderNodeCmd::arg()  { return CtsApi::orderArg();}
 const char* OrderNodeCmd::desc() {
    return
diff --git a/Base/src/cts/PathsCmd.cpp b/Base/src/cts/PathsCmd.cpp
index aaad254..d1f1938 100644
--- a/Base/src/cts/PathsCmd.cpp
+++ b/Base/src/cts/PathsCmd.cpp
@@ -299,6 +299,11 @@ STC_Cmd_ptr PathsCmd::doHandleRequest(AbstractServer* as) const
    return PreAllocatedReply::ok_cmd();
 }
 
+bool PathsCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 static void check_for_active_or_submitted_tasks(AbstractServer* as,node_ptr theNodeToDelete)
 {
    vector<Task*> taskVec;
@@ -346,15 +351,16 @@ static const char* delete_node_desc() {
 
 static const char* get_check_desc() {
    return
-            "Checks the expression and limits in the server. Will also check trigger references.\n"
-            "Trigger expressions that reference paths that don't exist, will be reported as errors.\n"
-            "(Note: On the client side unresolved paths in trigger expressions must\n"
-            "have an associated 'extern' specified)\n"
-            "  arg = [ _all_ | list of node paths ]\n"
-            "Usage:\n"
-            "  --check=_all_           # Checks the whole suite\n"
-            "  --check=/s1 /s2/f1/t1   # Check suite /s1 and task t1"
-            ;
+         "Checks the expression and limits in the server. Will also check trigger references.\n"
+         "Trigger expressions that reference paths that don't exist, will be reported as errors.\n"
+         "(Note: On the client side unresolved paths in trigger expressions must\n"
+         "have an associated 'extern' specified)\n"
+         "  arg = [ _all_ | / | list of node paths ]\n"
+         "Usage:\n"
+         "  --check=_all_           # Checks all the suites\n"
+         "  --check=/               # Checks all the suites\n"
+         "  --check=/s1 /s2/f1/t1   # Check suite /s1 and task t1"
+         ;
 }
 
 static const char* get_kill_desc() {
@@ -496,9 +502,13 @@ void PathsCmd::create(   Cmd_ptr& cmd,
       }
       if (!all && paths.empty()) {
          std::stringstream ss;
-         ss << "Check: Please specify '_all_' or a list of paths. Paths must begin with a leading '/' character\n";
+         ss << "Check: Please specify one of [ _all_ | / | /<path/to/anode> ]. Paths must begin with a leading '/' character\n";
          throw std::runtime_error( ss.str() );
       }
+      if (paths.size() == 1 && paths[0] == "/") {
+         // treat as _all_
+         paths.clear();
+      }
    }
    else {
       if (paths.empty()) {
diff --git a/Base/src/cts/PlugCmd.cpp b/Base/src/cts/PlugCmd.cpp
index f088708..31cca4f 100644
--- a/Base/src/cts/PlugCmd.cpp
+++ b/Base/src/cts/PlugCmd.cpp
@@ -26,6 +26,9 @@
 #include "NodePath.hpp"
 #include "Client.hpp"
 #include "SuiteChanged.hpp"
+#ifdef ECF_OPENSSL
+#include "Openssl.hpp"
+#endif
 
 using namespace ecf;
 using namespace std;
@@ -130,10 +133,20 @@ STC_Cmd_ptr PlugCmd::doHandleRequest(AbstractServer* as) const
          }
 
          {
+            // MoveCmd should inherit user and passwd, from PlugCmd
+            Cmd_ptr cts_cmd = Cmd_ptr(new MoveCmd(as->hostPort(),sourceNode.get(), destPath));
+            cts_cmd->setup_user_authentification(user(),passwd());
+
             // Server is acting like a client, Send MoveCmd to another server
             // The source should end up being copied, when sent to remote server
             boost::asio::io_service io_service;
-            Client theClient( io_service, Cmd_ptr( new MoveCmd(as->hostPort(),sourceNode.get(), destPath) ),  host, port  );
+#ifdef ECF_OPENSSL
+            boost::asio::ssl::context ctx(ecf::Openssl::method());
+            ctx.load_verify_file(ecf::Openssl::certificates_dir() + "server.crt");
+            Client theClient( io_service, ctx, cts_cmd,  host, port  );
+#else
+            Client theClient( io_service, cts_cmd,  host, port  );
+#endif
             io_service.run();
 
             ServerReply server_reply;
diff --git a/Base/src/cts/ReplaceNodeCmd.cpp b/Base/src/cts/ReplaceNodeCmd.cpp
index dcfb6d4..f23891b 100644
--- a/Base/src/cts/ReplaceNodeCmd.cpp
+++ b/Base/src/cts/ReplaceNodeCmd.cpp
@@ -46,7 +46,7 @@ ReplaceNodeCmd::ReplaceNodeCmd(const std::string& node_path, bool createNodesAsN
    if (! nodeToReplace.get() ) {
       std::stringstream ss;
       ss << "ReplaceNodeCmd::ReplaceNodeCmd: Can not replace child since path " << node_path;
-      ss << " does not exist in the client definition ";
+      ss << ", does not exist in the client definition ";
       throw std::runtime_error( ss.str() );
    }
 
@@ -118,16 +118,32 @@ STC_Cmd_ptr ReplaceNodeCmd::doHandleRequest(AbstractServer* as) const
 	      as->zombie_ctrl().add_user_zombies( as->defs()->findAbsNode( pathToNode_ ) );
 	   }
 
+	   // If we return a node_ptr then we have changed the data model, and therefore must flag node as changed.
 	   std::string errorMsg;
-	   if (!as->defs()->replaceChild(pathToNode_, clientDefs_, createNodesAsNeeded_, force_, errorMsg)) {
+	   node_ptr client_node_to_add = as->defs()->replaceChild(pathToNode_, clientDefs_, createNodesAsNeeded_, force_, errorMsg);
+	   if (!client_node_to_add) {
 	      throw std::runtime_error(errorMsg);
 	   }
 
+	   // ECFLOW-835, flag node as changed, before check for trigger expressions.
 	   add_node_for_edit_history(as,pathToNode_);
+
+	   // Although we have change the data model, Check if the trigger expressions are still valid.
+	   // Note:: trigger AST are not copied. If you use trigger in the test environment
+	   //        then copying the nodes will copy the trigger reference, which will be out of sync
+      std::string warning_msg;
+      if (!client_node_to_add->suite()->check(errorMsg,warning_msg)) {
+         throw std::runtime_error(errorMsg);
+      }
  	}
    return doJobSubmission( as );
 }
 
+bool ReplaceNodeCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,pathToNode_);
+}
+
 std::ostream& ReplaceNodeCmd::print(std::ostream& os) const
 {
    std::string path_to_client_defs = path_to_defs_;
diff --git a/Base/src/cts/RequeueNodeCmd.cpp b/Base/src/cts/RequeueNodeCmd.cpp
index ffb12bd..7cf1a15 100644
--- a/Base/src/cts/RequeueNodeCmd.cpp
+++ b/Base/src/cts/RequeueNodeCmd.cpp
@@ -161,6 +161,11 @@ STC_Cmd_ptr RequeueNodeCmd::doHandleRequest(AbstractServer* as) const
    return doJobSubmission(as);
 }
 
+bool RequeueNodeCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 const char* RequeueNodeCmd::arg()  { return CtsApi::requeueArg();}
 const char* RequeueNodeCmd::desc() {
    return
diff --git a/Base/src/cts/RunNodeCmd.cpp b/Base/src/cts/RunNodeCmd.cpp
index ea8412d..ecc3c30 100644
--- a/Base/src/cts/RunNodeCmd.cpp
+++ b/Base/src/cts/RunNodeCmd.cpp
@@ -106,6 +106,11 @@ STC_Cmd_ptr RunNodeCmd::doHandleRequest(AbstractServer* as) const
 	return PreAllocatedReply::ok_cmd();
 }
 
+bool RunNodeCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
+{
+   return do_authenticate(as,cmd,paths_);
+}
+
 const char* RunNodeCmd::arg()  { return CtsApi::runArg();}
 const char* RunNodeCmd::desc() {
    return  "Ignore triggers, limits, time or date dependencies, just run the Task.\n"
diff --git a/Base/src/cts/UserCmd.cpp b/Base/src/cts/UserCmd.cpp
index 4137893..078a1cf 100644
--- a/Base/src/cts/UserCmd.cpp
+++ b/Base/src/cts/UserCmd.cpp
@@ -26,6 +26,7 @@
 #include "ClientToServerCmd.hpp"
 
 #include "AbstractServer.hpp"
+#include "AbstractClientEnv.hpp"
 #include "Log.hpp"
 #include "Str.hpp"
 
@@ -40,11 +41,11 @@ bool UserCmd::equals(ClientToServerCmd* rhs) const
    return user_ == the_rhs->user();
 }
 
-bool UserCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& ) const
+bool UserCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& cmd) const
 {
    // The user should NOT be empty. Rather than asserting and killing the server, fail authentication
    // ECFLOW-577 and ECFLOW-512. When user_ empty ??
-   if (!user_.empty() && as->authenticateReadAccess(user_)) {
+   if (!user_.empty() && as->authenticateReadAccess(user_,passwd_)) {
 
       // Does this user command require write access
       if ( isWrite() ) {
@@ -71,9 +72,90 @@ bool UserCmd::authenticate(AbstractServer* as, STC_Cmd_ptr& ) const
    return false;
 }
 
+bool UserCmd::do_authenticate(AbstractServer* as, STC_Cmd_ptr&, const std::string& path) const
+{
+   if (!user_.empty() && as->authenticateReadAccess(user_,passwd_,path)) {
+
+      // Does this user command require write access
+      if ( isWrite() ) {
+         // command requires write access. Check user has write access, add access to suite/node/path
+         if ( as->authenticateWriteAccess(user_,path) ) {
+            return true;
+         }
+         std::string msg = "[ authentication failed ] User ";
+         msg += user_;
+         msg += " has no *write* access. path(";msg += path; msg += ")Please see your administrator.";
+         throw std::runtime_error( msg );
+      }
+      else {
+         // read request, and we have read access
+         return true;
+      }
+   }
+
+   std::string msg = "[ authentication failed ] User '";
+   msg += user_;
+   msg += "' is not allowed any access. path(";
+   msg += path;
+   msg += ")";
+   throw std::runtime_error( msg );
+
+   return false;
+}
+
+bool UserCmd::do_authenticate(AbstractServer* as, STC_Cmd_ptr&, const std::vector<std::string>& paths) const
+{
+   if (!user_.empty() && as->authenticateReadAccess(user_,passwd_,paths)) {
+
+      // Does this user command require write access
+      if ( isWrite() ) {
+         // command requires write access. Check user has write access
+         if ( as->authenticateWriteAccess(user_,paths) ) {
+            return true;
+         }
+         std::string msg = "[ authentication failed ] User ";
+         msg += user_;
+         msg += " has no *write* access. paths(";
+         for(size_t i=0; i < paths.size(); ++i) { msg += paths[i];msg += ",";}
+         msg += ") Please see your administrator.";
+         throw std::runtime_error( msg );
+      }
+      else {
+         // read request, and we have read access
+         return true;
+      }
+   }
+
+   std::string msg = "[ authentication failed ] User '";
+   msg += user_;
+   msg += "' is not allowed any access. paths(";
+   for(size_t i=0; i < paths.size(); ++i) { msg += paths[i];msg += ",";}
+   msg += ")";
+   throw std::runtime_error( msg );
+
+   return false;
+}
+
+void UserCmd::setup_user_authentification(const std::string& user, const std::string& passwd)
+{
+   user_ = user;
+   passwd_ = passwd;
+   assert(!user_.empty());
+}
+
+void UserCmd::setup_user_authentification(AbstractClientEnv& clientEnv)
+{
+   setup_user_authentification(UserCmd::get_user(),clientEnv.get_user_password());
+}
+
 void UserCmd::setup_user_authentification()
 {
-   // Minimise system calls by using static.
+   if (user_.empty())  user_ = UserCmd::get_user();
+   assert(!user_.empty());
+}
+
+std::string UserCmd::get_user()
+{
    static std::string the_user_name;
    if (the_user_name.empty()) {
 
@@ -85,24 +167,23 @@ void UserCmd::setup_user_authentification()
       if (thePassWord == 0 ) {
          if ( errno != 0) {
             std::string theError = strerror(errno);
-            throw std::runtime_error("UserCmd::setup_user_authentification: could not determine user name. Because: " + theError);
+            throw std::runtime_error("UserCmd::get_user: could not determine user name. Because: " + theError);
          }
 
          std::stringstream ss;
-         ss << "UserCmd::setup_user_authentification: could not determine user name for uid " << real_user_id_of_process;
+         ss << "UserCmd::get_user: could not determine user name for uid " << real_user_id_of_process;
          throw std::runtime_error(ss.str());
       }
 
       the_user_name = thePassWord->pw_name;  // equivalent to the login name
       if ( the_user_name.empty() ) {
-         throw std::runtime_error("UserCmd::setup_user_authentification: could not determine user name. Because: thePassWord->pw_name is empty");
+         throw std::runtime_error("UserCmd::get_user: could not determine user name. Because: thePassWord->pw_name is empty");
       }
    }
-
-   user_ = the_user_name;
-   assert(!user_.empty());
+   return the_user_name;
 }
 
+
 void UserCmd::prompt_for_confirmation(const std::string& prompt)
 {
    cout << prompt;
diff --git a/Base/src/stc/SNewsCmd.cpp b/Base/src/stc/SNewsCmd.cpp
index 855a68f..1d04eb9 100644
--- a/Base/src/stc/SNewsCmd.cpp
+++ b/Base/src/stc/SNewsCmd.cpp
@@ -45,7 +45,7 @@ void SNewsCmd::init(
 	news_ = ServerReply::NO_NEWS;
 
 	// After ECFLOW-182 server will always have a defs, hence we should never return ServerReply::NO_DEFS
-	// However keep as an enum, to allow new client(ecflowview) deal with reply from old server
+	// However keep as an enum, to allow new client(GUI) deal with reply from old server
 	//   defs_ptr server_defs = as->defs();
 	//   if ( ! server_defs.get() ) {
 	//
diff --git a/Base/src/stc/SNodeCmd.cpp b/Base/src/stc/SNodeCmd.cpp
index 403e772..6912bbc 100644
--- a/Base/src/stc/SNodeCmd.cpp
+++ b/Base/src/stc/SNodeCmd.cpp
@@ -106,7 +106,6 @@ bool SNodeCmd::handle_server_response( ServerReply& server_reply, Cmd_ptr cts_cm
       throw std::runtime_error(ss.str());
    }
 
-
    if (server_reply.cli() && !cts_cmd->group_cmd()) {
       /// This Could be part of a group command, hence ONLY show Node if NOT group command
       PrintStyle style(cts_cmd->show_style());
@@ -129,7 +128,7 @@ bool SNodeCmd::handle_server_response( ServerReply& server_reply, Cmd_ptr cts_cm
          return true;
       }
       Family* fam = node->isFamily();
-      if (fam) std::cout << *fam << "\n";
+      if (fam)  std::cout << *fam << "\n";
       Task* task = node->isTask();
       if (task) std::cout << *task << "\n";
       Alias* alias = node->isAlias();
diff --git a/Base/src/stc/SStatsCmd.cpp b/Base/src/stc/SStatsCmd.cpp
index fd5c99b..1664595 100644
--- a/Base/src/stc/SStatsCmd.cpp
+++ b/Base/src/stc/SStatsCmd.cpp
@@ -50,7 +50,7 @@ bool SStatsCmd::handle_server_response( ServerReply& server_reply, Cmd_ptr /*cts
 {
 	if (debug) std::cout << "  SStatsCmd::handle_server_response\n";
    if (server_reply.cli())  stats_.show();
-   else server_reply.set_stats( stats_ );
+   else { server_reply.set_stats( stats_ ); }
 	return true;
 }
 
diff --git a/Base/src/stc/SSyncCmd.cpp b/Base/src/stc/SSyncCmd.cpp
index 96ee05d..54df6af 100644
--- a/Base/src/stc/SSyncCmd.cpp
+++ b/Base/src/stc/SSyncCmd.cpp
@@ -20,6 +20,7 @@
 #include "Log.hpp"
 #include "AbstractServer.hpp"
 #include "boost_archive.hpp" // collates boost archive includes
+#include "Serialization.hpp"
 
 using namespace std;
 using namespace boost;
@@ -48,31 +49,7 @@ void FullServerDefsCache::update_cache_if_state_changed(defs_ptr defs)
          cout << ": *updating* cache";
 #endif
          // Update cache
-         std::ostringstream archive_stream;
-
-#if defined(BINARY_ARCHIVE)
-         boost::archive::binary_oarchive archive( archive_stream );
-         archive << defs;
-         full_server_defs_as_string_ = archive_stream.str();
-         // std::cout << "async_write BINARY " << outbound_data_ << "\n";
-
-#elif defined(PORTABLE_BINARY_ARCHIVE)
-         portable_binary_oarchive archive( archive_stream );
-         archive << defs;
-         full_server_defs_as_string_ = archive_stream.str();
-         // std::cout << "async_write PORTABLE_BINARY " << outbound_data_ << "\n";
-
-#elif defined(EOS_PORTABLE_BINARY_ARCHIVE)
-         eos::portable_oarchive archive( archive_stream );
-         archive << defs;
-         full_server_defs_as_string_ = archive_stream.str();
-         // std::cout << "async_write EOS_PORTABLE_BINARY " << outbound_data_ << "\n";
-#else
-         boost::archive::text_oarchive archive( archive_stream );
-         archive << defs;
-         full_server_defs_as_string_ = archive_stream.str();
-         // std::cout << "async_write TEXT " << outbound_data_ << "\n";
-#endif
+         ecf::save_as_string(full_server_defs_as_string_,defs);
       }
       catch (const boost::archive::archive_exception& ae ) {
          // Unable to decode data. Something went wrong, inform the caller.
@@ -98,28 +75,9 @@ defs_ptr FullServerDefsCache::restore_defs_from_string(const std::string& archiv
 #endif
    defs_ptr defs;
    try {
-      std::istringstream archive_stream(archive_data);
-
-#if defined(BINARY_ARCHIVE)
-      // std::cout << "handle_read_data Archive BINARY\n";
-      boost::archive::binary_iarchive archive( archive_stream );
-      archive >> defs;
-
-#elif defined(PORTABLE_BINARY_ARCHIVE)
-      // std::cout << "handle_read_data Archive PORTABLE_BINARY\n";
-      portable_binary_iarchive archive( archive_stream );
-      archive >> defs;
-
-#elif defined(EOS_PORTABLE_BINARY_ARCHIVE)
-      // std::cout << "handle_read_data Archive EOS_PORTABLE_BINARY\n";
-      eos::portable_iarchive archive( archive_stream );
-      archive >> defs;
-
-#else
-       // std::cout << "handle_read_data Archive TEXT\n";
-      boost::archive::text_iarchive archive( archive_stream );
-      archive >> defs;
-#endif
+
+      ecf::restore_from_string(archive_data,defs);
+
    } catch (const boost::archive::archive_exception& ae ) {
       // Unable to decode data.
       ecf::LogToCout logToCout;
@@ -186,7 +144,7 @@ void SSyncCmd::init(
    reset_data_members(client_state_change_no);
 
    // After ECFLOW-182 server will always have a defs, hence we should never return ServerReply::NO_DEFS
-   // We have kept no_defs_ to allow compatibility. To allow new client(ecflowview) deal with reply from old server
+   // We have kept no_defs_ to allow compatibility. To allow new client(GUI) deal with reply from old server
    // Hence from release >= 4.0.7 no_defs_ will always be false
    //   if ( ! as->defs().get() ) {
    //#ifdef DEBUG_SERVER_SYNC
@@ -439,6 +397,17 @@ bool SSyncCmd::do_sync( ServerReply& server_reply, bool debug) const
    // Can only sync, *if* we have definition on the client side
    if (server_reply.client_defs_.get() ) {
       // *INCREMENTAL* sync
+
+
+      if (server_reply.client_defs_->in_notification()) {
+         // For debug: place a break point here: It appear as Change manager observers, has called another client to server command
+         std::cout << "SSyncCmd::do_sync ERROR!!!!! called in the middle of notification(server->client sync)\n";
+         std::cout << "It appears that change observer have called *ANOTHER* client->server command in the middle synchronising client definition\n";
+      }
+      /// - Sets notification flag, so that observers can also query if they are in the middle of notification.
+      ChangeStartNotification start_notification(server_reply.client_defs_);
+
+
       // Apply mementos to the client side defs, to bring in sync with server defs
       // If *no* server loaded, then no changes applied
       // Returns true if are any memento's, i.e. server changed.
diff --git a/Base/test/MockServer.hpp b/Base/test/MockServer.hpp
index a74faaa..a6814d6 100644
--- a/Base/test/MockServer.hpp
+++ b/Base/test/MockServer.hpp
@@ -52,8 +52,14 @@ public:
  	virtual void halted() {}
  	virtual void restart() {}
 	virtual bool reloadWhiteListFile(std::string&) { return true;}
- 	virtual bool authenticateReadAccess(const std::string& ) { return true;}
- 	virtual bool authenticateWriteAccess(const std::string& ) { return true;}
+   virtual bool reloadPasswdFile(std::string& errorMsg) { return true;}
+ 	virtual bool authenticateReadAccess(const std::string&,const std::string& passwd) { return true;}
+   virtual bool authenticateReadAccess(const std::string&,const std::string& passwd, const std::string&){ return true;}
+   virtual bool authenticateReadAccess(const std::string&,const std::string& passwd, const std::vector<std::string>&) { return true;}
+ 	virtual bool authenticateWriteAccess(const std::string&) { return true;}
+   virtual bool authenticateWriteAccess(const std::string&, const std::string&){ return true;}
+   virtual bool authenticateWriteAccess(const std::string&, const std::vector<std::string>&){ return true;}
+
  	virtual bool lock(const std::string& user) {
  		if (userWhoHasLock_.empty()) {
  			userWhoHasLock_ = user;
diff --git a/Base/test/TestAlterCmd.cpp b/Base/test/TestAlterCmd.cpp
index 94eb6db..b132319 100644
--- a/Base/test/TestAlterCmd.cpp
+++ b/Base/test/TestAlterCmd.cpp
@@ -279,6 +279,7 @@ BOOST_AUTO_TEST_CASE( test_alter_cmd )
    Defs defs;
    suite_ptr s = defs.add_suite("suite");
    task_ptr task = s->add_task("t1");
+   task_ptr t2 = s->add_task("t2");
    {
       ClockAttr clockAttr(false); // real clock
       clockAttr.date(1,1,2009);
@@ -536,32 +537,36 @@ BOOST_AUTO_TEST_CASE( test_alter_cmd )
 
    {   // test add Trigger
       TestStateChanged changed(s);
-      s->add_trigger( "t1 == complete");
-      BOOST_CHECK_MESSAGE( s->get_trigger(), "expected  trigger to be added");
+      task->add_trigger( "t1 == complete");
+      BOOST_CHECK_MESSAGE( task->get_trigger(), "expected  trigger to be added");
 
       // test delete trigger
-      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(s->absNodePath(),AlterCmd::DEL_TRIGGER)));
-      BOOST_CHECK_MESSAGE( !s->get_trigger(), "expected  trigger to be deleted");
+      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::DEL_TRIGGER)));
+      BOOST_CHECK_MESSAGE( !task->get_trigger(), "expected  trigger to be deleted");
 
       // test change trigger expression
-      s->add_trigger( "t1 == complete" );
-      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(s->absNodePath(),AlterCmd::TRIGGER,"x == complete","")));
-      BOOST_CHECK_MESSAGE( s->triggerExpression() == "trigger x == complete", "expected trigger to be changed found " << s->triggerExpression());
+      task->add_trigger( "t1 == complete" );
+      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::TRIGGER,"x == complete","")));
+
+      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::TRIGGER,"t2 == complete","")));
+      BOOST_CHECK_MESSAGE( task->triggerExpression() == "trigger t2 == complete", "expected trigger to be changed found " << task->triggerExpression());
    }
 
    {   // test add complete expression
       TestStateChanged changed(s);
-      s->add_complete( "t1 == complete" );
-      BOOST_CHECK_MESSAGE( s->get_complete(), "expected complete to be added");
+      task->add_complete( "t1 == complete" );
+      BOOST_CHECK_MESSAGE( task->get_complete(), "expected complete to be added");
 
       // test delete complete
-      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(s->absNodePath(),AlterCmd::DEL_COMPLETE)));
-      BOOST_CHECK_MESSAGE( !s->get_complete(), "expected complete to be deleted");
+      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::DEL_COMPLETE)));
+      BOOST_CHECK_MESSAGE( !task->get_complete(), "expected complete to be deleted");
 
       // test change complete expression
-      s->add_complete(  "t1 == complete" );
-      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(s->absNodePath(),AlterCmd::COMPLETE,"x == complete","")));
-      BOOST_CHECK_MESSAGE( s->completeExpression() == "complete x == complete", "expected complete expression to be changed found " << s->completeExpression() );
+      task->add_complete(  "t1 == complete" );
+      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::COMPLETE,"x == complete","")));
+
+      TestHelper::invokeRequest(&defs,Cmd_ptr( new AlterCmd(task->absNodePath(),AlterCmd::COMPLETE,"t2 == complete","")));
+      BOOST_CHECK_MESSAGE( task->completeExpression() == "complete t2 == complete", "expected complete expression to be changed found " << task->completeExpression() );
    }
 
    {   // test add limit
@@ -806,18 +811,13 @@ BOOST_AUTO_TEST_CASE( test_alter_cmd_errors )
       // test delete variables, with a non existent path
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/idont/exist",AlterCmd::DEL_VARIABLE,"FRED1")));
 
-      // ECFLOW-380 test change read only server variables,ECF_NODE, ECF_PORT, ECF_PID, ECF_VERSION, ECF_LISTS
+      // ECFLOW-380 test change read only server variables
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_NODE","a")));
+      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_HOST","a")));
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_PORT","a")));
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_PID","a")));
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_VERSION","a")));
       TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::ADD_VARIABLE,"ECF_LISTS","a")));
-
-      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::VARIABLE,"ECF_NODE","a")));
-      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::VARIABLE,"ECF_PORT","a")));
-      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::VARIABLE,"ECF_PID","a")));
-      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::VARIABLE,"ECF_VERSION","a")));
-      TestHelper::invokeFailureRequest(&defs,Cmd_ptr( new AlterCmd("/",AlterCmd::VARIABLE,"ECF_LISTS","a")));
    }
 
    /// Destroy singleton's to avoid valgrind from complaining
diff --git a/Base/test/TestJobGenPerf.cpp b/Base/test/TestJobGenPerf.cpp
new file mode 100644
index 0000000..bd7aaa1
--- /dev/null
+++ b/Base/test/TestJobGenPerf.cpp
@@ -0,0 +1,132 @@
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #10 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#include <iostream>
+#include <string>
+#include <vector>
+
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+
+#include "Defs.hpp"
+#include "Task.hpp"
+#include "Str.hpp"
+#include "File.hpp"
+#include "Log.hpp"
+#include "Jobs.hpp"
+#include "JobsParam.hpp"
+#include "DefsStructureParser.hpp"
+#include "JobProfiler.hpp"
+
+using namespace std;
+using namespace ecf;
+namespace fs = boost::filesystem;
+
+//#define DEBUG 1
+
+// This relies on Pyext/samples/TestJobGenPerf.py to make any defs amenable
+// for this test program.
+//
+// The defs is in /var/tmp/ma0/ECFLOW_TEST/TestJobGenPerf
+//
+int main(int argc, char* argv[])
+{
+   if (argc != 2) {
+      cout << "TestJobGenPerf.cpp --> " << argv[0] << "\n";
+      cout << "Expect single argument which is path to a defs file\n";
+      return 1;
+   }
+
+   // delete the log file if it exists.
+   std::string log_path = File::test_data("Base/test/TestJobGenPerf.log","AParser");
+   fs::remove(log_path);
+   std::string path = argv[1];
+
+#ifdef DEBUG
+   cout << "Loading file " << path << " log file " << log_path  << "\n";
+#endif
+   Defs defs;
+   DefsStructureParser checkPtParser( &defs, path);
+   std::string errorMsg,warningMsg;
+   if (!checkPtParser.doParse(errorMsg,warningMsg)) {
+      cout << errorMsg << "\n";
+      cout << warningMsg << "\n";
+      return 1;
+   }
+
+#ifdef DEBUG
+   cout << "remove dodgy suites, these are based on localhost\n";
+#endif
+//   std::vector<std::string> suites_to_remove;
+//   suites_to_remove.push_back("codes_ui");
+//   suites_to_remove.push_back("libemos_test");
+//   suites_to_remove.push_back("metview");
+//   suites_to_remove.push_back("ecflow");
+//   suites_to_remove.push_back("mir_bundle");
+//   for(size_t i = 0; i < suites_to_remove.size(); ++i) {
+//      suite_ptr suite = defs.findSuite(suites_to_remove[i]);
+//      if (suite) suite->remove();
+//   }
+//   cout << defs ;
+//   exit(0);
+
+   // Check number of tasks, if the submitted output below is too low
+   std::vector<Task*> tasks;
+   defs.getAllTasks(tasks);
+
+#ifdef DEBUG
+   cout << "Total number of tasks" << tasks.size() << "\n";
+   cout << "begin-all\n";
+#endif
+   defs.beginAll();
+
+#ifdef DEBUG
+   cout << "Free all dependencies, free suspended time and trigger dependencies\n";
+#endif
+
+   std::vector<node_ptr> all_nodes;
+   defs.get_all_nodes(all_nodes);
+   for(size_t i = 0; i < all_nodes.size(); ++i) {
+      if (all_nodes[i]->isSuspended())  all_nodes[i]->resume();
+      all_nodes[i]->freeTrigger();
+      all_nodes[i]->freeHoldingDateDependencies();
+      all_nodes[i]->freeHoldingTimeDependencies();
+      if (all_nodes[i]->state() == NState::COMPLETE && all_nodes[i]->isTask()) {
+         all_nodes[i]->set_state(NState::QUEUED);
+      }
+   }
+
+
+   // Create a new log, file, place after begin to avoid queued state
+   Log::create(log_path);
+
+   // This controls the log output when job generation > submitJobsInterval
+   JobProfiler::set_task_threshold(5); // 5ms 1000 is one second
+
+   JobsParam jobParam(20 /*submitJobsInterval*/, true /*createJobs*/, false/* spawn jobs */);
+   Jobs job(&defs);
+   if (!job.generate( jobParam )) cout << " generate failed: " << jobParam.getErrorMsg();
+   cout << "submitted " << jobParam.submitted().size() << " out of " << tasks.size() << "\n";
+
+//   for(size_t i = 0; i < tasks.size(); i++) {
+//      if (tasks[i]->state() != NState::SUBMITTED) {
+//         cout << "task " << tasks[i]->absNodePath() << " state: " << NState::toString(tasks[i]->state()) << "\n";
+//         Node* parent = tasks[i]->parent();
+//         while (parent) {
+//            cout << "node " << parent->absNodePath() << " state: " << NState::toString(parent->state()) << "\n";
+//            parent = parent->parent();
+//         }
+//      }
+//   }
+   // fs::remove(log_path);
+   return 0;
+}
diff --git a/Base/test/TestRequest.cpp b/Base/test/TestRequest.cpp
index 32fa3fc..b28cf8d 100644
--- a/Base/test/TestRequest.cpp
+++ b/Base/test/TestRequest.cpp
@@ -73,6 +73,7 @@ static void populateCmdVec(std::vector<Cmd_ptr>& cmd_vec, std::vector<STC_Cmd_pt
 	cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::HALT_SERVER)));
 	cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::TERMINATE_SERVER)));
 	cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::RELOAD_WHITE_LIST_FILE)));
+	cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::RELOAD_PASSWD_FILE)));
 	cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::FORCE_DEP_EVAL)));
    cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::STATS)));
    cmd_vec.push_back( Cmd_ptr( new CtsCmd(CtsCmd::STATS_RESET)));
@@ -139,6 +140,7 @@ static void populateCmdVec(std::vector<Cmd_ptr>& cmd_vec, std::vector<STC_Cmd_pt
 	theGroupCmd->addChild(  Cmd_ptr( new CtsCmd(CtsCmd::HALT_SERVER))  );
 	theGroupCmd->addChild(  Cmd_ptr( new CtsCmd(CtsCmd::TERMINATE_SERVER))  );
    theGroupCmd->addChild(  Cmd_ptr( new CtsCmd(CtsCmd::RELOAD_WHITE_LIST_FILE))  );
+   theGroupCmd->addChild(  Cmd_ptr( new CtsCmd(CtsCmd::RELOAD_PASSWD_FILE))  );
    theGroupCmd->addChild(  Cmd_ptr( new CtsCmd(CtsCmd::SERVER_LOAD))  );
 	theGroupCmd->addChild(  Cmd_ptr( new PathsCmd(PathsCmd::SUSPEND,"EmptySuite"))  );
 	theGroupCmd->addChild(  Cmd_ptr( new PathsCmd(PathsCmd::RESUME,"EmptySuite"))  );
@@ -222,7 +224,8 @@ static void test_persistence(const Defs& theFixtureDefs )
 			BOOST_CHECK_MESSAGE(theCmd->task_cmd(),"Currently only tasks commands, are allowed to connect to different servers");
 		}
 
-		const ClientToServerRequest cmd_request(theCmd); // MUST be const to avoid AIX compiler warning
+		ClientToServerRequest cmd_request;
+		cmd_request.set_cmd(theCmd);
 		{
 			if (theCmd.get()->handleRequestIsTestable()) {
 				// test handleRequest while were at it.
diff --git a/Base/test/TestSSyncCmd.cpp b/Base/test/TestSSyncCmd.cpp
index cd3ca12..6f8ebfe 100644
--- a/Base/test/TestSSyncCmd.cpp
+++ b/Base/test/TestSSyncCmd.cpp
@@ -96,6 +96,12 @@ static void test_sync_scaffold(
 
 	Ecf::set_debug_equality(true);
 	BOOST_CHECK_MESSAGE( *server_defs == *server_reply.client_defs(),"Test:" << test_name << ": Server and client should be same after sync" );
+//	if (! (*server_defs == *server_reply.client_defs()) ) {
+//	   cout << "Server====================================================================\n";
+//	   cout << server_defs;
+//    cout << "Client====================================================================\n";
+//    cout << server_reply.client_defs();
+//	}
 	Ecf::set_debug_equality(false);
 }
 
@@ -337,6 +343,21 @@ void set_defs_state(defs_ptr defs) {
    defs->set_state(NState::ABORTED);
 }
 
+void set_migrated_flag_on_suites(defs_ptr defs) {
+   BOOST_FOREACH(suite_ptr suite, defs->suiteVec()) {
+      TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd(suite->absNodePath(),ecf::Flag::MIGRATED,true)));
+   }
+}
+void set_migrated_flag_on_families(defs_ptr defs) {
+   std::vector<Node*> nodes; defs->getAllNodes(nodes);
+   BOOST_FOREACH(Node* n, nodes) {
+      if (n->isFamily()) {
+         TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd(n->absNodePath(),ecf::Flag::MIGRATED,true)));
+      }
+   }
+}
+
+
 BOOST_AUTO_TEST_CASE( test_ssync_cmd  )
 {
 	// To DEBUG: enable the defines in Memento.hpp
@@ -358,6 +379,8 @@ BOOST_AUTO_TEST_CASE( test_ssync_cmd  )
    test_sync_scaffold(change_limit_max,"change_limit_max");
    test_sync_scaffold(change_limit_value,"change_limit_value");
    test_sync_scaffold(delete_suite,"delete_suite", true /* expect full_sync */);
+   test_sync_scaffold(set_migrated_flag_on_suites,"set_migrated_flag_on_suites");
+   test_sync_scaffold(set_migrated_flag_on_families,"set_migrated_flag_on_families");
 
    // Test Changes in Defs
    // The default server state is HALTED, hence setting to halted will not show a change
diff --git a/Base/test/TestSSyncCmd_CH1.cpp b/Base/test/TestSSyncCmd_CH1.cpp
index da7e5e0..7bb7332 100644
--- a/Base/test/TestSSyncCmd_CH1.cpp
+++ b/Base/test/TestSSyncCmd_CH1.cpp
@@ -153,8 +153,6 @@ void test_sync_scaffold( defs_change_cmd the_defs_change_command, const std::str
          BOOST_CHECK_MESSAGE( server_defs->server().compare(server_reply.client_defs()->server()),test_name << ": Server state does not match");
          Ecf::set_debug_equality(false);
       }
-      else {
-      }
 
       // * Note we expect client defs to fail invariant checking when doing a full sync with handles
       // * Under real server this should be ok since, we fix up the defs ptr, during serialisation
@@ -173,14 +171,13 @@ void test_sync_scaffold( defs_change_cmd the_defs_change_command, const std::str
    }
    else {
 
-      BOOST_CHECK_MESSAGE( !news_cmd.get_news(), test_name << ": Expected no change");
+      BOOST_CHECK_MESSAGE( !news_cmd.get_news(),         test_name << ": Expected no change");
       BOOST_CHECK_MESSAGE( !cmd.do_sync( server_reply ), test_name << ": Expected no change");
       BOOST_CHECK_MESSAGE( !server_reply.in_sync(),      test_name << ": Expected no change");
       BOOST_CHECK_MESSAGE( !(*server_defs == *server_reply.client_defs()), test_name << ": Server and client defs expected to differ" );
    }
 }
 
-
 static bool set_server_state_shutdown(defs_ptr defs) {
    defs->set_server().set_state( SState::SHUTDOWN );
    return true; // expect changes
@@ -333,11 +330,45 @@ static bool change_server_variable(defs_ptr defs) {
    return true;
 }
 
+
+static bool s1_set_migrate_flag(defs_ptr defs) {
+
+   // suite s1 is *NOT* in the handle, hence expect no change
+   suite_ptr s1 = defs->findSuite("s1");
+   MockSuiteChangedServer mockServer(s1);   // Increment suite state/modify change number
+   TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd(s1->absNodePath(),ecf::Flag::MIGRATED,true)));
+   return false;                            // expect no changes
+}
+
+static bool s1_f_set_migrate_flag(defs_ptr defs) {
+   // suite s1 is *NOT* in the handle, hence expect no change
+   suite_ptr s1 = defs->findSuite("s1");
+   MockSuiteChangedServer mockServer(s1);    // Increment suite state/modify change number
+   TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd("/s1/f",ecf::Flag::MIGRATED,true)));
+   return false;                             // expect no changes
+}
+
 // ===============================================================================
 // The modifiers, do this for suite s0 which is in a handle
 // ===============================================================================
-static bool s0_delete_some_attributes(defs_ptr defs) {
 
+static bool s0_set_migrate_flag(defs_ptr defs) {
+   // suite s0 in the handle
+   suite_ptr s0 = defs->findSuite("s0");
+   MockSuiteChangedServer mockServer(s0);      // Increment suite state/modify change number
+   TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd(s0->absNodePath(),ecf::Flag::MIGRATED,true)));
+   return true;                                // expect changes
+}
+
+static bool s0_f_set_migrate_flag(defs_ptr defs) {
+   // suite s0 in the handle
+   suite_ptr s0 = defs->findSuite("s0");
+   MockSuiteChangedServer mockServer(s0); // Increment suite state/modify change number
+   TestHelper::invokeRequest(defs.get(),Cmd_ptr( new AlterCmd("/s0/f",ecf::Flag::MIGRATED,true)));
+   return true;                                // expect changes
+}
+
+static bool s0_delete_some_attributes(defs_ptr defs) {
    /// Ok now make state change to s4, which **is** in the handle
    /// We need MockSuiteChangedServer, so that change is propagated to the suite.
    suite_ptr suite = defs->findSuite("s0");
@@ -396,7 +427,6 @@ static bool s0_remove_all_tasks(defs_ptr defs) {
    BOOST_REQUIRE_MESSAGE( suite,"Could not find suite");
    MockSuiteChangedServer mockServer(suite); // Increment suite state/modify change number
 
-
    // Remove tasks should force a incremental sync
    std::vector<task_ptr> tasks;
    suite->get_all_tasks(tasks);
@@ -429,7 +459,6 @@ static bool s0_remove_a_family(defs_ptr defs) {
    return true;
 }
 
-
 static bool s0_change_clock_gain(defs_ptr defs) {
    suite_ptr suite = defs->findSuite("s0");
    BOOST_REQUIRE_MESSAGE( suite,"Could not find suite");
@@ -499,19 +528,15 @@ static bool s0_change_limit_value(defs_ptr defs) {
 }
 
 static bool s0_update_repeat(defs_ptr defs) {
-
    suite_ptr suite = defs->findSuite("s0");
    BOOST_REQUIRE_MESSAGE( suite,"Could not find suite");
    MockSuiteChangedServer mockServer(suite); // Increment suite state/modify change number
 
-
    SuiteChanged1 changed(suite.get());
    suite->increment_repeat();
    return true;
 }
 
-// ===============================================
-
 BOOST_AUTO_TEST_CASE( test_ssync_using_handle  )
 {
    cout << "Base:: ...test_ssync_using_handle\n";
@@ -552,6 +577,10 @@ BOOST_AUTO_TEST_CASE( test_ssync_using_handle  )
    test_sync_scaffold(delete_family_on_suite_s4,"delete_family_on_suite_s4");
    test_sync_scaffold(delete_suite_s4,"delete_suite_s4", true /* expect a full sync */);
 
+   test_sync_scaffold(s1_set_migrate_flag,"s1_set_migrate_flag");     // s1   *NOT* in handle
+   test_sync_scaffold(s1_f_set_migrate_flag,"s1_f_set_migrate_flag"); // s1/f *NOT* in handle
+   test_sync_scaffold(s0_set_migrate_flag,"s0_set_migrate_flag");     // s0   is in handle
+   test_sync_scaffold(s0_f_set_migrate_flag,"s0_set_migrate_flag");  // s0/f is in handle
 
    test_sync_scaffold(s0_delete_some_attributes,"s0_delete_some_attributes");
    test_sync_scaffold(s0_add_some_attributes,"s0_add_some_attributes");
@@ -570,7 +599,7 @@ BOOST_AUTO_TEST_CASE( test_ssync_using_handle  )
    test_sync_scaffold(s0_change_clock_sync,"s0_change_clock_sync", true/* expect a full sync */);
 }
 
-
+// =============================================================================================
 
 static defs_ptr create_the_server_defs()
 {
@@ -639,8 +668,8 @@ BOOST_AUTO_TEST_CASE( test_ssync_full_sync_using_handle  )
    // Now sync from server
    Ecf::set_server(true);
    MockServer mock_server(server_defs);
-   /* server side */ SNewsCmd news_cmd(client_handle, server_reply.client_defs()->state_change_no(),  server_reply.client_defs()->modify_change_no(), &mock_server );
-   /* server side */ SSyncCmd cmd(client_handle, server_reply.client_defs()->state_change_no(),  server_reply.client_defs()->modify_change_no(), &mock_server );
+   /* server side */ SNewsCmd news_cmd(client_handle, server_reply.client_defs()->state_change_no(), server_reply.client_defs()->modify_change_no(), &mock_server );
+   /* server side */ SSyncCmd cmd(client_handle, server_reply.client_defs()->state_change_no(), server_reply.client_defs()->modify_change_no(), &mock_server );
    Ecf::set_server(false);
 
    // make sure SSyncCmd updated the server change numbers, to use global change numbers
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 60f23d7..bb24556 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,14 +11,6 @@
 #
 #       -DCMAKE_PREFIX_PATH=/path/to/jasper:/path/to/any/package/out/of/place
 #       -DBUILD_SHARED_LIBS=OFF
-# =========================================================================================
-# Usage instructions:
-#
-# cd $WK
-# release=$(cat VERSION.cmake | grep 'set( ECFLOW_RELEASE' | awk '{print $3}'| sed 's/["]//g')
-# major=$(cat VERSION.cmake   | grep 'set( ECFLOW_MAJOR'   | awk '{print $3}'| sed 's/["]//g')
-# minor=$(cat VERSION.cmake   | grep 'set( ECFLOW_MINOR'   | awk '{print $3}'| sed 's/["]//g')
-#
 ##############################################################################
 
 cmake_minimum_required( VERSION 2.8.11 FATAL_ERROR )
@@ -26,14 +18,14 @@ cmake_minimum_required( VERSION 2.8.11 FATAL_ERROR )
 # ===========================================================================
 # Change the default if NO CMAKE_BUILD_TYPE specified
 if (NOT DEFINED CMAKE_BUILD_TYPE)
-     set(CMAKE_BUILD_TYPE Release CACHE STRING "Build Configuration type" FORCE)
+   set(CMAKE_BUILD_TYPE Release CACHE STRING "Build Configuration type" FORCE)
 endif()
 
 
 project( ecflow CXX )
 
 set( CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/../ecbuild/cmake")
-# message( STATUS "CMAKE_MODULE_PATH    : ${CMAKE_MODULE_PATH}")
+# ecbuild_info( "CMAKE_MODULE_PATH    : ${CMAKE_MODULE_PATH}")
 
 include( ecbuild_system )
 
@@ -51,37 +43,46 @@ ecbuild_declare_project()
 # The ecflow version config is done in ACore directory
 # =========================================================================================
 
-message( STATUS "CMAKE_INSTALL_PREFIX : ${CMAKE_INSTALL_PREFIX}" )
-message( STATUS "ECFLOW_RELEASE       : ${ECFLOW_RELEASE}" )
-message( STATUS "ECFLOW_MAJOR         : ${ECFLOW_MAJOR}" )
-message( STATUS "ECFLOW_MINOR         : ${ECFLOW_MINOR}" )
-message( STATUS "ECFLOW_VERSION       : ${ECFLOW_VERSION_STR}" )
+ecbuild_info( "CMAKE_INSTALL_PREFIX     : ${CMAKE_INSTALL_PREFIX}" )
+ecbuild_info( "ECFLOW_RELEASE           : ${ECFLOW_RELEASE}" )
+ecbuild_info( "ECFLOW_MAJOR             : ${ECFLOW_MAJOR}" )
+ecbuild_info( "ECFLOW_MINOR             : ${ECFLOW_MINOR}" )
+ecbuild_info( "ECFLOW_VERSION           : ${ECFLOW_VERSION_STR}" )
 
 # =========================================================================================
 # Options , be aware of caching, when modifying on the command line. 
 # Ideally start fresh or remove cache CmakeCache.txt in build dir
 # =========================================================================================
-option( ENABLE_PYTHON         "enable python interface"   ON  )
-option( ENABLE_UI             "Build ecFlowUI"            ON ) 
-option( ENABLE_GUI            "Build ecflowview"          ON  )
-option( ENABLE_ALL_TESTS      "This includes performance/migration/regression tests" OFF )
-option( ENABLE_UI_BACKTRACE   "Print a UI debug backtrace" OFF ) 
-
-
+option( ENABLE_SERVER            "Build the server, can be switched off if just building UI" ON  )
+option( ENABLE_PYTHON            "enable python interface"         ON  )
+option( ENABLE_UI                "Build ecFlowUI"                  ON  ) 
+option( ENABLE_GUI               "Build ecflowview"                ON  )
+option( ENABLE_STATIC_BOOST_LIBS "Link with boost libs statically" ON  )
+option( ENABLE_ALL_TESTS         "This includes performance/migration/regression tests" OFF )
+option( ENABLE_UI_BACKTRACE      "Print a UI debug backtrace"         OFF ) 
+option( ENABLE_UI_USAGE_LOG      "Enable UI usage logging"            OFF )
+option( ENABLE_SSL               "Enable SSL encrypted communication" OFF )
+option( ENABLE_SECURE_USER       "Enable passwords for user"          OFF )
 
 # =========================================================================================
 # Qt for ecFlowUI. 
 # Algorithm: we test for Qt5 - if it's there, then use it; otherwise look for Qt4.
 #            if we don't find that, then we cannot build ecFlowUI.
 # =========================================================================================
-
 if(ENABLE_UI)
 
+    ecbuild_info("")
+    ecbuild_info("------------------------------ Qt start ---------------------------")
     ecbuild_info("ecFlowUI is enabled - searching for Qt5; if not found, will try Qt4")
+    ecbuild_info("To use a self-built Qt installation, try setting CMAKE_PREFIX_PATH")
 
-    find_package(Qt5Widgets    5.0.0)
-    find_package(Qt5Gui        5.0.0)
-    find_package(Qt5Network    5.0.0)
+    find_package(Qt5Widgets 5.0.0)
+    if (Qt5Widgets_FOUND)
+        find_package(Qt5Gui 5.0.0)
+        if (Qt5Gui_FOUND)
+            find_package(Qt5Network 5.0.0)
+        endif()
+    endif()
 
     if (Qt5Widgets_FOUND AND Qt5Gui_FOUND AND Qt5Network_FOUND)
           ecbuild_info("Qt5 version ${Qt5Widgets_VERSION_STRING} was found")
@@ -90,47 +91,78 @@ if(ENABLE_UI)
           set(ECFLOW_QT5 1)
           add_definitions(-DECFLOW_QT5)
     else()
-        ecbuild_info("Could not find all required Qt5 packages - searching for Qt4")
+        ecbuild_info("Could not find all required Qt5 packages (Qt5Widgets, Qt5Gui and Qt5Network) - searching for Qt4")
+        ecbuild_info(" ** To use a self-built Qt installation, try setting CMAKE_PREFIX_PATH **")
 
         find_package(Qt4 4.8.0 REQUIRED QtCore QtGui QtNetwork)
         if(QT_FOUND)
             ecbuild_info("Found Qt 4, please ignore any warnings about Qt5 components that were not found.")
         else()
+            ecbuild_info(" ** To use a self-built Qt installation, try setting CMAKE_PREFIX_PATH **")
             ecbuild_critical("Qt5 and Qt4 not found - one of these is required for ecFlowUI; or use -DENABLE_UI=OFF")
         endif()
     endif()
 
     set(ECFLOW_QT 1)
     add_definitions(-DQT_NO_KEYWORDS) # We need to disable keywords because there is a problem in using Qt and boost together.
+    ecbuild_info("------------------------------ Qt end----------------------------")
+    ecbuild_info("")
 
 endif()
 
 
-
 # sanity check - cannot set ENABLE_UI_BACKTRACE if UI is OFF
 if(ENABLE_UI_BACKTRACE AND (NOT ENABLE_UI))
-    message(WARNING "Cannot ENABLE_UI_BACKTRACE if UI is not enabled")
+	ecbuild_warn("Cannot ENABLE_UI_BACKTRACE if UI is not enabled")
     set(ENABLE_UI_BACKTRACE OFF)
 endif()
 
 # sanity check - cannot set UI_BACKTRACE_EMAIL_ADDRESSES if UI and ENABLE_UI_BACKTRACE are OFF
 if(UI_BACKTRACE_EMAIL_ADDRESSES AND (NOT ENABLE_UI))
-    message(WARNING "Cannot set UI_BACKTRACE_EMAIL_ADDRESSES if UI is not enabled")
+	ecbuild_warn("Cannot set UI_BACKTRACE_EMAIL_ADDRESSES if UI is not enabled")
     set(UI_BACKTRACE_EMAIL_ADDRESSES)
 endif()
 
+# sanity check - cannot set UI_LOG_FILE if ENABLE_UI_USAGE_LOG is OFF
+if(UI_LOG_FILE AND (NOT ENABLE_UI_USAGE_LOG))
+	ecbuild_warn("Cannot set UI_LOG_FILE if ENABLE_UI_USAGE_LOG is not enabled")
+	set(UI_LOG_FILE)
+endif()
+
+# sanity check - if ENABLE_UI_USAGE_LOG is ON, we must also have UI_LOG_FILE
+if(ENABLE_UI_USAGE_LOG AND (NOT UI_LOG_FILE))
+	ecbuild_error("If ENABLE_UI_USAGE_LOG is set, UI_LOG_FILE must also be set")
+endif()
+
+# sanity check - if ENABLE_UI_USAGE_LOG is ON, we must also have UI_LOG_SITE_TAG
+if(ENABLE_UI_USAGE_LOG AND (NOT UI_LOG_SITE_TAG))
+	ecbuild_error("If ENABLE_UI_USAGE_LOG is set, UI_LOG_SITE_TAG must also be set")
+endif()
+
+
+ecbuild_info( "ENABLE_SERVER            : ${ENABLE_SERVER}" )
+ecbuild_info( "ENABLE_PYTHON            : ${ENABLE_PYTHON}" )
+ecbuild_info( "ENABLE_GUI               : ${ENABLE_GUI}" )
+ecbuild_info( "ENABLE_UI                : ${ENABLE_UI}" )
+ecbuild_info( "ENABLE_ALL_TESTS         : ${ENABLE_ALL_TESTS}" )
+ecbuild_info( "ENABLE_STATIC_BOOST_LIBS : ${ENABLE_STATIC_BOOST_LIBS}" )
+ecbuild_info( "ENABLE_SSL               : ${ENABLE_SSL}" )
+ecbuild_info( "ENABLE_SECURE_USER       : ${ENABLE_SECURE_USER}" )
 
-message( STATUS "ENABLE_PYTHON         : ${ENABLE_PYTHON}" )
-message( STATUS "ENABLE_GUI            : ${ENABLE_GUI}" )
-message( STATUS "ENABLE_UI             : ${ENABLE_UI}" )
-message( STATUS "ENABLE_ALL_TESTS      : ${ENABLE_ALL_TESTS}" )
 
 if (ENABLE_UI)
-    message( STATUS "ENABLE_UI_BACKTRACE   : ${ENABLE_UI_BACKTRACE}" )
-    if(UI_BACKTRACE_EMAIL_ADDRESSES)
-        message( STATUS "UI_BACKTRACE_EMAIL_ADDRESSES : ${UI_BACKTRACE_EMAIL_ADDRESSES}" )
-    endif()
+	ecbuild_info( "ENABLE_UI_BACKTRACE      : ${ENABLE_UI_BACKTRACE}" )
+	if(UI_BACKTRACE_EMAIL_ADDRESSES)
+		ecbuild_info( "UI_BACKTRACE_EMAIL_ADDRESSES : ${UI_BACKTRACE_EMAIL_ADDRESSES}" )
+	endif()
+
+	ecbuild_info( "ENABLE_UI_USAGE_LOG      : ${ENABLE_UI_USAGE_LOG}" )
+	if(ENABLE_UI_USAGE_LOG)
+		ecbuild_info( "UI_LOG_FILE              : ${UI_LOG_FILE}" )
+		ecbuild_info( "UI_LOG_SITE_TAG          : ${UI_LOG_SITE_TAG}" )
+	endif()
 endif()
+ecbuild_info("")
 
 # ======================================================================================
 # GUI requires X11 and Motif
@@ -139,18 +171,18 @@ endif()
 if(ENABLE_GUI)
   find_package( X11 )
 #  if ( X11_FOUND )
-#	debug_var( X11_INCLUDE_DIR )
-#	debug_var( X11_LIBRARIES )  
-#	debug_var( X11_Xt_INCLUDE_PATH )
-#	debug_var( X11_Xt_LIB )
-#	debug_var( X11_Xpm_INCLUDE_PATH )
-#	debug_var( X11_Xpm_LIB )
+#	   ecbuild_debug_var( X11_INCLUDE_DIR )
+#	   ecbuild_debug_var( X11_LIBRARIES )  
+#	   ecbuild_debug_var( X11_Xt_INCLUDE_PATH )
+#	   ecbuild_debug_var( X11_Xt_LIB )
+#	   ecbuild_debug_var( X11_Xpm_INCLUDE_PATH )
+#	   ecbuild_debug_var( X11_Xpm_LIB )
 #  endif()
 
   find_package( Motif )
 #  if ( MOTIF_FOUND )
-#	debug_var( MOTIF_INCLUDE_DIR )
-#	debug_var( MOTIF_LIBRARIES )  
+#	   ecbuild_debug_var( MOTIF_INCLUDE_DIR )
+#	   ecbuild_debug_var( MOTIF_LIBRARIES )  
 #  endif()
 endif()
  
@@ -158,12 +190,21 @@ endif()
 # Boost
 # =========================================================================================
 
-ecbuild_add_extra_search_paths( boost ) # also respects BOOST_ROOT
+# this can help in some situations:
+set (_CMAKE_PREFIX_PATH_BACKUP ${CMAKE_PREFIX_PATH}) # make a backup of CMAKE_PREFIX_PATH
+foreach(BOOST_PATH_TO_SEARCH ${BOOST_PATH} ${BOOST_ROOT} $ENV{BOOST_ROOT})
+    ecbuild_debug("adding: ${BOOST_PATH_TO_SEARCH} to CMAKE_PREFIX_PATH")
+    list(APPEND CMAKE_PREFIX_PATH ${BOOST_PATH_TO_SEARCH})
+    list(REMOVE_DUPLICATES CMAKE_PREFIX_PATH)
+endforeach()
+
 
 # Ecflow test require statics libs for boost < 1.59, otherwise get double free error.
 # To use static boost python ensure that Boost_USE_STATIC_LIBS is set on.
 # See: http://www.cmake.org/cmake/help/v3.0/module/FindBoost.html
-set(Boost_USE_STATIC_LIBS        ON)
+if ( ENABLE_STATIC_BOOST_LIBS )
+    set(Boost_USE_STATIC_LIBS ON)
+endif()
 set(Boost_USE_MULTITHREADED      ON)
 set(Boost_NO_SYSTEM_PATHS        ON)
 set(Boost_DETAILED_FAILURE_MSG   ON)
@@ -183,15 +224,33 @@ find_package( Boost 1.53.0 REQUIRED COMPONENTS python serialization system threa
 #    ${Boost_UNIT_TEST_FRAMEWORK_LIBRARY} 
 #    ${Boost_TEST_EXEC_MONITOR_LIBRARY} 
 
+#ecbuild_info( "Boost_LIBRARIES     : ${Boost_LIBRARIES}" )
 
-#message( STATUS "Boost_LIBRARIES     : ${Boost_LIBRARIES}" )
 
+if (NOT "${CMAKE_PREFIX_PATH}" EQUAL "${_CMAKE_PREFIX_PATH_BACKUP}")
+    set (CMAKE_PREFIX_PATH ${_CMAKE_PREFIX_PATH_BACKUP}) # restore CMAKE_PREFIX_PATH
+    ecbuild_debug("Resetting CMAKE_PREFIX_PATH to ${CMAKE_PREFIX_PATH}")
+endif()
 
 
-# =========================================================================================
-# Qt
-# =========================================================================================
+# =======================================================================
+# SSL
+# =======================================================================
+if (ENABLE_SSL)
+    find_package(OpenSSL REQUIRED)
+    if (NOT OPENSSL_FOUND )
+        ecbuild_error("Can not find openssl libraries")
+    endif() 
+    include_directories( ${OPENSSL_INCLUDE_DIR} )
+    add_definitions( -DECF_OPENSSL )
+endif()
 
+# =======================================================================
+# SECURE_USER
+# =======================================================================
+if (ENABLE_SECURE_USER)
+    add_definitions( -DECF_SECURE_USER )
+endif()
 
 
 # =========================================================================================
@@ -200,7 +259,7 @@ find_package( Boost 1.53.0 REQUIRED COMPONENTS python serialization system threa
 
 if( CMAKE_BUILD_TYPE MATCHES "[Dd][Ee][Bb][Uu][Gg]" )
 
-	message( STATUS "INFO: DEBUG BUILD" )
+	ecbuild_info( "INFO: DEBUG BUILD" )
 
     # Tell C/C++ that we're doing a debug build
     add_definitions( -DDEBUG )
@@ -216,15 +275,22 @@ add_subdirectory( ANattr )
 add_subdirectory( ANode )
 add_subdirectory( AParser )
 add_subdirectory( Base )
-add_subdirectory( Client )
 add_subdirectory( CSim )
-add_subdirectory( Server )
-add_subdirectory( Test )
+add_subdirectory( Client )
+if (ENABLE_SERVER)
+    add_subdirectory( Server )
+    add_subdirectory( Test )
+endif()
 
 if (ENABLE_PYTHON)
-    ecbuild_find_python( VERSION 2.7 REQUIRED )
-    #debug_var(PYTHON_LIBRARIES)
-    #debug_var(PYTHON_INCLUDE_DIR)
+    ecbuild_find_python( VERSION 2.6 REQUIRED )
+    # ecbuild_debug_var(PYTHON_LIBRARIES)
+    # ecbuild_debug_var(PYTHON_INCLUDE_DIR)
+    
+    if( NOT PYTHON_FOUND )
+        ecbuild_error("ecflow python extension is enabled, but python interpreter or libraries not found")
+    endif()
+
 	add_subdirectory( Pyext )
 endif()	
 	
@@ -239,7 +305,7 @@ endif()
 
 # =========================================================================================
 # tar ball, by default ecbuild will tar everything apart from hard wired directory called 'build' 
-#   hence we can tell it, what directories not to pack
+# hence we can tell it, what directories not to pack
 # =========================================================================================
 
 ecbuild_dont_pack( DIRS 
@@ -264,15 +330,9 @@ install( FILES
             ${CMAKE_SOURCE_DIR}/tools/noconnect.sh
             ${CMAKE_SOURCE_DIR}/Pyext/migrate/ecflow_migrate.py
          DESTINATION bin
-         PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE
-)
-
-# install documentation         
-install (FILES   
-             ${CMAKE_SOURCE_DIR}/Doc/user-manual/client_options.docx  
-         DESTINATION doc/ecflow
-         PERMISSIONS OWNER_READ GROUP_READ WORLD_READ OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE
-)
+         PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
+         COMPONENT binary
+       )
         
 # =========================================================================================
 # final
diff --git a/CSim/src/AstAnalyserVisitor.cpp b/CSim/src/AstAnalyserVisitor.cpp
index ea72164..76e56da 100644
--- a/CSim/src/AstAnalyserVisitor.cpp
+++ b/CSim/src/AstAnalyserVisitor.cpp
@@ -42,7 +42,7 @@ void AstAnalyserVisitor::visitGreaterThan(AstGreaterThan*) {}
 void AstAnalyserVisitor::visitLessThan(AstLessThan*) {}
 void AstAnalyserVisitor::visitLeaf(AstLeaf*) {}
 void AstAnalyserVisitor::visitInteger(AstInteger*) {}
-void AstAnalyserVisitor::visitString(AstString*) {}
+void AstAnalyserVisitor::visitFunction(AstFunction*){};
 void AstAnalyserVisitor::visitNodeState(AstNodeState*) {}
 void AstAnalyserVisitor::visitEventState(AstEventState*) {}
 
diff --git a/CSim/src/AstAnalyserVisitor.hpp b/CSim/src/AstAnalyserVisitor.hpp
index 2a09933..a50c339 100644
--- a/CSim/src/AstAnalyserVisitor.hpp
+++ b/CSim/src/AstAnalyserVisitor.hpp
@@ -49,8 +49,8 @@ public:
  	virtual void visitGreaterThan(AstGreaterThan*);
  	virtual void visitLessThan(AstLessThan*);
  	virtual void visitLeaf(AstLeaf*);
- 	virtual void visitInteger(AstInteger*);
- 	virtual void visitString(AstString*);
+   virtual void visitInteger(AstInteger*);
+   virtual void visitFunction(AstFunction*);
  	virtual void visitNodeState(AstNodeState*);
  	virtual void visitEventState(AstEventState*);
  	virtual void visitNode(AstNode*);
diff --git a/CSim/src/Simulator.cpp b/CSim/src/Simulator.cpp
index aade656..5e7384f 100644
--- a/CSim/src/Simulator.cpp
+++ b/CSim/src/Simulator.cpp
@@ -52,15 +52,20 @@ public:
 	~LogDestroyer() { Log::destroy(); }
 };
 
-Simulator::Simulator(const boost::posix_time::time_duration& period)
-: max_simulation_period_(period),
-  truncateLongRepeatsTo_(0),
-  level_(0),
-  foundCrons_(false)
+Simulator::Simulator() : level_(0){}
+
+bool Simulator::run(const std::string& theDefsFile,std::string& errorMsg) const
 {
 #ifdef DEBUG_LONG_RUNNING_SUITES
-	std::cout << "Simulator::Simulator max_simulation_period_ " << to_simple_string(max_simulation_period_) << endl;
+   cout << "Simulator::run parsing file " << theDefsFile << endl;
 #endif
+
+   Defs theDefs;
+   DefsStructureParser checkPtParser( &theDefs , theDefsFile );
+   std::string warningMsg;
+   if (!checkPtParser.doParse(errorMsg,warningMsg))  return false;
+   //cout << theDefs << "\n";
+   return run(theDefs,theDefsFile,errorMsg, false /* don't do check, allready done */);
 }
 
 bool Simulator::run(Defs& theDefs, const std::string& defs_filename,  std::string& errorMsg, bool do_checks) const
@@ -77,6 +82,11 @@ bool Simulator::run(Defs& theDefs, const std::string& defs_filename,  std::strin
 	// ** By default checking in done when reading a defs file from disk:
 	// ** However many test create Defs on the fly. These may not do_checks.
 	// ** Hence we do it here, since it is simulator specific.
+
+	//   Please note that when we use a clock attribute, for a specific date
+   //   then when we are using repeat, they can cause the suite to re-queue
+   //   and RESET the suite time, back to clock attribute time
+
 	if (do_checks) {
 	   std::string warningMsg;
 	   if (!theDefs.check(errorMsg,warningMsg)) {
@@ -84,7 +94,6 @@ bool Simulator::run(Defs& theDefs, const std::string& defs_filename,  std::strin
 	   }
 	}
 
-
 	// Allow new log to be created each time, by destroying the old log.
 	LogDestroyer destroyLog;
 
@@ -102,159 +111,109 @@ bool Simulator::run(Defs& theDefs, const std::string& defs_filename,  std::strin
 	// o determine max simulation period. ie looks at size of repeats
 	// o If multiple suites and some suites have no tasks, mark them as complete, these may have server limits
 	// o If no tasks at all, no point in simulating
- 	// **** Need a better mechanism of handling long repeats, the old way of changing repeat
- 	// **** attributes is not acceptable.(i.e user could save in python after simulation
- 	// **** and there defs would be corrupted
-	SimulatorVisitor simiVisitor(truncateLongRepeatsTo_ /* NOT USED */);
+   // o ********************************************************************************
+   //   Please note that when we use a clock attribute, for a specific date
+   //   then when we are using repeat, they can cause the suite to re-queue
+   //   and RESET the suite time, back to clock attribute time
+   //   *********************************************************************************
+	SimulatorVisitor simiVisitor(defs_filename);
 	theDefs.acceptVisitTraversor(simiVisitor);
-	foundCrons_ = simiVisitor.foundCrons();
-
-	if (!simiVisitor.foundTasks()) {
-		errorMsg += "The defs file ";
-		errorMsg += defs_filename;
-		errorMsg +=  " has no tasks, can not simulate\n";
- 		return false;
+	if (!simiVisitor.errors_found().empty()) {
+      errorMsg +=  simiVisitor.errors_found();
+      return false;
 	}
 
 	// Let visitor determine calendar increment. i.e if no time dependencies we will use 1 hour increment
-	// Default max_simulation_period_ is 1 year, however some operation suites run for many years
-	// Analyse the repeats to determine max simulation period
  	time_duration calendarIncrement =  simiVisitor.calendarIncrement();
  	boost::posix_time::time_duration max_simulation_period = simiVisitor.maxSimulationPeriod();
- 	if ( max_simulation_period > max_simulation_period_) max_simulation_period_ = max_simulation_period;
 
+ 	std::stringstream ss;
+ 	ss << " time dependency(" <<  simiVisitor.hasTimeDependencies()
+		<< ") max_simulation_period(" << to_simple_string(max_simulation_period)
+		<< ") calendarIncrement(" << to_simple_string(calendarIncrement) << ")";
+ 	std::string msg = ss.str();
+ 	log(Log::MSG,msg);
 #ifdef DEBUG_LONG_RUNNING_SUITES
- 	cout << defs_filename << " time dependency = " <<  simiVisitor.hasTimeDependencies()
-		<< " max_simulation_period_=" << to_simple_string(max_simulation_period_)
-		<< " calendarIncrement=" << to_simple_string(calendarIncrement)
- 	    << endl;
+ 	cout << defs_filename << msg << "\n";
 #endif
 
- 	CalendarUpdateParams calUpdateParams( calendarIncrement );
+ 	// Do we have autocancel, must be done before.
+   int hasAutoCancel = 0;
+   BOOST_FOREACH(suite_ptr s, theDefs.suiteVec()) { if (s->hasAutoCancel()) hasAutoCancel++; }
 
+   // ==================================================================================
 	// Start simulation ...
+ 	// Assume: User has taken into account autocancel end time.
+   // ==================================================================================
+ 	CalendarUpdateParams calUpdateParams( calendarIncrement );
 	boost::posix_time::time_duration duration(0,0,0,0);
- 	while (1) {
+ 	while (duration <= max_simulation_period) {
 
-// 		cout << "duration = " << to_simple_string(duration) << endl;
+#ifdef DEBUG_LONG_RUNNING_SUITES
+      BOOST_FOREACH(suite_ptr ss, theDefs.suiteVec()) {
+         cout << "duration: " << to_simple_string(duration) << " " << ss->calendar().toString() << endl;
+      }
+#endif
 
  		// Resolve dependencies and submit jobs
  		if (!doJobSubmission(theDefs,errorMsg)) return false;
 
- 		// Determine termination criteria. If all suite complete, exit,
- 		// Let simulation termination take autocancel into account. i.e we extend simulation even though
- 		// suite may have completed, to allow autocancel to take effect.
- 		// Hence if a suite has complete, but has autocancel we continue simulation
- 		// Note: should also handle case of autocancel which remove all suites
-		size_t completeSuiteCnt = 0;
-		int hasAutoCancel = 0;
-		BOOST_FOREACH(suite_ptr s, theDefs.suiteVec()) {
-			if (s->state() == NState::COMPLETE) completeSuiteCnt++;
-			if (s->hasAutoCancel()) hasAutoCancel++;
-		}
-		if ( (theDefs.suiteVec().size() == completeSuiteCnt) && (hasAutoCancel == 0)) {
- 			LOG(Log::MSG, "Simulation complete in " << to_simple_string(duration) );
-
- 			if ( !theDefs.checkInvariants(errorMsg) )  break;
-
-			// Run verification on the completed suite
-  			return theDefs.verification(errorMsg);
-		}
-
-		// crons run for ever. To terminate, we rely on test to have Verify attributes
-		// The verify attributes should *only* be on the task. (i.e task auto-reques
-		// hance parent is never complete, and hence no point in having verify attributes
-		if (foundCrons_) {
-		   std::string msg;
-		   if (theDefs.verification(msg)) {
-		      return true;
-		   }
-		}
-
-		// if simulation runs to long bomb out.,  then Analyse the defs,
-		// to determine why the simulation would not complete
-		if (abortSimulation(simiVisitor, duration, errorMsg) ) {
-
- 			if ( !theDefs.checkInvariants(errorMsg) )  break;
-
- 			if ( (theDefs.suiteVec().size() == completeSuiteCnt) && (hasAutoCancel != 0)) {
- 				errorMsg += "All suites have completed, but autocancel has not taken effect?\n";
- 			}
-
- 			if (foundCrons_) {
- 			   std::string msg;
- 			   if (!theDefs.verification(msg)) {
- 			      errorMsg += msg;
- 			      errorMsg += "\n";
- 			   }
- 			}
-
-  			Analyser analyser;
-  			analyser.run(theDefs);
-  			errorMsg += "Please see files .flat and .depth for analysis\n";
-
-  			PrintStyle::setStyle(PrintStyle::MIGRATE);
-  			std::stringstream ss;
-  			ss << theDefs;
-  			errorMsg += ss.str();
-			return false;
-		}
-
 		// Increment calendar.
 		theDefs.updateCalendar( calUpdateParams );
 		duration += calendarIncrement;
   	}
 
+ 	// ==================================================================================
+ 	// END of simulation
+ 	// ==================================================================================
+ 	if ( !theDefs.checkInvariants(errorMsg)) {
+ 	   return false;
+ 	}
+
+   // Cater for suite, with no verify attributes, but which are not complete. testAnalysis.cpp
+ 	// Ignore suites with crons as they will never complete
+ 	// Ignore suites with autocancel, as suite may get deleted
+ 	if (!simiVisitor.foundCrons() && (hasAutoCancel == 0)) {
+ 	   size_t completeSuiteCnt = 0;
+ 	   BOOST_FOREACH(suite_ptr s, theDefs.suiteVec()) { if (s->state() == NState::COMPLETE) completeSuiteCnt++; }
+
+ 	   if ( (theDefs.suiteVec().size() != completeSuiteCnt)) {
+ 	      std::stringstream ss; ss << "Defs file " << defs_filename << "\n";
+ 	      BOOST_FOREACH(suite_ptr s, theDefs.suiteVec()) {
+ 	         ss << "  suite '/" << s->name() << " has not completed\n";
+ 	      }
+ 	      errorMsg += ss.str();
+
+ 	      run_analyser(theDefs,errorMsg);
+ 	      return false;
+ 	   }
+ 	}
+
+ 	if (theDefs.verification(errorMsg)) {
+ 	   return true;
+ 	}
+
+ 	run_analyser(theDefs,errorMsg);
  	return false;
 }
 
-
-bool Simulator::run(const std::string& theDefsFile,std::string& errorMsg) const
+void Simulator::run_analyser(Defs& theDefs,std::string& errorMsg ) const
 {
-#ifdef DEBUG_LONG_RUNNING_SUITES
- 	cout << "Simulator::run parsing file " << theDefsFile << endl;
-#endif
-
- 	Defs theDefs;
-	DefsStructureParser checkPtParser( &theDefs , theDefsFile );
-	std::string warningMsg;
- 	if (!checkPtParser.doParse(errorMsg,warningMsg))  return false;
-
- 	return run(theDefs,theDefsFile,errorMsg, false /* don't do check, allready done */);
+   Analyser analyser;
+   analyser.run(theDefs);
+   errorMsg += "Please see files .flat and .depth for analysis\n";
+
+   PrintStyle::setStyle(PrintStyle::MIGRATE);
+   std::stringstream ss;
+   ss << theDefs;
+   errorMsg += ss.str();
 }
 
-//---------------------------------------------------------------------------------------
-
-bool Simulator::abortSimulation( const SimulatorVisitor& simiVisitor,
-                                 const boost::posix_time::time_duration& duration,
-                                 std::string& errorMsg) const
-{
-#ifdef DEBUG_LONG_RUNNING_SUITES
- 	cout << " duration = " << to_simple_string(duration)
-		 << " max_simulation_period_=" << to_simple_string(max_simulation_period_)
-  	     << "\n";
-#endif
-	if (duration > max_simulation_period_) {
-
-		errorMsg = "\nTimed out after ";
-		errorMsg += to_simple_string(max_simulation_period_);
-		errorMsg += " hours of simulation.\n";
-
-		if (!simiVisitor.hasTimeDependencies())  errorMsg += "The definition has no time dependencies.\n";
-		return true;
-	}
-
-	return false;
-}
-
-
 bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 {
-	// For the simulation we ensure job submission takes less than 2 seconds
-	int submitJobsInterval = 10;
-
+	// For the simulation we ensure job submission takes less than 10 seconds
 	// Resolve dependencies and submit jobs
-	JobsParam jobsParam(submitJobsInterval, false /*create jobs*/); // spawn jobs *will* be set to false
+	JobsParam jobsParam(10 /*submitJobsInterval */, false /*create jobs*/); // spawn jobs *will* be set to false
 	Jobs jobs(&theDefs);
 	if (!jobs.generate(jobsParam)) {
 		ecf::log(Log::ERR, jobsParam.getErrorMsg());
@@ -265,6 +224,7 @@ bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 //#ifdef DEBUG_LONG_RUNNING_SUITES
 //	cout << "Simulator::doJobSubmission jobsParam.submitted().size() " << jobsParam.submitted().size() << " level = " << level_ << endl;
 //#endif
+
 	level_++;
 
 	// For those jobs that were submitted, Simulate client by going
@@ -275,7 +235,7 @@ bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 
 #ifdef DEBUG_LONG_RUNNING_SUITES
 		// If task repeating themselves, determine what is causing this:
-		std::map<Task*,int>::iterator i = taskIntMap_.find(t);
+		std::map<Submittable*,int>::iterator i = taskIntMap_.find(t);
 		if (i == taskIntMap_.end())  taskIntMap_.insert( std::make_pair(t,1));
 		else {
 			(*i).second++;
@@ -298,10 +258,17 @@ bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 		}
 #endif
 
+      // any state change should be followed with a job submission
+      t->complete();  // mark task as complete
+
+
+#ifdef DEBUG_LONG_RUNNING_SUITES
+      cout << t->debugNodePath() << " completes at " << t->suite()->calendar().toString() << " level " << level_ << " parent state:" <<  endl;
+#endif
+
 		// If the task has any event used in the trigger expressions, then update event.
  		BOOST_FOREACH(Event& event, t->ref_events()) {
-
- 			if (event.usedInTrigger()) { // event used in triger/complete expression
+ 			if (event.usedInTrigger()) { // event used in trigger/complete expression
  				event.set_value(true);
   				if (!doJobSubmission(theDefs,errorMsg))  {
   					level_--;
@@ -316,7 +283,6 @@ bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 
 		// if the task has any meters used in trigger expressions, then increment meters
  		BOOST_FOREACH(Meter& meter, t->ref_meters()) {
-
  			if (meter.usedInTrigger()) { // meter used in trigger/complete expression
  				while (meter.value() < meter.max()) {
  					meter.set_value(meter.value()+1);
@@ -331,26 +297,6 @@ bool Simulator::doJobSubmission(Defs& theDefs, std::string& errorMsg) const
 				meter.set_value(meter.max());
  			}
 		}
-
- 		// any state change should be followed with a job submission
- 		t->complete();  // Finally mark task as complete
-
- 		// crons run for ever. To terminate, we rely on test to have Verify attributes
- 		if (foundCrons_) {
- 		   std::string msg;
- 		   t->verification(msg);
- 		   if (msg.empty()) {
- 		      return true;
- 		   }
- 		}
-
-#ifdef DEBUG_LONG_RUNNING_SUITES
-		cout << t->debugNodePath() << " completes at " << t->suite()->calendar().toString() << " level " << level_ << endl;
-#endif
-		if (!doJobSubmission(theDefs,errorMsg)) {
-			level_--;
-			return false;
-		}
 	}
 
 	level_--;
diff --git a/CSim/src/Simulator.hpp b/CSim/src/Simulator.hpp
index 1093f2a..78cba5c 100644
--- a/CSim/src/Simulator.hpp
+++ b/CSim/src/Simulator.hpp
@@ -22,6 +22,7 @@
 #include <map>
 class Defs;
 class Task;
+class Submittable;
 namespace ecf { class SimulatorVisitor;}
 
 namespace ecf {
@@ -29,18 +30,21 @@ namespace ecf {
 /// This class is used to simulate a definition file. This is use full
 /// because:
 //       a/ Save time over involving server and asking client to play definition file
-//       b/ Tells you of any parser errors in the definition file
+//       b/ Tells you about any parser errors in the definition file
 //       c/ Tells you about any deadlocks, ie if suite does not complete
 //       d/ Will simulate for both real and hybrid clocks
-//       e/ Simulation will by default run for a year.
+//       e/ Simulation will by default run for a year. Should really use start/end clock for accurate simulations
 class Simulator : private boost::noncopyable {
 public:
-	// default to run simulation for 1 year, or until suites complete if there are time dependencies 8784 =  366 X 24
-	// Otherwise will simulate for 24 hours
- 	Simulator(const boost::posix_time::time_duration& period = boost::posix_time::time_duration(8784,0,0,0));
-
- 	/// Some definition file will run forever. **NOT USED ***, kept for reference. Need a better mechanism
-  	void truncateLongRepeats(int truncateTo) { truncateLongRepeatsTo_ = truncateTo ;}
+   // For deterministic results simulate using clock(start) and endclock(finish)
+   // Otherwise default to run simulation for:
+   // No time dependencies: simulate for 24 hours
+   //    time || today // 24 hours
+   //    day           // 1 week
+   //    date          // 1 month
+   //    cron          // 1 year
+   //    repeat        // 1 year
+ 	Simulator();
 
  	/// return true if all ok else returns false;
 	bool run(Defs&, const std::string& defs_filename, std::string& errorMsg, bool do_checks = true) const;
@@ -48,14 +52,11 @@ public:
 
 private:
 
-	bool abortSimulation(const ecf::SimulatorVisitor&, const boost::posix_time::time_duration& duration,std::string& message) const;
 	bool doJobSubmission(Defs&, std::string& errorMsg) const;
+	void run_analyser(Defs& theDefs,std::string& errorMsg ) const;
 
-	mutable boost::posix_time::time_duration max_simulation_period_;
-	mutable std::map<Task*,int> taskIntMap_;
-	int truncateLongRepeatsTo_;
+	mutable std::map<Submittable*,int> taskIntMap_;
 	mutable int level_;
-	mutable bool foundCrons_;
 };
 }
 #endif /* SIMULATOR_HPP_ */
diff --git a/CSim/src/SimulatorVisitor.cpp b/CSim/src/SimulatorVisitor.cpp
index 858a982..e4191c8 100644
--- a/CSim/src/SimulatorVisitor.cpp
+++ b/CSim/src/SimulatorVisitor.cpp
@@ -20,22 +20,22 @@
 #include "Family.hpp"
 #include "Task.hpp"
 #include "Indentor.hpp"
+#include "Log.hpp"
 
 using namespace std;
 using namespace boost::gregorian;
 using namespace boost::posix_time;
 
-//#define DEBUG_VISITOR 1
-
 namespace ecf {
 
 ///////////////////////////////////////////////////////////////////////////////
-SimulatorVisitor::SimulatorVisitor(int /* truncateRepeats */)
-: /* truncateRepeats_(truncateRepeats), */
+SimulatorVisitor::SimulatorVisitor(const std::string& defs_filename)
+: defs_filename_(defs_filename),
   foundTasks_(false),
   foundCrons_(false),
   hasTimeDependencies_(false),
-  max_length_(0),
+  has_end_clock_(false),
+  max_length_(hours(24)),
   ci_(hours(1))
   {}
 
@@ -43,106 +43,60 @@ void SimulatorVisitor::visitDefs( Defs* d) {
 	BOOST_FOREACH(suite_ptr s, d->suiteVec()) { s->acceptVisitTraversor(*this); }
 }
 
-void SimulatorVisitor::visitSuite( Suite* s)   {
-
-#ifdef DEBUG_VISITOR
-	cout << "SimulatorVisitor::visitSuite " << s->debugNodePath() << "\n";
-#endif
-
+void SimulatorVisitor::visitSuite( Suite* s)
+{
 	/// begin , will cause creation of generated variables. The generated variables
-	/// are use in client scripts and used to locate the sms files.
+	/// are use in client scripts and used to locate the ecf files.
 	s->begin();
 
-	// IF the suite has no task  (i.e could consist of just limits, set suite to complete
-	// Since we rely on it for termination of tests
-	// make setting NState::COMPLETE is after begin(), which will set Node into the queued state
-  	std::vector<Task*> theTasks;
-	s->getAllTasks(theTasks);
-	if (theTasks.empty()) {
-		s->set_state(NState::COMPLETE);
-		return;
- 	}
-	foundTasks_ = true;
-
 	// Found time dependencies use calendar increment of one minute
 	if (s->hasTimeDependencies()) {
 		hasTimeDependencies_ = true;
-		ci_ = minutes(1);
 	}
 
-	// If suite has repeat day attribute( a infinite repeat), it will run forever, hence disable this for simulation purposes
-	/// reset will clear the invalid flag., when doing a real job submission.
-	/// *** this must be placed after begin() since begin() will reset all attributes() *****
-	if (s->ref_repeat().makeInfiniteInValid()) {
-		cout << "Disabling '" << s->repeat().dump() << "' attribute of " << s->debugNodePath() << ". This will allow simulation to complete earlier.\n";
-	}
-
-	if (!s->crons().empty()) {
-	   foundCrons_ = true;
-	   //cout << "Found crons on Suite\n";
+	if ( s->clockAttr() && s->clock_end_attr()) {
+	   max_length_ = s->clock_end_attr()->ptime() - s->clockAttr()->ptime();
+	   has_end_clock_ = true; // no need to determine max_length, user specfied
 	}
 
  	visitNodeContainer(s);
+
+   // IF the suite has no task  (i.e could consist of just limits, set suite to complete
+   // Since we rely on it for termination of tests
+   // make setting NState::COMPLETE is after begin(), which will set Node into the queued state
+ 	if (!foundTasks_) {
+      s->set_state(NState::COMPLETE);
+      std::stringstream ss; ss <<  "The defs file " <<  defs_filename_ << " has a suite '/" << s->suite()->name() << "' which has no tasks. Ignoring \n";
+ 	   log(Log::WAR,ss.str());
+ 	}
 }
 
 void SimulatorVisitor::visitFamily( Family* f) { visitNodeContainer(f);}
 
 void SimulatorVisitor::visitNodeContainer(NodeContainer* nc)
 {
+   if (ci_ == hours(1)) nc->get_time_resolution_for_simulation(ci_);
+   if (!has_end_clock_) nc->get_max_simulation_duration(max_length_);
+
    if (!nc->crons().empty()) {
       foundCrons_ = true;
-      cout << "Found crons on NodeContainer\n";
+      std::stringstream ss; ss  << defs_filename_ << ": Found crons on NodeContainer\n";
+      log(Log::MSG,ss.str());
    }
 
-//	analyse(nc);
 	BOOST_FOREACH(node_ptr t, nc->nodeVec()) { t->acceptVisitTraversor(*this);}
 }
 
 void SimulatorVisitor::visitTask( Task* t )
 {
+   if (ci_ == hours(1))  t->get_time_resolution_for_simulation(ci_);
+   if (!has_end_clock_)  t->get_max_simulation_duration(max_length_);
+
+   foundTasks_ = true;
+
    if (!t->crons().empty()) {
       foundCrons_ = true;
-      // cout << "Found crons on task\n";
    }
-//   analyse(t);
-}
-
-boost::posix_time::time_duration SimulatorVisitor::maxSimulationPeriod() const
-{
-	if ( hasTimeDependencies_)  return hours(max_length_);
-	return  hours(24);
 }
 
-/// Commented out, since we need to find a better mechanism of truncating long repeats
-/// without change repeat structure/attributes. (i.e need a simulation mode, with a max length
-/// that is ignored in the server.
-//void SimulatorVisitor::analyse(Node* node)
-//{
-//	if (!node->repeat().empty()) {
-//		int lengthInDays = node->repeat().length();
-//
-//#ifdef DEBUG_VISITOR
-//		cout << "SimulatorVisitor::analyse " << node->debugNodePath() << " " << node->repeat().dump() << " length = " << lengthInDays << "\n";
-//#endif
-//
-//		// **************************************************************************
-//		// ****** CAUTION: Truncate make a change to defs structure. Use with care
-//		// **************************************************************************
-//		if (truncateRepeats_ != 0  && lengthInDays > truncateRepeats_) {
-//			node->repeat_.truncate(truncateRepeats_);
-//			lengthInDays = node->repeat().length();
-//		}
-//
-//		lengthInDays *= 24; // convert to hours Day of month value
-//
-//		if ( lengthInDays > max_length_) {
-//			max_length_ = lengthInDays;
-//
-//#ifdef DEBUG_VISITOR
-//			cout << "max_length_ = " << max_length_ << " hours \n";
-//#endif
-//		}
-//	}
-//}
-
 }
diff --git a/CSim/src/SimulatorVisitor.hpp b/CSim/src/SimulatorVisitor.hpp
index 3ec2829..4b07cde 100644
--- a/CSim/src/SimulatorVisitor.hpp
+++ b/CSim/src/SimulatorVisitor.hpp
@@ -28,12 +28,10 @@ namespace ecf {
 
 class SimulatorVisitor : public NodeTreeVisitor {
 public:
-	SimulatorVisitor(int truncateRepeats);
+	SimulatorVisitor(const std::string& defs_filename);
 
-	/// If the definition file has suites with no tasks, ie they could have server limits
-	/// then for simulation purposes(i.e when all suites complete we terminate simulation)
- 	/// mark these as complete. Must be done *AFTER* beginAll() which sets all nodes to queued state
- 	bool foundTasks() const { return foundTasks_;}
+	/// If the we have crons and no endclock then show error message
+	const std::string& errors_found() const { return error_msg_;}
 
  	/// Crons run for ever. Detect them so that we can abort early
    bool foundCrons() const { return foundCrons_;}
@@ -41,12 +39,12 @@ public:
  	/// returns true if defs has time,date,today, date time based attributes
  	bool hasTimeDependencies() const { return hasTimeDependencies_;}
 
- 	/// Determine the max simulation period in hours. We will default to a years 8784 =  366 X 24
+ 	/// Determine the max simulation period in hours. We will default to a year( 8784 =  366 X 24)
  	/// However by going through and looking at the repeats, we can get a better idea
- 	boost::posix_time::time_duration maxSimulationPeriod() const;
+ 	boost::posix_time::time_duration maxSimulationPeriod() const { return max_length_;}
 
   	// default calendar increment is one minute, however if we have no time dependencies,
- 	// then simulation can be speeded up, ie by using hour increment
+ 	// then simulation can be speeded up, i.e by using hour increment
  	const boost::posix_time::time_duration& calendarIncrement() const { return ci_;}
 
 	virtual bool traverseObjectStructureViaVisitors() const { return true;}
@@ -62,10 +60,13 @@ private:
 //	void analyse(Node* node);
 //	int truncateRepeats_;  // allow for simulation to complete earlier. ***NOT USED, kept for reference *****
 
+	std::string defs_filename_;
+	std::string error_msg_;
 	bool foundTasks_;
 	bool foundCrons_;
 	bool hasTimeDependencies_;
-	int  max_length_;
+	bool has_end_clock_;
+	boost::posix_time::time_duration max_length_;
  	boost::posix_time::time_duration ci_;
 };
 
diff --git a/CSim/test/TestAnalysis.cpp b/CSim/test/TestAnalysis.cpp
index 7019550..48f9a31 100644
--- a/CSim/test/TestAnalysis.cpp
+++ b/CSim/test/TestAnalysis.cpp
@@ -18,6 +18,7 @@
 
 #include <boost/test/unit_test.hpp>
 #include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
 
 #include "Simulator.hpp"
 
@@ -32,6 +33,8 @@
 using namespace std;
 using namespace ecf;
 
+namespace fs = boost::filesystem;
+
 
 BOOST_AUTO_TEST_SUITE( SimulatorTestSuite )
 
@@ -62,7 +65,6 @@ BOOST_AUTO_TEST_CASE( test_analysys )
 
       task_ptr task2 = fam->add_task("t2");
       task2->add_trigger( "t1 == complete" );
-
       //		cout << theDefs << "\n";
    }
 
@@ -74,6 +76,10 @@ BOOST_AUTO_TEST_CASE( test_analysys )
    boost::filesystem::remove("defs.depth");
    boost::filesystem::remove("defs.flat");
 
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_analysys.def") + ".log";
+   fs::remove(logFileName);
+
    /// Destroy singleton's to avoid valgrind from complaining
    System::destroy();
 }
diff --git a/CSim/test/TestAutoCancel.cpp b/CSim/test/TestAutoCancel.cpp
index 5f60f2b..3452273 100644
--- a/CSim/test/TestAutoCancel.cpp
+++ b/CSim/test/TestAutoCancel.cpp
@@ -110,6 +110,10 @@ BOOST_AUTO_TEST_CASE( test_autocancel_ast_node_reset )
       theDefs.getAllAstNodes(theSet);
       BOOST_CHECK_MESSAGE(theSet.empty(),"Expected to have 0 AST nodes in trigger/complete expressions but found " << theSet.size());
    }
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_autocancel_ast_node_reset.def") + ".log";
+   fs::remove(logFileName);
 }
 
 
@@ -155,6 +159,10 @@ BOOST_AUTO_TEST_CASE( test_autocancel_suite )
 
    // make sure autocancel deletes the suite.
    BOOST_CHECK_MESSAGE(theDefs.suiteVec().size() == 0,"Expected to have 0 suites but found " << theDefs.suiteVec().size());
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_autocancel_suite.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_autocancel_family_and_task )
@@ -175,8 +183,6 @@ BOOST_AUTO_TEST_CASE( test_autocancel_family_and_task )
 
       task_ptr task = fam->add_task("t");
       task->addAutoCancel( ecf::AutoCancelAttr( ecf::TimeSlot(9,0), true));
-
-      //		cout << theDefs << "\n";
    }
    {
       ClockAttr clockAttr(true);
@@ -193,16 +199,20 @@ BOOST_AUTO_TEST_CASE( test_autocancel_family_and_task )
    {
       ClockAttr clockAttr(true);
       clockAttr.date(12,10,2009); // 12 October 2009 was a Monday
+      ClockAttr end_clock(true);
+      end_clock.date(14,10,2009); // 14 October 2009 was a Wednesday
+
       suite_ptr suite = theDefs.add_suite("test_autocancel_1_2_day_relative");
       suite->addClock( clockAttr );
+      suite->add_end_clock( end_clock );
 
       family_ptr fam = suite->add_family("family");
-      fam->addAutoCancel( ecf::AutoCancelAttr(2) );
+      fam->addAutoCancel( ecf::AutoCancelAttr(2) );  // 2 days
 
       task_ptr task = fam->add_task("t");
-      task->addAutoCancel( ecf::AutoCancelAttr(1) );
-      //    	cout << theDefs << "\n";
+      task->addAutoCancel( ecf::AutoCancelAttr(1) ); // 1 days
    }
+   //cout << theDefs << "\n";
 
    Simulator simulator;
    std::string errorMsg;
@@ -211,7 +221,11 @@ BOOST_AUTO_TEST_CASE( test_autocancel_family_and_task )
    // make sure autocancel deletes the families.
    std::vector<Family*> famVec;
    theDefs.getAllFamilies(famVec);
-   BOOST_CHECK_MESSAGE(famVec.size() == 0,"Expected to have 0 families but found " << famVec.size());
+   BOOST_CHECK_MESSAGE(famVec.size() == 0,"Expected to have 0 families but found " << famVec.size() << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_autocancel_family_and_task.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_autocancel_task )
@@ -265,6 +279,10 @@ BOOST_AUTO_TEST_CASE( test_autocancel_task )
 
    BOOST_CHECK_MESSAGE(famVec.size() == 3,"Expected to have 3 families but found " << famVec.size());
    BOOST_CHECK_MESSAGE(task_vec.size() == 0,"Expected to have 0 tasks but found " << task_vec.size());
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_autocancel_task.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_two_autocancel_in_hierarchy )
@@ -298,6 +316,10 @@ BOOST_AUTO_TEST_CASE( test_two_autocancel_in_hierarchy )
 
    BOOST_CHECK_MESSAGE(famVec.size() == 0,"Expected to have 0 families but found " << famVec.size());
    BOOST_CHECK_MESSAGE(task_vec.size() == 0,"Expected to have 0 tasks but found " << task_vec.size());
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_two_autocancel_in_hierarchy.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/CSim/test/TestMeter.cpp b/CSim/test/TestMeter.cpp
index 0c2687a..01a004f 100644
--- a/CSim/test/TestMeter.cpp
+++ b/CSim/test/TestMeter.cpp
@@ -100,6 +100,10 @@ BOOST_AUTO_TEST_CASE( test_meter )
 	}
 	BOOST_REQUIRE_MESSAGE(found_task ,"Failed to find task fc ");
 
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_meter.def") + ".log";
+   fs::remove(logFileName);
+
 	/// Destroy System singleton to avoid valgrind from complaining
 	System::destroy();
 }
diff --git a/CSim/test/TestRepeat.cpp b/CSim/test/TestRepeat.cpp
index 8e825ae..f6a571f 100644
--- a/CSim/test/TestRepeat.cpp
+++ b/CSim/test/TestRepeat.cpp
@@ -20,6 +20,7 @@
 #include "Family.hpp"
 #include "Task.hpp"
 #include "TestUtil.hpp"
+#include "PrintStyle.hpp"
 
 #include <boost/test/unit_test.hpp>
 #include "boost/filesystem/operations.hpp"
@@ -76,10 +77,14 @@ BOOST_AUTO_TEST_CASE( test_repeat_integer  )
  	   //		cout << theDefs << "\n";
  	}
 
+ 	PrintStyle::setStyle(PrintStyle::STATE);
  	Simulator simulator;
  	std::string errorMsg;
- 	BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_integer.def"),errorMsg),errorMsg);
-//	cout << theDefs << "\n";
+ 	BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_integer.def"),errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_integer.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_repeat_integer_relative  )
@@ -121,8 +126,11 @@ BOOST_AUTO_TEST_CASE( test_repeat_integer_relative  )
 
    Simulator simulator;
 	std::string errorMsg;
-	BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_integer_relative.def"),errorMsg),errorMsg);
-//	cout << theDefs << "\n";
+	BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_integer_relative.def"),errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_integer_relative.def") + ".log";
+   fs::remove(logFileName);
 }
 
 
@@ -160,7 +168,11 @@ BOOST_AUTO_TEST_CASE( test_repeat_date  )
 
    Simulator simulator;
 	std::string errorMsg;
-	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date.def"), errorMsg),errorMsg);
+	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date.def"), errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_date.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_repeat_date_2  )
@@ -197,7 +209,11 @@ BOOST_AUTO_TEST_CASE( test_repeat_date_2  )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date.def"), errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_date.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_repeat_date_for_loop  )
@@ -239,7 +255,11 @@ BOOST_AUTO_TEST_CASE( test_repeat_date_for_loop  )
 
    Simulator simulator;
 	std::string errorMsg;
-	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date_for_loop.def"), errorMsg),errorMsg);
+	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date_for_loop.def"), errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_date_for_loop.def") + ".log";
+   fs::remove(logFileName);
 }
 
 
@@ -284,39 +304,45 @@ BOOST_AUTO_TEST_CASE( test_repeat_date_for_loop2  )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date_for_loop2.def"), errorMsg),errorMsg);
-}
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date_for_loop2.def"), errorMsg),errorMsg << "\n" << theDefs);
 
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_date_for_loop2.def") + ".log";
+   fs::remove(logFileName);
+}
 
 BOOST_AUTO_TEST_CASE( test_repeat_with_cron  )
 {
  	cout << "Simulator:: ...test_repeat_with_cron\n";
-// 	suite s
-//    clock real <today date>
-// 	  family f
-//	     repeat date YMD 20091001  20091004 1  # yyyymmdd
-// 		family plot
-// 			complete plot/finish == complete
-//
-// 			task finish
-// 				trigger 1 == 0    # stops task from running
-// 				complete checkdata::done or checkdata == complete
-//
-// 			task checkdata
-// 				event done
-// 				cron <today date> + 2 minutes     # cron that run forever
-//      endfamily
-//   endfamily
-// endsuite
+ 	// 	suite s
+ 	//    clock real <today date>
+ 	//    endclock <today date> + 1 week
+ 	// 	  family f
+ 	//	     repeat date YMD 20091001 20091004 1  # yyyymmdd
+ 	// 		family plot
+ 	// 			complete plot/finish == complete
+ 	//
+ 	// 			task finish
+ 	// 				trigger 1 == 0    # stops task from running
+ 	// 				complete checkdata::done or checkdata == complete
+ 	//
+ 	// 			task checkdata
+ 	// 				event done
+ 	// 				cron <today date> + 2 minutes     # cron that run forever
+ 	//      endfamily
+ 	//   endfamily
+ 	// endsuite
 
    Defs theDefs;
  	{
  	 	boost::posix_time::ptime   theLocalTime =  Calendar::second_clock_time();
   	 	boost::posix_time::ptime   time_plus_2_minute =  theLocalTime +  minutes(2);
 		ClockAttr clockAttr(theLocalTime, false/* real clock*/);
+      ClockAttr end_clock(theLocalTime + hours(24*7), false/* real clock*/);
 
       suite_ptr suite = theDefs.add_suite("test_repeat_with_cron");
   		suite->addClock( clockAttr );
+      suite->add_end_clock( end_clock );
 
       family_ptr f = suite->add_family( "f" );
  		f->addRepeat( RepeatDate("YMD",20091001,20091004,1));  // repeat contents 4 times
@@ -326,7 +352,6 @@ BOOST_AUTO_TEST_CASE( test_repeat_with_cron  )
  		family_plot->add_complete(  "plot/finish ==  complete");
  		family_plot->addVerify( VerifyAttr(NState::COMPLETE,4) );
 
-
       task_ptr task_finish = family_plot->add_task("finish");
 		task_finish->add_trigger(  "1 == 0");
 		task_finish->add_complete( "checkdata:done or checkdata == complete" );
@@ -345,7 +370,11 @@ BOOST_AUTO_TEST_CASE( test_repeat_with_cron  )
 
    Simulator simulator;
 	std::string errorMsg;
-	BOOST_REQUIRE_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_with_cron.def"), errorMsg),errorMsg);
+	BOOST_REQUIRE_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_with_cron.def"), errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_with_cron.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_repeat_enumerated )
@@ -380,7 +409,7 @@ BOOST_AUTO_TEST_CASE( test_repeat_enumerated )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_enumerated.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_repeat_enumerated.def"), errorMsg),errorMsg << "\n" << theDefs);
    //	cout << theDefs << "\n";
 
 
@@ -395,6 +424,10 @@ BOOST_AUTO_TEST_CASE( test_repeat_enumerated )
       BOOST_REQUIRE_MESSAGE(repeat.value() == 3,"Expected to find repeat with value 3 but found " << repeat.value() );
       BOOST_REQUIRE_MESSAGE(repeat.last_valid_value() == 2,"Expected to find repeat with last valid value 2 but found " << repeat.last_valid_value() );
    }
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_enumerated.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_repeat_string )
@@ -428,8 +461,7 @@ BOOST_AUTO_TEST_CASE( test_repeat_string )
 
  	Simulator simulator;
  	std::string errorMsg;
- 	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_string.def"), errorMsg),errorMsg);
- 	//	cout << theDefs << "\n";
+ 	BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_string.def"), errorMsg),errorMsg << "\n" << theDefs);
 
  	std::vector<Task*> theServerTasks;
  	theDefs.getAllTasks(theServerTasks);
@@ -442,7 +474,12 @@ BOOST_AUTO_TEST_CASE( test_repeat_string )
  	   BOOST_REQUIRE_MESSAGE(repeat.value() == 2,"Expected to find repeat with value 2 but found " << repeat.value() );
       BOOST_REQUIRE_MESSAGE(repeat.last_valid_value() == 1,"Expected to find repeat with last valid value 1 but found " << repeat.last_valid_value() );
  	}
+
+   PrintStyle::setStyle(PrintStyle::DEFS);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_repeat_string.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
-
diff --git a/CSim/test/TestSimulator.cpp b/CSim/test/TestSimulator.cpp
index cf4e95f..77e6a2c 100644
--- a/CSim/test/TestSimulator.cpp
+++ b/CSim/test/TestSimulator.cpp
@@ -47,64 +47,40 @@ void simulate(const std::string& directory, bool pass)
 	fs::directory_iterator end_iter;
 	for ( fs::directory_iterator dir_itr( full_path ); dir_itr != end_iter; ++dir_itr ) {
 
-		try {
-         fs::path relPath(directory + "/" + dir_itr->path().filename().string());
-
- 			// recurse down directories
-		    if ( is_directory(dir_itr->status()) )  {
-		    	simulate(relPath.string(),pass);
-		    	continue;
-		    }
-
-		    // Only simulate file with .def file extension, i.e. ignore log files.
-// 			cout << "path = " << relPath << "\n";
-          if (File::getExt(relPath.filename().string()) != "def" && File::getExt(relPath.filename().string()) != "got") continue;
-
-//			std::cout << "...............Simulating file " << relPath.string() << "\n";
-		    Simulator simulator;
- 			std::string errorMsg;
-			bool simPass = simulator.run(relPath.string(), errorMsg);
-			if (pass) {
-				// Test expected to pass
-				BOOST_CHECK_MESSAGE(simPass,"Simulator expected to pass for " << relPath << "\n" << errorMsg);
-
-				// Compare/ create log files
-				if (simPass) {
- 					std::string logFileName = relPath.string() + ".log";
-					std::string goldenFileName = relPath.string() + ".glog";
-					BOOST_CHECK_MESSAGE(fs::exists(logFileName),"Log file " << logFileName << " should have been created");
-					if (fs::exists(goldenFileName) ) {
-
-						ofstream my_file(goldenFileName.c_str());
-						if (!my_file.good()) {
-							// read able file
-//							cout << "file " << goldenFileName << " is readable \n";
-							std::string errorMessage;
-							BOOST_CHECK_MESSAGE(LogVerification::compareNodeStates(logFileName,goldenFileName,errorMessage),
-							                    "Log file comparison failed for " << relPath.string() << "\n" << errorMessage);
- 						}
-						else {
-							// writable file, overwrite
-//							cout << "Golden file " << goldenFileName << " is writeable, overwriting\n";
-							fs::remove(goldenFileName);
-							fs::copy_file(logFileName,goldenFileName);
-						}
-					}
-					else {
-						// Create golden log file so that it can be compared next time
-						// fs::copy_file(logFileName,goldenFileName);
-					}
-				}
- 			}
-			else {
-				// test expected to fail
-				BOOST_CHECK_MESSAGE(!simPass,"Simulator expected to fail for " << relPath << "\n" << errorMsg);
- 			}
-		}
-		catch ( const std::exception & ex )
-		{
- 			std::cout << dir_itr->path().filename() << " " << ex.what() << std::endl;
-		}
+	   try {
+	      fs::path relPath(directory + "/" + dir_itr->path().filename().string());
+
+	      // recurse down directories
+	      if ( is_directory(dir_itr->status()) )  {
+	         simulate(relPath.string(),pass);
+	         continue;
+	      }
+
+	      // Only simulate file with .def file extension, i.e. ignore log files.
+	      // cout << "path = " << relPath << "\n";
+	      if (File::getExt(relPath.filename().string()) != "def" && File::getExt(relPath.filename().string()) != "got") continue;
+
+	      //std::cout << "...............Simulating file " << relPath.string() << "\n";
+	      Simulator simulator;
+	      std::string errorMsg;
+	      bool simPass = simulator.run(relPath.string(), errorMsg);
+	      if (pass) {
+	         // Test expected to pass
+	         BOOST_CHECK_MESSAGE(simPass,"Simulator expected to pass for " << relPath << "\n" << errorMsg);
+	      }
+	      else {
+	         // test expected to fail
+	         BOOST_CHECK_MESSAGE(!simPass,"Simulator expected to fail for " << relPath << "\n" << errorMsg);
+	      }
+
+	      // remove generated log file. Comment out to debug
+         std::string logFileName = relPath.string() + ".log";
+         fs::remove(logFileName);
+	   }
+	   catch ( const std::exception & ex )
+	   {
+	      std::cout << dir_itr->path().filename() << " " << ex.what() << std::endl;
+	   }
 	}
 }
 
diff --git a/CSim/test/TestSingleSimulator.cpp b/CSim/test/TestSingleSimulator.cpp
index cab24cb..eb56d39 100644
--- a/CSim/test/TestSingleSimulator.cpp
+++ b/CSim/test/TestSingleSimulator.cpp
@@ -24,6 +24,7 @@
 #include "Family.hpp"
 #include "Task.hpp"
 #include "TestUtil.hpp"
+#include "System.hpp"
 
 #include <boost/test/unit_test.hpp>
 #include "boost/filesystem/operations.hpp"
@@ -43,65 +44,62 @@ namespace fs = boost::filesystem;
 
 BOOST_AUTO_TEST_SUITE( SimulatorTestSuite )
 
-BOOST_AUTO_TEST_CASE( test_repeat_date_for_loop2  )
-{
-   cout << "Simulator:: ...test_repeat_date_for_loop2\n";
-
-   //suite suite
-   // clock real <todays date>
-   // repeat date YMD 20091001  20091005 1  # yyyymmdd
-   // family family
-   //     repeat date YMD 20091001  20091005 1  # yyyymmdd
-   //    task t
-   //       time 10:00
-   //       time 11:00
-   //    endfamily
-   //endsuite
-
-   // Each task should be run 5 * 5 * 2 = 50 times, ie every day from from 1st Oct -> 5 Oct 5*5 times * 2 time slots
-   Defs theDefs;
-   {
-      // start at specific time other wise time dependent checks will not verify
-      suite_ptr suite = theDefs.add_suite("test_repeat_date_for_loop2");
-      suite->addRepeat( RepeatDate("YMD",20091001,20091005,1));  // repeat contents 5 times
-      suite->addVerify( VerifyAttr(NState::COMPLETE,5) );
-
-      ClockAttr clockAttr;
-      clockAttr.date(1,10,2009);
-      suite->addClock( clockAttr );
-
-      family_ptr fam = suite->add_family( "family" );
-      fam->addRepeat( RepeatDate("YMD",20091001,20091005,1));  // repeat contents 5 times
-      fam->addVerify( VerifyAttr(NState::COMPLETE,25) );
-
-      task_ptr task = fam->add_task("t");
-      task->addTime( ecf::TimeAttr( TimeSlot(10,0) ) );
-      task->addTime( ecf::TimeAttr( TimeSlot(11,0) ) );
-      task->addVerify( VerifyAttr(NState::COMPLETE,50) );     // task should complete 50 times
-
-      // cout << theDefs << "\n";
-   }
-
-   Simulator simulator;
-   std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_repeat_date_for_loop2.def"), errorMsg),errorMsg);
-}
-
-
-//BOOST_AUTO_TEST_CASE( test_single_from_file  )
+//BOOST_AUTO_TEST_CASE( test_analysys )
 //{
-//   cout << "Simulator:: ...test_single_from_file\n";
+//   cout << "Simulator:: ...test_analysys\n";
+//   //suite suite
+//   // family family
+//   //    task t1
+//   //          trigger t2 == complete
+//   //    task t2
+//   //          trigger t1 == complete
+//   //    endfamily
+//   //endsuite
+//
+//   // This simulation is expected to fail, since we have a deadlock/ race condition
+//   // It will prodice a defs.depth and defs.flat files. Make sure to remove them
+//   Defs theDefs;
+//   {
+//      suite_ptr suite = theDefs.add_suite("test_analysys");
+//      family_ptr fam = suite->add_family("family");
 //
-////std::string path = File::test_data("CSim/test/data/good_defs/operations/loop.def","CSim");
-//   std::string path = File::test_data("CSim/test/data/good_defs/ECFLOW-130/radarlvl2.def","CSim");
+//      task_ptr task1 = fam->add_task("t1");
+//      task1->add_trigger( "t2 == complete" );
+//
+//      task_ptr task2 = fam->add_task("t2");
+//      task2->add_trigger( "t1 == complete" );
+//
+//      //    cout << theDefs << "\n";
+//   }
 //
 //   Simulator simulator;
 //   std::string errorMsg;
-//   bool passed = simulator.run(path, errorMsg);
+//   BOOST_CHECK_MESSAGE(!simulator.run(theDefs, TestUtil::testDataLocation("test_analysys.def") , errorMsg),errorMsg);
+//
+//   // remove generated log file. Comment out to debug
+//   std::string logFileName = TestUtil::testDataLocation("test_analysys.def") + ".log";
+//   fs::remove(logFileName);
+//
+//   // cout << theDefs << "\n";
+//   boost::filesystem::remove("defs.depth");
+//   boost::filesystem::remove("defs.flat");
 //
-//   BOOST_REQUIRE_MESSAGE(passed, path << " failed simulation \n" << errorMsg);
+//   /// Destroy singleton's to avoid valgrind from complaining
+//   System::destroy();
 //}
 
 
-BOOST_AUTO_TEST_SUITE_END()
+BOOST_AUTO_TEST_CASE( test_single_from_file  )
+{
+   cout << "Simulator:: ...test_single_from_file\n";
+
+   std::string path = File::test_data("CSim/test/data/good_defs/day/multiple_days.def","CSim");
 
+   Simulator simulator;
+   std::string errorMsg;
+   bool passed = simulator.run(path, errorMsg);
+
+   BOOST_REQUIRE_MESSAGE(passed, path << " failed simulation \n" << errorMsg);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/CSim/test/TestTime.cpp b/CSim/test/TestTime.cpp
index b38f161..d682ebf 100644
--- a/CSim/test/TestTime.cpp
+++ b/CSim/test/TestTime.cpp
@@ -78,7 +78,11 @@ BOOST_AUTO_TEST_CASE( test_time )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time.def"), errorMsg),errorMsg << "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_time.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_time_series )
@@ -114,7 +118,11 @@ BOOST_AUTO_TEST_CASE( test_time_series )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_series.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_series.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_time_series.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_time_and_date )
@@ -155,7 +163,11 @@ BOOST_AUTO_TEST_CASE( test_time_and_date )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_and_date.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_and_date.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_time_and_date.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_time_and_tomorrows_date )
@@ -164,7 +176,7 @@ BOOST_AUTO_TEST_CASE( test_time_and_tomorrows_date )
 
    //# Note: we have to use relative paths, since these tests are relocatable
    //suite suite
-   //  clock real <tomorrows date>
+   //  clock real <todays date>
    // family family
    //    task t1
    //       date  <tomorrows date>
@@ -197,7 +209,11 @@ BOOST_AUTO_TEST_CASE( test_time_and_tomorrows_date )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_and_tomorrows_date.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_time_and_tomorrows_date.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_time_and_tomorrows_date.def") + ".log";
+   fs::remove(logFileName);
 }
 
 
@@ -209,10 +225,9 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_dates )
    //suite suite
    //  clock real <todays date>
    //	family family
-   //    repeat integer 0 1 1  # repeat twice
    //   	task t1
-   //       date  <today date>
-   //       date  <tomrrows date>
+   //       date <today date>
+   //       date <tomorrows date>
    //       time <start>
    //       time <start>
    //  	endfamily
@@ -236,20 +251,21 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_dates )
 
 
       family_ptr fam = suite->add_family( "family" );
-      //fam->addRepeat( RepeatInteger("rep",0,1,1) );
       task_ptr task = fam->add_task("t");
       task->addDate( DateAttr(todaysDate.day(),todaysDate.month(),todaysDate.year()) );
       task->addDate( DateAttr(tomarrows_date.day(),tomarrows_date.month(),tomarrows_date.year()) );
       task->addTime( TimeAttr( TimeSlot(td_plus_minute) ));
       task->addTime( TimeAttr( TimeSlot(td_plus_hour) ));
       task->addVerify( VerifyAttr(NState::COMPLETE,4) );  // expect task to complete 4 time
-
-      //  	cout << theDefs << "\n";
    }
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_multiple_times_and_dates.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_multiple_times_and_dates.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_multiple_times_and_dates.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_multiple_times_and_dates_hybrid )
@@ -292,7 +308,11 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_dates_hybrid )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_dates_hybrid.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_dates_hybrid.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_multiple_times_and_dates_hybrid.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_multiple_times_and_days )
@@ -333,7 +353,11 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_days )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_days.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_days.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_multiple_times_and_days.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_multiple_times_and_days_hybrid )
@@ -341,7 +365,7 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_days_hybrid )
    cout << "Simulator:: ...test_multiple_times_and_days_hybrid\n";
 
    //suite suite
-   //  clock real <sunday>
+   //  clock hybrid <monday>
    //	family family
    //   	task t1
    //       day  monday
@@ -374,7 +398,11 @@ BOOST_AUTO_TEST_CASE( test_multiple_times_and_days_hybrid )
 
    Simulator simulator;
    std::string errorMsg;
-   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_days_hybrid.def"), errorMsg),errorMsg);
+   BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_multiple_times_and_days_hybrid.def"), errorMsg),errorMsg<< "\n" << theDefs);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_multiple_times_and_days_hybrid.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/CSim/test/TestToday.cpp b/CSim/test/TestToday.cpp
index f1a1133..9047147 100644
--- a/CSim/test/TestToday.cpp
+++ b/CSim/test/TestToday.cpp
@@ -81,6 +81,10 @@ BOOST_AUTO_TEST_CASE( test_today )
    bool result = simulator.run(theDefs, TestUtil::testDataLocation("test_today.def"), errorMsg);
 
    BOOST_CHECK_MESSAGE(result,errorMsg);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_today.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_today_time_series )
@@ -114,6 +118,10 @@ BOOST_AUTO_TEST_CASE( test_today_time_series )
    Simulator simulator;
    std::string errorMsg;
    BOOST_CHECK_MESSAGE(simulator.run(theDefs, TestUtil::testDataLocation("test_today_time_series.def") , errorMsg),errorMsg);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_today_time_series.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_CASE( test_today_time_and_date )
@@ -153,6 +161,10 @@ BOOST_AUTO_TEST_CASE( test_today_time_and_date )
    Simulator simulator;
    std::string errorMsg;
    BOOST_CHECK_MESSAGE(simulator.run(theDefs,TestUtil::testDataLocation("test_today_time_and_date.def"),errorMsg),errorMsg);
+
+   // remove generated log file. Comment out to debug
+   std::string logFileName = TestUtil::testDataLocation("test_today_time_and_date.def") + ".log";
+   fs::remove(logFileName);
 }
 
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/CSim/test/data/bad_defs/today.def b/CSim/test/data/bad_defs/today.def
index 983487e..8406cc5 100644
--- a/CSim/test/data/bad_defs/today.def
+++ b/CSim/test/data/bad_defs/today.def
@@ -1,6 +1,6 @@
 suite suiteName
    family familyName0
    		today 15:00
-   		today 23:59 00:00  00:30     # start should be less than finish
+   		today 23:59 00:00 00:30  # start should be less than finish
     endfamily
 endsuite
diff --git a/CSim/test/data/bad_defs/xde.def b/CSim/test/data/bad_defs/xde.def
deleted file mode 100644
index a2dba98..0000000
--- a/CSim/test/data/bad_defs/xde.def
+++ /dev/null
@@ -1,8 +0,0 @@
-#============================================================
-suite dfo
-  clock hybrid 0 # 09.10.2009 16:54
-endsuite
-suite dfi
-  clock hybrid 0 # 09.10.2009 16:54
-endsuite
-#============================================================
diff --git a/CSim/test/data/bad_defs/xde.def.log b/CSim/test/data/bad_defs/xde.def.log
index 772b223..39bc612 100644
--- a/CSim/test/data/bad_defs/xde.def.log
+++ b/CSim/test/data/bad_defs/xde.def.log
@@ -1,5 +1,5 @@
-LOG:[12:27:20 12.5.2016]  queued: /dfo
-LOG:[12:27:20 12.5.2016]  complete: /dfo
-LOG:[12:27:20 12.5.2016]  complete: /
-LOG:[12:27:20 12.5.2016]  queued: /dfi
-LOG:[12:27:20 12.5.2016]  complete: /dfi
+LOG:[16:25:20 3.1.2017]  queued: /dfo
+LOG:[16:25:20 3.1.2017]  complete: /dfo
+LOG:[16:25:20 3.1.2017]  complete: /
+LOG:[16:25:20 3.1.2017]  queued: /dfi
+LOG:[16:25:20 3.1.2017]  complete: /dfi
diff --git a/CSim/test/data/good_defs/ECFLOW-130/radarlvl2.def.log b/CSim/test/data/good_defs/ECFLOW-130/radarlvl2.def.log
deleted file mode 100644
index e13d22e..0000000
--- a/CSim/test/data/good_defs/ECFLOW-130/radarlvl2.def.log
+++ /dev/null
@@ -1,3131 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2_cleanup
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_ref2grb
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_reflectivity_mosaic
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  queued: /radarlvl2
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  active: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_canrad
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod/jradar_level2
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2/prod
-LOG:[12:27:19 12.5.2016]  complete: /radarlvl2
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 23:55:00
diff --git a/CSim/test/data/good_defs/SingleDefsTest/test.def.glog b/CSim/test/data/good_defs/SingleDefsTest/test.def.glog
deleted file mode 100644
index 33e7bbf..0000000
--- a/CSim/test/data/good_defs/SingleDefsTest/test.def.glog
+++ /dev/null
@@ -1,42 +0,0 @@
-LOG:[15:45:48 22.2.2011]  queued: /suite
-LOG:[15:45:48 22.2.2011]  queued: /suite/family
-LOG:[15:45:48 22.2.2011]  queued: /suite/family/t
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family/t
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family
-LOG:[15:45:48 22.2.2011]  submitted: /suite
-LOG:[15:45:48 22.2.2011]  submitted: /
-LOG:[15:45:48 22.2.2011]  active: /suite/family/t
-LOG:[15:45:48 22.2.2011]  active: /suite/family
-LOG:[15:45:48 22.2.2011]  active: /suite
-LOG:[15:45:48 22.2.2011]  active: /
-LOG:[15:45:48 22.2.2011]  complete: /suite/family/t
-LOG:[15:45:48 22.2.2011]  queued: /suite/family/t
-LOG:[15:45:48 22.2.2011]  queued: /suite/family
-LOG:[15:45:48 22.2.2011]  queued: /suite
-LOG:[15:45:48 22.2.2011]  queued: /
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family/t
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family
-LOG:[15:45:48 22.2.2011]  submitted: /suite
-LOG:[15:45:48 22.2.2011]  submitted: /
-LOG:[15:45:48 22.2.2011]  active: /suite/family/t
-LOG:[15:45:48 22.2.2011]  active: /suite/family
-LOG:[15:45:48 22.2.2011]  active: /suite
-LOG:[15:45:48 22.2.2011]  active: /
-LOG:[15:45:48 22.2.2011]  complete: /suite/family/t
-LOG:[15:45:48 22.2.2011]  queued: /suite/family/t
-LOG:[15:45:48 22.2.2011]  queued: /suite/family
-LOG:[15:45:48 22.2.2011]  queued: /suite
-LOG:[15:45:48 22.2.2011]  queued: /
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family/t
-LOG:[15:45:48 22.2.2011]  submitted: /suite/family
-LOG:[15:45:48 22.2.2011]  submitted: /suite
-LOG:[15:45:48 22.2.2011]  submitted: /
-LOG:[15:45:48 22.2.2011]  active: /suite/family/t
-LOG:[15:45:48 22.2.2011]  active: /suite/family
-LOG:[15:45:48 22.2.2011]  active: /suite
-LOG:[15:45:48 22.2.2011]  active: /
-LOG:[15:45:48 22.2.2011]  complete: /suite/family/t
-LOG:[15:45:48 22.2.2011]  complete: /suite/family
-LOG:[15:45:48 22.2.2011]  complete: /suite
-LOG:[15:45:48 22.2.2011]  complete: /
-MSG:[15:45:48 22.2.2011] Simulation complete in 00:03:00
diff --git a/CSim/test/data/good_defs/SingleDefsTest/test.def.log b/CSim/test/data/good_defs/SingleDefsTest/test.def.log
deleted file mode 100644
index 1252b74..0000000
--- a/CSim/test/data/good_defs/SingleDefsTest/test.def.log
+++ /dev/null
@@ -1,42 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  complete: /suite/family
-LOG:[12:27:19 12.5.2016]  complete: /suite
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 00:03:00
diff --git a/CSim/test/data/good_defs/cron/cron.def b/CSim/test/data/good_defs/cron/cron.def
index 6e11493..8184fce 100644
--- a/CSim/test/data/good_defs/cron/cron.def
+++ b/CSim/test/data/good_defs/cron/cron.def
@@ -1,10 +1,10 @@
-suite cron
-                         # use real clock otherwise the date wont change
+suite cron              # use real clock otherwise the date will change
    clock real 1.1.2006  # need to define a date otherwise log file content varies according to the time 
+   endclock   2.1.2006  # When to finish.
    family cronFamily
 		task t
   			 cron 10:00 20:00 01:00  
-  			 verify complete:11       # verify tasks complete 11 times. 		
+  			 verify complete:11      # verify tasks complete 11 times. 		
    endfamily
 endsuite
 
diff --git a/CSim/test/data/good_defs/cron/cron.def.log b/CSim/test/data/good_defs/cron/cron.def.log
deleted file mode 100644
index 0c12d35..0000000
--- a/CSim/test/data/good_defs/cron/cron.def.log
+++ /dev/null
@@ -1,146 +0,0 @@
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron
-LOG:[12:25:36 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron2.def b/CSim/test/data/good_defs/cron/cron2.def
index 2af3889..142b3db 100644
--- a/CSim/test/data/good_defs/cron/cron2.def
+++ b/CSim/test/data/good_defs/cron/cron2.def
@@ -1,9 +1,9 @@
-suite cron2
-                         # use real clock otherwise the date wont change
-   clock real 1.10.2009  # need to define a date otherwise log file content varies according to the time 
+suite cron2              # use real clock otherwise the date wont change
+   clock real 1.1.2017   # need to define a date otherwise log file content varies according to the time 
+   endclock   3.1.2017   # When to finish. 
    family cronFamily
 		task t
-  			 cron -w 0,1 10:00  11:00 01:00          # run every Sunday & Monday at 10 and 11 am	
+  			 cron -w 0,1 10:00 11:00 01:00          # run every Sunday & Monday at 10 and 11 am	
   			 verify complete:4                      # task should complete 16 times	
    endfamily
 endsuite
diff --git a/CSim/test/data/good_defs/cron/cron2.def.log b/CSim/test/data/good_defs/cron/cron2.def.log
deleted file mode 100644
index f2b808c..0000000
--- a/CSim/test/data/good_defs/cron/cron2.def.log
+++ /dev/null
@@ -1,55 +0,0 @@
-LOG:[12:25:36 12.5.2016]  queued: /cron2
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron2
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron2
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron2
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron2
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron2
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron2
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron2
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron2
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron2
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  submitted: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  submitted: /cron2
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  active: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  active: /cron2
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily/t
-LOG:[12:25:36 12.5.2016]  queued: /cron2/cronFamily
-LOG:[12:25:36 12.5.2016]  queued: /cron2
-LOG:[12:25:36 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron3.def b/CSim/test/data/good_defs/cron/cron3.def
index 85641e5..4708e1f 100644
--- a/CSim/test/data/good_defs/cron/cron3.def
+++ b/CSim/test/data/good_defs/cron/cron3.def
@@ -1,10 +1,10 @@
-suite cron3
-                         # use real clock otherwise the date wont change
-   clock real 1.1.2006  # need to define a date otherwise log file content varies according to the time 
+suite cron3              # use real clock otherwise the date wont change
+   clock real  1.1.2006  # need to define a date otherwise log file content varies according to the time 
+   endclock   13.1.2006  # When to finish. 
    family cronFamily
 		task t
   			 cron -d 10,11,12   10:00 11:00 01:00   # run  10,11,12 of the month at 10am and 11 am		
-          verify complete:6                      # task should complete 16 times 
+             verify complete:6                      # task should complete 6 times 
    endfamily
 endsuite
 
diff --git a/CSim/test/data/good_defs/cron/cron3.def.log b/CSim/test/data/good_defs/cron/cron3.def.log
deleted file mode 100644
index 795db58..0000000
--- a/CSim/test/data/good_defs/cron/cron3.def.log
+++ /dev/null
@@ -1,81 +0,0 @@
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  submitted: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  submitted: /cron3
-LOG:[12:27:01 12.5.2016]  submitted: /
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  active: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  active: /cron3
-LOG:[12:27:01 12.5.2016]  active: /
-LOG:[12:27:01 12.5.2016]  complete: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily/t
-LOG:[12:27:01 12.5.2016]  queued: /cron3/cronFamily
-LOG:[12:27:01 12.5.2016]  queued: /cron3
-LOG:[12:27:01 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron4.def b/CSim/test/data/good_defs/cron/cron4.def
index 629f978..935b2f2 100644
--- a/CSim/test/data/good_defs/cron/cron4.def
+++ b/CSim/test/data/good_defs/cron/cron4.def
@@ -1,6 +1,6 @@
-suite cron4
-                         # use real clock otherwise the date wont change
-   clock real 1.1.2006  # need to define a date otherwise log file content varies according to the time 
+suite cron4             # use real clock otherwise the date wont change
+   clock real 1.1.2017  # need to define a date otherwise log file content varies according to the time 
+   endclock   1.2.2017  # When to finish. 
    family cronFamily
 		task t
   			 cron -m 1   10:00 11:00 01:00   # run every day at 10 and 11 for Jan	
diff --git a/CSim/test/data/good_defs/cron/cron4.def.log b/CSim/test/data/good_defs/cron/cron4.def.log
deleted file mode 100644
index f86822f..0000000
--- a/CSim/test/data/good_defs/cron/cron4.def.log
+++ /dev/null
@@ -1,809 +0,0 @@
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  submitted: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  submitted: /cron4
-LOG:[12:27:03 12.5.2016]  submitted: /
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  active: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  active: /cron4
-LOG:[12:27:03 12.5.2016]  active: /
-LOG:[12:27:03 12.5.2016]  complete: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily/t
-LOG:[12:27:03 12.5.2016]  queued: /cron4/cronFamily
-LOG:[12:27:03 12.5.2016]  queued: /cron4
-LOG:[12:27:03 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron5.def b/CSim/test/data/good_defs/cron/cron5.def
index 6dc63d5..3594f06 100644
--- a/CSim/test/data/good_defs/cron/cron5.def
+++ b/CSim/test/data/good_defs/cron/cron5.def
@@ -1,10 +1,9 @@
-suite cron5
-                         # use real clock otherwise the date wont change
+suite cron5              # use real clock otherwise the date wont change
    clock real 1.10.2009  # need to define a date otherwise log file content varies according to the time 
+   endclock   1.11.2009  # When to finish. 
    family cronFamily
 		task t
   			 cron -w 0  -m 10   10:00 11:00 01:00   # run every sunday in October at 10 and 11am
   			 verify complete:8		                # 4 sundays in october hence expect 8 task completions
    endfamily
 endsuite
-
diff --git a/CSim/test/data/good_defs/cron/cron5.def.log b/CSim/test/data/good_defs/cron/cron5.def.log
deleted file mode 100644
index 4bda3b0..0000000
--- a/CSim/test/data/good_defs/cron/cron5.def.log
+++ /dev/null
@@ -1,107 +0,0 @@
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  submitted: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  submitted: /cron5
-LOG:[12:26:55 12.5.2016]  submitted: /
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  active: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  active: /cron5
-LOG:[12:26:55 12.5.2016]  active: /
-LOG:[12:26:55 12.5.2016]  complete: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily/t
-LOG:[12:26:55 12.5.2016]  queued: /cron5/cronFamily
-LOG:[12:26:55 12.5.2016]  queued: /cron5
-LOG:[12:26:55 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron6.def b/CSim/test/data/good_defs/cron/cron6.def
index 2dd3604..75d0e22 100644
--- a/CSim/test/data/good_defs/cron/cron6.def
+++ b/CSim/test/data/good_defs/cron/cron6.def
@@ -1,10 +1,9 @@
-suite cron6
-                         # use real clock otherwise the date wont change
-   clock real 1.1.2006  # need to define a date otherwise log file content varies according to the time 
-   family cronFamily
-		task t
-  			 cron -d 15,16  -m 1   10:00 11:00 01:00   # run 15,16 January at 10 and 11am	
-  			 verify complete:4	
+suite cron6              
+  clock real  1.1.2006 # Define a start date for deterministic simulation 
+  endclock   17.1.2006 # When to finish. Otherwise we simulate for 1 year due to cron. Ok but wasteful.
+  family cronFamily
+    task t
+  	  cron -d 15,16  -m 1 10:00 11:00 01:00  # run 15,16 January at 10 and 11am	
+      verify complete:4	
    endfamily
 endsuite
-
diff --git a/CSim/test/data/good_defs/cron/cron6.def.log b/CSim/test/data/good_defs/cron/cron6.def.log
deleted file mode 100644
index 640be5b..0000000
--- a/CSim/test/data/good_defs/cron/cron6.def.log
+++ /dev/null
@@ -1,55 +0,0 @@
-LOG:[12:27:10 12.5.2016]  queued: /cron6
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  submitted: /cron6
-LOG:[12:27:10 12.5.2016]  submitted: /
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  active: /cron6
-LOG:[12:27:10 12.5.2016]  active: /
-LOG:[12:27:10 12.5.2016]  complete: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  queued: /cron6
-LOG:[12:27:10 12.5.2016]  queued: /
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  submitted: /cron6
-LOG:[12:27:10 12.5.2016]  submitted: /
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  active: /cron6
-LOG:[12:27:10 12.5.2016]  active: /
-LOG:[12:27:10 12.5.2016]  complete: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  queued: /cron6
-LOG:[12:27:10 12.5.2016]  queued: /
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  submitted: /cron6
-LOG:[12:27:10 12.5.2016]  submitted: /
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  active: /cron6
-LOG:[12:27:10 12.5.2016]  active: /
-LOG:[12:27:10 12.5.2016]  complete: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  queued: /cron6
-LOG:[12:27:10 12.5.2016]  queued: /
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  submitted: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  submitted: /cron6
-LOG:[12:27:10 12.5.2016]  submitted: /
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  active: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  active: /cron6
-LOG:[12:27:10 12.5.2016]  active: /
-LOG:[12:27:10 12.5.2016]  complete: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily/t
-LOG:[12:27:10 12.5.2016]  queued: /cron6/cronFamily
-LOG:[12:27:10 12.5.2016]  queued: /cron6
-LOG:[12:27:10 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/cron/cron7.def b/CSim/test/data/good_defs/cron/cron7.def
index 8e47380..4001605 100644
--- a/CSim/test/data/good_defs/cron/cron7.def
+++ b/CSim/test/data/good_defs/cron/cron7.def
@@ -1,10 +1,10 @@
-suite cron7
-                        # use real clock otherwise the date wont change
-   clock real 1.1.2013  # need to define a date otherwise log file content varies according to the time 
+suite cron7             # use real clock otherwise the date wont change
+   clock real 1.1.2017  # need to define a date otherwise log file content varies according to the time 
+   endclock   1.1.2018  # When to finish. 
    family cronFamily
       task t
           cron -d 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31  -m 1,2,3,4,5,6,7,8,9,10,11,12   10:00    # run every day for a year
-          verify complete:364  
+          verify complete:365
    endfamily
 endsuite
 
diff --git a/CSim/test/data/good_defs/cron/cron7.def.log b/CSim/test/data/good_defs/cron/cron7.def.log
deleted file mode 100644
index 12ade0a..0000000
--- a/CSim/test/data/good_defs/cron/cron7.def.log
+++ /dev/null
@@ -1,4735 +0,0 @@
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  submitted: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  submitted: /cron7
-LOG:[12:25:37 12.5.2016]  submitted: /
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  active: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  active: /cron7
-LOG:[12:25:37 12.5.2016]  active: /
-LOG:[12:25:37 12.5.2016]  complete: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily/t
-LOG:[12:25:37 12.5.2016]  queued: /cron7/cronFamily
-LOG:[12:25:37 12.5.2016]  queued: /cron7
-LOG:[12:25:37 12.5.2016]  queued: /
diff --git a/CSim/test/data/good_defs/day/ECFLOW-833.def b/CSim/test/data/good_defs/day/ECFLOW-833.def
new file mode 100644
index 0000000..e2acd16
--- /dev/null
+++ b/CSim/test/data/good_defs/day/ECFLOW-833.def
@@ -0,0 +1,28 @@
+suite Icemap2_to_DB
+  clock    real 04.12.2016     # Sunday
+  endclock      09.12.2016     # Saturday, and endclock otherwise we simulate for year due to repeat.
+  repeat enumerated VARIABLE first        
+
+  family icemap
+
+    verify complete:2  # after Monday at 8am we re-queue due to future time dependency     
+    day monday
+    day thursday
+    time 08:00
+     
+    task from_Icemap2
+        verify complete:2        # task should complete twice
+
+    task load_to_DB
+        trigger from_Icemap2 == complete
+        verify complete:2        # task should complete twice
+
+    task sleep
+        trigger load_to_DB == complete
+        verify complete:2        # task should complete twice
+
+    task clean
+        trigger sleep == complete
+        verify complete:2        # task should complete twice
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/day/day.def b/CSim/test/data/good_defs/day/day.def
index a82f164..b8f2833 100644
--- a/CSim/test/data/good_defs/day/day.def
+++ b/CSim/test/data/good_defs/day/day.def
@@ -1,12 +1,12 @@
 suite suite
- 	clock real 11.10.2009             # 11 october 2009 was a sunday, task x should hold for a day
- 	family family
- 	    verify complete:1        # family should complete once
- 	   	task y
- 	   	task x
-	  		trigger ./y == complete
-	  		time 01:00
- 	        day monday
- 	        verify complete:1        # task should complete once
- 	endfamily
+ clock real 11.10.2009   # 11 October 2009 was a Sunday, task x should hold for a day
+ family family
+   verify complete:1     # family should complete once
+   task y
+   task x
+      trigger ./y == complete
+	  time 01:00
+ 	  day monday               # simulate for 1 week, due to day
+ 	  verify complete:1        # task should complete once
+ endfamily
 endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/day/day.def.log b/CSim/test/data/good_defs/day/day.def.log
deleted file mode 100644
index 547ec64..0000000
--- a/CSim/test/data/good_defs/day/day.def.log
+++ /dev/null
@@ -1,29 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/y
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/x
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/y
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/y
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/y
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/x
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/x
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/x
-LOG:[12:27:19 12.5.2016]  complete: /suite/family
-LOG:[12:27:19 12.5.2016]  complete: /suite
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 25:00:00
diff --git a/CSim/test/data/good_defs/day/hybrid_day.def b/CSim/test/data/good_defs/day/hybrid_day.def
index de8904e..2e6f9e5 100644
--- a/CSim/test/data/good_defs/day/hybrid_day.def
+++ b/CSim/test/data/good_defs/day/hybrid_day.def
@@ -1,12 +1,13 @@
 suite suite
- 	clock hybrid 11.10.2009             # 11 october 2009 was a sunday, task x should complete on begin
- 	family family
- 	   	verify complete:1
- 	   	task y
- 	   		verify complete:1
- 	   	task x
-	  		trigger ./y == complete
- 	        day monday
- 	   		verify complete:1
- 	endfamily
+  clock hybrid 11.10.2009  # 11 october 2009 was a sunday, task x should complete on begin
+  endclock     13.10.2009  # end time
+  family family
+ 	verify complete:1
+ 	task y
+ 	  verify complete:1
+ 	task x
+	  trigger ./y == complete
+ 	  day monday
+ 	  verify complete:1
+  endfamily
 endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/day/hybrid_day.def.log b/CSim/test/data/good_defs/day/hybrid_day.def.log
deleted file mode 100644
index 20a890d..0000000
--- a/CSim/test/data/good_defs/day/hybrid_day.def.log
+++ /dev/null
@@ -1,18 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/y
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/x
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/x
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/y
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/y
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/y
-LOG:[12:27:19 12.5.2016]  complete: /suite/family
-LOG:[12:27:19 12.5.2016]  complete: /suite
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/day/multiple_days.def b/CSim/test/data/good_defs/day/multiple_days.def
new file mode 100644
index 0000000..9c1132c
--- /dev/null
+++ b/CSim/test/data/good_defs/day/multiple_days.def
@@ -0,0 +1,11 @@
+suite Icemap2_to_DB
+  clock real 04.12.2016            # Sunday
+  endclock   09.12.2016            # Friday added endclock to avoid simulation for a year due to repeat
+  repeat enumerated VARIABLE first # with repeat max duration is 8760 hours, i.e 1 year
+  family icemap
+    day monday      # with 1 hour resolution, will run 24 times on Monday, will re-queue due to future day Thursday
+    day thursday    # On Thursday will run once only. End of repeat
+    task from_Icemap2
+       verify complete:25      
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/misc/liefcycle.def.log b/CSim/test/data/good_defs/misc/liefcycle.def.log
deleted file mode 100644
index ad05fee..0000000
--- a/CSim/test/data/good_defs/misc/liefcycle.def.log
+++ /dev/null
@@ -1,44 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /suite1
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family1
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family1/a
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family1/b
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family2
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family2/aa
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family2/bb
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family1/a
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family1
-LOG:[12:27:19 12.5.2016]  submitted: /suite1
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite1/family1/a
-LOG:[12:27:19 12.5.2016]  active: /suite1/family1
-LOG:[12:27:19 12.5.2016]  active: /suite1
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family2/bb
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family2
-LOG:[12:27:19 12.5.2016]  active: /suite1/family2/bb
-LOG:[12:27:19 12.5.2016]  active: /suite1/family2
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family2/bb
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family2
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family2/aa
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family2
-LOG:[12:27:19 12.5.2016]  active: /suite1/family2/aa
-LOG:[12:27:19 12.5.2016]  active: /suite1/family2
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family2/aa
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family2
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family1/a
-LOG:[12:27:19 12.5.2016]  queued: /suite1/family1
-LOG:[12:27:19 12.5.2016]  queued: /suite1
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family1/b
-LOG:[12:27:19 12.5.2016]  submitted: /suite1/family1
-LOG:[12:27:19 12.5.2016]  submitted: /suite1
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite1/family1/b
-LOG:[12:27:19 12.5.2016]  active: /suite1/family1
-LOG:[12:27:19 12.5.2016]  active: /suite1
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family1/b
-LOG:[12:27:19 12.5.2016]  complete: /suite1/family1
-LOG:[12:27:19 12.5.2016]  complete: /suite1
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/misc/liefcycle.def b/CSim/test/data/good_defs/misc/lifecycle.def
similarity index 100%
rename from CSim/test/data/good_defs/misc/liefcycle.def
rename to CSim/test/data/good_defs/misc/lifecycle.def
diff --git a/CSim/test/data/good_defs/misc/time.def b/CSim/test/data/good_defs/misc/time.def
deleted file mode 100644
index 88fd4f8..0000000
--- a/CSim/test/data/good_defs/misc/time.def
+++ /dev/null
@@ -1,8 +0,0 @@
-   suite suite
-      clock hybrid 6.11.2009 +54190
-      family family
-         task t
-            verify complete:3
-            time +00:01 00:03 00:01
-      endfamily
-   endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/misc/time.def.log b/CSim/test/data/good_defs/misc/time.def.log
deleted file mode 100644
index 1252b74..0000000
--- a/CSim/test/data/good_defs/misc/time.def.log
+++ /dev/null
@@ -1,42 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family/t
-LOG:[12:27:19 12.5.2016]  queued: /suite/family
-LOG:[12:27:19 12.5.2016]  queued: /suite
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family/t
-LOG:[12:27:19 12.5.2016]  submitted: /suite/family
-LOG:[12:27:19 12.5.2016]  submitted: /suite
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /suite/family/t
-LOG:[12:27:19 12.5.2016]  active: /suite/family
-LOG:[12:27:19 12.5.2016]  active: /suite
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /suite/family/t
-LOG:[12:27:19 12.5.2016]  complete: /suite/family
-LOG:[12:27:19 12.5.2016]  complete: /suite
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 00:03:00
diff --git a/CSim/test/data/good_defs/operations/loop.def.log b/CSim/test/data/good_defs/operations/loop.def.log
deleted file mode 100644
index 054f7b6..0000000
--- a/CSim/test/data/good_defs/operations/loop.def.log
+++ /dev/null
@@ -1,9230 +0,0 @@
-LOG:[12:27:14 12.5.2016]  complete: /limits
-LOG:[12:27:14 12.5.2016]  complete: /limits
-LOG:[12:27:14 12.5.2016]  complete: /limits
-LOG:[12:27:14 12.5.2016]  complete: /
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  queued: /admin/daily
-LOG:[12:27:14 12.5.2016]  queued: /admin
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  submitted: /admin/daily
-LOG:[12:27:14 12.5.2016]  submitted: /admin
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  active: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  active: /admin/daily
-LOG:[12:27:14 12.5.2016]  active: /admin
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check/rcp
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily/check
-LOG:[12:27:14 12.5.2016]  complete: /admin/daily
-LOG:[12:27:14 12.5.2016]  complete: /admin
-LOG:[12:27:14 12.5.2016]  complete: /
-MSG:[12:27:14 12.5.2016] Simulation complete in 95:50:00
diff --git a/CSim/test/data/good_defs/operations/mars.def.log b/CSim/test/data/good_defs/operations/mars.def.log
deleted file mode 100644
index 0de3f88..0000000
--- a/CSim/test/data/good_defs/operations/mars.def.log
+++ /dev/null
@@ -1,81 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  queued: /mars/archive
-LOG:[12:27:19 12.5.2016]  queued: /mars
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  submitted: /mars/archive
-LOG:[12:27:19 12.5.2016]  submitted: /mars
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  active: /mars/archive
-LOG:[12:27:19 12.5.2016]  active: /mars
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive/grib
-LOG:[12:27:19 12.5.2016]  complete: /mars/archive
-LOG:[12:27:19 12.5.2016]  complete: /mars
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 20:30:00
diff --git a/CSim/test/data/good_defs/operations/naw.def.log b/CSim/test/data/good_defs/operations/naw.def.log
deleted file mode 100644
index 39a4d42..0000000
--- a/CSim/test/data/good_defs/operations/naw.def.log
+++ /dev/null
@@ -1,270 +0,0 @@
-LOG:[12:27:18 12.5.2016]  queued: /weather
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/general
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/general/metgrams
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/general/equipot
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/general
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/tephi
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/tephi/rd_tephi
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/tephi/tephi
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/benson
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/chilbolton
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/husbos
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/belvoir_castle
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/york
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/welshpool
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick/newmarket
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/cabauw
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/arm_sgp
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/vocals0850W
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/vocals0750W
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  queued: /weather12
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/cabauw
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/arm_sgp
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/vocals0850W
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/vocals0750W
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/tephi/tephi
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/tephi
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/tephi/tephi
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/tephi
-LOG:[12:27:18 12.5.2016]  active: /weather/naw
-LOG:[12:27:18 12.5.2016]  active: /weather
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/getmars_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/getmars_scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather12
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw
-LOG:[12:27:18 12.5.2016]  active: /weather12
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/tephi/tephi
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/tephi
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/getdata_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/getdata_scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/benson
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/benson
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/chilbolton
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/chilbolton
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/husbos
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/husbos
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/belvoir_castle
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/belvoir_castle
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/york
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/york
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/welshpool
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/welshpool
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm_quick/newmarket
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm_quick/newmarket
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/benson
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/chilbolton
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/husbos
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/belvoir_castle
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/york
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/welshpool
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick/newmarket
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm_quick
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather/naw
-LOG:[12:27:18 12.5.2016]  active: /weather
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather/naw
-LOG:[12:27:18 12.5.2016]  active: /weather
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/cabauw
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/cabauw
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/arm_sgp
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/arm_sgp
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/cabauw
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/arm_sgp
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather/naw
-LOG:[12:27:18 12.5.2016]  active: /weather
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main/scm
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw/main
-LOG:[12:27:18 12.5.2016]  complete: /weather/naw
-LOG:[12:27:18 12.5.2016]  complete: /weather
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/getmars_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather12
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather12
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw
-LOG:[12:27:18 12.5.2016]  active: /weather12
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/getdata_scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather12
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather12
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw
-LOG:[12:27:18 12.5.2016]  active: /weather12
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/benson
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/chilbolton
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/husbos
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/belvoir_castle
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/york
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/welshpool
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/newmarket
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  queued: /weather12/naw
-LOG:[12:27:18 12.5.2016]  queued: /weather12
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  submitted: /weather12/naw
-LOG:[12:27:18 12.5.2016]  submitted: /weather12
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  active: /weather12/naw
-LOG:[12:27:18 12.5.2016]  active: /weather12
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm/web
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main/scm
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw/main
-LOG:[12:27:18 12.5.2016]  complete: /weather12/naw
-LOG:[12:27:18 12.5.2016]  complete: /weather12
-LOG:[12:27:18 12.5.2016]  complete: /
-MSG:[12:27:18 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/operations/xbe.def.log b/CSim/test/data/good_defs/operations/xbe.def.log
deleted file mode 100644
index f0fba19..0000000
--- a/CSim/test/data/good_defs/operations/xbe.def.log
+++ /dev/null
@@ -1,2149 +0,0 @@
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/setup
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/p4setup_ifs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/p4diff_ifs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifsaux
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifsaux
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/surf
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/surf/libsurf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/surf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/surf/libsurf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/trans
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/trans/libtrans
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/trans
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/trans/libtrans
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/ifs/libifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifs/libifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/wam
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/wam/libwam
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/wam
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/wam/libwam
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/compiler
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/databases
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/compiler
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ssa
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/ssa/libssa
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ssa
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ssa/libssa
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/obstat
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/obstat/libobstat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/obstat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/obstat/libobstat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/bl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/bl/libbl95
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/bl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/bl/libbl95
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/scat
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/scat/libscat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/scat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/scat/libscat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/satrad
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/satrad/libsatrad
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/satrad
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/satrad/libsatrad
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/aeolus
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/aeolus
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/prepdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/prepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/p4setup_ifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/p4diff_ifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifsaux
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/surf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/surf/libsurf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/trans
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/trans/libtrans
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ifs/libifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/wam
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/wam/libwam
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/compiler
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ssa
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/ssa/libssa
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/obstat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/obstat/libobstat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/bl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/bl/libbl95
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/scat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/scat/libscat
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/satrad
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/satrad/libsatrad
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/aeolus
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/prepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/links
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/setup
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/bins
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/bins/ifs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/bins/wamabs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/bins/mc_tools
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/bins/prepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins/ma_tools
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/const
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/const/datalinks
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/const/wconstA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/const/wconstB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/const/wconstC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const/getsst
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/getini
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/inidata_sv
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/svnh
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/svsh
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/targets
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/subspace
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv1
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv2
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv3
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv4
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv5
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/sv6
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/svnhevo
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/svshevo
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/svsave
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/sv/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/getini
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/inidata_sv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/svnh
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/svsh
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/targets
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/subspace
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv1
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv2
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv3
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv4
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv5
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/sv6
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/svnhevo
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/svshevo
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/svsave
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/sv/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/getini
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/inidata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/wavini
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/wcold
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/wavfcdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/getsvs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/getae
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/rot
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/geticp
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/000
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/000/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/001
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/001/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/002
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/002/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/003
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/003/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/004
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/004/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/005
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/005/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/006
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/006/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/007
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/007/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/008
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/008/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/009
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/009/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/010
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/010/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/011
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/011/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/012
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/012/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/013
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/013/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/014
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/014/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/015
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/015/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/016
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/016/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/017
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/017/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/018
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/018/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/019
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/019/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/020
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/020/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/021
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/021/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/022
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/022/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/023
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/023/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/024
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/024/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/025
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/025/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/026
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/026/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/027
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/027/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/028
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/028/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/029
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/029/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/030
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/030/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/031
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/031/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/032
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/032/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/033
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/033/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/034
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/034/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/035
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/035/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/036
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/036/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/037
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/037/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/038
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/038/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/039
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/039/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/040
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/040/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/041
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/041/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/042
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/042/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/043
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/043/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/044
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/044/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/045
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/045/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/046
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/046/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/047
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/047/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/048
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/048/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/049
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/049/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/050
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/050/pertinic
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/cp_pert
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/inigroup/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/intHtoLB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/intHtoLB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/modeleps
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/ensemble/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/hl
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp/ml
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp/cleanmc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/flush
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/ecfs
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/ecfs/save
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/plot
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob/plumea
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob/pb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/prob/rain
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/prob/temp
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/prob/wind
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/rain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/temp
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/wind
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/cleanvarfc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/main/fc/lag/logfiles
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/wipefdb
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/cancel
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make/setup
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make/setup
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/getini
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/inidata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/wavini
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/wcold
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/wavfcdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/getsvs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/getae
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/rot
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/geticp
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/000
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/000/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/001
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/001/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/002
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/002/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/003
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/003/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/004
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/004/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/005
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/005/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/006
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/006/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/007
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/007/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/008
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/008/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/009
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/009/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/010
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/010/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/011
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/011/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/012
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/012/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/013
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/013/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/014
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/014/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/015
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/015/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/016
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/016/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/017
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/017/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/018
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/018/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/019
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/019/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/020
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/020/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/021
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/021/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/022
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/022/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/023
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/023/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/024
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/024/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/025
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/025/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/026
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/026/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/027
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/027/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/028
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/028/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/029
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/029/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/030
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/030/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/031
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/031/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/032
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/032/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/033
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/033/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/034
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/034/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/035
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/035/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/036
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/036/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/037
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/037/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/038
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/038/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/039
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/039/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/040
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/040/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/041
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/041/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/042
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/042/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/043
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/043/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/044
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/044/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/045
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/045/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/046
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/046/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/047
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/047/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/048
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/048/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/049
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/049/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/050
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/pert_ic/050/pertinic
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/cp_pert
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/inigroup/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_1/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/intHtoLB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cv/control_2/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/cf/control/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/001/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/002/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/003/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/004/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/005/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/006/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/007/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/008/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/009/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/010/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/011/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/012/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/013/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/014/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/015/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/016/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/017/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/018/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/019/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/020/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/021/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/022/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/023/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/024/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/025/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/026/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/027/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/028/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/029/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/030/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/031/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/032/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/033/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/034/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/035/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/036/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/037/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/038/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/039/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/040/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/041/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/042/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/043/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/044/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/045/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/046/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/047/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/048/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/049/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA/getiniLeg
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legA/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legB/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/getvarepsdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/intHtoL
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/pf/050/legC/modeleps
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/ensemble/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cv/arch000/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/cf/arch000/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch001/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch002/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch003/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch004/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch005/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch006/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch007/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch008/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch009/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/sfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pt
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/pv
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/hl
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/wm_sfc_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/arch/wm_ua_arc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/pf/arch010/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp/ml
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/archive/icp/cleanmc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/flush
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/ecfs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/ecfs/save
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob/plumea
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/plot/prob/pb
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/rain
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/temp
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/prob/wind
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/cleanvarfc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc/lag/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main/fc
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/main
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/setup
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make/links
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make/links
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/links
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make/logfiles
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make/logfiles
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/setup
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/setup
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/setup
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/bins/ifs
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/bins
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/bins/ifs
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/bins
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/bins/wamabs
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/bins/wamabs
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/bins/mc_tools
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/bins/mc_tools
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/bins/prepdata
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/bins/prepdata
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/const/datalinks
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/const
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/const/datalinks
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/const
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins/ifs
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins/wamabs
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/const/wconstA
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/const/wconstA
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const/wconstA
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/const/wconstB
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/const/wconstB
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const/wconstB
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/const/wconstC
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/const/wconstC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const/wconstC
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins/mc_tools
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins/prepdata
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/bins
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const/datalinks
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/const
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make/logfiles
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make/logfiles
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make/logfiles
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc/make
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/eps_varfc
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/wipefdb
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/wipefdb
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/wipefdb
-LOG:[12:27:19 12.5.2016]  queued: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  queued: /cu9
-LOG:[12:27:19 12.5.2016]  queued: /
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d/cancel
-LOG:[12:27:19 12.5.2016]  submitted: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  submitted: /cu9
-LOG:[12:27:19 12.5.2016]  submitted: /
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d/cancel
-LOG:[12:27:19 12.5.2016]  active: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  active: /cu9
-LOG:[12:27:19 12.5.2016]  active: /
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d/cancel
-LOG:[12:27:19 12.5.2016]  complete: /cu9/a01d
-LOG:[12:27:19 12.5.2016]  complete: /cu9
-LOG:[12:27:19 12.5.2016]  complete: /
-MSG:[12:27:19 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/operations/xfi.def.log b/CSim/test/data/good_defs/operations/xfi.def.log
deleted file mode 100644
index fc20b7c..0000000
--- a/CSim/test/data/good_defs/operations/xfi.def.log
+++ /dev/null
@@ -1,609 +0,0 @@
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/InitRun
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Utilities
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Utilities/Make_gl_ecgate
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Ping_HPC
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Prepare_SMS
-LOG:[12:27:18 12.5.2016]  queued: /test_def/InitRun
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Utilities
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MARS
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MARS/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Prepare_cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Climate
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Climate/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/Boundary_strategy
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC0
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC0/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC1
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC1/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC2
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC2/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC3
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC3/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC4
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC4/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC5
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC5/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC6
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries/LBC6/hir2aro
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Observations
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Observations/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/StartData
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/StartData/Prep_ini_surfex
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/StartData/FirstGuess
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Analysis
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Analysis/AnSFC
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Analysis/AnSFC/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Analysis/AnUA
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Analysis/AnUA/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Forecasting/Forecast
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Forecasting/Archive_fc
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr0
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr0/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr1
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr1/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr2
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr2/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr3
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr3/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr4
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr4/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr5
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr5/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr6
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Extract4ver/fldextr6/Run_fldver
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Gather_extract
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp0
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp0/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp1
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp1/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp2
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp2/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp3
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp3/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp4
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp4/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp5
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp5/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp6
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Postp_family/Postp6/Postpp
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib0
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib0/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib1
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib1/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib2
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib2/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib3
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib3/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib4
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib4/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib5
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib5/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib6
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Grib_family/Grib6/Makegrib
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Cleancycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/ECMWF
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/ECMWF/Empty
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/InitRun
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/InitRun
-LOG:[12:27:18 12.5.2016]  active: /trunk_test
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Ping_HPC
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  active: /test_def/Ping_HPC
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/InitRun
-LOG:[12:27:18 12.5.2016]  queued: /trunk_test
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build
-LOG:[12:27:18 12.5.2016]  active: /trunk_test
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Utilities
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Utilities
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Utilities/Make_gl_ecgate
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Utilities/Make_gl_ecgate
-LOG:[12:27:18 12.5.2016]  submitted: /trunk_test/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  active: /trunk_test/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Utilities/Make_gl_ecgate
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Utilities
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test/Build
-LOG:[12:27:18 12.5.2016]  complete: /trunk_test
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Ping_HPC
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Prepare_SMS
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Prepare_SMS
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Prepare_SMS
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/InitRun
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/InitRun
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /test_def/InitRun
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Utilities
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Utilities
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MARS/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MARS
-LOG:[12:27:18 12.5.2016]  active: /test_def/MARS/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/MARS
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Build_pack
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Utilities/Make_gl
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Utilities/Make_monitor
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Utilities/Make_oulan
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Utilities
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Build
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Build
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  active: /test_def/Build
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Build
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Prepare_cycle
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Prepare_cycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Prepare_cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Climate/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Climate
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Climate/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Climate
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Climate/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Climate
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/Boundary_strategy
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/Boundary_strategy
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/Boundary_strategy
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC0/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC0
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC0/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC0
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC1/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC1
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC1/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC1
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC2/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC2
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC2/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC2
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC3/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC3
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC3/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC3
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC4/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC4
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC4/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC4
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC5/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC5
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC5/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC5
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC6/hir2aro
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Boundaries/LBC6
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC6/hir2aro
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Boundaries/LBC6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC0/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC0
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/StartData/Prep_ini_surfex
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/StartData
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/StartData/Prep_ini_surfex
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/StartData
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/StartData/FirstGuess
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/StartData/FirstGuess
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/StartData/Prep_ini_surfex
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/StartData/FirstGuess
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/StartData
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC1/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC1
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC2/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC2
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC3/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC3
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC4/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC4
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC5/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC5
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC6/hir2aro
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries/LBC6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Boundaries
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MARS/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MARS
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Observations/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Observations
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Observations/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Observations
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Observations/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Observations
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Analysis/AnSFC/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Analysis/AnSFC
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Analysis
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Analysis/AnSFC/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Analysis/AnSFC
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Analysis
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Analysis/AnUA/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Analysis/AnUA
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Analysis/AnUA/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Analysis/AnUA
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput/Hour
-LOG:[12:27:18 12.5.2016]  complete: /test_def/MakeCycleInput
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Analysis/AnSFC/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Analysis/AnSFC
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Analysis/AnUA/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Analysis/AnUA
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Analysis
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Forecasting/Forecast
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Forecasting/Forecast
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Forecasting/Forecast
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Forecasting/Archive_fc
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Forecasting/Archive_fc
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Forecasting/Archive_fc
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle/Forecasting
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Cycle
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Date
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Date/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  active: /test_def/Date/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date/Hour
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Date
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr0/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr0
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr0/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr0
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr1/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr1
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr1/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr1
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr2/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr2
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr2/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr2
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr3/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr3
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr3/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr3
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr4/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr4
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr4/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr4
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr5/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr5
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr5/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr5
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr6/Run_fldver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Extract4ver/fldextr6
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr6/Run_fldver
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Extract4ver/fldextr6
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp0/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp0
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp0/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp0
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp1/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp1
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp1/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp1
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp2/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp2
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp2/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp2
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp3/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp3
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp3/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp3
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp4/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp4
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp4/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp4
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp5/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp5
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp5/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp5
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp6/Postpp
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Postp_family/Postp6
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp6/Postpp
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Postp_family/Postp6
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/ECMWF/Empty
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/ECMWF
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/ECMWF/Empty
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/ECMWF
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr0/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr0
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr1/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr1
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr2/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr2
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr3/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr3
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr4/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr4
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr5/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr5
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr6/Run_fldver
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver/fldextr6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Extract4ver
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Gather_extract
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Gather_extract
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Gather_extract
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp0/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp0
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp1/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp1
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp2/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp2
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp3/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp3
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp4/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp4
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp5/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp5
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp6/Postpp
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family/Postp6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Postp_family
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib0/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib0
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib0/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib0
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib1/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib1
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib1/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib1
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib2/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib2
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib2/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib2
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib3/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib3
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib3/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib3
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib4/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib4
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib4/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib4
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib5/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib5
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib5/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib5
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib6/Makegrib
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Grib_family/Grib6
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib6/Makegrib
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Grib_family/Grib6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib0/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib0
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib1/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib1
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib2/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib2
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib3/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib3
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib4/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib4
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib5/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib5
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib6/Makegrib
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family/Grib6
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Grib_family
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Cleancycle
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Cleancycle
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Cleancycle
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/ECMWF/Empty
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/ECMWF
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  queued: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  queued: /test_def
-LOG:[12:27:18 12.5.2016]  queued: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  submitted: /test_def
-LOG:[12:27:18 12.5.2016]  submitted: /
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  active: /test_def
-LOG:[12:27:18 12.5.2016]  active: /
-LOG:[12:27:18 12.5.2016]  submitted: /test_def/Postprocessing/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  active: /test_def/Postprocessing/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/Archive_log
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour/LogProgress
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing/Hour
-LOG:[12:27:18 12.5.2016]  complete: /test_def/Postprocessing
-LOG:[12:27:18 12.5.2016]  complete: /test_def
-LOG:[12:27:18 12.5.2016]  complete: /
-MSG:[12:27:18 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/operations/xpt.def.log b/CSim/test/data/good_defs/operations/xpt.def.log
deleted file mode 100644
index 28b5b29..0000000
--- a/CSim/test/data/good_defs/operations/xpt.def.log
+++ /dev/null
@@ -1,4946 +0,0 @@
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/setup
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/p4setup_ifs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/p4diff_ifs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifsaux
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifsaux
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/surf
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/surf/libsurf
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/surf
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/surf/libsurf
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/trans
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/trans/libtrans
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/trans
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/trans/libtrans
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/ifs/libifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifs/libifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/wam
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/wam/libwam
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/wam
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/wam/libwam
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/compiler
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/databases
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/compiler
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ssa
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/ssa/libssa
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ssa
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ssa/libssa
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/obstat
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/obstat/libobstat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/obstat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/obstat/libobstat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/bl
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/bl/libbl95
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/bl
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/bl/libbl95
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/scat
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/scat/libscat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/scat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/scat/libscat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/satrad
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/satrad/libsatrad
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/satrad
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/satrad/libsatrad
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/aeolus
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/aeolus
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/prepdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/prepdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/p4setup_ifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/p4diff_ifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifsaux
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifsaux/libifsaux
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/surf
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/surf/libsurf
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/trans
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/trans/libtrans
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ifs/libifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/wam
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/wam/libwam
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/compiler
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/compiler/libodbsqlcompiler
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/CCMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/CCMA/libCCMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/ECMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/databases/ECMA/libECMA
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odb/libodb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbdummy/libodbdummy
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbmain
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbmain/libodbmain
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbport
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/odb/corelibs/odbport/libodbport
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ssa
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/ssa/libssa
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/obstat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/obstat/libobstat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/bl
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/bl/libbl95
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/scat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/scat/libscat
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/satrad
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/satrad/libsatrad
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/aeolus
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/aeolus/libaeolus
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/prepdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/libs/compile/prepdata/libprepdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/links
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/limits
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/limits
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/setup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/links
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/datalinks
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/ocsetup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/libsoc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/oclinks
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/prepdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/mc_tools
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/sc_tools
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/tools
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/octools
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/build_seasplot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/couple
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/couple/ifs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/couple/oasis
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/couple/wamabs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/const
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/const/wconst
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/control/ocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/control/forcing
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control/getcouple
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control/ocean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control/forcing
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/control/getcouple
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim/ocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim/forcing
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim/getcouple
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwcold
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwcold
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/wipefdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/cancel
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make/setup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make/setup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/setup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make/links
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make/links
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/links
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/setup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/setup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/setup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/links
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/links
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/links
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/datalinks
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/datalinks
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/datalinks
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/ocsetup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/ocsetup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/ocsetup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/libsoc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/libsoc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/libsoc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/oclinks
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/oclinks
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/oclinks
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/prepdata
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/prepdata
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/prepdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/mc_tools
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/mc_tools
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/mc_tools
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/sc_tools
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/sc_tools
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/couple/ifs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/couple
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/couple/ifs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/couple
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/couple/oasis
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/couple/oasis
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/couple/wamabs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/couple/wamabs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/sc_tools
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/couple/ifs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/couple/oasis
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/couple/wamabs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/couple
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/const/wconst
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/const
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/const/wconst
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/const
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/const/wconst
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/const
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim/ocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim/ocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/assim/ocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim/forcing
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim/forcing
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/assim/forcing
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim/getcouple
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim/getcouple
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/assim/getcouple
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/assim
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/make
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwcold
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/control0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/control0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwcold
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svevo/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/getini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svnh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/svsh
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/targets
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/subspace
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv3
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv4
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv5
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_sv/svini/sv6
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getae
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/getsvs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/ocrot
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwavini
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwcold
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/getini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/inidata
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/geticp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/000
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/006
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/007
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/008
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/009
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/010
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/011
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/012
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/013
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/014
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/015
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/016
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/017
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/018
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/019
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/021
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/022
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/023
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/024
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/025
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/026
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/027
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/028
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/029
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/030
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/031
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/032
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/033
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/034
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/035
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/036
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/037
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/038
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/039
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/040
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/041
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/042
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/043
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/044
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/045
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/046
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/047
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/048
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/049
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/050
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/001
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/002
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/003
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/004
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005/pertinic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic/005
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert/pert_ic
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/eps_pert
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/oceini
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwavini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/ocwavfcdata
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/iniatmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/oceini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/oceini
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/iniocean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/cpmodel1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/extrafields
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_sfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2/mm_ua
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/main
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/control0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/control0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/preparcoup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/arcfc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/ua_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_sfc_arc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive/mm_ua_arc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/archive
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2/saverestarts
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/restarts
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/ocflush
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/tcyc
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_oc
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_daily
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2/nino_atmos
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2/process
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/lag
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/control0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/control0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1/fc1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim1
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/saveoce
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleanfdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2/fc2
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim2
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleanfdbicp
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0/occleandirs
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0/fc0
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/assim0
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean/logfiles
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate/clean
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup/fcdate
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/coup
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/wipefdb
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/wipefdb
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/wipefdb
-LOG:[12:27:16 12.5.2016]  queued: /ptb/a020
-LOG:[12:27:16 12.5.2016]  queued: /ptb
-LOG:[12:27:16 12.5.2016]  queued: /
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020/cancel
-LOG:[12:27:16 12.5.2016]  submitted: /ptb/a020
-LOG:[12:27:16 12.5.2016]  submitted: /ptb
-LOG:[12:27:16 12.5.2016]  submitted: /
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020/cancel
-LOG:[12:27:16 12.5.2016]  active: /ptb/a020
-LOG:[12:27:16 12.5.2016]  active: /ptb
-LOG:[12:27:16 12.5.2016]  active: /
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020/cancel
-LOG:[12:27:16 12.5.2016]  complete: /ptb/a020
-LOG:[12:27:16 12.5.2016]  complete: /ptb
-LOG:[12:27:16 12.5.2016]  complete: /
-MSG:[12:27:16 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/good_defs/time/hybrid_time.def b/CSim/test/data/good_defs/time/hybrid_time.def
new file mode 100644
index 0000000..9b81391
--- /dev/null
+++ b/CSim/test/data/good_defs/time/hybrid_time.def
@@ -0,0 +1,8 @@
+suite suite
+  clock hybrid 6.11.2009 +54190
+  family family
+     task t
+        verify complete:3
+        time +00:01 00:03 00:01
+   endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/multiple_time_and_dates_hybrid.def b/CSim/test/data/good_defs/time/multiple_time_and_dates_hybrid.def
new file mode 100644
index 0000000..717d317
--- /dev/null
+++ b/CSim/test/data/good_defs/time/multiple_time_and_dates_hybrid.def
@@ -0,0 +1,11 @@
+suite suite
+  clock hybrid 5.1.2017
+  family family
+    task t1
+      date  05.01.2017
+      date  06.01.2017
+      time 10:00
+      time 11:00
+      verify complete:2  # because hybrid will be for 24 hrs only
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/multiple_time_and_days.def b/CSim/test/data/good_defs/time/multiple_time_and_days.def
new file mode 100644
index 0000000..bbb3bb7
--- /dev/null
+++ b/CSim/test/data/good_defs/time/multiple_time_and_days.def
@@ -0,0 +1,11 @@
+suite suite
+  clock real 8.1.2017    # sunday
+  family family
+     task t1
+        day  monday      # day means simulator will run for a 1 week unless endclock used
+        day  tuesday
+        time 09:00
+        time 10:00
+        verify complete:4
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/multiple_time_and_days_hybrid.def b/CSim/test/data/good_defs/time/multiple_time_and_days_hybrid.def
new file mode 100644
index 0000000..7ba1669
--- /dev/null
+++ b/CSim/test/data/good_defs/time/multiple_time_and_days_hybrid.def
@@ -0,0 +1,12 @@
+suite suite
+  clock hybrid 12.10.2010  # monday
+  family family
+    task t1
+      day  monday
+      day  tuesday
+      time 09:00
+      time 10:00
+      time 11:00
+      verify complete:3  # because hybrid will be for 24 hrs only, i.e monday
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/multiple_times_and_dates.def b/CSim/test/data/good_defs/time/multiple_times_and_dates.def
new file mode 100644
index 0000000..0a54d68
--- /dev/null
+++ b/CSim/test/data/good_defs/time/multiple_times_and_dates.def
@@ -0,0 +1,11 @@
+suite suite
+  clock real 5.1.2017
+  family family
+    task t1
+      date  05.01.2017     # date means simulator will run for a month unless endclock used
+      date  06.01.2017
+      time  13:00
+      time  14:00
+      verify complete:4
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/time.def b/CSim/test/data/good_defs/time/time.def
new file mode 100644
index 0000000..68a866e
--- /dev/null
+++ b/CSim/test/data/good_defs/time/time.def
@@ -0,0 +1,8 @@
+suite suite
+  clock real 5.1.2017        
+  family family
+     task t1
+        time 13:00       # with time attribute simulator will run for 24 hours
+        verify complete:1
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/time_and_date.def b/CSim/test/data/good_defs/time/time_and_date.def
new file mode 100644
index 0000000..74b5e56
--- /dev/null
+++ b/CSim/test/data/good_defs/time/time_and_date.def
@@ -0,0 +1,9 @@
+suite suite     
+  clock real 5.1.2017
+  family family
+    task t1
+      date 05.01.2017      # simulator will run for a month, unless endclock used
+      time 14:00
+      verify complete:1
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/time_and_tomorrows_date.def b/CSim/test/data/good_defs/time/time_and_tomorrows_date.def
new file mode 100644
index 0000000..7a8544b
--- /dev/null
+++ b/CSim/test/data/good_defs/time/time_and_tomorrows_date.def
@@ -0,0 +1,9 @@
+suite suite
+  clock real 5.1.2017
+  family family
+    task t1
+      date  06.01.2017    # date means simulator will run for a month unless endclock used
+      time  15:00
+      verify complete:1
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/time/time_series.def b/CSim/test/data/good_defs/time/time_series.def
new file mode 100644
index 0000000..bd0221b
--- /dev/null
+++ b/CSim/test/data/good_defs/time/time_series.def
@@ -0,0 +1,8 @@
+suite suite
+  clock real 12.10.2009 # 12 October 2009 was a Monday
+  family family
+     task t1                   # with time attribute simulator will run for 24 hours
+       time 00:30 23:59 04:00  # should run 6 times 00:30 4:30 8:30 12:30 16:30 20:30
+       verify complete:6
+  endfamily
+endsuite
\ No newline at end of file
diff --git a/CSim/test/data/good_defs/today/today.def b/CSim/test/data/good_defs/today/today.def
index 044ca11..c0deede 100644
--- a/CSim/test/data/good_defs/today/today.def
+++ b/CSim/test/data/good_defs/today/today.def
@@ -1,5 +1,6 @@
 suite suiteName
-   clock real 1.10.2009  # need to define a date , otherwise we start at current time, and hence test will vary
+   clock real 1.10.2009 # need to define a date , otherwise we start at current time, and hence test will vary
+   endclock  2.10.2009  # End time, otherwise will simulate for a year, when we have time dependencies
    task t1
       today 15:00                   
       verify complete:1  
diff --git a/CSim/test/data/good_defs/today/today.def.log b/CSim/test/data/good_defs/today/today.def.log
deleted file mode 100644
index 453f233..0000000
--- a/CSim/test/data/good_defs/today/today.def.log
+++ /dev/null
@@ -1,12 +0,0 @@
-LOG:[12:27:14 12.5.2016]  queued: /suiteName
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  active: /suiteName
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  complete: /suiteName
-LOG:[12:27:14 12.5.2016]  complete: /
-MSG:[12:27:14 12.5.2016] Simulation complete in 15:00:00
diff --git a/CSim/test/data/good_defs/today/today2.def b/CSim/test/data/good_defs/today/today2.def
index 48d1891..d03edb5 100644
--- a/CSim/test/data/good_defs/today/today2.def
+++ b/CSim/test/data/good_defs/today/today2.def
@@ -1,5 +1,6 @@
 suite s1
    clock real 1.10.2009  # need to define a date , otherwise we start at current time, and hence test will vary
+   endclock  2.10.2009  # End time, otherwise will simulate for a year, when we have time dependencies
    task t1                   
       today 20:00                         
       verify complete:1
diff --git a/CSim/test/data/good_defs/today/today2.def.log b/CSim/test/data/good_defs/today/today2.def.log
deleted file mode 100644
index 3bb2d88..0000000
--- a/CSim/test/data/good_defs/today/today2.def.log
+++ /dev/null
@@ -1,66 +0,0 @@
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /s1/t1
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1/t2
-LOG:[12:27:14 12.5.2016]  queued: /s1
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t1
-LOG:[12:27:14 12.5.2016]  submitted: /s1
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /s1/t1
-LOG:[12:27:14 12.5.2016]  active: /s1
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  submitted: /s1/t2
-LOG:[12:27:14 12.5.2016]  active: /s1/t2
-LOG:[12:27:14 12.5.2016]  complete: /s1/t1
-LOG:[12:27:14 12.5.2016]  complete: /s1/t2
-LOG:[12:27:14 12.5.2016]  complete: /s1
-LOG:[12:27:14 12.5.2016]  complete: /
-MSG:[12:27:14 12.5.2016] Simulation complete in 20:00:00
diff --git a/CSim/test/data/good_defs/today/today_range.def b/CSim/test/data/good_defs/today/today_range.def
index 313f19a..b1dd607 100644
--- a/CSim/test/data/good_defs/today/today_range.def
+++ b/CSim/test/data/good_defs/today/today_range.def
@@ -1,5 +1,6 @@
 suite suiteName
    clock real 1.10.2009  # need to define a date , otherwise we start at current time, and hence test will vary
+   endclock   2.10.2009  # End time, otherwise will simulate for a year, when we have time dependencies
    task t1
       today 10:00 11:00 01:00
       verify complete:2     
diff --git a/CSim/test/data/good_defs/today/today_range.def.log b/CSim/test/data/good_defs/today/today_range.def.log
deleted file mode 100644
index 1dc4960..0000000
--- a/CSim/test/data/good_defs/today/today_range.def.log
+++ /dev/null
@@ -1,62 +0,0 @@
-LOG:[12:27:14 12.5.2016]  queued: /suiteName
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  active: /suiteName
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  active: /suiteName
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  active: /suiteName
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  queued: /suiteName
-LOG:[12:27:14 12.5.2016]  queued: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName
-LOG:[12:27:14 12.5.2016]  submitted: /
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  active: /suiteName
-LOG:[12:27:14 12.5.2016]  active: /
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  submitted: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  active: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t1
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t2
-LOG:[12:27:14 12.5.2016]  complete: /suiteName/t3
-LOG:[12:27:14 12.5.2016]  complete: /suiteName
-LOG:[12:27:14 12.5.2016]  complete: /
-MSG:[12:27:14 12.5.2016] Simulation complete in 11:00:00
diff --git a/CSim/test/data/test_analysys.def.log b/CSim/test/data/test_analysys.def.log
deleted file mode 100644
index ffea4f5..0000000
--- a/CSim/test/data/test_analysys.def.log
+++ /dev/null
@@ -1,4 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_analysys
-LOG:[12:27:29 12.5.2016]  queued: /test_analysys/family
-LOG:[12:27:29 12.5.2016]  queued: /test_analysys/family/t1
-LOG:[12:27:29 12.5.2016]  queued: /test_analysys/family/t2
diff --git a/CSim/test/data/test_autocancel_ast_node_reset.def.log b/CSim/test/data/test_autocancel_ast_node_reset.def.log
deleted file mode 100644
index 5c22553..0000000
--- a/CSim/test/data/test_autocancel_ast_node_reset.def.log
+++ /dev/null
@@ -1,46 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /s1
-LOG:[12:27:20 12.5.2016]  queued: /s1/family
-LOG:[12:27:20 12.5.2016]  queued: /s1/family/t
-LOG:[12:27:20 12.5.2016]  queued: /s1/family/t2
-LOG:[12:27:20 12.5.2016]  queued: /s1/family/t3
-LOG:[12:27:20 12.5.2016]  queued: /s2
-LOG:[12:27:20 12.5.2016]  queued: /s2/family
-LOG:[12:27:20 12.5.2016]  queued: /s2/family/t
-LOG:[12:27:20 12.5.2016]  queued: /s3
-LOG:[12:27:20 12.5.2016]  queued: /s3/family
-LOG:[12:27:20 12.5.2016]  queued: /s3/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /s2/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /s2/family
-LOG:[12:27:20 12.5.2016]  submitted: /s2
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /s2/family/t
-LOG:[12:27:20 12.5.2016]  active: /s2/family
-LOG:[12:27:20 12.5.2016]  active: /s2
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /s3/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /s3/family
-LOG:[12:27:20 12.5.2016]  submitted: /s3
-LOG:[12:27:20 12.5.2016]  active: /s3/family/t
-LOG:[12:27:20 12.5.2016]  active: /s3/family
-LOG:[12:27:20 12.5.2016]  active: /s3
-LOG:[12:27:20 12.5.2016]  complete: /s2/family/t
-LOG:[12:27:20 12.5.2016]  complete: /s2/family
-LOG:[12:27:20 12.5.2016]  complete: /s2
-LOG:[12:27:20 12.5.2016]  submitted: /s1/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /s1/family
-LOG:[12:27:20 12.5.2016]  submitted: /s1
-LOG:[12:27:20 12.5.2016]  active: /s1/family/t
-LOG:[12:27:20 12.5.2016]  active: /s1/family
-LOG:[12:27:20 12.5.2016]  active: /s1
-LOG:[12:27:20 12.5.2016]  complete: /s1/family/t2
-LOG:[12:27:20 12.5.2016]  complete: /s1/family/t3
-LOG:[12:27:20 12.5.2016]  complete: /s1/family/t
-LOG:[12:27:20 12.5.2016]  complete: /s1/family
-LOG:[12:27:20 12.5.2016]  complete: /s1
-LOG:[12:27:20 12.5.2016]  complete: /s3/family/t
-LOG:[12:27:20 12.5.2016]  complete: /s3/family
-LOG:[12:27:20 12.5.2016]  complete: /s3
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] autocancel SUITE:/s2
-MSG:[12:27:20 12.5.2016] autocancel SUITE:/s3
-MSG:[12:27:20 12.5.2016] Simulation complete in 01:00:00
diff --git a/CSim/test/data/test_autocancel_family_and_task.def.log b/CSim/test/data/test_autocancel_family_and_task.def.log
deleted file mode 100644
index da86abd..0000000
--- a/CSim/test/data/test_autocancel_family_and_task.def.log
+++ /dev/null
@@ -1,46 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_9_10_hours_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_9_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_9_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_hours_real
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_hours_real/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_day_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_day_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_2_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_9_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_9_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_9_10_hours_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_9_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_9_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_9_10_hours_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_hours_real/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_hours_real
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_hours_real/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_hours_real
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_day_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_2_day_relative
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_day_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_2_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_9_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_9_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_9_10_hours_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_hours_real/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_hours_real
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_day_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_2_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_1_2_hours_real/family/t
-MSG:[12:27:20 12.5.2016] autocancel FAMILY:/test_autocancel_1_2_hours_real/family
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_9_10_hours_relative/family/t
-MSG:[12:27:20 12.5.2016] autocancel FAMILY:/test_autocancel_9_10_hours_relative/family
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_1_2_day_relative/family/t
-MSG:[12:27:20 12.5.2016] autocancel FAMILY:/test_autocancel_1_2_day_relative/family
-MSG:[12:27:20 12.5.2016] Simulation complete in 48:00:00
diff --git a/CSim/test/data/test_autocancel_suite.def.log b/CSim/test/data/test_autocancel_suite.def.log
deleted file mode 100644
index f246c0c..0000000
--- a/CSim/test/data/test_autocancel_suite.def.log
+++ /dev/null
@@ -1,43 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] autocancel SUITE:/test_autocancel_1_hours_real
-MSG:[12:27:20 12.5.2016] autocancel SUITE:/test_autocancel_10_hours_relative
-MSG:[12:27:20 12.5.2016] autocancel SUITE:/test_autocancel_1_day_relative
-MSG:[12:27:20 12.5.2016] Simulation complete in 24:00:00
diff --git a/CSim/test/data/test_autocancel_task.def.log b/CSim/test/data/test_autocancel_task.def.log
deleted file mode 100644
index 75a13ce..0000000
--- a/CSim/test/data/test_autocancel_task.def.log
+++ /dev/null
@@ -1,43 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_10_hours_relative
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_hours_real
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_autocancel_1_day_relative
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_1_hours_real/family/t
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_10_hours_relative/family/t
-MSG:[12:27:20 12.5.2016] autocancel TASK:/test_autocancel_1_day_relative/family/t
-MSG:[12:27:20 12.5.2016] Simulation complete in 24:00:00
diff --git a/CSim/test/data/test_autocancel_task_1.def.log b/CSim/test/data/test_autocancel_task_1.def.log
deleted file mode 100644
index abf5bac..0000000
--- a/CSim/test/data/test_autocancel_task_1.def.log
+++ /dev/null
@@ -1,16 +0,0 @@
-LOG:[11:16:30 24.2.2016]  queued: /test_autocancel_task_1
-LOG:[11:16:30 24.2.2016]  queued: /test_autocancel_task_1/family
-LOG:[11:16:30 24.2.2016]  queued: /test_autocancel_task_1/family/t
-LOG:[11:16:30 24.2.2016]  submitted: /test_autocancel_task_1/family/t
-LOG:[11:16:30 24.2.2016]  submitted: /test_autocancel_task_1/family
-LOG:[11:16:30 24.2.2016]  submitted: /test_autocancel_task_1
-LOG:[11:16:30 24.2.2016]  submitted: /
-LOG:[11:16:30 24.2.2016]  active: /test_autocancel_task_1/family/t
-LOG:[11:16:30 24.2.2016]  active: /test_autocancel_task_1/family
-LOG:[11:16:30 24.2.2016]  active: /test_autocancel_task_1
-LOG:[11:16:30 24.2.2016]  active: /
-LOG:[11:16:30 24.2.2016]  complete: /test_autocancel_task_1/family/t
-LOG:[11:16:30 24.2.2016]  complete: /test_autocancel_task_1/family
-LOG:[11:16:30 24.2.2016]  complete: /test_autocancel_task_1
-LOG:[11:16:30 24.2.2016]  complete: /
-MSG:[11:16:30 24.2.2016] autocancel FAMILY:/test_autocancel_task_1/family
diff --git a/CSim/test/data/test_meter.def.log b/CSim/test/data/test_meter.def.log
deleted file mode 100644
index b27048b..0000000
--- a/CSim/test/data/test_meter.def.log
+++ /dev/null
@@ -1,20 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_meter
-LOG:[12:25:35 12.5.2016]  queued: /test_meter/family
-LOG:[12:25:35 12.5.2016]  queued: /test_meter/family/fc
-LOG:[12:25:35 12.5.2016]  queued: /test_meter/family/half
-LOG:[12:25:35 12.5.2016]  submitted: /test_meter/family/fc
-LOG:[12:25:35 12.5.2016]  submitted: /test_meter/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_meter
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_meter/family/fc
-LOG:[12:25:35 12.5.2016]  active: /test_meter/family
-LOG:[12:25:35 12.5.2016]  active: /test_meter
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_meter/family/half
-LOG:[12:25:35 12.5.2016]  active: /test_meter/family/half
-LOG:[12:25:35 12.5.2016]  complete: /test_meter/family/half
-LOG:[12:25:35 12.5.2016]  complete: /test_meter/family/fc
-LOG:[12:25:35 12.5.2016]  complete: /test_meter/family
-LOG:[12:25:35 12.5.2016]  complete: /test_meter
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/test_multiple_times_and_dates.def.log b/CSim/test/data/test_multiple_times_and_dates.def.log
deleted file mode 100644
index 6c85203..0000000
--- a/CSim/test/data/test_multiple_times_and_dates.def.log
+++ /dev/null
@@ -1,55 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates/family
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 25:00:00
diff --git a/CSim/test/data/test_multiple_times_and_dates_hybrid.def.log b/CSim/test/data/test_multiple_times_and_dates_hybrid.def.log
deleted file mode 100644
index 1466f91..0000000
--- a/CSim/test/data/test_multiple_times_and_dates_hybrid.def.log
+++ /dev/null
@@ -1,31 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates_hybrid/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates_hybrid/family
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_dates_hybrid
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 00:10:00
diff --git a/CSim/test/data/test_multiple_times_and_days.def.log b/CSim/test/data/test_multiple_times_and_days.def.log
deleted file mode 100644
index f847342..0000000
--- a/CSim/test/data/test_multiple_times_and_days.def.log
+++ /dev/null
@@ -1,55 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  queued: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  active: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days/family
-LOG:[12:25:35 12.5.2016]  complete: /test_multiple_times_and_days
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 68:00:00
diff --git a/CSim/test/data/test_multiple_times_and_days_hybrid.def.log b/CSim/test/data/test_multiple_times_and_days_hybrid.def.log
deleted file mode 100644
index 06592d7..0000000
--- a/CSim/test/data/test_multiple_times_and_days_hybrid.def.log
+++ /dev/null
@@ -1,45 +0,0 @@
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  queued: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  queued: /
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  submitted: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  submitted: /
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  active: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  active: /
-LOG:[12:25:36 12.5.2016]  complete: /test_multiple_times_and_days_hybrid/family/t
-LOG:[12:25:36 12.5.2016]  complete: /test_multiple_times_and_days_hybrid/family
-LOG:[12:25:36 12.5.2016]  complete: /test_multiple_times_and_days_hybrid
-LOG:[12:25:36 12.5.2016]  complete: /
-MSG:[12:25:36 12.5.2016] Simulation complete in 20:00:00
diff --git a/CSim/test/data/test_repeat_date.def.log b/CSim/test/data/test_repeat_date.def.log
deleted file mode 100644
index f05e2e0..0000000
--- a/CSim/test/data/test_repeat_date.def.log
+++ /dev/null
@@ -1,212 +0,0 @@
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  queued: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  queued: /
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  submitted: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  submitted: /
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  active: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  active: /
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family/t
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date/family
-LOG:[12:27:21 12.5.2016]  complete: /test_repeat_date
-LOG:[12:27:21 12.5.2016]  complete: /
-MSG:[12:27:21 12.5.2016] Simulation complete in 346:00:00
diff --git a/CSim/test/data/test_repeat_date_for_loop.def.log b/CSim/test/data/test_repeat_date_for_loop.def.log
deleted file mode 100644
index d3ccb60..0000000
--- a/CSim/test/data/test_repeat_date_for_loop.def.log
+++ /dev/null
@@ -1,356 +0,0 @@
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  queued: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  queued: /
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  submitted: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  submitted: /
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  active: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  active: /
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family/t
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop/family
-LOG:[12:27:23 12.5.2016]  complete: /test_repeat_date_for_loop
-LOG:[12:27:23 12.5.2016]  complete: /
-MSG:[12:27:23 12.5.2016] Simulation complete in 530:00:00
diff --git a/CSim/test/data/test_repeat_date_for_loop2.def.log b/CSim/test/data/test_repeat_date_for_loop2.def.log
deleted file mode 100644
index fbc8d26..0000000
--- a/CSim/test/data/test_repeat_date_for_loop2.def.log
+++ /dev/null
@@ -1,681 +0,0 @@
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  queued: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  queued: /
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  submitted: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  submitted: /
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  active: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  active: /
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family/t
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2/family
-LOG:[12:27:25 12.5.2016]  complete: /test_repeat_date_for_loop2
-LOG:[12:27:25 12.5.2016]  complete: /
-MSG:[12:27:25 12.5.2016] Simulation complete in 535:00:00
diff --git a/CSim/test/data/test_repeat_enumerated.def.log b/CSim/test/data/test_repeat_enumerated.def.log
deleted file mode 100644
index 898ab42..0000000
--- a/CSim/test/data/test_repeat_enumerated.def.log
+++ /dev/null
@@ -1,44 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family/t1
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated/family
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_enumerated
-LOG:[12:27:29 12.5.2016]  complete: /
-MSG:[12:27:29 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/test_repeat_integer.def.log b/CSim/test/data/test_repeat_integer.def.log
deleted file mode 100644
index 50b8a21..0000000
--- a/CSim/test/data/test_repeat_integer.def.log
+++ /dev/null
@@ -1,75 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /suite
-LOG:[12:27:20 12.5.2016]  queued: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family
-LOG:[12:27:20 12.5.2016]  submitted: /suite
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  active: /suite/family
-LOG:[12:27:20 12.5.2016]  active: /suite
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /suite
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family
-LOG:[12:27:20 12.5.2016]  submitted: /suite
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  active: /suite/family
-LOG:[12:27:20 12.5.2016]  active: /suite
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family
-LOG:[12:27:20 12.5.2016]  complete: /suite
-LOG:[12:27:20 12.5.2016]  queued: /suite
-LOG:[12:27:20 12.5.2016]  queued: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family
-LOG:[12:27:20 12.5.2016]  submitted: /suite
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  active: /suite/family
-LOG:[12:27:20 12.5.2016]  active: /suite
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  queued: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /suite
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family
-LOG:[12:27:20 12.5.2016]  submitted: /suite
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  active: /suite/family
-LOG:[12:27:20 12.5.2016]  active: /suite
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  submitted: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  active: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t0
-LOG:[12:27:20 12.5.2016]  complete: /suite/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /suite/family
-LOG:[12:27:20 12.5.2016]  complete: /suite
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/test_repeat_integer_relative.def.log b/CSim/test/data/test_repeat_integer_relative.def.log
deleted file mode 100644
index 70f931b..0000000
--- a/CSim/test/data/test_repeat_integer_relative.def.log
+++ /dev/null
@@ -1,59 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  queued: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  queued: /
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  active: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family/t1
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative/family
-LOG:[12:27:20 12.5.2016]  complete: /test_repeat_integer_relative
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] Simulation complete in 00:08:00
diff --git a/CSim/test/data/test_repeat_string.def.log b/CSim/test/data/test_repeat_string.def.log
deleted file mode 100644
index 99550a2..0000000
--- a/CSim/test/data/test_repeat_string.def.log
+++ /dev/null
@@ -1,30 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  queued: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  active: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_string/family/t1
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_string/family
-LOG:[12:27:29 12.5.2016]  complete: /test_repeat_string
-LOG:[12:27:29 12.5.2016]  complete: /
-MSG:[12:27:29 12.5.2016] Simulation complete in 00:00:00
diff --git a/CSim/test/data/test_repeat_with_cron.def.log b/CSim/test/data/test_repeat_with_cron.def.log
deleted file mode 100644
index 3e9a515..0000000
--- a/CSim/test/data/test_repeat_with_cron.def.log
+++ /dev/null
@@ -1,104 +0,0 @@
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  submitted: /
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  active: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  queued: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  submitted: /
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  active: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  queued: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  submitted: /
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  active: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  queued: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  submitted: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  submitted: /
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  active: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  active: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  queued: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  queued: /
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/finish
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f/plot/checkdata
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron/f
-LOG:[12:27:28 12.5.2016]  complete: /test_repeat_with_cron
-LOG:[12:27:28 12.5.2016]  complete: /
-MSG:[12:27:28 12.5.2016] Simulation complete in 72:02:00
diff --git a/CSim/test/data/test_time.def.log b/CSim/test/data/test_time.def.log
deleted file mode 100644
index fef3fc0..0000000
--- a/CSim/test/data/test_time.def.log
+++ /dev/null
@@ -1,16 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_time
-LOG:[12:25:35 12.5.2016]  queued: /test_time/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time/family
-LOG:[12:25:35 12.5.2016]  active: /test_time
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_time/family
-LOG:[12:25:35 12.5.2016]  complete: /test_time
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 00:01:00
diff --git a/CSim/test/data/test_time_and_date.def.log b/CSim/test/data/test_time_and_date.def.log
deleted file mode 100644
index f9e01e0..0000000
--- a/CSim/test/data/test_time_and_date.def.log
+++ /dev/null
@@ -1,16 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_date
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_date/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_date/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_date/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_date/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_date
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_date/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_date/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_date
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_date/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_date/family
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_date
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 00:01:00
diff --git a/CSim/test/data/test_time_and_tomorrows_date.def.log b/CSim/test/data/test_time_and_tomorrows_date.def.log
deleted file mode 100644
index f7cd26c..0000000
--- a/CSim/test/data/test_time_and_tomorrows_date.def.log
+++ /dev/null
@@ -1,16 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_tomorrows_date
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_tomorrows_date/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_and_tomorrows_date/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_tomorrows_date/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_tomorrows_date/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_and_tomorrows_date
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_tomorrows_date/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_tomorrows_date/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_and_tomorrows_date
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_tomorrows_date/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_tomorrows_date/family
-LOG:[12:25:35 12.5.2016]  complete: /test_time_and_tomorrows_date
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 24:01:00
diff --git a/CSim/test/data/test_time_series.def.log b/CSim/test/data/test_time_series.def.log
deleted file mode 100644
index 8ed8fbc..0000000
--- a/CSim/test/data/test_time_series.def.log
+++ /dev/null
@@ -1,81 +0,0 @@
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  queued: /test_time_series
-LOG:[12:25:35 12.5.2016]  queued: /
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  submitted: /test_time_series
-LOG:[12:25:35 12.5.2016]  submitted: /
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  active: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  active: /test_time_series
-LOG:[12:25:35 12.5.2016]  active: /
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family/t
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series/family
-LOG:[12:25:35 12.5.2016]  complete: /test_time_series
-LOG:[12:25:35 12.5.2016]  complete: /
-MSG:[12:25:35 12.5.2016] Simulation complete in 20:30:00
diff --git a/CSim/test/data/test_today.def.log b/CSim/test/data/test_today.def.log
deleted file mode 100644
index 1e3250a..0000000
--- a/CSim/test/data/test_today.def.log
+++ /dev/null
@@ -1,29 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_today
-LOG:[12:27:29 12.5.2016]  queued: /test_today/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today/family
-LOG:[12:27:29 12.5.2016]  active: /test_today
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today/family
-LOG:[12:27:29 12.5.2016]  active: /test_today
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today/family/t
-LOG:[12:27:29 12.5.2016]  complete: /test_today/family
-LOG:[12:27:29 12.5.2016]  complete: /test_today
-LOG:[12:27:29 12.5.2016]  complete: /
-MSG:[12:27:29 12.5.2016] Simulation complete in 00:10:00
diff --git a/CSim/test/data/test_today_time_and_date.def.log b/CSim/test/data/test_today_time_and_date.def.log
deleted file mode 100644
index e7c727e..0000000
--- a/CSim/test/data/test_today_time_and_date.def.log
+++ /dev/null
@@ -1,16 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_and_date
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_and_date/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_and_date/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_and_date/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_and_date/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_and_date
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_and_date/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_and_date/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_and_date
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_and_date/family/t
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_and_date/family
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_and_date
-LOG:[12:27:29 12.5.2016]  complete: /
-MSG:[12:27:29 12.5.2016] Simulation complete in 00:01:00
diff --git a/CSim/test/data/test_today_time_series.def.log b/CSim/test/data/test_today_time_series.def.log
deleted file mode 100644
index b942ce6..0000000
--- a/CSim/test/data/test_today_time_series.def.log
+++ /dev/null
@@ -1,68 +0,0 @@
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  queued: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  queued: /
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  submitted: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  submitted: /
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  active: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  active: /
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family/t
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series/family
-LOG:[12:27:29 12.5.2016]  complete: /test_today_time_series
-LOG:[12:27:29 12.5.2016]  complete: /
-MSG:[12:27:29 12.5.2016] Simulation complete in 16:30:00
diff --git a/CSim/test/data/test_two_autocancel_in_hierarchy.def.log b/CSim/test/data/test_two_autocancel_in_hierarchy.def.log
deleted file mode 100644
index c0179d3..0000000
--- a/CSim/test/data/test_two_autocancel_in_hierarchy.def.log
+++ /dev/null
@@ -1,17 +0,0 @@
-LOG:[12:27:20 12.5.2016]  queued: /test_two_autocancel_in_hierarchy
-LOG:[12:27:20 12.5.2016]  queued: /test_two_autocancel_in_hierarchy/family
-LOG:[12:27:20 12.5.2016]  queued: /test_two_autocancel_in_hierarchy/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_two_autocancel_in_hierarchy/family/t
-LOG:[12:27:20 12.5.2016]  submitted: /test_two_autocancel_in_hierarchy/family
-LOG:[12:27:20 12.5.2016]  submitted: /test_two_autocancel_in_hierarchy
-LOG:[12:27:20 12.5.2016]  submitted: /
-LOG:[12:27:20 12.5.2016]  active: /test_two_autocancel_in_hierarchy/family/t
-LOG:[12:27:20 12.5.2016]  active: /test_two_autocancel_in_hierarchy/family
-LOG:[12:27:20 12.5.2016]  active: /test_two_autocancel_in_hierarchy
-LOG:[12:27:20 12.5.2016]  active: /
-LOG:[12:27:20 12.5.2016]  complete: /test_two_autocancel_in_hierarchy/family/t
-LOG:[12:27:20 12.5.2016]  complete: /test_two_autocancel_in_hierarchy/family
-LOG:[12:27:20 12.5.2016]  complete: /test_two_autocancel_in_hierarchy
-LOG:[12:27:20 12.5.2016]  complete: /
-MSG:[12:27:20 12.5.2016] autocancel FAMILY:/test_two_autocancel_in_hierarchy/family
-MSG:[12:27:20 12.5.2016] Simulation complete in 01:00:00
diff --git a/Client/CMakeLists.txt b/Client/CMakeLists.txt
index b677dca..8538914 100644
--- a/Client/CMakeLists.txt
+++ b/Client/CMakeLists.txt
@@ -1,11 +1,11 @@
  # =======================================================
  # LIB
  # to list all sources to build use:
- #    cd $WK/Base
+ #    cd $WK/Client
  #    find src -name \*.cpp --print
  # =======================================================
  
- # Excludes src/ClientMain.cpp
+# Excludes src/ClientMain.cpp
 list( APPEND srcs
    src/Rtt.cpp
    src/ClientEnvironment.cpp
@@ -16,28 +16,29 @@ list( APPEND srcs
 )
 ecbuild_add_library( TARGET libclient
                      NOINSTALL
-                   TYPE     STATIC
-                   SOURCES  ${srcs}
-                   LIBS     base libparser node nodeattr core 
-                            pthread
-                   INCLUDES src
-                            ../ACore/src 
-                            ../ANattr/src
-                            ../ANode/src
-                            ../AParser/src
-                            ../Base/src
-                            ../Base/src/cts
-                            ../Base/src/stc
+                     TYPE     STATIC
+                     SOURCES  ${srcs}
+                     LIBS     base libparser node nodeattr core 
+                              pthread
+                     INCLUDES src
+                              ../ACore/src 
+                              ../ANattr/src
+                              ../ANode/src
+                              ../AParser/src
+                              ../Base/src
+                              ../Base/src/cts
+                              ../Base/src/stc
                 )
 
 # ========================================================================
-# EXE ecflow_client
+# EXE ecflow_client, if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
+
 ecbuild_add_executable( TARGET   ecflow_client
                         SOURCES  src/ClientMain.cpp
-                        LIBS     libclient 
+                        LIBS     libclient ${OPENSSL_LIBRARIES}
                         INCLUDES ${Boost_INCLUDE_DIRS} 
                       )
-   
+
 # Override default behaviour that add RPATHS during install
 # The only thing that seem to work is set INSTALL_RPATH to ""
 # Using SKIP_BUILD_RPATH,BUILD_WITH_INSTALL_RPATH,INSTALL_RPATH_USE_LINK_PATH
@@ -66,45 +67,55 @@ SET_TARGET_PROPERTIES(ecflow_client PROPERTIES
 # TEST
 # Use following to populate list: 
 #  cd $WK/Client                            
-#  find test -name \*.cpp | sort                   
+#  find test -name \*.cpp | sort     
+
 list( APPEND test_srcs
- test/SCPort.cpp
- test/TestCheckPtDefsCmd.cpp
- test/TestClientEnvironment.cpp
- test/TestClientInterface.cpp
- test/TestClientInvoker.cpp
- test/TestClientTimeout.cpp
- test/TestGroupCmd.cpp
- test/TestJobGenOnly.cpp
- test/TestLifeCycle.cpp
- test/TestLoadDefsCmd.cpp
- test/TestPlugCmd.cpp
- test/TestRtt.cpp
- test/TestServer.cpp
- test/TestServerAndLifeCycle.cpp
- test/TestServerLoad.cpp
- test/TestSignalSIGTERM.cpp
- test/TestUrlCmd.cpp
- test/TestWhiteListFile.cpp
-)
+    test/TestClientEnvironment.cpp
+    test/TestClientInterface.cpp
+    test/TestJobGenOnly.cpp
+    test/TestLifeCycle.cpp
+    test/TestRtt.cpp
+    test/TestUrlCmd.cpp
+    )
+
+if (ENABLE_SERVER)
+    list(APPEND test_srcs
+        test/SCPort.cpp
+        test/TestClientInvoker.cpp
+        test/TestClientTimeout.cpp
+        test/TestFlagMigrate.cpp
+        test/TestCheckPtDefsCmd.cpp
+        test/TestGroupCmd.cpp
+        test/TestLoadDefsCmd.cpp
+        test/TestPasswdFile.cpp
+        test/TestPlugCmd.cpp
+        test/TestServer.cpp
+        test/TestServerAndLifeCycle.cpp
+        test/TestServerLoad.cpp
+        test/TestSignalSIGTERM.cpp
+        test/TestWhiteListFile.cpp
+        )
+endif()
+              
+# if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 ecbuild_add_test( TARGET    s_client
                   BOOST
                   SOURCES   ${test_srcs}
-                  LIBS      libclient 
+                  LIBS      libclient ${OPENSSL_LIBRARIES}
                   INCLUDES  ../ANode/test
                             ../Base/test 
                   TEST_DEPENDS u_base
                  )
 
 
-if (ENABLE_ALL_TESTS)
+if (ENABLE_ALL_TESTS AND ENABLE_SERVER)
 	# 
 	# Simple stand alone test
 	#
 	ecbuild_add_test( TARGET   perf_test_large_defs 
                       BOOST
                       SOURCES  test/TestSinglePerf.cpp test/SCPort.cpp
-                      LIBS     libclient 
+                      LIBS     libclient ${OPENSSL_LIBRARIES}
                       INCLUDES ../ANode/test
                                ../Base/test 
                       TEST_DEPENDS u_base
@@ -116,7 +127,7 @@ if (ENABLE_ALL_TESTS)
 	ecbuild_add_test( TARGET m_test_migration
                       BOOST
                       SOURCES  test/TestMigration.cpp test/SCPort.cpp
-                      LIBS     libclient 
+                      LIBS     libclient ${OPENSSL_LIBRARIES}
                       INCLUDES ../ANode/test
                                ../Base/test 
                       TEST_DEPENDS u_base
diff --git a/Client/Jamfile.jam b/Client/Jamfile.jam
index 3f45bab..f8c98e4 100644
--- a/Client/Jamfile.jam
+++ b/Client/Jamfile.jam
@@ -73,6 +73,7 @@ exe ecflow_client : [ glob src/*Main.cpp ]
              /site-config//boost_datetime
 	         pthread
            : <variant>debug:<define>DEBUG
+             [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
            ;
  
 #
@@ -96,6 +97,7 @@ exe s_client : [ glob test/*.cpp : test/TestSinglePerf.cpp test/TestMigration.cp
          : <include>../ANode/test 
            <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
 	     ;
 	     
 exe perf_test_large_defs : [ glob test/TestSinglePerf.cpp  ]   [ glob test/SCPort.cpp  ]
@@ -115,6 +117,7 @@ exe perf_test_large_defs : [ glob test/TestSinglePerf.cpp  ]   [ glob test/SCPor
          : <include>../ANode/test 
            <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
          ;
          
 exe m_test_migration : [ glob test/TestMigration.cpp  ]   [ glob test/SCPort.cpp  ]
@@ -134,4 +137,5 @@ exe m_test_migration : [ glob test/TestMigration.cpp  ]   [ glob test/SCPort.cpp
          : <include>../ANode/test 
            <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
          ;
\ No newline at end of file
diff --git a/Client/src/ClientEnvironment.cpp b/Client/src/ClientEnvironment.cpp
index d6c8564..0335d35 100644
--- a/Client/src/ClientEnvironment.cpp
+++ b/Client/src/ClientEnvironment.cpp
@@ -19,6 +19,8 @@
 #include <stdlib.h> // for getenv()
 
 #include "boost/foreach.hpp"
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
 
 #include "ClientEnvironment.hpp"
 #include "ClientToServerCmd.hpp"
@@ -28,7 +30,11 @@
 #include "boost_archive.hpp"
 #include "TimeStamp.hpp"
 #include "Version.hpp"
+#ifdef ECF_SECURE_USER
+#include "PasswdFile.hpp"
+#endif
 
+namespace fs = boost::filesystem;
 using namespace ecf;
 using namespace std;
 using namespace boost;
@@ -179,9 +185,9 @@ std::string ClientEnvironment::toString() const
 {
 	std::stringstream ss;
 	ss << TimeStamp::now() << Version::description() << "\n";
-	if (host_vec_.empty()) ss << "   ECF_NODE =\n   ";
+	if (host_vec_.empty()) ss << "   ECF_HOST =\n   ";
 	else  {
-		ss << "   ECF_NODE : host_vec_index_ = " << host_vec_index_ << " host_vec_.size() = " << host_vec_.size() << "\n";
+		ss << "   ECF_HOST : host_vec_index_ = " << host_vec_index_ << " host_vec_.size() = " << host_vec_.size() << "\n";
 		std::pair<std::string,std::string> i;
 		BOOST_FOREACH(i, host_vec_) { ss << "   " << i.first << Str::COLON() << i.second << "\n";}
   	}
@@ -209,10 +215,10 @@ std::string ClientEnvironment::toString() const
 
 std::string ClientEnvironment::hostSpecified()
 {
+   char* the_host = getenv(Str::ECF_HOST().c_str());
+   if (the_host)  return std::string(the_host);
 	char* theEnv = getenv(Str::ECF_NODE().c_str());
-	if (theEnv) {
-		return std::string(theEnv);
- 	}
+	if (theEnv)  return std::string(theEnv);
 	return std::string();
 }
 
@@ -225,7 +231,6 @@ std::string ClientEnvironment::portSpecified()
 	return Str::DEFAULT_PORT_NUMBER();
 }
 
-
 void ClientEnvironment::read_environment_variables()
 {
 #ifdef DEBUG_ENVIRONMENT
@@ -268,7 +273,7 @@ void ClientEnvironment::read_environment_variables()
  		host_vec_.push_back(std::make_pair(host,port));
 	}
 
-	// Add the ECF_NODE host into list of hosts. Make sure its first in host_vec_
+	// Add the ECF_HOST host into list of hosts. Make sure its first in host_vec_
 	// as we want environment setting to take priority.
  	string env_host = hostSpecified();
 	if (!env_host.empty()) {
@@ -392,3 +397,36 @@ bool ClientEnvironment::parseHostsFile(std::string& errorMsg)
 
 	return true;
 }
+
+
+const std::string& ClientEnvironment::get_user_password() const
+{
+#ifdef ECF_SECURE_USER
+   //cout << "ClientEnvironment::get_user_password() ECF_SECURE_USER passwd_(" << passwd_ << ")\n";
+   if (!passwd_.empty()) {
+      //cout << "  ClientEnvironment::get_user_password() CACHED returning " << passwd_ << "\n";
+      return passwd_;
+   }
+
+   char* file = getenv("ECF_PASSWD");
+   if (file) {
+      std::string user_passwd_file = file;
+      //cout << "  ClientEnvironment::get_user_password() ECF_PASSWD " << user_passwd_file  << "\n";
+      if (!user_passwd_file.empty() && fs::exists(user_passwd_file)) {
+         //cout << "  ClientEnvironment::get_user_password() LOADING password file\n";
+         PasswdFile passwd_file;
+         std::string errorMsg;
+         if (!passwd_file.load(user_passwd_file,debug(),errorMsg)) {
+            std::stringstream ss; ss << "Could not parse ECF_PASSWD file. " << errorMsg;
+            throw std::runtime_error(ss.str());
+         }
+         //std::cout << "ClientEnvironment::get_user_password() PasswdFile.dump()\n" << passwd_file.dump() << "\n";
+         passwd_ = passwd_file.get_passwd(UserCmd::get_user(), host(), port());
+         //cout << "  ClientEnvironment::get_user_password() returning " << passwd_ << "\n";
+         return passwd_;
+      }
+   }
+#endif
+   //cout << "  ClientEnvironment::get_user_password() returning EMPTY \n";
+   return Str::EMPTY();
+}
diff --git a/Client/src/ClientEnvironment.hpp b/Client/src/ClientEnvironment.hpp
index 536d121..f9fdd80 100644
--- a/Client/src/ClientEnvironment.hpp
+++ b/Client/src/ClientEnvironment.hpp
@@ -75,7 +75,7 @@ public:
 	/// for debug
 	std::string toString() const;
 
-	/// Return contents of ECF_NODE environment variable, Otherwise an EMPTY string
+	/// Return contents of ECF_HOST environment variable, Otherwise an EMPTY string
 	static std::string hostSpecified();
 
 	/// Returns of ECF_PORT,environment variable, otherwise returns Str::DEFAULT_PORT_NUMBER
@@ -86,6 +86,7 @@ public:
    // Needs to be the same value as supplied to child command init
    void set_remote_id(const std::string& rid) { remote_id_ = rid; }
 
+
 // AbstractClientEnv functions:
  	virtual bool checkTaskPathAndPassword(std::string& errorMsg) const;
  	virtual const std::string& task_path() const { return task_path_; }
@@ -96,6 +97,7 @@ public:
    virtual const std::string& host() const;
    virtual const std::string& port() const;
 	virtual const std::vector<std::pair<std::string,std::string> >& env() const { return env_;}
+	virtual const std::string& get_user_password() const;
 	virtual bool debug() const { return debug_;} //enabled if ECF_DEBUG_CLIENT set
    virtual void set_test() { under_test_ = true; }
    virtual bool under_test() const { return under_test_; }
@@ -122,6 +124,9 @@ private:
 	int allow_new_client_old_server_;   // the boost archive version of old server, allow new client--> old server communication
 	std::string env_ecf_new_client_old_server_;
 
+
+   mutable std::string passwd_;                  // Only used when ECF_SECURE_USER defined
+
 	/// The option read from the command line.
  	friend class ClientOptions;
 
diff --git a/Client/src/ClientInvoker.cpp b/Client/src/ClientInvoker.cpp
index 56f0df0..5ccbc77 100644
--- a/Client/src/ClientInvoker.cpp
+++ b/Client/src/ClientInvoker.cpp
@@ -29,6 +29,10 @@
 #include "DurationTimer.hpp"
 #include "TimeStamp.hpp"
 #include "Log.hpp"
+#ifdef ECF_OPENSSL
+#include "Openssl.hpp"
+#endif
+#include "PasswdFile.hpp"
 
 #ifdef DEBUG
 
@@ -73,7 +77,7 @@ ClientInvoker::ClientInvoker(const std::string& host_port)
 
 ClientInvoker::ClientInvoker(const std::string& host, const std::string& port)
 : on_error_throw_exception_(true), cli_(false), test_(false),testInterface_(false),
-  connection_attempts_(2),retry_connection_period_(RETRY_CONNECTION_PERIOD)
+  connection_attempts_(2),retry_connection_period_(RETRY_CONNECTION_PERIOD),child_task_try_no_(0)
 {
    if (clientEnv_.debug()) cout << TimeStamp::now() << "ClientInvoker::ClientInvoker(): 3=================start=================\n";
    set_host_port(host,port);
@@ -81,7 +85,7 @@ ClientInvoker::ClientInvoker(const std::string& host, const std::string& port)
 
 ClientInvoker::ClientInvoker(const std::string& host, int port)
 : on_error_throw_exception_(true), cli_(false), test_(false),testInterface_(false),
-  connection_attempts_(2),retry_connection_period_(RETRY_CONNECTION_PERIOD)
+  connection_attempts_(2),retry_connection_period_(RETRY_CONNECTION_PERIOD),child_task_try_no_(0)
 {
    if (clientEnv_.debug()) cout << TimeStamp::now() << "ClientInvoker::ClientInvoker(): 4=================start=================\n";
    set_host_port(host, boost::lexical_cast<std::string>(port));
@@ -256,7 +260,6 @@ int ClientInvoker::invoke(Cmd_ptr cts_cmd) const
    return res;
 }
 
-
 int ClientInvoker::do_invoke_cmd(Cmd_ptr cts_cmd) const
 {
 	if (clientEnv_.debug()) cout << "\n" << TimeStamp::now() << "ClientInvoker::do_invoke_cmd : on_error_throw_exception_(" << on_error_throw_exception_ << ")" << std::endl;
@@ -297,8 +300,16 @@ int ClientInvoker::do_invoke_cmd(Cmd_ptr cts_cmd) const
 					/// However this is only done, if we are not using the Command Level Interface(cli)
 					server_reply_.clear_for_invoke(cli_);
 
+					cts_cmd->setup_user_authentification( clientEnv_ );
+
 					boost::asio::io_service io_service;
-					Client theClient( io_service, cts_cmd , clientEnv_.host(), clientEnv_.port(), clientEnv_.connect_timeout() );
+#ifdef ECF_OPENSSL
+				   boost::asio::ssl::context ctx(ecf::Openssl::method());
+				   ctx.load_verify_file(ecf::Openssl::certificates_dir() + "server.crt");
+	            Client theClient(io_service,ctx,cts_cmd,clientEnv_.host(),clientEnv_.port(),clientEnv_.connect_timeout() );
+#else
+	            Client theClient(io_service,cts_cmd,clientEnv_.host(),clientEnv_.port(),clientEnv_.connect_timeout());
+#endif
 					if (clientEnv_.allow_new_client_old_server() != 0) theClient.allow_new_client_old_server(clientEnv_.allow_new_client_old_server());
 					io_service.run();
 					if (clientEnv_.debug()) cout << TimeStamp::now() << "ClientInvoker: >>> After: io_service.run() <<<" << endl;;
@@ -968,6 +979,13 @@ int ClientInvoker::reloadwsfile() const
    if (testInterface_) return invoke(CtsApi::reloadwsfile());
    return invoke(Cmd_ptr(new CtsCmd( CtsCmd::RELOAD_WHITE_LIST_FILE )));
 }
+
+int ClientInvoker::reloadpasswdfile() const
+{
+   if (testInterface_) return invoke(CtsApi::reloadpasswdfile());
+   return invoke(Cmd_ptr(new CtsCmd( CtsCmd::RELOAD_PASSWD_FILE )));
+}
+
 int ClientInvoker::group( const std::string& groupRequest ) const
 {
    if (testInterface_)  return invoke(CtsApi::group(groupRequest));
diff --git a/Client/src/ClientInvoker.hpp b/Client/src/ClientInvoker.hpp
index 4de7468..3340636 100644
--- a/Client/src/ClientInvoker.hpp
+++ b/Client/src/ClientInvoker.hpp
@@ -43,6 +43,9 @@ public:
    ClientInvoker(const std::string& host, const std::string& port);
    ClientInvoker(const std::string& host, int port);
 
+   /// for debug allow the current client environment to be printed
+   std::string to_string() const { return clientEnv_.toString();}
+
 	/// if throw_exception_on_error = false, then
 	///    invoke() will return 0 for success and 1 for error.
 	///    The error message can be retrieved from errorMsg()
@@ -276,6 +279,8 @@ public:
              const std::string& value = "") const { return invoke(CtsApi::alter(path,alterType,attrType,name,value)); }
 
 	int reloadwsfile() const;
+	int reloadpasswdfile() const;
+
 	int group(const std::string& groupRequest) const;
 
 	int logMsg(const std::string& msg) const;
diff --git a/Client/src/ClientOptions.cpp b/Client/src/ClientOptions.cpp
index 0825cc5..200189b 100644
--- a/Client/src/ClientOptions.cpp
+++ b/Client/src/ClientOptions.cpp
@@ -56,7 +56,7 @@ ClientOptions::ClientOptions()
    desc_->add_options()("port",po::value< string >()->implicit_value( string("") ),
             "port: If specified will override the environment variable ECF_PORT and default port number of 3141");
    desc_->add_options()("host",po::value< string >()->implicit_value( string("") ),
-            "host: If specified will override the environment variable ECF_NODE and default host, localhost");
+            "host: If specified will override the environment variable ECF_HOST and default host, localhost");
 }
 
 ClientOptions::~ClientOptions()
@@ -100,9 +100,9 @@ Cmd_ptr ClientOptions::parse(int argc, char* argv[],ClientEnvironment* env) cons
       if (env->debug())  std::cout << "   host " << host << " overridden at the command line\n";
    }
    if (!host.empty() || !port.empty()) {
-      if (host.empty()) host = env->hostSpecified();       // get the environment variable ECF_NODE
-      if (port.empty()) port = env->portSpecified();       // get the environment variable ECF_PORT
-      if (host.empty()) host = Str::LOCALHOST();           // if ECF_NODE not specified default to localhost
+      if (host.empty()) host = env->hostSpecified();       // get the environment variable ECF_HOST
+      if (port.empty()) port = env->portSpecified();       // get the environment variable ECF_PORT || Str::DEFAULT_PORT_NUMBER()
+      if (host.empty()) host = Str::LOCALHOST();           // if ECF_HOST not specified default to localhost
       if (port.empty()) port = Str::DEFAULT_PORT_NUMBER(); // if ECF_PORT not specified use default
       env->set_host_port(host,port);
    }
@@ -290,11 +290,11 @@ const char* client_env_description() {
             "|----------|----------|------------|-------------------------------------------------------------------|\n"
             "| Name     |  Type    | Required   | Description                                                       |\n"
             "|----------|----------|------------|-------------------------------------------------------------------|\n"
-            "| ECF_NODE | <string> | Mandatory* | The host name of the main server. defaults to 'localhost'         |\n"
+            "| ECF_HOST | <string> | Mandatory* | The host name of the main server. defaults to 'localhost'         |\n"
             "| ECF_PORT |  <int>   | Mandatory* | The TCP/IP port to call on the server. Must be unique to a server |\n"
             "|----------|----------|------------|-------------------------------------------------------------------|\n\n"
             "* The host and port must be specified in order for the client to communicate with the server, this can \n"
-            "  be done by setting ECF_NODE, ECF_PORT or by specifying --host=<host> --port=<int> on the command line\n"
+            "  be done by setting ECF_HOST, ECF_PORT or by specifying --host=<host> --port=<int> on the command line\n"
             ;
 }
 
diff --git a/Client/test/SCPort.cpp b/Client/test/SCPort.cpp
index e97c8b0..886b16c 100644
--- a/Client/test/SCPort.cpp
+++ b/Client/test/SCPort.cpp
@@ -18,6 +18,8 @@
 #include "SCPort.hpp"
 #include "EcfPortLock.hpp"
 #include "ClientInvoker.hpp"
+#include "ClientEnvironment.hpp"
+#include "Str.hpp"
 
 namespace ecf {
 
@@ -33,17 +35,15 @@ int SCPort::thePort_ = 3142;
 
 std::string SCPort::next()
 {
-   std::string host;
-   char* ecf_host = getenv("ECF_NODE");
-   if ( ecf_host )  host = ecf_host;
-   if ( host == "localhost" ) {
+   std::string host = ClientEnvironment::hostSpecified();
+   if ( host == Str::LOCALHOST() ) {
 
       std::string port;
       char* ecf_port = getenv("ECF_PORT");
       if ( ecf_port )  port = ecf_port;
       if (!port.empty()) {
 
-         //std::cout << "SCPort::next() ECF_NODE(" << host << ") ECF_PORT(" << port << ")\n";
+         //std::cout << "SCPort::next() ECF_HOST(" << host << ") ECF_PORT(" << port << ")\n";
          return port;
       }
    }
diff --git a/Client/test/TestCheckPtDefsCmd.cpp b/Client/test/TestCheckPtDefsCmd.cpp
index f40cef5..3852fea 100644
--- a/Client/test/TestCheckPtDefsCmd.cpp
+++ b/Client/test/TestCheckPtDefsCmd.cpp
@@ -144,10 +144,10 @@ BOOST_AUTO_TEST_CASE( test_restore_from_check_pt )
 
 BOOST_AUTO_TEST_CASE( test_restore_from_check_pt_using_new_server )
 {
-   // This test relies on a NEW server invocation. Hence if ECF_NODE/remote server is used
+   // This test relies on a NEW server invocation. Hence if ECF_HOST/remote server is used
    // the test will will invalid. hence ignore.
    if (!ClientEnvironment::hostSpecified().empty()) {
-      cout << "Client:: ...test_restore_from_check_pt_using_new_server: ignoring test when ECF_NODE specified\n";
+      cout << "Client:: ...test_restore_from_check_pt_using_new_server: ignoring test when ECF_HOST specified\n";
       return;
    }
 
@@ -190,10 +190,10 @@ BOOST_AUTO_TEST_CASE( test_restore_from_check_pt_using_new_server )
 
 BOOST_AUTO_TEST_CASE( test_check_pt_edit_history )
 {
-   // This test relies on a NEW server invocation. Hence if ECF_NODE/remote server is used
+   // This test relies on a NEW server invocation. Hence if ECF_HOST/remote server is used
    // the test will will invalid. hence ignore.
    if (!ClientEnvironment::hostSpecified().empty()) {
-      cout << "Client:: ...test_check_pt_edit_history: ignoring test when ECF_NODE specified\n";
+      cout << "Client:: ...test_check_pt_edit_history: ignoring test when ECF_HOST specified\n";
       return;
    }
 
diff --git a/Client/test/TestClientEnvironment.cpp b/Client/test/TestClientEnvironment.cpp
index 4e1da3a..d2be282 100644
--- a/Client/test/TestClientEnvironment.cpp
+++ b/Client/test/TestClientEnvironment.cpp
@@ -1,3 +1,4 @@
+#define BOOST_TEST_MODULE TestClient
 //============================================================================
 // Name        :
 // Author      : Avi
diff --git a/Client/test/TestClientInterface.cpp b/Client/test/TestClientInterface.cpp
index 6d0e593..c75797b 100644
--- a/Client/test/TestClientInterface.cpp
+++ b/Client/test/TestClientInterface.cpp
@@ -96,6 +96,8 @@ BOOST_AUTO_TEST_CASE( test_client_interface )
    BOOST_REQUIRE_MESSAGE( theClient.job_gen("") == 0,CtsApi::job_gen("") << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.job_gen("/s") == 0,CtsApi::job_gen("/s") << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.check("") == 0,CtsApi::to_string(CtsApi::check("")) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.check("/") == 0,CtsApi::to_string(CtsApi::check("/")) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.check("_all_") == 0,CtsApi::to_string(CtsApi::check("_all_")) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.check("/s") == 0,CtsApi::to_string(CtsApi::check("/s")) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.check(paths) == 0,CtsApi::to_string(CtsApi::check(paths)) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.kill("/s") == 0,CtsApi::to_string(CtsApi::kill("/s")) << " should return 0\n" << theClient.errorMsg());
@@ -110,6 +112,9 @@ BOOST_AUTO_TEST_CASE( test_client_interface )
 
    // empty string should be same as delete all
    BOOST_REQUIRE_MESSAGE( theClient.delete_node("") == 0,CtsApi::to_string(CtsApi::delete_node()) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.delete_node("_all_") == 0,CtsApi::to_string(CtsApi::delete_node("_all")) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.delete_node("_all_",true) == 0,CtsApi::to_string(CtsApi::delete_node("_all",true)) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.delete_node("_all_",false) == 0,CtsApi::to_string(CtsApi::delete_node("_all",false)) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.delete_node("/s") == 0,CtsApi::to_string(CtsApi::delete_node("/s")) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.delete_node("/s",true) == 0,CtsApi::to_string(CtsApi::delete_node("/s",true)) << " should return 0\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.delete_node("/s",false) == 0,CtsApi::to_string(CtsApi::delete_node("/s",false)) << " should return 0\n" << theClient.errorMsg());
@@ -402,6 +407,8 @@ BOOST_AUTO_TEST_CASE( test_client_interface_for_fail )
 
    std::vector<std::string> paths; paths.push_back("/s1"); paths.push_back("/s2");
 
+   BOOST_REQUIRE_MESSAGE( theClient.check("fred") == 1,CtsApi::to_string(CtsApi::check("fred")) << " should return 1\n" << theClient.errorMsg());
+
    /// test alter
    BOOST_REQUIRE_MESSAGE( theClient.alter("/s1","add","time","") == 1,"--alter expected to fail\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.alter("/s1","add","time","012:00") == 1,"--alter expected to fail\n" << theClient.errorMsg());
diff --git a/Client/test/TestFlagMigrate.cpp b/Client/test/TestFlagMigrate.cpp
new file mode 100644
index 0000000..c920046
--- /dev/null
+++ b/Client/test/TestFlagMigrate.cpp
@@ -0,0 +1,144 @@
+//============================================================================
+// Name        : Request
+// Author      : Avi
+// Revision    : $Revision: #42 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//============================================================================
+#include <string>
+#include <iostream>
+#include <fstream>
+
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+#include <boost/test/unit_test.hpp>
+
+#include "Defs.hpp"
+#include "Suite.hpp"
+#include "Family.hpp"
+#include "Task.hpp"
+#include "ClientToServerCmd.hpp"
+#include "ServerToClientCmd.hpp"
+#include "InvokeServer.hpp"
+#include "SCPort.hpp"
+
+using namespace std;
+using namespace ecf;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( ClientTestSuite )
+
+BOOST_AUTO_TEST_CASE( test_flag_migrate )
+{
+   // This test relies on a NEW server invocation. Hence if ECF_HOST/remote server is used
+   // the test will will invalid. hence ignore.
+   if (!ClientEnvironment::hostSpecified().empty()) {
+      cout << "Client:: ...test_flag_migrate: ignoring test when ECF_HOST specified\n";
+      return;
+   }
+
+   /// Test that when a node is  ecf::Flag::MIGRATED, the children are not persisted for sync
+   /// But nodes are still persisted for check-pointing
+   InvokeServer invokeServer("Client:: ...test_flag_migrate",SCPort::next());
+
+   std::string path = File::test_data("Client/test/data/lifecycle.txt","Client");
+
+   ClientInvoker theClient(invokeServer.host(),invokeServer.port());
+   BOOST_REQUIRE_MESSAGE( theClient.loadDefs(path,false,false/* check only*/) == 0,"Expected load to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   size_t expected_nodes = 0;
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      expected_nodes = all_nodes.size();
+      BOOST_REQUIRE_MESSAGE(expected_nodes > 5  ,"Expected > 5 nodes but found " << all_nodes.size());
+   }
+
+   // delete defs
+   BOOST_REQUIRE_MESSAGE( theClient.delete_all(true) == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 0,"Expected defs with 0 suite\n" << theClient.errorMsg());
+
+   // reload the defs
+   BOOST_REQUIRE_MESSAGE( theClient.loadDefs(path,false,false/* check only*/) == 0,"Expected load to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == expected_nodes  ,"Expected "  << expected_nodes << " nodes but found " << all_nodes.size());
+   }
+
+   // set suite as migrated. The children of the suite should not be persisted, but still check pointed
+   BOOST_REQUIRE_MESSAGE( theClient.alter("/suite1","set_flag","migrated") == 0,"Expected alter to succeed\n" << theClient.errorMsg());
+
+   // INCREMENTAL SYNC
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == 1  ,"Expected 1 nodes but found " << all_nodes.size());
+   }
+
+   // FULL sync
+   theClient.reset();
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == 1  ,"Expected 1 nodes but found " << all_nodes.size());
+   }
+
+   // Ensure that checkpoint still persist the node, even if ecf::Flag::MIGRATED is set
+   BOOST_REQUIRE_MESSAGE(theClient.checkPtDefs() == 0,CtsApi::checkPtDefs() << " failed should return 0\n" << theClient.errorMsg());
+   {
+      Defs defs;
+      defs.restore_from_checkpt(invokeServer.ecf_checkpt_file()); // make a data model change
+      std::vector<node_ptr> all_nodes; defs.get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == expected_nodes  ,"Expected "  << expected_nodes << " nodes but found " << all_nodes.size());
+   }
+
+   // Repeat test with recovered checkpoint. First delete defs in server.
+   BOOST_REQUIRE_MESSAGE( theClient.delete_all(true) == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 0,"Expected defs with 0 suite\n" << theClient.errorMsg());
+
+   // restore from checkpoint
+   BOOST_REQUIRE_MESSAGE(theClient.restoreDefsFromCheckPt() == 0, "restore checkpoint failed should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+
+   // Clear migrate flag
+   BOOST_REQUIRE_MESSAGE( theClient.alter("/suite1","clear_flag","migrated") == 0,"Expected alter to succeed\n" << theClient.errorMsg());
+
+   // ensure that recovered checkpoint still has the expected_nodes, with increment and *FULL* sync
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == expected_nodes  ,"Expected "  << expected_nodes << " nodes but found " << all_nodes.size());
+   }
+
+   // FULL sync
+   theClient.reset();
+   BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.defs() && theClient.defs()->suiteVec().size() == 1,"Expected defs with 1 suite\n" << theClient.errorMsg());
+   {
+      std::vector<node_ptr> all_nodes;
+      theClient.defs()->get_all_nodes(all_nodes);
+      BOOST_REQUIRE_MESSAGE(all_nodes.size() == expected_nodes  ,"Expected "  << expected_nodes << " nodes but found " << all_nodes.size());
+   }
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/Client/test/TestLoadDefsCmd.cpp b/Client/test/TestLoadDefsCmd.cpp
index 751234a..420b62e 100644
--- a/Client/test/TestLoadDefsCmd.cpp
+++ b/Client/test/TestLoadDefsCmd.cpp
@@ -119,7 +119,7 @@ BOOST_AUTO_TEST_CASE( test_load_defs_check_only )
    BOOST_REQUIRE_MESSAGE( theClient.loadDefs(path,false,true/* check only*/) == 0,"Expected load to succeed\n" << theClient.errorMsg());
    BOOST_REQUIRE_MESSAGE( theClient.sync_local() == 0,"Expected sync to succeed\n" << theClient.errorMsg());
 
-   // Note: when running with ECF_NODE=localhost the defs may exist, but the number of suites should be empty
+   // Note: when running with ECF_HOST=localhost the defs may exist, but the number of suites should be empty
    BOOST_REQUIRE_MESSAGE( !theClient.defs() || theClient.defs()->suiteVec().empty(),"Expected no defs, since nothing should have been loaded\n" << theClient.errorMsg());
 
    // provide path to definition that should fail to parse
diff --git a/Client/test/TestPasswdFile.cpp b/Client/test/TestPasswdFile.cpp
new file mode 100644
index 0000000..5bdd294
--- /dev/null
+++ b/Client/test/TestPasswdFile.cpp
@@ -0,0 +1,173 @@
+//============================================================================
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #4 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//============================================================================
+#include <boost/test/unit_test.hpp>
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+
+#include "ClientInvoker.hpp"
+#include "ClientEnvironment.hpp"
+#include "PasswdFile.hpp"
+#include "InvokeServer.hpp"
+#include "SCPort.hpp"
+#include "Str.hpp"
+
+namespace fs = boost::filesystem;
+using namespace std;
+using namespace ecf;
+
+#ifdef ECF_SECURE_USER
+BOOST_AUTO_TEST_SUITE( ClientTestSuite )
+
+// ************************************************************************************
+// Note: If you make edits to node tree, they will have no effect until the server is rebuilt
+//
+// Note: To test HPUX->Linux, invoke serve on (Linux/HPUX) and the client cmds on other system
+//       On the client side set ECF_HOST to machine name. To allow further testing if ECF_HOST
+//       is specified then *don't* shutdown the server
+// ************************************************************************************
+
+class Add_ECF_PASSWD_env {
+public:
+   Add_ECF_PASSWD_env(const std::string& passwd_file) : env_("ECF_PASSWD=") {
+      env_ += passwd_file;
+      char* put = const_cast<char*>(env_.c_str());
+      BOOST_CHECK_MESSAGE(putenv(put) == 0,"putenv failed for " << put);
+   }
+   ~Add_ECF_PASSWD_env() {
+      putenv(const_cast<char*>("ECF_PASSWD")); // remove from env, otherwise valgrind complains
+   }
+private:
+   std::string env_;
+};
+
+
+BOOST_AUTO_TEST_CASE( test_loading_of_passwd )
+{
+   Host the_host;
+   std::string host = ClientEnvironment::hostSpecified();
+   std::string port = SCPort::next();
+   std::string passwd_file = the_host.ecf_passwd_file(port);
+   std::string passwd = "xxxx";
+   if (host.empty()) {
+      // make sure NO passed file is present before the server is started.
+      // Only do this locally, as passwd file on remote machine may not be accessible
+      fs::remove(passwd_file);
+   }
+   else {
+      // The test only works if server is started locally.
+      std::cout << "...Client:: ...test_loading_of_passwd ignoring when HOST specified\n";
+      return;
+   }
+
+   // cout << "passwd_file " << passwd_file << "\n";
+
+   // Set ECF_PASSWD environment variable. Use same file for client and server
+   // add on construction, and remove at destruction.
+   Add_ECF_PASSWD_env ecf_passwd(passwd_file);
+
+   // Create a valid passwd file; Before server start
+   std::string errorMsg;
+   BOOST_REQUIRE_MESSAGE(PasswdFile::createWithAccess(passwd_file,the_host.name(),port,passwd,errorMsg),errorMsg);
+
+   // This will remove check pt and backup file before server start,
+   // to avoid the server from loading previous test data
+   InvokeServer invokeServer("Client:: ...test_loading_of_passwd",port);
+
+   ClientInvoker theClient(invokeServer.host(),invokeServer.port());
+   theClient.set_throw_on_error(false);
+
+   BOOST_REQUIRE_MESSAGE( theClient.delete_all() == 0,CtsApi::to_string(CtsApi::delete_node()) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.shutdownServer() == 0,CtsApi::shutdownServer() << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.haltServer() == 0,CtsApi::haltServer() << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.restartServer() == 0,CtsApi::restartServer() << " should return 0\n" << theClient.errorMsg());
+
+   // reloading the same passwd file succeed.
+   BOOST_REQUIRE_MESSAGE( theClient.reloadpasswdfile() == 0, CtsApi::reloadpasswdfile() << " should return 1\n" );
+
+   // Invoking a client request that requires authorisation
+   BOOST_CHECK_MESSAGE( theClient.shutdownServer() == 0,"should return 0\n" << theClient.errorMsg());
+   BOOST_CHECK_MESSAGE( theClient.getDefs() == 0,"should return 0\n" << theClient.errorMsg());
+   BOOST_CHECK_MESSAGE( theClient.sync_local() == 0,"should return 0\n" << theClient.errorMsg());
+   BOOST_CHECK_MESSAGE( theClient.news_local() == 0,"should return 0\n" << theClient.errorMsg());
+
+   // clear the password file.
+   errorMsg.clear();
+   BOOST_REQUIRE_MESSAGE(PasswdFile::clear(passwd_file,errorMsg),errorMsg);
+
+   // reload the password file, which is now empty
+   BOOST_REQUIRE_MESSAGE( theClient.reloadpasswdfile() == 0, CtsApi::reloadpasswdfile() << " should return 1\n" );
+
+   // all client command should now *FAIL*.
+   BOOST_CHECK_MESSAGE( theClient.shutdownServer() == 1,"should return 1\n");
+   BOOST_REQUIRE_MESSAGE( theClient.reloadpasswdfile() == 1, CtsApi::reloadpasswdfile() << " should return 1\n" );
+
+   // Remove the white list file. Comment out for debug
+   fs::remove(passwd_file);
+}
+
+BOOST_AUTO_TEST_CASE( test_loading_of_passwd_fail )
+{
+   // TEST user *MUST* be in ECF_PASSWD file, into order to *ALLOW* reloadpasswdfile
+   Host the_host;
+   std::string host = ClientEnvironment::hostSpecified();
+   std::string port = SCPort::next();
+   std::string passwd_file = the_host.ecf_passwd_file(port);
+   std::string passwd = "xxxx";
+   if (host.empty()) {
+      // make sure NO passed file is present before the server is started.
+      // Only do this locally, as passwd file on remote machine may not be accessible
+      fs::remove(passwd_file);
+   }
+   else {
+      // The test only works if server is started locally.
+      std::cout << "...Client:: ...test_loading_of_passwd_fail ignoring when HOST specified\n";
+      return;
+   }
+
+   // Set ECF_PASSWD environment variable. Use same file for client and server
+   // add on construction, and remove at destruction.
+   Add_ECF_PASSWD_env ecf_passwd(passwd_file);
+
+   // This will remove check pt and backup file before server start,
+   // to avoid the server from loading previous test data
+   InvokeServer invokeServer("Client:: ...test_loading_of_passwd_fail",port);
+
+   /// Passwd file is specified but does not exist. Command to succeed
+   ClientInvoker theClient(invokeServer.host(),invokeServer.port());
+   theClient.set_throw_on_error(false);
+
+   BOOST_REQUIRE_MESSAGE( theClient.delete_all() == 0,CtsApi::to_string(CtsApi::delete_node()) << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.shutdownServer() == 0,CtsApi::shutdownServer() << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.haltServer() == 0,CtsApi::haltServer() << " should return 0\n" << theClient.errorMsg());
+   BOOST_REQUIRE_MESSAGE( theClient.restartServer() == 0,CtsApi::restartServer() << " should return 0\n" << theClient.errorMsg());
+
+   // OK now test passwd file functionality
+   // The passwd file should not exist, hence reload SHOULD fail. i.e because we deleted it earlier
+   BOOST_REQUIRE_MESSAGE( theClient.reloadpasswdfile() == 1, CtsApi::reloadpasswdfile() << " should return 1\n" );
+
+   // Create a valid passwd file; For the FIRST time:
+   std::string errorMsg;
+   BOOST_REQUIRE_MESSAGE(PasswdFile::createWithAccess(passwd_file,the_host.name(),port,passwd,errorMsg),errorMsg);
+
+   //  Reload should STILL fail. Since reloadpasswdfile *ITSELF* requires authentication.
+   //  Hence user *MUST* be in ECF_PASSWD file, into order to *ALLOW* reloadpasswdfile
+   BOOST_REQUIRE_MESSAGE( theClient.reloadpasswdfile() == 1, CtsApi::reloadpasswdfile() << " should return 1\n" << theClient.errorMsg());
+
+   // Remove the white list file. Comment out for debug
+   fs::remove(passwd_file);
+}
+
+BOOST_AUTO_TEST_SUITE_END()
+#endif
diff --git a/Client/test/TestServer.cpp b/Client/test/TestServer.cpp
index 4ff49f0..a688ad9 100644
--- a/Client/test/TestServer.cpp
+++ b/Client/test/TestServer.cpp
@@ -41,7 +41,7 @@ BOOST_AUTO_TEST_SUITE( ClientTestSuite )
 // Note: If you make edits to node tree, they will have no effect until the server is rebuilt
 //
 // Note: To test HPUX->Linux, invoke serve on (Linux/HPUX) and the client cmds on other system
-//       On the client side set ECF_NODE to machine name. To allow further testing if ECF_NODE
+//       On the client side set ECF_HOST to machine name. To allow further testing if ECF_HOST
 //       is specified then *don't* shutdown the server
 // ************************************************************************************
 
@@ -126,7 +126,11 @@ BOOST_AUTO_TEST_CASE( test_server_stress_test )
   	boost::timer boost_timer; // measures CPU, replace with cpu_timer with boost > 1.51, measures cpu & elapsed
 	DurationTimer duration_timer;
 	ClientInvoker theClient(invokeServer.host(), invokeServer.port());
+#ifdef ECF_OPENSSL
+	int load = 30;
+#else
 	int load = 125;
+#endif
 	for(int i = 0; i < load; i++) {
 
 		BOOST_REQUIRE_MESSAGE(theClient.delete_all() == 0,CtsApi::to_string(CtsApi::delete_node()) << " should return 0\n" << theClient.errorMsg());
@@ -177,8 +181,11 @@ BOOST_AUTO_TEST_CASE( test_server_group_stress_test )
 	groupRequest += CtsApi::get();
 
 	//cout << "groupRequest = " << groupRequest << "\n";
-
-	int load = 125;
+#ifdef ECF_OPENSSL
+   int load = 30;
+#else
+   int load = 125;
+#endif
 	for(int i = 0; i < load; i++) {
    	BOOST_REQUIRE_MESSAGE( theClient.group(groupRequest) == 0,"Group request " << CtsApi::group(groupRequest) << " failed should return 0\n" << theClient.errorMsg());
  	 	BOOST_REQUIRE_MESSAGE( theClient.defs().get(),"Server returned a NULL defs");
@@ -214,6 +221,10 @@ BOOST_AUTO_TEST_CASE( test_server_stress_test_2 )
    int load = 136;
 #endif
 
+#ifdef ECF_OPENSSL
+   load = 10;
+#endif
+
    boost::timer boost_timer; // measures CPU, replace with cpu_timer with boost > 1.51, measures cpu & elapsed
    DurationTimer duration_timer;
    ClientInvoker theClient(invokeServer.host(), invokeServer.port());
diff --git a/Client/test/TestServerAndLifeCycle.cpp b/Client/test/TestServerAndLifeCycle.cpp
index 9de0450..32a2ee2 100644
--- a/Client/test/TestServerAndLifeCycle.cpp
+++ b/Client/test/TestServerAndLifeCycle.cpp
@@ -1,4 +1,3 @@
-#define BOOST_TEST_MODULE TestClient
 //============================================================================
 // Name        :
 // Author      : Avi
@@ -42,7 +41,7 @@ BOOST_AUTO_TEST_SUITE( ClientTestSuite )
 // Note: If you make edits to node tree, they will have no effect until the server is rebuilt
 //
 // Note: To test HPUX->Linux, invoke serve on (Linux/HPUX) and the client cmds on other system
-//       On the client side set ECF_NODE to machine name. To allow further testing if ECF_NODE
+//       On the client side set ECF_HOST to machine name. To allow further testing if ECF_HOST
 //       is specified then *don't* shutdown the server
 // ************************************************************************************
 
@@ -50,12 +49,12 @@ BOOST_AUTO_TEST_CASE( test_client_lifecyle )
 {
    // *******************************************************************************************
    // This test will *ONLY* work when testing with new server invocation, since it relies
-   // on disabling job generation. Hence ignore test if ECF_NODE has been defined
+   // on disabling job generation. Hence ignore test if ECF_HOST has been defined
    // *******************************************************************************************
    std::string host = ClientEnvironment::hostSpecified();
    if (!host.empty()) {
       // Server allready started, since we cant disable job generation ignore this test
-      std::cout << "Client:: ...test_client_lifecycle, ignoring test when ECF_NODE specified..." << endl;
+      std::cout << "Client:: ...test_client_lifecycle, ignoring test when ECF_HOST specified..." << endl;
       return;
    }
 
diff --git a/Client/test/TestWhiteListFile.cpp b/Client/test/TestWhiteListFile.cpp
index 8480bb6..0ec3885 100644
--- a/Client/test/TestWhiteListFile.cpp
+++ b/Client/test/TestWhiteListFile.cpp
@@ -33,7 +33,7 @@ BOOST_AUTO_TEST_SUITE( ClientTestSuite )
 // Note: If you make edits to node tree, they will have no effect until the server is rebuilt
 //
 // Note: To test HPUX->Linux, invoke serve on (Linux/HPUX) and the client cmds on other system
-//       On the client side set ECF_NODE to machine name. To allow further testing if ECF_NODE
+//       On the client side set ECF_HOST to machine name. To allow further testing if ECF_HOST
 //       is specified then *don't* shutdown the server
 // ************************************************************************************
 
diff --git a/Client/test/data/ECF_HOME/includes/head.h b/Client/test/data/ECF_HOME/includes/head.h
index fece220..25d2b97 100644
--- a/Client/test/data/ECF_HOME/includes/head.h
+++ b/Client/test/data/ECF_HOME/includes/head.h
@@ -7,8 +7,8 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF_
 
-export ECF_PORT=%ECF_PORT%  # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The name sms that issued this task
+export ECF_PORT=%ECF_PORT%    # The port number on the ecflow server
+export ECF_HOST=%ECF_HOST%    # Thehostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/Client/test/data/ECF_HOME/suite/family/head.h b/Client/test/data/ECF_HOME/suite/family/head.h
index 1848925..3fed97d 100644
--- a/Client/test/data/ECF_HOME/suite/family/head.h
+++ b/Client/test/data/ECF_HOME/suite/family/head.h
@@ -7,8 +7,8 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF_
 
-export ECF_PORT=%ECF_PORT%  # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The name sms that issued this task
+export ECF_PORT=%ECF_PORT%    # The port number on the server
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/Jamroot.jam b/Jamroot.jam
index baed659..ac1f64b 100644
--- a/Jamroot.jam
+++ b/Jamroot.jam
@@ -5,7 +5,28 @@
 ## granted to it by virtue of its status as an intergovernmental organisation 
 ## nor does it submit to any jurisdiction. 
 
+project ecflow_top ;
+
+# ==================== OPENSSL ======================================================
+# OPENSSL support, should really be in site-config.jam
+#
+# to enable use:   b2 ssl=on
 #
+
+# link with libdl.so, shared lib containing dlopen(),dlclose()dysym(),
+# these functions are used by OpenSSL internally & thus -ldl is an
+# indirect dependency when using -lcrypto(on Linux) Because we linking
+# with static version of crypto, need to explicitly link against indirect dependencies.
+lib libssl    : : <file>/usr/lib64/libssl.so ;
+lib libcrypto : : <file>/usr/lib64/libcrypto.so ;
+lib dl ;      # this dependency for using libcrypto, i.e dlopen,dlclose etc, when using static libcrypto
+alias openssl_libs : libssl libcrypto dl ;
+
+import feature : feature ;
+feature ssl : off on : optional composite propagated link-incompatible ;
+feature.compose <ssl>on : <define>ECF_OPENSSL ;
+
+# ===============================================================================
 # To clean all the sub projects just use: bjam --clean
 #
 path-constant TOP : . ;     # After that, the TOP variable can be used in every Jamfile. 
@@ -127,8 +148,7 @@ install install-tools
 	;
 
 install install-doc
-        : [ glob Doc/user-manual/*.docx ] 
-          [ glob Doc/user-manual/*.pdf ] 
+        : [ glob Doc/user-manual/client_*.docx ] 
 	: <location>$(ECFLOW_DESTDIR)/$(ECFLOW_INSTALL_DIR)/doc/ecflow
 	;
  
diff --git a/NOTICE b/NOTICE
index 738bf95..75fc845 100644
--- a/NOTICE
+++ b/NOTICE
@@ -69,3 +69,9 @@ LazyTextEdit is licensed under the Apache 2.0 license.
 
 Some of the source code was modified for inclusion in ecFlowUI.
 
+
+spinning_wheel.gif
+================================================
+This was generated from the website:
+  http://www.ajaxload.info/
+and is freely licensed as described there.
diff --git a/Pyext/CMakeLists.txt b/Pyext/CMakeLists.txt
index c91cc01..caa17fe 100644
--- a/Pyext/CMakeLists.txt
+++ b/Pyext/CMakeLists.txt
@@ -31,18 +31,23 @@ include_directories(
                     )
 
 # =====================================================================     
-# INCLUDES here is for external includes           
+# INCLUDES here is for external includes   
+#   NOINSTALL this stops double install, the one in i.e lib/ecflow.so
+#             The other install is in python2.7/site-packages/ecflow.so
+# if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 ecbuild_add_library( TARGET    ecflow
+                     NOINSTALL
                      TYPE      MODULE
                      SOURCES   ${srcs}
 					 CONDITION PYTHONLIBS_FOUND
                      LIBS      libclient libsimu base libparser node nodeattr core
-                               ${PYTHON_LIBRARIES}
+                               ${PYTHON_LIBRARIES} ${OPENSSL_LIBRARIES}
                      INCLUDES 
                                ${Boost_INCLUDE_DIRS}
                                ${PYTHON_INCLUDE_DIRS} 
                     )
 
+
 # This ensures that for debug config, we only link with debug boost libs, for other configs, we link with optimised boost libs 
 if (   PYTHONLIBS_FOUND )             
    target_link_libraries(ecflow debug      ${Boost_PYTHON_LIBRARY_DEBUG}   )
@@ -67,12 +72,13 @@ set_target_properties(ecflow PROPERTIES
 ecbuild_add_test( TARGET py_u_TestMigrate
                   TYPE PYTHON 
                   ARGS ${CMAKE_CURRENT_SOURCE_DIR}/migrate/py_u_TestMigrate.py
-                  ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/lib" )
+                  ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/Pyext" )
 
 list( APPEND u_tests
         py_u_TestAddDelete   
         py_u_TestAddDeleteFunc 
         py_u_TestAddNodeFunc  
+        py_u_TestCopy        
         py_u_TestDefs         
         py_u_TestDefsCheck    
         py_u_TestDerivable   
@@ -83,6 +89,7 @@ list( APPEND u_tests
         py_u_TestGetAllTasks   
         py_u_TestJobGeneration 
         py_u_TestParent        
+        py_u_TestRemove
         py_u_TestRepeatArithmetic
         py_u_TestSimulator  
         py_u_TestTraversal     
@@ -94,16 +101,16 @@ foreach( test ${u_tests} )
     ecbuild_add_test( TARGET ${test} 
                       TYPE PYTHON 
                       ARGS        ${CMAKE_CURRENT_SOURCE_DIR}/test/${test}.py
-                      ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/lib" 
+                      ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/Pyext" 
                       TEST_DEPENDS u_base
                      )
 endforeach()
 
 
-if ( ENABLE_ALL_TESTS)
+if ( ENABLE_ALL_TESTS AND ENABLE_SERVER)
 	list( APPEND s_tests
-	        py_s_TestClientApi    
-	        py_s_TestPythonChildApi
+	             py_s_TestClientApi    
+	             py_s_TestPythonChildApi
 	)
 	
 	foreach( test ${s_tests} )
@@ -111,7 +118,7 @@ if ( ENABLE_ALL_TESTS)
 	    ecbuild_add_test( TARGET ${test} 
 	                      TYPE PYTHON 
 	                      ARGS        ${CMAKE_CURRENT_SOURCE_DIR}/test/${test}.py
-	                      ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/lib" 
+	                      ENVIRONMENT "PYTHONPATH=${CMAKE_BINARY_DIR}/Pyext" 
 	                      TEST_DEPENDS u_base
 	                     )
 	endforeach()
@@ -121,17 +128,31 @@ if ( ENABLE_ALL_TESTS)
 endif()
 
 
+# =============================================================================
+# Configure __init__.py to add __version__
+# =============================================================================
+
+set(INIT_PY_IN  "${CMAKE_CURRENT_SOURCE_DIR}/ecflow/__init__.py.in")
+set(INIT_PY_OUT "${CMAKE_CURRENT_SOURCE_DIR}/ecflow/__init__.py")
+
+configure_file(${INIT_PY_IN} ${INIT_PY_OUT} )
+
+
 # ==========================================================================
 # install
-#    -DCMAKE_PYTHON_INSTALL_TYPE = [ local | setup ]
-#    local : this will install to $INSTALL_PREFIX/$release.$major.$minor/lib/python2.7/site-packages/ecflow/
-#    setup : experimental only,python way of installing
+#    -DCMAKE_PYTHON_INSTALL_TYPE = [ local | setup | not defined ]
+#
+#    local | not defined : this will install to:
+#                          $INSTALL_PREFIX/$release.$major.$minor/lib/python2.7/site-packages/ecflow/
+#    setup               : experimental only,python way of installing
 #
 #    -DCMAKE_PYTHON_INSTALL_PREFIX should *only* used when using python setup.py (CMAKE_PYTHON_INSTALL_TYPE=setup)
 #    *AND* for testing python install to local directory
+#
+# Note:  To install only the python module
+#       cd  buildir
+#       cmake -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR -DCOMPONENT=python -P cmake_install.cmake -- make install
 # ==========================================================================
-
-# CMAKE_PYTHON_INSTALL_TYPE = [ local | setup | not defined ]
    
 if( CMAKE_PYTHON_INSTALL_TYPE MATCHES  "local"  OR NOT DEFINED CMAKE_PYTHON_INSTALL_TYPE )
    
@@ -139,10 +160,13 @@ if( CMAKE_PYTHON_INSTALL_TYPE MATCHES  "local"  OR NOT DEFINED CMAKE_PYTHON_INST
       set(PYTHON_SITE "lib/python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}/site-packages" )
       set(PYTHON_DEST "${PYTHON_SITE}/ecflow" )
       
-      install( TARGETS ecflow   DESTINATION ${PYTHON_DEST} 
-               RENAME ecflow.so
-             )
-      install( FILES   ecflow/__init__.py  DESTINATION ${PYTHON_DEST} )
+      install( TARGETS ecflow                 DESTINATION ${PYTHON_DEST}  RENAME ecflow.so COMPONENT python )
+      install( FILES   ecflow/__init__.py     DESTINATION ${PYTHON_DEST}                   COMPONENT python )
+      
+      # Install files that Axel has asked for. 
+      # These are example of what Axel uses as a layer over ecflow api, for operations
+      install( FILES   samples/api/ecf.py     DESTINATION ${PYTHON_DEST}                COMPONENT python )
+      install( FILES   samples/api/sms2ecf.py DESTINATION ${PYTHON_DEST}                COMPONENT python )
       
 else()
 	  message( STATUS "python found,  CMAKE_PYTHON_INSTALL_TYPE=${CMAKE_PYTHON_INSTALL_TYPE}")
diff --git a/Pyext/ecflow/__init__.py b/Pyext/ecflow/__init__.py
old mode 100755
new mode 100644
index 5ff5c6b..41f1e4a
--- a/Pyext/ecflow/__init__.py
+++ b/Pyext/ecflow/__init__.py
@@ -15,4 +15,6 @@ from ecflow import *
 The ecFlow python module
 """
 
+__version__ = '4.5.0'
+
 # http://stackoverflow.com/questions/13040646/how-do-i-create-documentation-with-pydoc
diff --git a/Pyext/ecflow/__init__.py b/Pyext/ecflow/__init__.py.in
old mode 100755
new mode 100644
similarity index 94%
copy from Pyext/ecflow/__init__.py
copy to Pyext/ecflow/__init__.py.in
index 5ff5c6b..cec9f90
--- a/Pyext/ecflow/__init__.py
+++ b/Pyext/ecflow/__init__.py.in
@@ -15,4 +15,6 @@ from ecflow import *
 The ecFlow python module
 """
 
+__version__ = '@ECFLOW_VERSION@'
+
 # http://stackoverflow.com/questions/13040646/how-do-i-create-documentation-with-pydoc
diff --git a/Pyext/jamfile.jam b/Pyext/jamfile.jam
index 4371ed2..6a3293e 100755
--- a/Pyext/jamfile.jam
+++ b/Pyext/jamfile.jam
@@ -36,6 +36,12 @@
 # building the extension. Hence this requires that ECFLOW_INSTALL_DIR 
 # is correctly set during build time. Yuk. 
 #
+# python3 add test and migrate directories to PYTHONPATH for testing
+#  - some tests require:
+#    test/ecflow_test_util.py
+#    migrate/ecflow_migrate.py
+project : requirements <pythonpath>./test:./migrate  ;
+
 project thePyext ;
 
 use-project theCore      : ../ACore ;
@@ -48,12 +54,13 @@ use-project theSimulator : ../CSim ;
 
 # Make the definition of the python-extension rule available
 import python ;
+# using python : 3.5.1 : /usr/local/apps/python3/3.5.1-01/ ; 
 
 if ! [ python.configured ]
 {
-    # ECHO "notice: no Python configured in user-config.jam" ;
-    # ECHO "notice: will use default configuration" ;
-    # We will typically place this in user-congig/site-config.jam
+    ECHO "notice: no Python configured in *user-config.jam*" ;
+    ECHO "notice: will use default configuration" ;
+    # We will typically place this in user-config/site-config.jam
     #using python
     #     :  # version
     #     :  # cmd-or-prefix
@@ -61,7 +68,8 @@ if ! [ python.configured ]
     #     :  # libraries
     #     :  # condition
     #     ;
-    using python ;
+    #using python ;
+    #using python : 3.5 : python3 : /usr/local/apps/python3/3.5.1-01/include/python3.5m ;
 }
 
 # Specify the path to the Boost project.  If you move this project,
@@ -107,6 +115,7 @@ python-extension ecflow : [ glob src/*.cpp ]
     /site-config//boost_python_static
     : <variant>debug:<define>DEBUG
       <toolset>acc:<library>hpux_std_libs  
+      [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
     ;
 
 # ========================================================================
@@ -159,11 +168,12 @@ local rule run-test ( test-name : sources + )
 
 #
 # Declare test targets; 
-# Note cant run TestWith until all plarforms support with statement, i.e python 2.6 or greater
+# Note can't run TestWith until all platforms support with statement, i.e python 2.6 or greater
 #                       
 run-test TestClientApi      : ecflow [ glob test/py_s_TestClientApi.py ] ;
 run-test TestPythonChildApi : ecflow [ glob test/py_s_TestPythonChildApi.py ] ;
 run-test TestDefs           : ecflow [ glob test/py_u_TestDefs.py ] ;
+run-test TestCopy           : ecflow [ glob test/py_u_TestCopy.py ] ;
 run-test TestError          : ecflow [ glob test/py_u_TestError.py ] ;
 run-test TestTraversal      : ecflow [ glob test/py_u_TestTraversal.py ] ;
 run-test TestDefsCheck      : ecflow [ glob test/py_u_TestDefsCheck.py ] ;
@@ -180,7 +190,8 @@ run-test TestDerivable     : ecflow [ glob test/py_u_TestDerivable.py ] ;
 run-test TestWith          : ecflow [ glob test/py_u_TestWith.py ] ;
 run-test TestFind          : ecflow [ glob test/py_u_TestFind.py ] ;
 run-test TestMigrate       : ecflow [ glob migrate/py_u_TestMigrate.py ] ;
-run-test TestRepeatArithmetic  :  ecflow [ glob test/py_u_TestRepeatArithmetic.py ] ;
+run-test TestRepeatArithmetic  : ecflow [ glob test/py_u_TestRepeatArithmetic.py ] ;
+run-test TestRemove            : ecflow [ glob test/py_u_TestRemove.py ] ;
 run-test TestGeneratedVariable : ecflow [ glob test/py_u_TestGeneratedVariable.py ] ;
 run-test TestEcf               : ecflow [ glob test/py_u_TestEcf.py ] ;
 run-test TestFlag              : ecflow [ glob test/py_u_TestFlag.py ] ;
@@ -190,8 +201,8 @@ run-test TestFlag              : ecflow [ glob test/py_u_TestFlag.py ] ;
 alias test-all
  :  TestUserManual TestJobGeneration  TestDefs TestError TestTraversal TestDefsCheck 
     TestSimulator TestAddDelete TestAddDeleteError TestAddDeleteFunc TestAddNodeFunc TestParent TestGetAllTasks 
-    TestDerivable  TestMigrate TestRepeatArithmetic TestWith TestFind TestGeneratedVariable TestEcf
-    TestClientApi TestPythonChildApi TestFlag
+    TestDerivable  TestMigrate TestRemove TestRepeatArithmetic TestWith TestFind TestGeneratedVariable TestEcf
+    TestClientApi TestPythonChildApi TestFlag TestCopy
     # test_embed test_embed_ecf 
     ;
    
@@ -199,8 +210,8 @@ alias test-all
 explicit test-all
     TestUserManual TestJobGeneration TestDefs TestError TestTraversal TestDefsCheck 
     TestSimulator TestAddDelete TestAddDeleteError TestAddDeleteFunc TestAddNodeFunc TestParent TestGetAllTasks 
-    TestDerivable TestMigrate TestRepeatArithmetic TestWith TestFind TestGeneratedVariable TestEcf
-    TestClientApi TestPythonChildApi TestFlag
+    TestDerivable TestMigrate TestRemove TestRepeatArithmetic TestWith TestFind TestGeneratedVariable TestEcf
+    TestClientApi TestPythonChildApi TestFlag TestCopy
     # test_embed test_embed_ecf 
     ;
  
\ No newline at end of file
diff --git a/Pyext/migrate/ecflow_migrate.py b/Pyext/migrate/ecflow_migrate.py
index 5dff9ad..abdc0f3 100644
--- a/Pyext/migrate/ecflow_migrate.py
+++ b/Pyext/migrate/ecflow_migrate.py
@@ -42,7 +42,7 @@ class Migrator(object):
         migrated = self._migration_hook(default_version_number)
         if migrated : 
             self.list_of_input_lines = self.list_of_output_lines   # preserve this migration
-            print "Applying " + type(self).__name__  
+            print("Applying ", type(self).__name__)  
         else:
             self.list_of_output_lines = self.list_of_input_lines   
         return migrated         
@@ -55,9 +55,9 @@ class Migrator(object):
         if len(self.list_of_input_lines) > 0:
             tokens = self.list_of_input_lines[0].split()
             if len(tokens) > 1:
-                # print tokens
+                # print(tokens)
                 version = (int)(tokens[1].replace(".",""))
-                # print "******************* found version " + str(version)
+                # print("******************* found version " , str(version))
                 return version;
         return default_version
     
@@ -89,7 +89,7 @@ class MigrateForTaskAbort(Migrator):
                     start_line_append = ""
                 
                 if start_abort_pos != -1 and end_abort_pos == -1:
-                    # print "start abort found with no end abort"
+                    # print("start abort found with no end abort")
                     start_line_append = line
                     start_line_append = start_line_append.rstrip('\n')
                     start_line_append += " "
@@ -100,7 +100,7 @@ class MigrateForTaskAbort(Migrator):
                 start_line_append += line
                 if end_abort_pos != -1:
                     self.list_of_output_lines.append(start_line_append) # preserve'\n' for this case                   
-                    # print start_line_append
+                    # print(start_line_append)
                     start_line_append = "";
                 else:
                     start_line_append = start_line_append.rstrip('\n')
@@ -135,9 +135,9 @@ class MigrateForLabel(Migrator):
         start_line_append = ""
         for line in self.list_of_input_lines:
             #count =  count + 1
-            #print str(count) + ": " + line
+            #print(str(count) , ": " , line)
             #if count == 383119:
-            #    print "debug mee"
+            #    print("debug mee")
             if len(start_line_append) > 0:
                 no_of_label_quotes += line.count('"')
                 start_line_append += line
@@ -185,9 +185,9 @@ class MigrateForVariable(Migrator):
         start_line_append = ""
         for line in self.list_of_input_lines:
             #count =  count + 1
-            #print str(count) + ": " + line
+            #print(str(count) , ": " , line)
             #if count == 383119:
-            #    print "debug mee"
+            #    print("debug mee")
             if len(start_line_append) > 0:
                 no_of_label_quotes += line.count("'")
                 start_line_append += line
@@ -387,21 +387,21 @@ if __name__ == "__main__":
 #     PARSER.add_argument('defs_file',  help="The definition file to *fix* for migration")
 #     ARGS = PARSER.parse_args()
 #     ARGS.defs_file = os.path.expandvars(ARGS.defs_file) # expand references to any environment variables
-#     print ARGS    
+#     print(ARGS)    
 #     do_migrate( ARGS.defs_file )
     
     try:
         opts, args = getopt.getopt(sys.argv[1:], "hd", ["help", "defs_file="])
     except getopt.GetoptError as err:
-        # print help information and exit:
+        # print("help information and exit:")
         print(err) # will print something like "option -a not recognised"
-        print usage()
+        print(usage())
         sys.exit(2)
         
     defs_file = None
     for o, a in opts:
         if o in ("-h", "--help"):
-            print usage()
+            print(usage())
             sys.exit()
         elif o in ("-d", "--defs_file"):
             defs_file = a
@@ -409,7 +409,7 @@ if __name__ == "__main__":
             assert False, "un-handled option"
     
     if defs_file == None:
-        print "Please enter path to the defs file i.e ecflow_migrate --d ./defs_file.def"
+        print("Please enter path to the defs file i.e ecflow_migrate --d ./defs_file.def")
         sys.exit(1)
         
     defs_file = os.path.expandvars(defs_file); # expand references to any environment variables
diff --git a/Pyext/migrate/py_u_TestMigrate.py b/Pyext/migrate/py_u_TestMigrate.py
index 5133a8b..4366414 100644
--- a/Pyext/migrate/py_u_TestMigrate.py
+++ b/Pyext/migrate/py_u_TestMigrate.py
@@ -9,23 +9,23 @@ def get_parent_dir(file_path):
 
 def get_root_source_dir():
     cwd = os.getcwd()
-    #print "get_root_source_dir from: " + cwd
+    #print("get_root_source_dir from: " + cwd)
     while (1):
         # Get to directory that has ecflow
         head, tail = os.path.split(cwd)
-        #print "   head:" + head
-        #print "   tail:" + tail
+        #print("   head:" + head)
+        #print("   tail:" + tail)
         if tail.find("ecflow") != -1 :
             
             # bjam, already at the source directory
             if os.path.exists(cwd + "/VERSION.cmake"): 
-                print "   Found VERSION.cmake in " + cwd
+                print("   Found VERSION.cmake in " + cwd)
                 return cwd
         
         if tail != "Pyext" and tail != "migrate":
             # in cmake, we may be in the build directory, hence we need to determine source directory
             file = cwd + "/CTestTestfile.cmake"
-            #print "   searching for " + file
+            #print("   searching for " + file)
             if os.path.exists(file):
                 # determine path by looking into this file:
                 for line in open(file):
@@ -33,7 +33,7 @@ def get_root_source_dir():
                     if line.find("Source directory"):
                         tokens = line.split()
                         if len(tokens) == 4:
-                            #print "   returning root_source_dir:", tokens[3]
+                            #print("   returning root_source_dir:", tokens[3])
                             return tokens[3]
                 raise RuntimeError("ERROR could not find Source directory in CTestTestfile.cmake")
             else:
@@ -52,7 +52,7 @@ class TestMigrate318(unittest.TestCase):
     def setUp(self):
         # perform setup actions if any
         self.workspace_dir = get_root_source_dir()
-        #print "setup : " + self.workspace_dir
+        #print("setup : " + self.workspace_dir)
         
     def tearDown(self):
         # Perform clean -up actions if any
@@ -178,7 +178,7 @@ class TestMigrate318(unittest.TestCase):
 #test history
  
     def test_migrate_history(self):
-        print "test_migrate_history"
+        print("test_migrate_history")
         migration_count = ecflow_migrate.do_migrate(self.locate("migrate/history_bug.def"))
         self.assertEqual(migration_count,1,"Expected 1 migrations,for history")
                  
@@ -188,5 +188,5 @@ class TestMigrate318(unittest.TestCase):
 
 #run the tests 
 if __name__  == '__main__':
-    #print "Current working directory: " + os.getcwd()
+    #print("Current working directory: " + os.getcwd())
     unittest.main()
\ No newline at end of file
diff --git a/Pyext/samples/TestGui.py b/Pyext/samples/TestGui.py
new file mode 100755
index 0000000..a5d35ba
--- /dev/null
+++ b/Pyext/samples/TestGui.py
@@ -0,0 +1,1530 @@
+#!/usr/bin/env python2.7
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+# Name        :
+# Author      : Avi
+# Revision    : $Revision: #10 $
+#
+# Copyright 2009-2016 ECMWF.
+# This software is licensed under the terms of the Apache Licence version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+import argparse # for argument parsing  
+import time
+import os
+import sys
+import pwd
+from datetime import datetime
+from socket import gethostname 
+import shutil   # used to remove directory tree
+
+# ecflow_test_util, see File ecflow_test_util.py
+import ecflow
+from ecflow import Defs, Clock, DState,  Style, State, RepeatDate, PrintStyle, File, Client, SState, \
+                   CheckPt, Cron, Late, debug_build, Flag, FlagType
+
+class Tester(object) : 
+    def __init__(self,ci,args):
+        self.ci_ = ci
+        self.port_ = self.ci_.get_port()
+        self.ARGS_ = args
+            
+    def clean_up_server(self):
+        self.log_msg("   clean_up server, clear log, remove check-pt, and white list file" )
+        self.ci_.clear_log()    
+        try: os.remove(self.checkpt_file_path())
+        except: pass
+        try: os.remove(self.backup_checkpt_file_path())
+        except: pass
+        try: os.remove(self.white_list_file_path())  
+        except: pass
+    
+    def clean_up_data(self):
+        self.log_msg("   Attempting to Removing ECF_HOME " + self.ecf_home())
+        try: 
+            shutil.rmtree(self.ecf_home(),True)   # True means ignore errors
+            shutil.rmtree("test_gui",True)   # True means ignore errors 
+            print("   Remove OK") 
+        except: 
+            print("   Remove Failed") 
+            pass
+        
+    def ecf_home(self): 
+        # debug_build() is defined for ecflow. Used in test to distinguish debug/release ecflow
+        # Vary ECF_HOME based on debug/release/port allowing multiple invocations of these tests
+        if debug_build():
+            return os.getcwd() + "/test_gui/data/ecf_home_debug_" + str(self.port_)
+        return os.getcwd() + "/test_gui/data/ecf_home_release_" + str(self.port_)
+
+    def ecf_includes(self) :  return os.getcwd() + "Pyext/test/data/includes"
+    def log_file_path(self): return "./" + gethostname() + "." + self.port_ + ".ecf.log"
+    def checkpt_file_path(self): return "./" + gethostname() + "." + self.port_ + ".ecf.check"
+    def backup_checkpt_file_path(self): return "./" + gethostname() + "." + self.port_ + ".ecf.check.b"
+    def white_list_file_path(self): return "./" + gethostname() + "." + self.port_ + ".ecf.lists"
+
+    def path_to_ecflow_client(self):
+        # to use the build, in preference, to release build
+        path_to_client = File.find_client()
+        if os.path.exists(path_to_client):
+            return path_to_client
+        path_to_client = "/usr/local/apps/ecflow/" + self.ci_.version() + "/bin/ecflow_client"
+        if os.path.exists(path_to_client):
+            return path_to_client
+        return "ecflow_client" # fall back, just search on $PATH in the scripts
+     
+    def create_defs(self,name=""):
+        defs = Defs()
+        suite_name = name
+        if len(suite_name) == 0: suite_name = "s1"
+        suite = defs.add_suite(suite_name);
+        
+        ecfhome = self.ecf_home()
+        suite.add_variable("ECF_HOME", ecfhome)
+        suite.add_variable("ECF_CLIENT_EXE_PATH", self.path_to_ecflow_client())
+        suite.add_variable("SLEEP", "1");  # not strictly required since default is 1 second
+        suite.add_variable("ECF_INCLUDE", self.ecf_includes());
+    
+        family = suite.add_family("f1")
+        family.add_task("t1")
+        family.add_task("t2")
+        return defs;        
+        
+    def sync_local(self,sleep_time=4):
+        """Delay added so that we can see the change in the GUI.
+           The GUI refresh rate should be set to 1 second
+           """
+        self.ci_.sync_local()
+        if self.ARGS_.sync_sleep != 0 and sleep_time != 0:
+            time.sleep(self.ARGS_.sync_sleep)
+     
+    def log_msg(self,msg):
+        print(msg)
+        self.ci_.log_msg("======================== " + msg + " ========================")
+    
+    def test_version(self):
+        self.log_msg("test_version Client_version(" + self.ci_.version() + ") server version(" + self.ci_.server_version() + ")")
+        
+    def test_client_get_server_defs(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.ci_.load(self.create_defs(test))  
+        self.sync_local()  
+        assert self.ci_.get_defs().find_suite(test) != None, "Expected to find suite of name " + test + ":\n" + str(self.ci_.get_defs())
+        
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+        self.sync_local()  
+    
+    def test_client_restart_server(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.ci_.restart_server()
+        self.sync_local()
+        assert self.ci_.get_defs().get_server_state() == SState.RUNNING, "Expected server to be running"
+        
+        paths = list(self.ci_.changed_node_paths)
+        #for path in self.ci_.changed_node_paths:
+        #    print("   changed node path " + path);
+        assert len(paths) == 1, "expected changed node to be the root node"
+        assert paths[0] == "/", "Expected root path but found " + str(paths[0])
+    
+    def test_client_halt_server(self):
+        self.log_msg(sys._getframe().f_code.co_name)
+        self.ci_.halt_server()
+        self.sync_local()
+        assert self.ci_.get_defs().get_server_state() == SState.HALTED, "Expected server to be halted"
+        
+        paths = list(self.ci_.changed_node_paths)
+        #for path in self.ci_.changed_node_paths:
+        #    print("   changed node path " + path);
+        assert len(paths) == 1, "expected changed node to be the root node"
+        assert paths[0] == "/", "Expected root path but found " + str(paths[0])
+        self.ci_.restart_server()   
+    
+    def test_client_shutdown_server(self):
+        self.log_msg(sys._getframe().f_code.co_name)
+        self.ci_.shutdown_server()
+        self.sync_local()
+        assert self.ci_.get_defs().get_server_state() == SState.SHUTDOWN, "Expected server to be shutdown"
+        
+        paths = list(self.ci_.changed_node_paths)
+        #for path in self.ci_.changed_node_paths:
+        #    print("   changed node path " + path);
+        assert len(paths) == 1, "expected changed node to be the root node"
+        assert paths[0] == "/", "Expected root path but found " + str(paths[0])
+    
+    def test_client_load_in_memory_defs(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.ci_.load(self.create_defs(test))  
+        self.sync_local() 
+        assert self.ci_.get_defs().find_suite(test) != None, "Expected to find suite of name " + test + ":\n" + str(self.ci_.get_defs())              
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_load_from_disk(self):            
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test);
+        defs_file = test + ".def"
+        defs.save_as_defs(defs_file)     
+        assert os.path.exists(defs_file), "Expected file " + defs_file + " to exist after defs.save_as_defs()"
+        self.ci_.load(defs_file) # open and parse defs file, and load into server.\n"
+            
+        # check load worked
+        self.sync_local() 
+        assert self.ci_.get_defs().find_suite(test) != None, "Expected to find suite of name " + test + ":\n" + str(self.ci_.get_defs())
+        os.remove(defs_file)
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_checkpt(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try:    
+            os.remove(self.checkpt_file_path())
+            os.remove(self.backup_checkpt_file_path())
+        except: pass
+        
+        self.ci_.load(self.create_defs(test))  
+        self.sync_local() 
+        self.ci_.checkpt()
+        assert os.path.exists(self.checkpt_file_path()), "Expected check pt file " + self.checkpt_file_path() + " to exist after self.ci_.checkpt()"
+        assert os.path.exists(self.backup_checkpt_file_path()) == False, "Expected back up check pt file to *NOT* exist"
+        
+        self.ci_.checkpt()   # second check pt should cause backup check pt to be written
+        assert os.path.exists(self.backup_checkpt_file_path()), "Expected back up check pt file to exist after second self.ci_.checkpt()"
+    
+        self.ci_.checkpt(CheckPt.NEVER)         # switch of check pointing
+        self.ci_.checkpt(CheckPt.ALWAYS)        # always check point, at any state change
+        self.ci_.checkpt(CheckPt.ON_TIME)       # Check point periodically, by interval set in server
+        self.ci_.checkpt(CheckPt.ON_TIME, 200)  # Check point periodically, by interval set in server
+        self.ci_.checkpt(CheckPt.UNDEFINED, 0, 35)  # Change check point save time alarm
+    
+        os.remove(self.checkpt_file_path())
+        os.remove(self.backup_checkpt_file_path())
+        
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_restore_from_checkpt(self):          
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try:    
+            os.remove(self.checkpt_file_path())
+            os.remove(self.backup_checkpt_file_path())
+        except: pass
+        
+        self.ci_.load(self.create_defs(test))  
+        self.sync_local()  
+        self.ci_.checkpt()
+        self.ci_.delete_all() 
+        
+        self.sync_local() 
+        assert len(list(self.ci_.get_defs().suites)) == 0, "Expected all suites to be delete:\n"
+        
+        self.ci_.halt_server()  # server must be halted, otherwise restore_from_checkpt will throw
+        self.ci_.restore_from_checkpt()
+        
+        self.sync_local() 
+        assert self.ci_.get_defs().find_suite(test) != None, "Expected to find suite " + test + " after restore from checkpt:\n" + str(self.ci_.get_defs())
+    
+        os.remove(self.checkpt_file_path())
+        self.ci_.restart_server()   
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def get_username(self): return pwd.getpwuid(os.getuid())[ 0 ]
+    
+    def test_client_reload_wl_file(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        expected = False
+        try:    self.ci_.reload_wl_file();            
+        except: expected = True
+        assert expected, "Expected reload to fail when no white list specified"
+        
+        # create a white list file
+        wl_file = open(self.white_list_file_path(), 'w')
+        wl_file.write("#\n")
+        wl_file.write("4.4.14   #   comment\n\n")
+        wl_file.write("# These user have read and write access to the server\n")
+        wl_file.write(self.get_username() + "\n")  # add current user otherwise remaining test's, wont have access from server anymore
+        wl_file.write("axel  # admin\n")
+        wl_file.write("john  # admin\n\n")
+        wl_file.write("# Read only users\n")
+        wl_file.write("-fred   # needs read access only\n")
+        wl_file.write("-joe90  # needs read access only\n")
+        wl_file.close();
+        
+        self.ci_.reload_wl_file();  
+        os.remove(self.white_list_file_path())          
+    
+    def generate_scripts_and_load_defs(self,defs):
+        defs.generate_scripts();
+        msg = defs.check_job_creation()       
+        assert len(msg) == 0, msg
+        
+        self.ci_.restart_server()
+        self.ci_.load(defs)           
+        self.sync_local() # clear changed_node_paths 
+
+    def create_and_load_defs(self,test,add_defstatus = True):
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+        suite = defs.find_suite(test)
+        if add_defstatus :
+            suite.add_defstatus(DState.suspended)
+    
+        self.generate_scripts_and_load_defs(defs);
+        self.ci_.begin_suite(test)
+
+    def test_client_run(self):            
+        test = sys._getframe().f_code.co_name # returns function name
+        self.create_and_load_defs(test)
+        
+        self.ci_.run("/" + test, False)
+        
+        count = 0
+        while 1:
+            count += 1
+            self.sync_local(0) # get the changes, synced with local defs
+            suite = self.ci_.get_defs().find_suite(test)
+            assert suite != None, "Expected to find suite " + test + ":\n" + str(self.ci_.get_defs())
+            if suite.get_state() == State.complete:
+                break;
+            time.sleep(3)
+            if count > 20:
+                assert False, "test_client_run aborted after " + str(count) + " loops:\n" + str(self.ci_.get_defs())
+            
+        self.ci_.log_msg("Looped " + str(count) + " times")
+        
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_run_with_multiple_paths(self):            
+        test = sys._getframe().f_code.co_name # returns function name
+        self.create_and_load_defs(test)
+
+        path_list = [ "/" + test + "/f1/t1", "/" + test + "/f1/t2"]
+        self.ci_.run( path_list, False)
+    
+        count = 0
+        while 1:
+            count += 1
+            self.sync_local(0) # get the changes, synced with local defs
+            suite = self.ci_.get_defs().find_suite(test)
+            assert suite != None, "Expected to find suite " + tests + ":\n" + str(self.ci_.get_defs())
+            if suite.get_state() == State.complete:
+                break;
+            time.sleep(3)
+            if count > 20:
+                assert False, test + " aborted after " + str(count) + " loops:\n" + str(self.ci_.get_defs())
+            
+        self.ci_.log_msg("Looped " + str(count) + " times")
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this   
+    
+    def test_client_requeue(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.create_and_load_defs(test)
+        
+        self.ci_.force_state_recursive("/" + test,State.unknown)
+        self.sync_local();
+        suite = self.ci_.get_defs().find_suite(test)
+        assert suite.get_state() == State.unknown, "Expected to find suite with state unknown"
+    
+        self.ci_.requeue("/" + test)
+        self.sync_local();
+        suite = self.ci_.get_defs().find_suite(test)
+        assert suite.get_state() == State.queued, "Expected to find suite with state queued"
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_requeue_with_multiple_paths(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.create_and_load_defs(test)
+
+        self.ci_.force_state_recursive("/" + test,State.unknown)
+        self.sync_local();
+        task1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task1.get_state() == State.unknown, "Expected to find t1 with state unknown"
+        assert task2.get_state() == State.unknown, "Expected to find t2 with state unknown"
+    
+        path_list = [ "/" + test + "/f1/t1", "/" + test + "/f1/t2" ]
+        self.ci_.requeue( path_list)
+        self.sync_local();
+        task1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task1.get_state() == State.queued, "Expected to find task t1 with state queued"
+        assert task2.get_state() == State.queued, "Expected to find task t2 with state queued"
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_free_dep(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+           
+        # add a real clock, since we are adding date dependencies
+        # Note: adding a future time dependency on a task, will cause it to requeue, when complete
+        # Hence even when we free these dependency they get requeued.
+        # So we use todays date.
+        ltime = time.localtime();
+        day = ltime.tm_mday
+        month = ltime.tm_mon
+        year = ltime.tm_year
+        
+        defs = Defs()
+        suite = defs.add_suite(test);
+        suite.add_clock(Clock(False)) # true means hybrid, False means real
+        ecfhome = self.ecf_home();
+        suite.add_variable("ECF_HOME", ecfhome);
+        suite.add_variable("ECF_CLIENT_EXE_PATH", self.path_to_ecflow_client());
+        suite.add_variable("SLEEPTIME", "1");
+        suite.add_variable("ECF_INCLUDE", self.ecf_includes());
+        family = suite.add_family("f1")
+        family.add_task("t1").add_time("00:01")
+        family.add_task("t2").add_date(day,month,year)
+        family.add_task("t3").add_trigger("1 == 0")
+        t4 = family.add_task("t4")
+        t4.add_time("00:01")
+        t4.add_date(day,month,year)
+        t4.add_trigger("1 == 0")
+    
+        self.generate_scripts_and_load_defs(defs);
+        self.ci_.begin_suite(test)
+        
+        t1_path = "/" + test + "/f1/t1"
+        t2_path = "/" + test + "/f1/t2"
+        t3_path = "/" + test + "/f1/t3"
+        t4_path = "/" + test + "/f1/t4"
+        while 1:
+            self.sync_local(0)
+            t1 = self.ci_.get_defs().find_abs_node(t1_path)
+            t2 = self.ci_.get_defs().find_abs_node(t2_path)
+            t3 = self.ci_.get_defs().find_abs_node(t3_path)
+            t4 = self.ci_.get_defs().find_abs_node(t4_path)
+     
+            if t1.get_state() == State.queued: self.ci_.free_time_dep(t1_path)
+            if t2.get_state() == State.queued: self.ci_.free_date_dep(t2_path)
+            if t3.get_state() == State.queued: self.ci_.free_trigger_dep(t3_path)
+            if t4.get_state() == State.queued: self.ci_.free_all_dep(t4_path)
+    
+            suite = self.ci_.get_defs().find_suite(test)
+            if suite.get_state() == State.complete:
+                break;
+            time.sleep(3)       
+                
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+
+    
+    def test_client_check(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        defs = Defs()
+        defs.add_extern("/a/b/c/d")
+        defs.add_extern("/a/b/c/d/e:event")
+        defs.add_extern("/a/b/c/d/e:meter")
+        defs.add_extern("/made/up/redundant/extren")
+        defs.add_extern("/made/up/redundant/extren")
+        defs.add_extern("/limits:c1a")
+        defs.add_extern("/limits:c1a")
+        defs.add_extern("fred")
+        defs.add_extern("limits:hpcd")
+        defs.add_extern("/suiteName:sg1")
+        defs.add_extern("/obs/limits:hpcd")
+        suite = defs.add_suite(test)
+        family_f1 = suite.add_family("f1")
+        family_f1.add_task("p").add_trigger("/a/b/c/d == complete")      # extern path
+        family_f1.add_task("q").add_trigger("/a/b/c/d/e:event == set")   # extern event path
+        family_f1.add_task("r").add_trigger("/a/b/c/d/e:meter le 30")    # extern meter path
+    
+        suite.add_inlimit("c1a","/limits")
+        suite.add_inlimit("fred")
+        
+        family_anon = suite.add_family("anon")
+        family_anon.add_inlimit("hpcd","limits")
+        family_anon.add_task("t1").add_inlimit("sg1","/suiteName")
+        family_anon.add_task("t2").add_inlimit("hpcd","/obs/limits")
+        family_anon.add_task("t3").add_inlimit("c1a","/limits")
+     
+        # CLIENT side check
+        client_check = defs.check()
+        assert len(client_check) == 0, "Expected clean defs check due to externs but found:\n" + client_check + "\n" + str(defs)
+    
+        # SERVER side check
+        self.ci_.load(defs)
+        self.sync_local()  
+        server_check = self.ci_.check("") # empty string means check the whole defs, otherwise a node path can be specified.
+        server_check = self.ci_.check("/" + test)  
+        # print server_check
+        assert len(server_check) > 0, "Expected defs to fail, since no externs in server "
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+        
+    def test_client_suites(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        no_of_suites = len(self.ci_.suites())
+    
+        defs = self.create_defs("test_client_suites")
+        self.ci_.load(defs)  
+        assert len(self.ci_.suites()) == no_of_suites + 1 ,"expected " + str(no_of_suites + 1) + " suites"
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+        
+    def test_client_ch_suites(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        suite_names = [ test + '1', test + '2', test + '3' ]
+        self.ci_.ch_register(True,suite_names)      # register interest in suites s1,s2,s3 and any new suites
+        self.ci_.ch_register(False,[ test + "1"])   # register interest in suites s1 
+        self.sync_local();
+        
+        self.ci_.ch_suites()  # writes to standard out, list of suites and handles
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+        self.sync_local();    
+    
+    def test_client_ch_register(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg("test_client_ch_register")
+        
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite( test + str(i))
+        self.ci_.load(defs)
+        self.sync_local();
+        
+        suite_names = [ test + '1', test + '2', test + '3' ]
+        self.ci_.ch_register(True, suite_names)    # register interest in suites s1,s2,s3 and any new suites
+        self.ci_.ch_register(False,suite_names)    # register interest in suites s1,s2,s3 only
+        self.sync_local();
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+                
+    def test_client_ch_drop(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        try:
+            # register interest in suites s1,s2,s3 and any new suites
+            suite_names = [ test + '1', test + '2', test + '3' ]
+            self.ci_.ch_register(True, suite_names)    
+            self.sync_local();
+        finally:  
+            self.ci_.ch_drop()  # drop using handle stored in self.ci_., from last register
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+              
+    def test_client_ch_drop_user(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        try:
+            # register interest in suites s1,s2,s3 and any new suites
+            suite_names = [ test + '1', test + '2', test + '3' ]
+            self.ci_.ch_register(True, suite_names)
+            self.sync_local();
+        except RuntimeError as e:
+            print(str(e))
+        
+        self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+                
+    def test_client_ch_add(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        try:
+            suite_names = []
+            self.ci_.ch_register(True,suite_names)        # register interest in any new suites
+            suite_names = [ test + '1', test + '2' ]
+            self.ci_.ch_add(suite_names)                  # add suites s1,s2 to the last added handle
+            suite_names = [ test + '3', test + '4' ]
+            self.ci_.ch_add( self.ci_.ch_handle(),suite_names)  # add suites s3,s4 using last handle
+            self.sync_local();
+        except RuntimeError as e:
+            print(str(e))
+            
+        self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+                
+    def test_client_ch_auto_add(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        try:
+            suite_names = [ test + '1', test + '2', test + '3' ]
+            self.ci_.ch_register(True,suite_names)     # register interest in suites s1,s2,s3 and any new suites
+            self.ci_.ch_auto_add( False )              # disable adding newly created suites to last registered handle
+            self.ci_.ch_auto_add( True )               # enable adding newly created suites to last registered handle
+            self.ci_.ch_auto_add( self.ci_.ch_handle(), False ) # disable adding newly created suites to handle
+            self.sync_local();
+        except RuntimeError as e:
+            print(str(e))
+            
+        self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+               
+    def test_client_ch_remove(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        try: self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        except: pass              # Drop throws if no handle registered
+        
+        defs = Defs()
+        for i in range(1,7): defs.add_suite(test + str(i))
+        self.ci_.load(defs)
+        self.sync_local()  
+        
+        try:
+            suite_names = [ test + '1', test + '2', test + '3' ]
+            self.ci_.ch_register(True,suite_names)     # register interest in suites s1,s2,s3 and any new suites
+            suite_names = [ test + '1' ]
+            self.ci_.ch_remove( suite_names )          # remove suites s1 from the last added handle\n"
+            suite_names = [  test + '2'  ]
+            self.ci_.ch_remove( self.ci_.ch_handle(), suite_names )  # remove suites s2 from the last added handle\n"
+            self.sync_local();
+        except RuntimeError as e:
+            print(str(e))
+            
+        self.ci_.ch_drop_user("")  # drop all handle associated with current user
+        for i in range(1,7):  self.ci_.delete("/" + test + str(i)  ) # stop  downstream test from re-starting this
+               
+    def test_client_get_file(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.create_and_load_defs(test,False)
+  
+        while 1:
+            if self.ci_.news_local():
+                self.sync_local(0) # get the changes, synced with local defs
+                suite = self.ci_.get_defs().find_suite(test)
+                assert suite != None, "Expected to find suite"
+                if suite.get_state() == State.complete:
+                    break;
+            time.sleep(3)
+        try:
+            for file_t in [ 'script', 'job', 'jobout', 'manual' ]:
+                the_returned_file = self.ci_.get_file('/' + test +'/f1/t1',file_t)  # make a request to the server
+                assert len(the_returned_file) > 0,"Expected self.ci_.get_file(/" + test + "/f1/t1," + file_t + ") to return something"
+        except RuntimeError as e:
+            print(str(e))
+    
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+        
+    def test_client_alter_add(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.ci_.load(self.create_defs(test))   
+        self.sync_local()  
+    
+        t1 = "/" + test + "/f1/t1"
+        self.ci_.alter(t1,"add","variable","var","var_name")
+        self.ci_.alter(t1,"add","time","+00:30")
+        self.ci_.alter(t1,"add","time","01:30")
+        self.ci_.alter(t1,"add","time","01:30 20:00 00:30")
+        self.ci_.alter(t1,"add","today","+00:30")
+        self.ci_.alter(t1,"add","today","01:30")
+        self.ci_.alter(t1,"add","today","01:30 20:00 00:30")
+        self.ci_.alter(t1,"add","date","01.01.2001")
+        self.ci_.alter(t1,"add","date","*.01.2001")
+        self.ci_.alter(t1,"add","date","*.*.2001")
+        self.ci_.alter(t1,"add","date","*.*.*")
+        self.ci_.alter(t1,"add","day","sunday")
+        self.ci_.alter(t1,"add","day","monday")
+        self.ci_.alter(t1,"add","day","tuesday")
+        self.ci_.alter(t1,"add","day","wednesday")
+        self.ci_.alter(t1,"add","day","thursday")
+        self.ci_.alter(t1,"add","day","friday")
+        self.ci_.alter(t1,"add","day","saturday")
+        self.ci_.alter(t1,"add","late","late -s +00:15 -a 20:00 -c +02:00")
+    
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.variables))) == 1 ,"Expected 1 variable :\n" + str(self.ci_.get_defs())
+        assert( len(list(task_t1.times))) == 3 ,"Expected 3 time :\n" + str(self.ci_.get_defs())
+        assert( len(list(task_t1.todays))) == 3 ,"Expected 3 today's :\n" + str(self.ci_.get_defs())
+        assert( len(list(task_t1.dates))) == 4 ,"Expected 4 dates :\n" + str(self.ci_.get_defs())
+        assert( len(list(task_t1.days))) == 7 ,"Expected 7 days :\n" + str(self.ci_.get_defs())
+        assert str(task_t1.get_late()) == "late -s +00:15 -a 20:00 -c +02:00", "Expected late 'late -s +00:15 -a 20:00 -c +02:00'" + str(self.ci_.get_defs())
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+               
+    def test_client_alter_delete(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        defs = self.create_defs(test)  
+         
+        t1 = "/" + test + "/f1/t1"
+        task_t1 = defs.find_abs_node(t1)
+        task_t1.add_variable("var","value")
+        task_t1.add_variable("var1","value")
+        task_t1.add_time("00:30")
+        task_t1.add_time("00:31")
+        task_t1.add_today("00:30")
+        task_t1.add_today("00:31")
+        task_t1.add_date(1,1,2001)
+        task_t1.add_date(1,1,2002)
+        task_t1.add_day("sunday")
+        task_t1.add_day("monday")
+        cron = Cron()
+        cron.set_week_days( [0,1,2,3,4,5,6] )
+        cron.set_time_series( "+00:30" )
+        task_t1.add_cron(cron)
+        task_t1.add_cron(cron)
+        task_t1.add_event("event")
+        task_t1.add_event("event1")
+        task_t1.add_meter("meter",0,100,100)
+        task_t1.add_meter("meter1",0,100,100)
+        task_t1.add_label("label","name")
+        task_t1.add_label("label1","name")
+        task_t1.add_limit("limit",10)
+        task_t1.add_limit("limit1",10)
+        task_t1.add_inlimit( "limit",t1,2)
+        task_t1.add_inlimit( "limit1",t1,2)
+        task_t1.add_trigger( "t2 == active" )
+        task_t1.add_complete( "t2 == complete" )
+        
+        assert task_t1.get_late() == None, "expected no late" 
+        late = Late()
+        late.submitted(20, 10)
+        late.active(20, 10)
+        late.complete(20, 10, True)
+        task_t1.add_late(late)
+        assert task_t1.get_late() != None, "expected late" 
+        
+        t2 = "/" + test + "/f1/t2"
+        task_t2 = defs.find_abs_node(t2)
+        task_t2.add_repeat( RepeatDate("date",20100111,20100115,2) )  # can't add cron and repeat at the same level
+        
+        self.ci_.load(defs)   
+        self.sync_local()  
+    
+        self.ci_.alter(t1,"delete","variable","var")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.variables))) == 1 ,"Expected 1 variable :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","variable")  # delete all variables
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.variables))) == 0 ,"Expected 0 variable :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","time","00:30")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.times))) == 1 ,"Expected 1 time :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","time")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.times))) == 0 ,"Expected 0 time :\n" + str(self.ci_.get_defs())
+        
+        self.ci_.alter(t1,"delete","today","00:30")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.todays))) == 1 ,"Expected 1 today :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","today")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.todays))) == 0 ,"Expected 0 today :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","date","01.01.2001")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.dates))) == 1 ,"Expected 1 date :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","date")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.dates))) == 0 ,"Expected 0 date :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","day","sunday")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.days))) == 1 ,"Expected 1 day :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","day")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.days))) == 0 ,"Expected 0 day :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","event","event")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.events))) == 1 ,"Expected 1 event :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","event")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.events))) == 0 ,"Expected 0 event :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","meter","meter")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.meters))) == 1 ,"Expected 1 meter :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","meter")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.meters))) == 0 ,"Expected 0 meter :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","label","label")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.labels))) == 1 ,"Expected 1 label :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","label")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.labels))) == 0 ,"Expected 0 label :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","limit","limit")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.limits))) == 1 ,"Expected 1 limit :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","limit")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.limits))) == 0 ,"Expected 0 limit :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","inlimit","limit")
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.inlimits))) == 1 ,"Expected 1 inlimit :\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","inlimit")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.inlimits))) == 0 ,"Expected 0 inlimit :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","cron")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert( len(list(task_t1.crons))) == 0 ,"Expected 0 crons :\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t1,"delete","late")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert task_t1.get_late() == None, "expected no late after delete" 
+    
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert task_t1.get_trigger() != None, "Expected trigger:\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","trigger")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert task_t1.get_trigger() == None, "Expected trigger to be deleted:\n" + str(self.ci_.get_defs())
+    
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert task_t1.get_complete() != None, "Expected complete:\n" + str(self.ci_.get_defs())
+        self.ci_.alter(t1,"delete","complete")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        assert task_t1.get_complete() == None, "Expected complete to be deleted:\n" + str(self.ci_.get_defs())
+    
+        self.ci_.alter(t2,"delete","repeat")   
+        self.sync_local()
+        task_t2 = self.ci_.get_defs().find_abs_node(t2)
+        repeat = task_t2.get_repeat()
+        assert repeat.empty(), "Expected repeat to be deleted:\n" + str(self.ci_.get_defs())
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+     
+    def test_client_alter_change(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)   
+        t1 = "/" + test + "/f1/t1"
+        repeat_date_path = "/" + test + "/f1/repeat_date"
+        
+        task_t1 = defs.find_abs_node(t1)
+        task_t1.add_variable("var","value")
+        task_t1.add_variable("var1","value")
+        task_t1.add_event("event")
+        task_t1.add_event("event1")
+        task_t1.add_meter("meter",0,100,100)
+        task_t1.add_meter("meter1",0,100,100)
+        task_t1.add_label("label","name")
+        task_t1.add_label("label1","name1")
+        task_t1.add_limit("limit",10)
+        task_t1.add_limit("limit1",10)
+        task_t1.add_inlimit( "limit",t1,2)
+        task_t1.add_inlimit( "limit1",t1,2)
+        task_t1.add_trigger( "t2 == active" )
+        task_t1.add_complete( "t2 == complete" )
+        late = Late()
+        late.submitted(20, 10)
+        late.active(20, 10)
+        late.complete(20, 10, True)
+        task_t1.add_late(late)
+                
+        f1 = defs.find_abs_node("/" + test + "/f1")
+        repeat_date = f1.add_task("repeat_date")
+        repeat_date.add_repeat( RepeatDate("date",20100111,20100115,2) )  # can't add cron and repeat at the same level
+               
+        self.ci_.load(defs)   
+        self.sync_local()  
+    
+        self.ci_.alter(t1,"change","late","-s +10:00")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        variable = task_t1.get_late()
+        assert str(task_t1.get_late()) == "late -s +10:00", "Expected alter of late to be 'late -s +10:00' but found " + str(task_t1.get_late())
+    
+        self.ci_.alter(t1,"change","variable","var","changed_var")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        variable = task_t1.find_variable("var")
+        assert variable.value() == "changed_var", "Expected alter of variable to be 'change_var' but found " + variable.value()
+    
+        self.ci_.alter(t1,"change","meter","meter","10")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        meter = task_t1.find_meter("meter")
+        assert meter.value() == 10, "Expected alter of meter to be 10 but found " + str(meter.value())
+    
+        self.ci_.alter(t1,"change","event","event","set")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        event = task_t1.find_event("event")
+        assert event.value() == True, "Expected alter of event to be set but found " + str(event.value())
+    
+        self.ci_.alter(t1,"change","trigger","t2 == aborted")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        trigger = task_t1.get_trigger()
+        assert trigger.get_expression() == "t2 == aborted", "Expected alter of trigger to be 't2 == aborted' but found " + trigger.get_expression()
+    
+        self.ci_.alter(t1,"change","trigger","/test_client_alter_change/f1/t2 == complete")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        trigger = task_t1.get_trigger()
+        assert trigger.get_expression() == "/test_client_alter_change/f1/t2 == complete", "Expected alter of trigger to be '/test_client_alter_change/f1/t2 == complete' but found " + trigger.get_expression()
+    
+        self.ci_.alter(t1,"change","complete","t2 == aborted")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        complete = task_t1.get_complete()
+        assert complete.get_expression() == "t2 == aborted", "Expected alter of complete to be 't2 == aborted' but found " + complete.get_expression()
+    
+        self.ci_.alter(t1,"change","complete","/test_client_alter_change/f1/t2 == active")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        complete = task_t1.get_complete()
+        assert complete.get_expression() == "/test_client_alter_change/f1/t2 == active", "Expected alter of complete to be '/test_client_alter_change/f1/t2 == active' but found " + complete.get_expression()
+    
+        self.ci_.alter(t1,"change","limit_max","limit", "2")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        limit = task_t1.find_limit("limit")
+        assert limit != None, "Expected to find limit"
+        assert limit.limit() == 2, "Expected alter of limit_max to be 2 but found " + str(limit.limit())
+    
+        self.ci_.alter(t1,"change","limit_value","limit", "2")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        limit = task_t1.find_limit("limit")
+        assert limit != None, "Expected to find limit"
+        assert limit.value() == 2, "Expected alter of limit_value to be 2 but found " + str(limit.value())
+    
+        self.ci_.alter(t1,"change","label","label","new-value")   
+        self.sync_local()
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        label = task_t1.find_label("label")
+        assert label.new_value() == "new-value", "Expected alter of label to be 'new-value' but found " + label.new_value()
+        
+        self.ci_.alter(repeat_date_path,"change","repeat","20100113")   
+        self.sync_local()
+        task = self.ci_.get_defs().find_abs_node(repeat_date_path)
+        repeat = task.get_repeat()
+        assert repeat.value() == 20100113, "Expected alter of repeat to be 20100113 but found " + str(repeat.value())
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+     
+    def test_client_alter_flag(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+         
+        t1 = "/" + test + "/f1/t1"
+        task_t1 = defs.find_abs_node(t1)
+               
+        self.ci_.load(defs)   
+        self.sync_local()  
+    
+        flag = Flag()
+        flag_list = flag.list() # flag_list is of type FlagTypeVec
+        for flg in flag_list: 
+            self.ci_.alter(t1,"set_flag",flag.type_to_string(flg) )   
+            self.sync_local()
+            task_t1 = self.ci_.get_defs().find_abs_node(t1)
+            task_flag = task_t1.get_flag()
+            assert task_flag.is_set( flg ),"expected flag %r to be set" % task_flag.type_to_string(flg)
+    
+            # alter itself causes the flag message to be set, and preserved
+            if flg == FlagType.message: continue 
+            
+            self.ci_.alter(t1,"clear_flag",flag.type_to_string(flg) )   
+            self.sync_local()
+            task_t1 = self.ci_.get_defs().find_abs_node(t1)
+            task_flag = task_t1.get_flag()
+            assert not task_flag.is_set( flg ),"expected flag %r NOT to be set" % task_flag.type_to_string(flg)
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+    
+    def test_client_flag_migrated(self):
+        # ENABLE for ecflow 4.5.0
+        return
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        defs = self.create_defs(test)   
+        s1 = "/" + test  
+       
+        self.ci_.load(defs)   
+        self.sync_local()
+     
+        suite = defs.find_suite(test)
+        node_vec = suite.get_all_nodes()
+        assert len(node_vec) == 4, "Expected 4 nodes, but found " + str(len(node_vec))
+     
+        self.ci_.alter(s1,"set_flag","migrated")   
+        self.sync_local()
+        suite = defs.find_suite(test)
+        node_vec = suite.get_all_nodes()
+        assert len(node_vec) == 1, "Expected 1 nodes, but found " + str(len(node_vec))
+     
+        self.ci_.checkpt()  # checkpoint after setting flag migrated, need to prove nodes still persisted
+         
+        self.ci_.alter(s1,"clear_flag","migrated")   
+        self.sync_local()
+        suite = defs.find_suite(test)
+        node_vec = suite.get_all_nodes()
+        assert len(node_vec) == 4, "Expected 4 nodes, but found " + str(len(node_vec))
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+     
+    def test_client_force(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test) 
+         
+        path_list = [ "/" + test + "/f1/t1", "/" + test + "/f1/t2" ]       
+        t1 = path_list[0]      
+        for path in path_list:
+            task = defs.find_abs_node(path)
+            assert task != None, "Expected to find task at path " + path
+            task.add_event("event")
+    
+        self.ci_.load(defs)   
+        self.sync_local()  
+        
+        state_list = [ State.unknown, State.active, State.complete, State.submitted, State.aborted, State.queued ]
+        for state in state_list:
+            self.ci_.force_state(t1,state) 
+            self.sync_local()
+            task = self.ci_.get_defs().find_abs_node(t1)
+            assert task.get_state() == state, "Expected state " + state + " but found " + str(task.get_state())      
+        for state in state_list:
+            self.ci_.force_state( path_list,state) 
+            self.sync_local()
+            for path in path_list:
+                task = self.ci_.get_defs().find_abs_node(path)
+                assert task.get_state() == state, "Expected state " + state + " but found " + str(task.get_state())     
+     
+        for state in state_list:
+            self.ci_.force_state_recursive("/" + test,state) 
+            self.sync_local()
+            task = self.ci_.get_defs().find_abs_node(t1)
+            assert task.get_state() == state, "Expected state " + state + " but found " + str(task.get_state())
+        suite_paths = [ "/" + test ]
+        for state in state_list:
+            self.ci_.force_state_recursive( suite_paths,state) 
+            self.sync_local()
+            task = self.ci_.get_defs().find_abs_node(t1)
+            assert task.get_state() == state, "Expected state " + state + " but found " + str(task.get_state())           
+        
+        event_states = [ "set", "clear" ]
+        for ev_state in event_states:
+            for path in path_list:
+                self.ci_.force_event(path + ":event" , ev_state)
+                self.sync_local()
+                task = self.ci_.get_defs().find_abs_node(path)
+                event_fnd = False
+                for event in task.events:
+                    event_fnd = True
+                    if ev_state == "set" :  assert event.value() == True  ," Expected event value to be set"
+                    else:                   assert event.value() == False ," Expected event value to be clear"
+                assert event_fnd == True," Expected event to be found"
+    
+        event_path_list = [ "/" + test + "/f1/t1:event", "/" + test + "/f1/t2:event" ]       
+        event_states = [ "set", "clear" ]
+        for ev_state in event_states:
+            self.ci_.force_event( event_path_list , ev_state)
+            self.sync_local()
+            for path in path_list:
+                task = self.ci_.get_defs().find_abs_node(path)
+                event_fnd = False
+                for event in task.events:
+                    event_fnd = True
+                    if ev_state == "set" :  assert event.value() == True  ," Expected event value to be set"
+                    else:                   assert event.value() == False ," Expected event value to be clear"
+                assert event_fnd == True," Expected event to be found"
+    
+        self.ci_.suspend("/" + test  ) # stop  downstream test from re-starting this
+          
+    def test_client_replace(self,on_disk):
+        test = sys._getframe().f_code.co_name # returns function name
+        if on_disk:
+            test = test + "on_disk"
+        self.log_msg(test)
+        self.ci_.log_msg(str(on_disk))
+         
+        # Create and load the following defs
+        # s1
+        #   f1
+        #     t1
+        #     t2
+        self.ci_.load(self.create_defs(test))  
+        self.sync_local()  
+        
+        #===============================================================================
+        # Example of using replace to ADD a *NEW* node hierarchy to an existing suite
+        # we should end up with:
+        # s1
+        #   f1
+        #     t1
+        #     t2
+        #   f2
+        #     t1
+        client_def = self.create_defs(test)
+        client_def.find_suite(test).add_family("f2").add_task("t1")
+        if on_disk:
+            client_def.save_as_defs(test + ".def")
+            client_def = test + ".def"
+        
+        self.ci_.replace("/" + test + "/f2",client_def,True,False)  # True means create parents as needed, False means don't bypass checks/zombies
+        self.sync_local()  
+        assert self.ci_.get_defs().find_abs_node("/" + test + "/f2/t1") != None, "Expected to find task /" + test + "/f2/t1\n" + str(self.ci_.get_defs())
+    
+        # Example of using replace to *REMOVE* node hierarchy to an existing suite, could have used delete
+        assert self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1") != None, "Expected to find task /" + test + "/f1/t1\n" + str(self.ci_.get_defs())
+        assert self.ci_.get_defs().find_abs_node("/" + test + "/f2/t1") != None, "Expected to find task /" + test + "/f2/t1\n" + str(self.ci_.get_defs())
+        client_def = Defs()
+        client_def.add_suite(test)    # should only have the suite
+        if on_disk:
+            client_def.save_as_defs(test + ".def")
+            client_def = test + ".def"
+    
+        self.ci_.replace("/" + test,client_def)   
+        self.sync_local()  
+        assert self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1") == None, "Expected NOT to find task /" + test + "/f1/t1\n" + str(self.ci_.get_defs())
+        assert self.ci_.get_defs().find_abs_node("/" + test + "/f2/t1") == None, "Expected NOT to find task /" + test + "/f2/t1\n" + str(self.ci_.get_defs())
+    
+        #===============================================================================
+        # Example of using replace to add a *NEW* suite
+        test2 = test + "2";
+        client_def = Defs();
+        client_def.add_suite(test2)
+        if on_disk:
+            client_def.save_as_defs(test + ".def")
+            client_def = test + ".def"
+    
+        self.ci_.replace("/" + test2,client_def,True,False)  # True means create parents as needed, False means don't bypass checks/zombies
+        self.sync_local()  
+        suite = self.ci_.get_defs().find_suite(test2)
+        assert suite != None ,"Expected to find suite :" + test2 + "\n" + str(self.ci_.get_defs())
+               
+        # replace added suite s2 with a new s2 which has a task, 
+        # s2 must exist on the client defs
+        client_def = Defs();
+        client_def.add_suite(test2).add_task("t1")
+        if on_disk:
+            client_def.save_as_defs(test + ".def")
+            client_def = test + ".def"
+    
+        self.ci_.replace("/" + test2,client_def) 
+        self.sync_local()  
+            
+        assert self.ci_.get_defs().find_abs_node("/" + test2 + "/t1") != None, "Expected to find task /" + test2 + "/t1\n" + str(self.ci_.get_defs())
+        if on_disk:
+            os.remove(client_def)
+    
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+        self.ci_.suspend("/" + test2  ) # stop  downstream test from re-starting this
+        self.sync_local()  
+    
+    def test_client_suspend(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        
+        defs = self.create_defs(test)  
+        defs.find_suite(test).add_variable("ECF_DUMMY_TASK","")
+            
+        self.ci_.load(defs)  
+        self.sync_local()  
+        self.ci_.begin_suite(test)  
+        
+        self.ci_.suspend("/" + test )  
+               
+        self.sync_local();
+        suite = self.ci_.get_defs().find_suite(test)
+        assert suite.is_suspended(), "Expected to find suite suspended"
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+        
+    def test_client_suspend_multiple_paths(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+        suite = defs.find_suite(test)
+        suite.add_variable("ECF_DUMMY_TASK","")
+        
+        self.ci_.load(defs)  
+        self.ci_.begin_suite(test)  
+        self.sync_local()  
+        
+        path_list = [ "/" + test + "/f1/t1", "/" + test + "/f1/t2" ]
+        self.ci_.suspend( path_list )  
+               
+        self.sync_local();
+        task_t1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task_t2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task_t1.is_suspended(), "Expected to find task t1 to be suspended"
+        assert task_t2.is_suspended(), "Expected to find task t2 to be suspended"
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+                
+    def test_client_resume(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+        defs.find_suite(test).add_variable("ECF_DUMMY_TASK","")
+            
+        self.ci_.load(defs)  
+        self.ci_.begin_suite(test)  
+        self.sync_local()  
+        
+        self.ci_.suspend("/" + test )  
+        self.sync_local();
+        suite = self.ci_.get_defs().find_suite(test)
+        assert suite.is_suspended(), "Expected to find suite suspended"
+        
+        self.ci_.resume("/" + test )  
+        self.sync_local();
+        suite = self.ci_.get_defs().find_suite(test)
+        assert suite.is_suspended() == False, "Expected to find suite resumed"
+    
+        # suspend to stop down stream tests from restarting this test
+        self.ci_.suspend("/" + test )  
+    
+    def test_client_resume_multiple_paths(self):
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+        defs.find_suite(test).add_variable("ECF_DUMMY_TASK","")
+            
+        self.ci_.load(defs)  
+        self.ci_.begin_suite(test)  
+        self.sync_local()  
+        
+        path_list = [ "/" + test + "/f1/t1", "/" + test + "/f1/t2" ]
+        self.ci_.suspend( path_list )  
+      
+        self.sync_local();
+        task_t1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task_t2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task_t1.is_suspended(), "Expected to find task t1 to be suspended"
+        assert task_t2.is_suspended(), "Expected to find task t2 to be suspended"
+    
+        self.ci_.resume( path_list )  
+        self.sync_local();
+        task_t1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task_t2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task_t1.is_suspended() == False, "Expected to find task t1 to be resumed"
+        assert task_t2.is_suspended() == False, "Expected to find task t2 to be resumed"
+        
+         # suspend to stop down stream tests from restarting this test
+        self.ci_.suspend("/" + test )  
+      
+    def test_client_delete_node(self): 
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)
+        
+        task_vec = defs.get_all_tasks();
+        assert len(task_vec) > 0, "Expected some tasks but found none:\n" + str(defs)
+    
+        self.ci_.load(defs)  
+        self.sync_local();
+        for task in task_vec:
+            node = self.ci_.get_defs().find_abs_node(task.get_abs_node_path()) 
+            assert node != None , "Expected to find task " + task.get_abs_node_path()  + ":\n"  + str(self.ci_.get_defs()) 
+    
+        for task in task_vec:
+            self.ci_.delete(task.get_abs_node_path())
+    
+        self.sync_local();
+        for task in task_vec:
+            node = self.ci_.get_defs().find_abs_node(task.get_abs_node_path()) 
+            assert node == None , "Expected not to find task " + task.get_abs_node_path()  + " as it should have been deleted:\n" + str(self.ci_.get_defs())   
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+        
+    def test_client_delete_node_multiple_paths(self): 
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)
+        
+        task_vec = defs.get_all_tasks();
+        assert len(task_vec) > 0, "Expected some tasks but found none:\n" + str(defs)
+    
+        paths = []
+        for task in task_vec:
+            paths.append(task.get_abs_node_path()) 
+     
+        self.ci_.load(defs)  
+        
+        self.sync_local();
+        for task in task_vec:
+            node = self.ci_.get_defs().find_abs_node(task.get_abs_node_path()) 
+            assert node != None , "Expected to find task " + task.get_abs_node_path()  + ":\n"  + str(self.ci_.get_defs()) 
+    
+        self.ci_.delete(paths)
+    
+        self.sync_local();
+        for task in task_vec:
+            node = self.ci_.get_defs().find_abs_node(task.get_abs_node_path()) 
+            assert node == None , "Expected not to find task " + task.get_abs_node_path()  + " as it should have been deleted:\n" + str(self.ci_.get_defs())   
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this    
+    
+    def test_client_check_defstatus(self):            
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        defs = self.create_defs(test)  
+        
+        # stop defs from running when begin is called.
+        defs.find_suite(test).add_defstatus(DState.suspended)
+    
+        t1 = "/" + test + "/f1/t1"
+        t2 = "/" + test + "/f1/t2"
+        task_t1 = defs.find_abs_node(t1)
+        task_t1.add_defstatus(DState.suspended)
+        
+        self.generate_scripts_and_load_defs(defs);
+        self.ci_.begin_suite(test)
+         
+        self.sync_local() # get the changes, synced with local defs
+        #print self.ci_.get_defs();
+        task_t1 = self.ci_.get_defs().find_abs_node(t1)
+        task_t2 = self.ci_.get_defs().find_abs_node(t2)
+        assert task_t1 != None,"Could not find t1"
+        assert task_t2 != None,"Could not find t2"
+      
+        assert task_t1.get_state() == State.queued, "Expected state queued but found " + str(task_t1.get_state())
+        assert task_t2.get_state() == State.queued, "Expected state queued " + str(task_t2.get_state())
+    
+        assert task_t1.get_dstate() == DState.suspended, "Expected state suspended but found " + str(task_t1.get_state())
+        assert task_t2.get_dstate() == DState.queued, "Expected state queued but found " + str(task_t2.get_state())
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+       
+    def test_ECFLOW_189(self):
+        # Bug, when a node is resumed it ignored holding dependencies higher up the tree.
+        # i.e Previously when we resumed a node, it ignored trigger/time/node state, dependencies higher up the tree
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.generate_scripts_and_load_defs(self.create_defs(test));
+        
+        self.ci_.suspend("/" + test  )
+        self.ci_.suspend("/" + test + "/f1/t1")
+        self.ci_.suspend("/" + test + "/f1/t2")
+            
+        self.ci_.begin_suite(test)
+        
+        self.sync_local() # get the changes, synced with local defs
+        #print self.ci_.get_defs();
+        task_t1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task_t2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task_t1 != None,"Could not find /" + test + "/f1/t1"
+        assert task_t2 != None,"Could not find /" + test + "/f1/t2"
+      
+        assert task_t1.get_state() == State.queued, "Expected state queued but found " + str(task_t1.get_state())
+        assert task_t2.get_state() == State.queued, "Expected state queued but found " + str(task_t2.get_state())
+        assert task_t1.get_dstate() == DState.suspended, "Expected state suspended but found " + str(task_t1.get_dstate())
+        assert task_t2.get_dstate() == DState.suspended, "Expected state suspended but found " + str(task_t2.get_dstate())
+    
+        # ok now resume t1/t2, they should remain queued, since the Suite is still suspended
+        self.ci_.resume("/" + test + "/f1/t1")
+        self.ci_.resume("/" + test + "/f1/t2")
+         
+        self.sync_local() # get the changes, synced with local defs
+        #print self.ci_.get_defs();
+        task_t1 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t1")
+        task_t2 = self.ci_.get_defs().find_abs_node("/" + test + "/f1/t2")
+        assert task_t1.get_state() == State.queued, "Expected state queued but found " + str(task_t1.get_state())
+        assert task_t2.get_state() == State.queued, "Expected state queued but found " + str(task_t2.get_state())
+        assert task_t1.get_dstate() == DState.queued, "Expected state queued but found " + str(task_t1.get_dstate())
+        assert task_t2.get_dstate() == DState.queued, "Expected state queued but found " + str(task_t2.get_dstate())
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+    
+    def test_ECFLOW_199(self):
+        # Test ClientInvoker::changed_node_paths
+        test = sys._getframe().f_code.co_name # returns function name
+        self.log_msg(test)
+        self.generate_scripts_and_load_defs(self.create_defs(test));
+        
+        self.ci_.suspend("/" + test  )
+        self.ci_.suspend("/" + test + "/f1/t1")
+        self.ci_.suspend("/" + test + "/f1/t2")
+        self.sync_local() # get the changes, synced with local defs
+    
+        self.ci_.begin_suite(test)
+        
+        self.sync_local() # get the changes, synced with local defs
+        #print self.ci_.get_defs();
+        assert len(list(self.ci_.changed_node_paths)) == 0, "Expected first call to sync_local, to have no changed paths but found " + str(len(list(self.ci_.changed_node_paths)))
+        
+        # ok now resume t1/t2, they should remain queued, since the Suite is still suspended
+        self.ci_.resume("/" + test + "/f1/t1")
+        self.sync_local() 
+        if len(list(self.ci_.changed_node_paths)) != 1:
+            for path in self.ci_.changed_node_paths:
+                print("   changed node path " + path);
+            assert False, "Expected 1 changed path but found " + str(len(list(self.ci_.changed_node_paths)))
+    
+        self.ci_.resume("/" + test + "/f1/t2")
+        self.sync_local() 
+        if len(list(self.ci_.changed_node_paths)) != 1:
+            for path in self.ci_.changed_node_paths:
+                print("   changed node path " + path);
+            assert False, "Expected 1 changed path but found " + str(len(list(self.ci_.changed_node_paths)))
+            
+        self.ci_.suspend("/" + test  )  # stop  downstream test from re-starting this
+
+    
+    def test_gui(self):   
+        self.ci_.delete_all() # start fresh
+        self.test_version()
+        PrintStyle.set_style( Style.STATE ) # show node state 
+        self.test_client_get_server_defs()             
+                 
+        self.test_client_restart_server()             
+        self.test_client_halt_server()             
+        self.test_client_shutdown_server()   
+             
+        self.test_client_load_in_memory_defs()             
+        self.test_client_load_from_disk()             
+        self.test_client_checkpt()             
+        self.test_client_restore_from_checkpt()             
+                  
+        self.test_client_reload_wl_file()             
+          
+        self.test_client_run()  
+        self.test_client_run_with_multiple_paths()     
+        self.test_client_requeue()             
+        self.test_client_requeue_with_multiple_paths()             
+        self.test_client_free_dep()              
+         
+        self.test_client_suites()
+        self.test_client_ch_suites()  
+        self.test_client_ch_register()             
+        self.test_client_ch_drop()             
+        self.test_client_ch_drop_user()             
+        self.test_client_ch_add()             
+        self.test_client_ch_auto_add()             
+        self.test_client_ch_remove()             
+                    
+        self.test_client_get_file()             
+        self.test_client_alter_add() 
+        self.test_client_alter_delete() 
+        self.test_client_alter_change() 
+        self.test_client_alter_flag() 
+        self.test_client_flag_migrated() 
+       
+        self.test_client_force()             
+        self.test_client_replace(False)             
+        self.test_client_replace(True)             
+         
+        self.test_client_suspend()             
+        self.test_client_suspend_multiple_paths()             
+        self.test_client_resume()             
+        self.test_client_resume_multiple_paths()             
+        self.test_client_delete_node()             
+        self.test_client_delete_node_multiple_paths()             
+         
+        self.test_client_check()  
+        self.test_client_check_defstatus()  
+         
+        self.test_ECFLOW_189()         
+        self.test_ECFLOW_199()         
+
+if __name__ == "__main__":
+    
+    DESC = """Will run various tests on the server. These will be used to test the GUI
+              This assumes that gui has been set to sync every second, as this will allows changes
+              in the server to be reflected in the GUI.
+              The test will sleep for sync_sleep seconds, after each change to the server.
+              This should allow GUI (1 second poll), to see the effects of this test.
+              To debug this tests, just set sync_sleep = 0, this will also preserve the test data.
+                 - Test data is created in directory: test_gui, this will deleted at the end of the test.
+                 - Assumes includes head.h and tail.h are in CWD + /Pyext/test/data/includes
+                 - We will look for the ecflow_client in the embedded child commands in the generetd scripts, 
+                   first in the current cmake build tree, otherwise /usr/local/apps/ecflow, with same 
+                   version as this ecflow python api.
+              Usage:
+                   TestGui.py --host <hostname> --port <portname> --time <sec> --sync_sleep <sec> 
+            """    
+    PARSER = argparse.ArgumentParser(description=DESC,  
+                                     formatter_class=argparse.RawDescriptionHelpFormatter)
+    PARSER.add_argument('--host', default="localhost",   
+                        help="The name of the host machine, defaults to 'localhost'")
+    PARSER.add_argument('--port', default="3141",   
+                        help="The port on the host, defaults to 3141")
+    PARSER.add_argument('--time', default=0,   
+                        help="How long to run the tests in seconds. default is 0, which is one test loop")
+    PARSER.add_argument('--sync_sleep', type=int,default=4,   
+                        help="Time to wait after sync_local. Allow GUI to refresh. Set to 0 for debug.")
+    ARGS = PARSER.parse_args()
+    print ARGS   
+     
+    # ===========================================================================
+    CL = ecflow.Client(ARGS.host, ARGS.port)
+    tester = Tester(CL,ARGS)
+    try:
+        CL.ping() 
+        tester.clean_up_data()
+        tester.clean_up_server()
+        
+        count = 1
+        start_time = time.time()
+        while True:
+            tester = Tester(CL,ARGS)
+            tester.test_gui()
+            elapsed = int(time.time() - start_time)
+            print "======================================================"
+            print "elapsed time :",elapsed, "s loop:",count
+            print "======================================================"
+            count += 1
+            if elapsed > int(ARGS.time):
+                break
+                
+    except RuntimeError, ex:
+        print "Error: " + str(ex)
+        print "Check host and port number are correct."
+
+    # When debugging keep test data.
+    if ARGS.sync_sleep != 0:
+        tester.clean_up_server()
+        tester.clean_up_data()
diff --git a/Pyext/samples/TestSyncLocalPerf.py b/Pyext/samples/TestSyncLocalPerf.py
new file mode 100644
index 0000000..71eccd0
--- /dev/null
+++ b/Pyext/samples/TestSyncLocalPerf.py
@@ -0,0 +1,65 @@
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+# Name        :
+# Author      : Avi
+# Revision    : $Revision: #10 $
+#
+# Copyright 2009-2016 ECMWF.
+# This software is licensed under the terms of the Apache Licence version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+
+import time
+import argparse # for argument parsing  
+from ecflow import Client, debug_build
+
+def timing_decorator(function_to_time):
+    def scafold(*function_args):
+        # function_args is a tuple, the second argument is the suite name
+        start = time.time()
+        function_return = function_to_time(*function_args)
+        end = time.time()
+        print '%s function took %0.3f ms for %s' % (function_to_time.func_name, (end-start)*1000.0, function_args[1])
+        return function_return
+    return scafold
+
+ at timing_decorator
+def sync_local(ci,suite_name):
+    ci.sync_local()
+
+if __name__ == "__main__":
+    
+    DESC = """This test is use to show the performance of sync local on the given server
+              It should show that it is quicker to register and then sync_local()
+              as this limits the amount of data that needs to be down loaded from the
+              server.
+              Usage:
+                   TestSyncLocalPerf.py --host <hostname> --port <portname>  
+            """    
+    PARSER = argparse.ArgumentParser(description=DESC,  
+                                     formatter_class=argparse.RawDescriptionHelpFormatter)
+    PARSER.add_argument('--host', default="localhost",   
+                        help="The name of the host machine, defaults to 'localhost'")
+    PARSER.add_argument('--port', default="3141",   
+                        help="The port on the host, defaults to 3141")
+    ARGS = PARSER.parse_args()
+    print ARGS   
+     
+    print("####################################################################")
+    print("Test performance of sync local using " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
+
+    CL = Client(ARGS.host, ARGS.port)
+    sync_local(CL,"* All suites *")   # timing for downloading all suites
+    print ""
+
+    suites = CL.get_defs().suites
+    for suite in suites:
+        CL.ch_register(False,[suite.name()])
+        
+        sync_local(CL,suite.name()) # time this
+        
+        CL.ch_drop()  # drop the last registered handle
+            
\ No newline at end of file
diff --git a/Pyext/samples/api/README b/Pyext/samples/api/README
new file mode 100644
index 0000000..15c83de
--- /dev/null
+++ b/Pyext/samples/api/README
@@ -0,0 +1,2 @@
+This folder contains an example of extending the ecflow python API.
+It adds another convenience layer, that is used by operations.
\ No newline at end of file
diff --git a/Pyext/samples/ecf.py b/Pyext/samples/api/ecf.py
similarity index 100%
rename from Pyext/samples/ecf.py
rename to Pyext/samples/api/ecf.py
diff --git a/Pyext/samples/sms2ecf.py b/Pyext/samples/api/sms2ecf.py
similarity index 99%
rename from Pyext/samples/sms2ecf.py
rename to Pyext/samples/api/sms2ecf.py
index 51948d3..5fcc05b 100755
--- a/Pyext/samples/sms2ecf.py
+++ b/Pyext/samples/api/sms2ecf.py
@@ -16,7 +16,7 @@ stat = subm
 
 DICT_SMS_ECF = {
     'SMSNAME': 'ECF_NAME',
-    'SMSNODE': 'ECF_NODE',
+    'SMSNODE': 'ECF_HOST',
     'SMSPASS': 'ECF_PASS',
     'SMS_PROG': 'ECF_PORT',
     'SMSFILES': 'ECF_FILES',
diff --git a/Pyext/samples/check_modules.py b/Pyext/samples/check_modules.py
index 1e3fb5d..bd84850 100755
--- a/Pyext/samples/check_modules.py
+++ b/Pyext/samples/check_modules.py
@@ -1,88 +1,144 @@
 #!/usr/bin/env python2.7
+"""Check if expected modules are loaded.
+
+Usage:
+ ./check_modules.py --m "module load git module swap PrgEnv-cray PrgEnv-gnu " --f module_list_file
+ ./check_modules.py --m "module swap PrgEnv-cray PrgEnv-gnu" --f module_list_file
+ ./check_modules.py --m "module unload grib_api" --f module_list_file
+ ./check_modules.py --m "module load gnu/4.8.1 module load python/2.7.8-01" --f module_list_file
+ ./check_modules.py --m "module swap PrgEnv-cray PrgEnv-gnu module load cdt/16.03" --f module_list_file
+ ./check_modules.py --m "module swap craype-network-aries craype-network-none module switch fftw/3.3.4.7" --f module_list_file
+
+module_list_file is the output of module list e.g.
+
+Currently Loaded Modulefiles:
+  1) version/3.2.10(default)             7) ecfs/2.2.1-rc2(new:prodn:default)
+  2) verbose/true(default)               8) metview/4.6.4(default)
+  3) mode/64(default)                    9) ecaccess/4.0.2(default)
+  4) gnu/4.8.1(default)                 10) fftw/3.3.4(default)
+  5) python/2.7.8-01(default)           11) emos/437(default)
+  6) sms/4.4.14(default)                12) ecmwf/1.0(default)
+"""
+
 import argparse
 import re
-if __name__ == "__main__":
-    DESC = """Will check module are correct:
-              Usage:
-                ./check_modules.py --m "module load git module swap PrgEnv-cray PrgEnv-gnu " --f module_list_file
-                ./check_modules.py --m "module swap PrgEnv-cray PrgEnv-gnu" --f module_list_file
-                ./check_modules.py --m "module unload grib_api" --f module_list_file
-            """    
-    PARSER = argparse.ArgumentParser(description=DESC,formatter_class=argparse.RawDescriptionHelpFormatter)
-    PARSER.add_argument('--m',help="The module command of some sort")
-    PARSER.add_argument('--f',help="Path to a file that is the output of module list")
-    PARSER.add_argument('--remote_host',help="remote host")
+import sys
+
+def main():
+    PARSER = argparse.ArgumentParser(description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
+    PARSER.add_argument('--m', help="Space separated list of module commands")
+    PARSER.add_argument('--f', help="Path to a file that is the output of module list")
+    PARSER.add_argument('--remote_host', help="remote host")
     ARGS = PARSER.parse_args()
-    #print ARGS
 
-    delimter = "module"
-    module_cmds = [delimter+e for e in ARGS.m.split(delimter) if e != ""]
-    #print module_cmds
+    delimter = "module "
+    module_cmds = [e.strip() for e in ARGS.m.split(delimter) if e.strip() != ""]
+    print "module_cmds ",module_cmds
+
+    module_actions = ("load", "add", "rm", "unload", "swap", "switch")
+    modules_required = dict()
+    modules_missing = set()
 
-    module_actions = ("load","add","rm","unload","swap","switch")
+    def set_version(s):
+        print " set_version ",s
+        try:
+            mod, version = s.split('/')
+        except ValueError:
+            mod = s
+            version = None
+        modules_required[mod] = version
+        if mod in modules_missing:
+             modules_missing.remove(mod)
+
+    def unset_version(s):
+        # Unloading a specific version has no effect if a different version is loaded!
+        print " unset_version ",s
+        try:
+            mod, version = s.split('/')
+            if mod in modules_required and modules_required[mod] == version:
+                modules_required.pop(mod)
+            modules_missing.add(s)
+        except ValueError:
+            if s in modules_required:
+                modules_required.pop(s)
+            modules_missing.add(s)
+
+    print "========================================================="
+    print "Read input module list->",module_cmds
+    print "========================================================="
     for mod in module_cmds:
         module_cmd = mod.split()
-        #print ">>",module_cmd,"<<"
-        if len(module_cmd) < 3 and module_cmd[0] != "module":
-            print "Error: Module command ",module_cmds[0]," is not correctly formed, first string must be module"
-            exit(1)
-        if not module_cmd[1] in module_actions:
-            print "Error: Module command ",module_cmd," is not correctly formed, second arg must be one of add,load,rm,unload,switch,swap"
-            exit(1)
-
-    # open file,for list of modules,
-    #   Currently Loaded Modulefiles:
-    #   1) version/3.2.10(default)             7) ecfs/2.2.1-rc2(new:prodn:default)
-    #   2) verbose/true(default)               8) metview/4.6.4(default)
-    #   3) mode/64(default)                    9) ecaccess/4.0.2(default)
-    #   4) gnu/4.8.1(default)                 10) fftw/3.3.4(default)
-    #   5) python/2.7.8-01(default)           11) emos/437(default)
-    #   6) sms/4.4.14(default)                12) ecmwf/1.0(default)
+        print "module_cmd ",module_cmd
+        action = module_cmd[0]
+        if action not in module_actions:
+            print "Error: Module command ", module_cmd, " is not correctly formed, second arg must be one of", ', '.join(module_actions)
+            return 1
+        if action in ('load', 'add'):
+            if len(module_cmd) != 2:
+                print "Error: invalid module command '%s'" % ' '.join(module_cmd)
+            set_version(module_cmd[1])
+        if action in ('swap', 'switch'):
+            # Swap takes either 1 or 2 arguments
+            # module swap pkg/version <-- unloads pkg, loads pkg/version
+            # module swap pkg1/v1 pkg2/v2 <-- unloads pkg1/v1, loads pkg2/v2
+            if len(module_cmd) > 3:
+                print "Error: invalid module command '%s'" % ' '.join(module_cmd)
+            if len(module_cmd) == 3:
+                unset_version(module_cmd[1])
+            set_version(module_cmd[-1])
+        if action in ('rm', 'unload'):
+            if len(module_cmd) != 2:
+                print "Error: invalid module command '%s'" % ' '.join(module_cmd)
+            unset_version(module_cmd[1])
 
+    print "========================================================="
+    print "Read module list file->",ARGS.f
+    print "========================================================="
+    modules_loaded = dict()
     module_list = list()
-    module_list_file = open(ARGS.f)
-    try:
+    with open(ARGS.f) as module_list_file:
         for line in module_list_file:
             #print line
             line = line.rstrip()
             if line.find("Currently Loaded") == 0: continue;
             tokens = re.split(r'\s|\d+\)',line)
-            while '' in tokens:
-                tokens.remove('')
-            #print tokens
+            while '' in tokens: tokens.remove('')
+            #print "tokens",tokens
             for tok in tokens:
-                module_list.append(tok)
-    finally:
-         module_list_file.close()
-    #print module_list
+                #print "tok",tok
+                count = tok.count('/')
+                if count == 1:
+                   mod,version = tok.split('/')
+                   version = version.split("(")[0]
+                   print "->(",mod,",",version,")"
+                   modules_loaded[mod] = version
+                else:
+                   print "->(",tok,",None)"
+                   modules_loaded[tok] = None
 
-    for mod in module_cmds:
-        module_cmd = mod.split()
-        #print ">>",module_cmd,"<<"
-        if module_cmd[1] == "load" or module_cmd[1] == "add":
-            if not any(module_cmd[2] in s for s in module_list):
-                if ARGS.remote_host =="sappa" or ARGS.remote_host =="sappb":
-                    if module_cmd[2] == "git": continue  # ignore, uses system git
-                print "Error: package",module_cmd[2],"not found in the module list"
-                exit(1)
-        if module_cmd[1] == "swap" or module_cmd[1] == "switch":
-            # swap could be
-            # module swap PrgEnv-cray PrgEnv-gnu
-            # module swap cdt/15.06
-            expected_package = module_cmd[-1] # get last element
-            if not any(module_cmd[-1] in s for s in module_list):
-                print "Error: package",module_cmd[-1],"not found in the module list"
-                exit(1)
-        if module_cmd[1] == "unload" or module_cmd[1] == "rm":
-           if any(module_cmd[2] in s for s in module_list):
-                print "Error:",mod,"found in the module list"
-                exit(1)
-                
-# 
-# module list > module_list_file 2>&1 && less module_list_file
-# FAIL:
-# ./check_modules.py --m "module unload emos" --f module_list_file
-# ./check_modules.py --m "module load python module load xxx" --f module_list_file
-# PASS:
-# ./check_modules.py --m "module load python module swap fftw/3.3.1 fftw/3.3.4" --f module_list_file
-# ./check_modules.py --m "module load python module swap sms/4.4.14" --f module_list_file --remote_host sappa
+    print "========================================================="
+    print "Checking"
+    print "========================================================="
+    print "->module_missing:   ",modules_missing
+    print "->modules_required: ",modules_required
+    print "->module list:      ",modules_loaded
+    failed = 0
+    for mod, version in modules_required.items():
+        if version and modules_loaded.get(mod) != version or version is None and mod not in modules_loaded:
+            print "Error: expected module %s/%s not found in module list" % (mod, version)
+            failed = 1
+    for module in modules_missing:
+        print "modules_missing - ", module
+        if '/' in module:
+            mod, version = module.split('/')
+            if modules_loaded.get(mod) == version:
+                print "Error: unexpected module %s/%s found in module list" % (mod, version)
+                failed = 1
+        else:
+            if module in modules_loaded:
+                print "Error: unexpected module %s found in module list" % module
+                failed = 1
+    return failed
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/Pyext/samples/cray.py b/Pyext/samples/cray.py
index 99ac7cb..36aef5a 100755
--- a/Pyext/samples/cray.py
+++ b/Pyext/samples/cray.py
@@ -80,7 +80,7 @@ class Client(object):
     def __init__(self):
       print "Creating Client"
       self.ci = ecflow.Client()
-      self.ci.set_host_port("$ECF_NODE$","$ECF_PORT$")
+      self.ci.set_host_port("$ECF_HOST$","$ECF_PORT$")
       self.ci.set_child_pid(os.getpid())
       self.ci.set_child_path("$ECF_NAME$")
       self.ci.set_child_password("$ECF_PASS$")
@@ -173,7 +173,7 @@ import signal
 
 ECF_PORT=$ECF_PORT:0$
 XECF="/usr/local/apps/ecflow/current/bin/ecflow_client ";
-# --port=$ECF_PORT:0$ --host=$ECF_NODE:0$ ";
+# --port=$ECF_PORT:0$ --host=$ECF_HOST:0$ ";
 def SigHandler(signum, frame):
    print "caught signal " + signum
    xabort()
@@ -238,7 +238,7 @@ logto(sys.stdout, syslogfile, open("log.tmp", "w"))
 if ECF_PORT > 0:
   os.environ['ECF_PORT'] = "$ECF_PORT:0$"
   os.environ['ECF_NAME'] = "$ECF_NAME:0$"
-  os.environ['ECF_NODE'] = "$ECF_NODE:0$"
+  os.environ['ECF_HOST'] = "$ECF_HOST:0$"
   os.environ['ECF_PASS'] = "$ECF_PASS:0$"
 
   def xinit():
@@ -318,7 +318,7 @@ my $xabort = "smsabort";
 
 if (^ECF_PORT:0^ != 0) {
 $ENV{'ECF_PORT'}  = "^ECF_PORT:0^" ;  # ecFlow port number
-$ENV{'ECF_NODE'}  = "^ECF_NODE:0^"  ; # ecFlow host
+$ENV{'ECF_HOST'}  = "^ECF_HOST:0^"  ; # ecFlow host
 $ENV{'ECF_NAME'}  = "^ECF_NAME:0^"  ; # task path into the suite
 $ENV{'ECF_PASS'}  = "^ECF_PASS:0^"  ; # password for the job
 $ENV{'ECF_TRYNO'} = "^ECF_TRYNO:0^" ; # job occurence number
@@ -680,9 +680,9 @@ ECF_NAME=$1
 ECF_PASS=$2
 ECF_JOB=$3
 ECF_JOBOUT=$4
-ECF_NODE=$5
+ECF_HOST=$5
 ECF_PORT=$6
-export ECF_NAME ECF_PASS ECF_NODE ECF_PORT ECF_JOB ECF_JOBOUT
+export ECF_NAME ECF_PASS ECF_HOST ECF_PORT ECF_JOB ECF_JOBOUT
 echo "#MSG: START USER SCRIPT"
 . $ECF_JOB # >> $ECF_JOBOUT 2>&1
 '''
@@ -725,7 +725,7 @@ exit 0 # test bubbling up an error through ssh
   example of minimalist script: only variables, wrapper is added at submission time
 %end
 #SET ECF_NAME=%ECF_NAME%
-#SET ECF_NODE=%ECF_NODE%
+#SET ECF_HOST=%ECF_HOST%
 #SET ECF_PORT=%ECF_PORT%
 #SET ECF_PASS=%ECF_PASS%
 #SET ECF_JOB=%ECF_JOB%
@@ -746,7 +746,7 @@ echo "#!/bin/ksh" > $ECF_JOB
 cat $ECF_JOB.set $ECF_JOB.var >> $ECF_JOB
 cat >> $ECF_JOB <<\@@
 set -eux
-export ECF_NAME ECF_PASS ECF_NODE ECF_PORT
+export ECF_NAME ECF_PASS ECF_HOST ECF_PORT
 export PATH=/usr/local/apps/ecflow/current/bin:$PATH
 export SIGNAL_LIST='1 2 3 4 5 6 7 8 13 15 24 31'
 ERROR() {
@@ -760,8 +760,8 @@ trap ERROR 0 $SIGNAL_LIST
 
 if [[ ${USE_SSH_SUB:=0} == 1 ]]; then
 ssh $SCHOST mkdir -p $(dirname $ECF_JOBOUT)
-ssh $SCHOST -R$ECF_PORT:$ECF_NODE:$ECF_PORT ''' + wdir + '''/smhi_run.sh \
-  $ECF_NAME $ECF_PASS $SCRIPT_PATH/$SCRIPT_NAME $ECF_JOBOUT $ECF_NODE $ECF_PORT
+ssh $SCHOST -R$ECF_PORT:$ECF_HOST:$ECF_PORT ''' + wdir + '''/smhi_run.sh \
+  $ECF_NAME $ECF_PASS $SCRIPT_PATH/$SCRIPT_NAME $ECF_JOBOUT $ECF_HOST $ECF_PORT
 echo "#MSG: ssh exits with $?"
 else
 ecflow_client --init=$$
@@ -807,9 +807,9 @@ export PATH=/usr/local/apps/ecflow/current/bin:$PATH
 export SIGNAL_LIST='1 2 3 4 5 6 7 8 13 15 24 31'
 ECF_NAME=%ECF_NAME%
 ECF_PASS=%ECF_PASS%
-ECF_NODE=%ECF_NODE%
+ECF_HOST=%ECF_HOST%
 ECF_PORT=%ECF_PORT%
-export ECF_NAME ECF_PASS ECF_NODE ECF_PORT
+export ECF_NAME ECF_PASS ECF_HOST ECF_PORT
 
 ERROR() {
   ecflow_client --abort # raise:trap
@@ -824,8 +824,8 @@ trap ERROR 0 $SIGNAL_LIST
 
 if [[ %USE_SSH_SUB:0% == 1 ]]; then
 ssh %SCHOST% mkdir -p $(dirname %ECF_JOBOUT%)
-ssh %SCHOST% -R%ECF_PORT%:%ECF_NODE%:%ECF_PORT% ''' + wdir + '''/smhi_run.sh \
-  %ECF_NAME% %ECF_PASS% %SCRIPT_PATH%/%SCRIPT_NAME% %ECF_JOBOUT% %ECF_NODE% %ECF_PORT%
+ssh %SCHOST% -R%ECF_PORT%:%ECF_HOST%:%ECF_PORT% ''' + wdir + '''/smhi_run.sh \
+  %ECF_NAME% %ECF_PASS% %SCRIPT_PATH%/%SCRIPT_NAME% %ECF_JOBOUT% %ECF_HOST% %ECF_PORT%
   echo "#MSG: ssh exits with $?"
 else
 ecflow_client --init=$$
diff --git a/Pyext/src/BoostPythonUtil.hpp b/Pyext/src/BoostPythonUtil.hpp
index 625a53e..ad606cf 100644
--- a/Pyext/src/BoostPythonUtil.hpp
+++ b/Pyext/src/BoostPythonUtil.hpp
@@ -31,7 +31,8 @@ public:
    static void list_to_int_vec(const boost::python::list& list, std::vector<int>& int_vec);
    static void list_to_str_vec(const boost::python::list& list, std::vector<std::string>& int_vec);
    static void dict_to_str_vec(const boost::python::dict& dict, std::vector<std::pair<std::string,std::string> >& str_pair);
-
 };
 
+template<typename T> const T copyObject(const T& v) { return v; }
+
 #endif
diff --git a/Pyext/src/ClientDoc.cpp b/Pyext/src/ClientDoc.cpp
index a62fd89..723f965 100644
--- a/Pyext/src/ClientDoc.cpp
+++ b/Pyext/src/ClientDoc.cpp
@@ -42,9 +42,9 @@ const char* ClientDoc::class_client(){
             "                         requires a lot of manual intervention to determine job status\n"
             "* NO_ECF         <any> : If set exit's immediately with success. Used to test jobs without communicating with server\n\n"
             "The following environment variables are used by the python interface and child commands\n\n"
-            "* ECF_NODE  <string>   : The host name of the main server. defaults to 'localhost'\n"
+            "* ECF_HOST  <string>   : The host name of the main server. defaults to 'localhost'\n"
             "* ECF_PORT  <int>      : The TCP/IP port to call on the server. Must be unique to a server\n\n"
-            "The ECF_NODE and ECF_PORT can be overridden by using the Constructor or set_host_port() member function.\n"
+            "The ECF_HOST and ECF_PORT can be overridden by using the Constructor or set_host_port() member function.\n"
             "For optimal usage it is best to reuse the same Client rather than recreating for each client server interaction\n"
             "By default the Client interface will throw exceptions for error's.\n"
             "\nUsage::\n\n"
@@ -58,7 +58,7 @@ const char* ClientDoc::class_client(){
 
 const char* ClientDoc::set_host_port(){
    return
-            "Override the default(localhost and port 3141) and environment setting(ECF_NODE and ECF_PORT)\n"
+            "Override the default(localhost and port 3141) and environment setting(ECF_HOST and ECF_PORT)\n"
             "and set it explicitly::\n\n"
             "   set_host_port(\n"
             "      string host, # The server name. Can not be empty.\n"
@@ -133,7 +133,7 @@ const char* ClientDoc::get_defs(){
             "The definition is *retained* in memory until the next call to sync_local().\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()         # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()         # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.sync_local()       # get the definition from the server and store on 'ci'\n"
             "       print ci.get_defs()   # print out definition stored in the client\n"
             "       print ci.get_defs()   # print again, this shows that defs is retained on ci\n"
@@ -150,7 +150,7 @@ const char* ClientDoc::get_log()
             "Only enabled in the debug build of ECF.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()          # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()          # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       print ci.get_log()     # get the log file from the server\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -164,7 +164,7 @@ const char* ClientDoc::new_log()
             "The old log file is released.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()               # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()               # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.new_log('/path/log.log') # use '/path/log,log' as the new log file\n"
             "                                   # To keep track of log file Can change ECF_LOG\n"
             "       ci.alter('\','change','variable','ECF_LOG','/new/path.log')\n"
@@ -181,7 +181,7 @@ const char* ClientDoc::clear_log()
             "Log file will be empty after this call.\n\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.clear_log()   # log file is now empty\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -196,7 +196,7 @@ const char* ClientDoc::flush_log()
             "whenever a command wishes to log any changes.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.flush_log()   # Log can now opened by external program\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -209,7 +209,7 @@ const char* ClientDoc::log_msg()
             "Request the :term:`ecflow_server` writes a string message to the log file.\n\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()             # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()             # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.log_msg(\"A message\") # Write message to log file\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -223,7 +223,7 @@ const char* ClientDoc::restart_server()   {
             "See :term:`server states`\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()            # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()            # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.retstart_server()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -236,7 +236,7 @@ const char* ClientDoc::halt_server()      {
             "See :term:`server states`\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()            # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()            # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.halt_server()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -249,7 +249,7 @@ const char* ClientDoc::shutdown_server()  {
             "See :term:`server states`\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()            # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()            # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.shutdown_server()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -259,7 +259,7 @@ const char* ClientDoc::shutdown_server()  {
 const char* ClientDoc::terminate_server() {
    return   "Terminate the :term:`ecflow_server`::\n\n"
             "   try:\n"
-            "       ci = Client()            # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()            # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.terminate_server()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -274,7 +274,7 @@ const char* ClientDoc::wait_for_server_reply() {
             "This is used to check if server has started. Typically for tests.\n"
             "Returns true if server(ping) replies before time out, otherwise false\n"
             "\nUsage::\n\n"
-            "   ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "   ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "   if ci.wait_for_server_reply(30):\n"
             "      print 'Server is alive'\n"
             "   else:\n"
@@ -302,7 +302,7 @@ const char* ClientDoc::load_defs(){
             "   defs.save_as_defs(defs_file)  # write out in memory defs into the file 'Hello.def'\n"
             "   ...\n"
             "   try:\n"
-            "       ci = Client()       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.load(defs_file)  # open and parse defs file, and load into server.\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -325,7 +325,7 @@ const char* ClientDoc::load(){
             "       family.add_task( Task( \"t\" + i) )\n"
             "   ...\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.load(defs)    # Load in memory defs, into the server\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -343,7 +343,7 @@ const char* ClientDoc::get_server_defs() {
             "reducing the network load.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()         # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()         # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.get_server_defs()  # get the definition from the server and store on 'ci'\n"
             "       print ci.get_defs()   # print out definition stored in the client\n"
             "       print ci.get_defs()   # print again, this shows that defs is retained on ci\n"
@@ -369,7 +369,7 @@ const char* ClientDoc::sync() {
             "- this could happen if the client Defs bears no resemblance to server Defs\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.sync_local()                     # Very first call gets the full Defs\n"
             "       client_defs = ci.get_defs()         # End user access to the returned Defs\n"
             "       ... after a period of time\n"
@@ -390,7 +390,7 @@ const char* ClientDoc::in_sync() {
             "Calling in_sync() is **only** valid after a call to sync_local().\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "      ci = Client()                       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "      ci = Client()                       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "      ci.sync_local()                     # very first call gets the full Defs\n"
             "      client_defs = ci.get_defs()         # End user access to the returned Defs\n"
             "      ... after a period of time\n"
@@ -414,7 +414,7 @@ const char* ClientDoc::news() {
             "\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                  # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                  # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       if ci.news_local():            # has the server changed\n"
             "          print 'Server Changed'      # server changed bring client in sync with server\n"
             "          ci.sync_local()             # get the full definition from the server if first time\n"
@@ -436,7 +436,7 @@ const char* ClientDoc::changed_node_paths() {
             "\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                          # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                          # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       if ci.news_local():                    # has the server changed\n"
             "          print 'Server Changed'              # server changed bring client in sync with server\n"
             "          ci.sync_local()                     # get the full definition from the server if first time\n"
@@ -489,7 +489,7 @@ const char* ClientDoc::checkpt(){
             "* The definition is very large and needs to split\n\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                      # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                      # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.checkpt()                       # Save the definition held in the server to disk\n"
             "       ci.checkpt(CheckPt.NEVER)          # Switch off check pointing\n"
             "       ci.checkpt(CheckPt.ON_TIME)        # Start automatic check pointing at the interval stored in the server\n"
@@ -511,7 +511,7 @@ const char* ClientDoc::restore_from_checkpt() {
             "An error is returned if the server has not been :term:`halted` or contains a :term:`suite definition`\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()             # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()             # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.halt_server()          # server must be halted, otherwise restore_from_checkpt will throw\n"
             "       ci.restore_from_checkpt() # restore the definition from the check point file\n"
             "   except RuntimeError, e:\n"
@@ -528,7 +528,7 @@ const char* ClientDoc::reload_wl_file(){
             "   void reload_wl_file()\n\n"
             "Usage::\n\n"
             "   try:\n"
-            "       ci = Client()            # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()            # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.reload_wl_file()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -559,7 +559,7 @@ const char* ClientDoc::run(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                          # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                          # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.run('/s1')                          # run all tasks under suite /s1\n"
             "\n"
             "       path_list = ['/s1/f1/t1','/s2/f1/t2']\n"
@@ -593,7 +593,7 @@ const char* ClientDoc::requeue(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.requeue('/s1','abort')       # re-queue aborted tasks below suite /s1\n"
             "\n"
             "       path_list = ['/s1/f1/t1','/s2/f1/t2']\n"
@@ -611,7 +611,7 @@ const char* ClientDoc::free_trigger_dep(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()         # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()         # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.free_trigger_dep('/s1')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -626,7 +626,7 @@ const char* ClientDoc::free_date_dep(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.free_date_dep('/s1')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -643,7 +643,7 @@ const char* ClientDoc::free_time_dep(){
             "the next time slot will be missed.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.free_time_dep('/s1')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -660,7 +660,7 @@ const char* ClientDoc::free_all_dep(){
             "the next time slot will be missed.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.free_all_dep('/s1')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -692,7 +692,7 @@ const char* ClientDoc::stats(){
             "   void stats()\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()  # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()  # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.stats()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -705,7 +705,7 @@ const char* ClientDoc::stats_reset(){
             "   void stats_reset()\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()  # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()  # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.stats_reset()\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -718,7 +718,7 @@ const char* ClientDoc::suites(){
             "   list(string) suites()\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()  # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()  # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       suites = ci.suites()\n"
             "       print suites\n"
             "   except RuntimeError, e:\n"
@@ -777,7 +777,7 @@ const char* ClientDoc::ch_drop(){
             "- RunTimeError thrown if handle has not been previously registered\n"
             "\nUsage::\n\n"
             "	try:\n"
-            "      ci = Client()                      # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "      ci = Client()                      # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "      suites = [ 's1', 's2' ]\n"
             "      ci.ch_register(False, suites)\n"
             "      while( 1 ):\n"
@@ -800,7 +800,7 @@ const char* ClientDoc::ch_drop_user(){
             "- RunTimeError thrown if handle has not been previously registered\n"
             "\nUsage::\n\n"
             "  try:\n"
-            "      ci = Client()       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "      ci = Client()       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "      suites = [ 's1', 's2' ]\n"
             "      ci.ch_register(False, suites)\n"
             "      while( 1 ):\n"
@@ -824,7 +824,7 @@ const char* ClientDoc::ch_add() {
             "  )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()        # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()        # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       suite_names = []\n"
             "       ci.ch_register(True,suite_names)  # register interest in any new suites\n"
             "       suite_names = [ 's1', 's2' ]\n"
@@ -846,7 +846,7 @@ const char* ClientDoc::ch_remove() {
             "  )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       suite_names = [ 's1', 's2' , 's3']\n"
             "       ci.ch_register(True,suite_names)    # register interest in suites s1,s2,s3 and any new suites\n"
             "       suite_names = [ 's1' ]\n"
@@ -868,7 +868,7 @@ const char* ClientDoc::ch_auto_add() {
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                       # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                       # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       suite_names = [ 's1', 's2' , 's3']\n"
             "       ci.ch_register(True,suite_names)    # register interest in suites s1,s2,s3 and any new suites\n"
             "       ci.ch_auto_add( False )             # disable adding newly created suites to my handle\n"
@@ -888,7 +888,7 @@ const char* ClientDoc::get_file(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()        # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()        # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       for file in [ 'script', 'job', 'jobout', 'manual', 'kill', 'stat' ]:\n"
             "   	      print ci.get_file('/suite/f1/t1',file)  # make a request to the server\n"
             "   except RuntimeError, e:\n"
@@ -916,7 +916,7 @@ const char* ClientDoc::plug(){
             "- If the source node is added as a child, then its name must be unique\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.plug('/suite','host3:3141')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -1007,7 +1007,7 @@ const char* ClientDoc::alter(){
             "                               # if it is a string, it must correspond to one of enum's or strings list\n"
             "\nUsage::\n\n"
             "  try:\n"
-            "     ci = Client()     # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "     ci = Client()     # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "     ci.alter('/suite','change','trigger','b2 == complete')\n"
             "  except RuntimeError, e:\n"
             "     print str(e)\n"
@@ -1036,7 +1036,7 @@ const char* ClientDoc::force_state(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       # force a single node to complete\n"
             "       ci.force_state('/s1/f1',State.complete)\n"
             "\n"
@@ -1070,7 +1070,7 @@ const char* ClientDoc::force_state_recursive(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.force_state_recursive('/s1/f1',State.complete)\n"
             "\n"
             "       # recursively force a list of nodes to complete\n"
@@ -1097,7 +1097,7 @@ const char* ClientDoc::force_event(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.force_event('/s1/f1:event_name','set')\n"
             "\n"
             "       # Set or clear a event for a list of events\n"
@@ -1139,7 +1139,7 @@ const char* ClientDoc::replace(){
             "Please note, you can use check() to check trigger expression and limits in the server.\n\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.replace('/s1/f1','/tmp/defs.def')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -1173,7 +1173,7 @@ const char* ClientDoc::kill(){
             "- :term:`variable substitution` fails\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.kill('/s1/f1')\n"
             "       time.sleep(2)\n"
             "       print ci.file('/s1/t1','kill')  # request kill output\n"
@@ -1201,7 +1201,7 @@ const char* ClientDoc::status(){
             "- :term:`variable substitution` fails\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.status('/s1/t1')\n"
             "       time.sleep(2)\n"
             "       print ci.file('/s1/t1','stats') # request status output\n"
@@ -1231,7 +1231,7 @@ const char* ClientDoc::order(){
             "- The order_type is not the right type\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.order('/s1/f1','top')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -1246,7 +1246,7 @@ const char* ClientDoc::group(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()               # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()               # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.group('get; show')\n"
             "       ci.group('get; show state') # show node states and trigger abstract syntax trees\n"
             "   except RuntimeError, e:\n"
@@ -1264,7 +1264,7 @@ const char* ClientDoc::begin_suite(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                  # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                  # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.begin_suite('/suite1')      # begin playing suite '/suite1'\n"
             "       ci.begin_suite('/suite1',True) # begin playing suite '/suite1' bypass any checks"
             "   except RuntimeError, e:\n"
@@ -1281,7 +1281,7 @@ const char* ClientDoc::begin_all(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()             # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()             # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.begin_all_suites()     # begin playing all the suites\n"
             "       ci.begin_all_suites(True) # begin playing all the suites, by passing checks\n"
             "   except RuntimeError, e:\n"
@@ -1300,7 +1300,7 @@ const char* ClientDoc::suspend(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.suspend('/s1/f1/task1')\n"
             "       paths = ['/s1/f1/t1','/s2/f1/t2']\n"
             "       ci.suspend(paths)\n"
@@ -1320,7 +1320,7 @@ const char* ClientDoc::resume(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.resume('/s1/f1/task1')\n"
             "       paths = ['/s1/f1/t1','/s2/f1/t2']\n"
             "       ci.resume(paths)\n"
@@ -1341,7 +1341,7 @@ const char* ClientDoc::job_gen(){
             "   If empty string specified generates for full definition.\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.job_generation('/s1')  # generate jobs for suite '/s1 \n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
@@ -1365,7 +1365,7 @@ const char* ClientDoc::delete_node(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()                     # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()                     # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.delete('/s1/f1/task1')\n"
             "\n"
             "       paths = ['/s1/f1/t1','/s2/f1/t2']\n"
@@ -1388,7 +1388,7 @@ const char* ClientDoc::delete_all(){
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()    # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()    # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.delete_all()\n"
             "       ci.get_server_defs()\n"
             "   except RuntimeError, e:\n"
@@ -1411,7 +1411,7 @@ const char* ClientDoc::check()
             "   )\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()   # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()   # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       print ci.check('/suite1')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
diff --git a/Pyext/src/DefsDoc.cpp b/Pyext/src/DefsDoc.cpp
index 873471b..d19c7fe 100644
--- a/Pyext/src/DefsDoc.cpp
+++ b/Pyext/src/DefsDoc.cpp
@@ -759,38 +759,57 @@ const char* DefsDoc::check()
             "\n"
             "   # Server Side\n"
             "   try:\n"
-            "       ci = Client()             # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()             # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       print ci.check('/suite')\n"
             "   except RuntimeError, e:\n"
             "       print str(e)\n"
             ;
 }
 
-const char* DefsDoc::simulate()
-{
-   return
-            "Simulates a :term:`suite definition` for 1 year:\n\n"
-            "Will disable infinite repeats at the suite level. i.e repeat day\n"
-            "This allows simulation to progress faster.\n"
-            "By default will run simulation for a year. If the simulation does not complete\n"
-            "creates  .flat and .depth files. This provides clues as to the state of the definition\n"
-            "at the end of the simulation\n"
-            "\nUsage::\n\n"
-            "   defs = Defs('my.def')        # specify the defs we want to simulate\n"
-            "   ....\n"
-            "   theResults = defs.simulate()\n"
-            "   print theResults\n"
-            ;
+const char* DefsDoc::simulate() {
+   return
+         "Simulates a suite definition, allowing you predict/verify the behaviour of your suite in few seconds\n\n"
+         "The simulator will analyse the definition, and simulate the ecflow server.\n"
+         "Allowing time dependencies that span several months, to be simulated in a few seconds.\n"
+         "Ecflow allows the use of verify attributes. This example show how we can verify the number of times\n"
+         "a task should run, given a start(optional) and end time(optional).\n"
+         "\n"
+         "suite cron3             # use real clock otherwise clock starts when the simulations starts.\n"
+         "  clock real  1.1.2006  # define a start date for deterministic behaviour\n"
+         "  endclock   13.1.2006  # When to finish. end clock is *only* used for the simulator\n"
+         "  family cronFamily\n"
+         "    task t\n"
+         "      cron -d 10,11,12   10:00 11:00 01:00  # run on 10,11,12 of the month at 10am and 11am\n"
+         "      verify complete:6                     # task should complete 6 times between 1.1.2006 -> 13.1.2006\n"
+         "  endfamily\n"
+         "endsuite\n\n"
+         "Please note, for deterministic behaviour, the start and end clock should be specified.\n"
+         "However if no 'endclock' is specified the simulation will assume the following defaults.\n"
+         "    No time dependencies: 24 hours\n"
+         "    time || today       : 24 hours\n"
+         "    day                 : 1 week\n"
+         "    date                : 1 month\n"
+         "    cron                : 1 year\n"
+         "    repeat              : 1 year\n"
+         "If there no time dependencies with an minute resolution, then the simulator will by default\n"
+         "use 1 hour resolution. This needs to be taken into account when specifying the verify attribute\n"
+         "If the simulation does not complete it creates  defs.flat and  defs.depth files.\n"
+         "This provides clues as to the state of the definition at the end of the simulation\n"
+         "\nUsage::\n\n"
+         "   defs = Defs('my.def')        # specify the defs we want to simulate\n"
+         "   ....\n"
+         "   theResults = defs.simulate()\n"
+         "   print theResults\n"
+         ;
 }
 
-
 const char* DefsDoc::get_server_state()
 {
    return
             "Returns the :term:`ecflow_server` state: See :term:`server states`\n\n"
             "\nUsage::\n\n"
             "   try:\n"
-            "       ci = Client()           # use default host(ECF_NODE) & port(ECF_PORT)\n"
+            "       ci = Client()           # use default host(ECF_HOST) & port(ECF_PORT)\n"
             "       ci.shutdown_server()\n"
             "       ci.sync_local()\n"
             "       assert ci.get_defs().get_server_state() == SState.SHUTDOWN, \"Expected server to be shutdown\"\n"
diff --git a/Pyext/src/ExportClient.cpp b/Pyext/src/ExportClient.cpp
index 4a6964a..d062107 100644
--- a/Pyext/src/ExportClient.cpp
+++ b/Pyext/src/ExportClient.cpp
@@ -164,7 +164,8 @@ void export_Client()
    .def("get_port",         &ClientInvoker::port, return_value_policy<copy_const_reference>(), "Return the port, assume set_host_port() has been set. otherwise returns 3141" )
    .def("set_retry_connection_period",&ClientInvoker::set_retry_connection_period,  ClientDoc::set_retry_connection_period())
    .def("set_connection_attempts",&ClientInvoker::set_connection_attempts,  ClientDoc::set_connection_attempts())
-	.def("get_defs",         &ClientInvoker::defs,           ClientDoc::get_defs())
+   .def("get_defs",         &ClientInvoker::defs,           ClientDoc::get_defs())
+   .def("reset",            &ClientInvoker::reset,          "reset client definition, and handle number")
 	.def("in_sync",          &ClientInvoker::in_sync,        ClientDoc::in_sync())
 #ifdef DEBUG
  	.def("get_log" ,         &get_log,                       return_value_policy<copy_const_reference>(),ClientDoc::get_log())
diff --git a/Pyext/src/ExportCore.cpp b/Pyext/src/ExportCore.cpp
index 4175041..5e8bf9e 100644
--- a/Pyext/src/ExportCore.cpp
+++ b/Pyext/src/ExportCore.cpp
@@ -23,6 +23,7 @@
 #include "TimeSeries.hpp"
 #include "CheckPt.hpp"
 #include "Ecf.hpp"
+#include "BoostPythonUtil.hpp"
 
 // See: http://wiki.python.org/moin/boost.python/HowTo#boost.function_objects
 template<class K, class T>
@@ -194,6 +195,7 @@ void export_Core()
 			init<int,int>()
 		)
 	.def("__str__",     &TimeSlot::toString)       // __str__
+   .def("__copy__",copyObject<TimeSlot>)          // __copy__ uses copy constructor
 	.def(self == self )                            // __eq__
 	.def("hour",   &TimeSlot::hour)                // return int
 	.def("minute", &TimeSlot::minute)              // return int
@@ -232,8 +234,9 @@ void export_Core()
 			init<TimeSlot, optional<bool> >())
  	.def( init<int,int,optional<bool> >())
 	.def( init<TimeSlot,TimeSlot,TimeSlot,optional<bool> >())
- 	.def("__str__",     &TimeSeries::toString)         // __str__
  	.def(self == self )                                // __eq__
+ 	.def("__str__",     &TimeSeries::toString)         // __str__
+   .def("__copy__",copyObject<TimeSeries>)            // __copy__ uses copy constructor
 	.def("has_increment", &TimeSeries::hasIncrement,"distinguish between a single time slot and a series. returns true for a series")  // false if single time slot
 	.def("start",         &TimeSeries::start , return_value_policy<copy_const_reference>(),"returns the start time") // returns a time slot
 	.def("finish",        &TimeSeries::finish, return_value_policy<copy_const_reference>(),"returns the finish time if time series specified, else returns a NULL time slot") // returns a time slot
diff --git a/Pyext/src/ExportDefs.cpp b/Pyext/src/ExportDefs.cpp
index 91f43c4..3384245 100644
--- a/Pyext/src/ExportDefs.cpp
+++ b/Pyext/src/ExportDefs.cpp
@@ -112,7 +112,7 @@ std::string simulate(defs_ptr defs)
 SState::State get_server_state(defs_ptr self) { return self->server().get_state(); }
 
 /// Since we don't pass in a child pos, the nodes are added to the end
-void add_suite(defs_ptr self,suite_ptr s){ self->addSuite(s); }
+suite_ptr add_suite(defs_ptr self,suite_ptr s){ self->addSuite(s); return s; }
 
 std::vector<task_ptr> get_all_tasks(defs_ptr self){ std::vector<task_ptr> tasks; self->get_all_tasks(tasks); return tasks; }
 std::vector<node_ptr> get_all_nodes(defs_ptr self){ std::vector<node_ptr> nodes; self->get_all_nodes(nodes); return nodes; }
@@ -150,9 +150,10 @@ void delete_variable(defs_ptr self,const std::string& name) { self->set_server()
 
 void export_Defs()
 {
-	class_<Defs, boost::noncopyable, defs_ptr >( "Defs", DefsDoc::add_definition_doc() ,init<>("Create a empty Defs"))
+	class_<Defs,defs_ptr >( "Defs", DefsDoc::add_definition_doc() ,init<>("Create a empty Defs"))
    .def("__init__",make_constructor(&create_defs),         DefsDoc::add_definition_doc())
 	.def(self == self )                                           // __eq__
+   .def("__copy__",              copyObject<Defs>)               // __copy__ uses copy constructor
 	.def("__str__",               &Defs::toString)                // __str__
    .def("__enter__",             &defs_enter)                    // allow with statement, hence indentation support
    .def("__exit__",              &defs_exit)                     // allow with statement, hence indentation support
diff --git a/Pyext/src/ExportNode.cpp b/Pyext/src/ExportNode.cpp
index 8f9fb54..f9cfdd2 100644
--- a/Pyext/src/ExportNode.cpp
+++ b/Pyext/src/ExportNode.cpp
@@ -220,6 +220,7 @@ void export_Node()
    // expects self to be of type Node.
    class_<Node, boost::noncopyable, node_ptr >("Node", DefsDoc::node_doc(), no_init)
    .def("name",&Node::name, return_value_policy<copy_const_reference>() )
+   .def("remove",           &Node::remove,           "Remove the node from its parent. and returns it")
    .def("add_trigger",      &add_trigger,             DefsDoc::add_trigger_doc())
    .def("add_trigger",      &add_trigger_expr)
    .def("add_complete",     &add_complete,            DefsDoc::add_trigger_doc())
diff --git a/Pyext/src/ExportNodeAttr.cpp b/Pyext/src/ExportNodeAttr.cpp
index f0aa0bc..16a7a41 100644
--- a/Pyext/src/ExportNodeAttr.cpp
+++ b/Pyext/src/ExportNodeAttr.cpp
@@ -148,6 +148,7 @@ void export_NodeAttr()
    .def("__init__",make_constructor(&create_ZombieAttr) )
    .def("__init__",make_constructor(&create_ZombieAttr1) )
  	.def("__str__",    &ZombieAttr::toString)              // __str__
+   .def("__copy__",   copyObject<ZombieAttr>)             // __copy__ uses copy constructor
  	.def(self == self )                                    // __eq__
  	.def("empty",          &ZombieAttr::empty,          "Return true if the attribute is empty")
  	.def("zombie_type",    &ZombieAttr::zombie_type,    "Returns the :term:`zombie type`")
@@ -158,6 +159,7 @@ void export_NodeAttr()
 
  	class_<Variable>("Variable",NodeAttrDoc::variable_doc(),init<std::string, std::string>())
  	.def("__str__",    &Variable::toString)                // __str__
+   .def("__copy__",   copyObject<Variable>)               // __copy__ uses copy constructor
  	.def(self == self )                                    // __eq__
 	.def("name",     &Variable::name,     return_value_policy<copy_const_reference>(), "Return the variable name as string")
    .def("value",    &Variable::theValue, return_value_policy<copy_const_reference>(), "Return the variable value as a string")
@@ -172,6 +174,7 @@ void export_NodeAttr()
 	class_<Label>("Label",NodeAttrDoc::label_doc(),init<std::string, std::string>())
 	.def(self == self )                                    // __eq__
 	.def("__str__",   &Label::toString)                    // __str__
+   .def("__copy__",   copyObject<Label>)                  // __copy__ uses copy constructor
 	.def("name",      &Label::name,      return_value_policy<copy_const_reference>(), "Return the :term:`label` name as string")
 	.def("value",     &Label::value,     return_value_policy<copy_const_reference>(), "Return the original :term:`label` value as string")
 	.def("new_value", &Label::new_value, return_value_policy<copy_const_reference>(), "Return the new label value as string")
@@ -181,9 +184,10 @@ void export_NodeAttr()
 	// This will not work, because paths_begin
    //.add_property("node_paths", boost::python::range(&Limit::paths_begin,&Limit::paths_begin),"List of nodes(paths) that have consumed a limit")
 
-	class_<Limit,  boost::shared_ptr<Limit> >("Limit",NodeAttrDoc::limit_doc(),init<std::string, int>())
+	class_<Limit, boost::shared_ptr<Limit> >("Limit",NodeAttrDoc::limit_doc(),init<std::string, int>())
 	.def(self == self )                               // __eq__
 	.def("__str__",  &Limit::toString)                // __str__
+   .def("__copy__",   copyObject<Limit>)             // __copy__ uses copy constructor
 	.def("name",     &Limit::name, return_value_policy<copy_const_reference>(), "Return the :term:`limit` name as string")
    .def("value",    &Limit::value,    "The :term:`limit` token value as an integer")
    .def("limit",    &Limit::theLimit, "The max value of the :term:`limit` as an integer")
@@ -197,6 +201,7 @@ void export_NodeAttr()
 	.def( init<std::string> () )
 	.def(self == self )                                  // __eq__
 	.def("__str__",     &InLimit::toString)              // __str__
+   .def("__copy__",   copyObject<InLimit>)              // __copy__ uses copy constructor
 	.def("name",        &InLimit::name,       return_value_policy<copy_const_reference>(), "Return the :term:`inlimit` name as string")
 	.def("path_to_node",&InLimit::pathToNode, return_value_policy<copy_const_reference>(), "Path to the node that holds the limit, can be empty")
 	.def("tokens",      &InLimit::tokens,                                                  "The number of token to consume from the Limit")
@@ -206,6 +211,7 @@ void export_NodeAttr()
    .def( init<std::string> () )
 	.def(self == self )                                  // __eq__
 	.def("__str__",     &Event::toString)                // __str__
+   .def("__copy__",   copyObject<Event>)                // __copy__ uses copy constructor
 	.def("name",        &Event::name,       return_value_policy<copy_const_reference>(), "Return the Events name as string. If number supplied name may be empty.")
 	.def("number",      &Event::number,     "Return events number as a integer. if not specified return max integer value")
 	.def("value",       &Event::value,      "Return events current value")
@@ -215,6 +221,7 @@ void export_NodeAttr()
 	class_<Meter>("Meter",NodeAttrDoc::meter_doc(),init<std::string,int,int,optional<int> >())
  	.def(self == self )                                  // __eq__
 	.def("__str__",     &Meter::toString)                // __str__
+   .def("__copy__",   copyObject<Meter>)                // __copy__ uses copy constructor
 	.def("name",        &Meter::name,       return_value_policy<copy_const_reference>(), "Return the Meters name as string")
 	.def("min",         &Meter::min,                                                     "Return the Meters minimum value")
 	.def("max",         &Meter::max,                                                     "Return the Meters maximum value")
@@ -226,6 +233,7 @@ void export_NodeAttr()
 	class_<DateAttr>("Date",NodeAttrDoc::date_doc() ,init<int,int,int>())  // day,month,year
 	.def(self == self )                                     // __eq__
 	.def("__str__",     &DateAttr::toString)                // __str__
+   .def("__copy__",    copyObject<DateAttr>)               // __copy__ uses copy constructor
 	.def("day",         &DateAttr::day,      "Return the day. The range is 0-31, 0 means its wild-carded")
 	.def("month",       &DateAttr::month,    "Return the month. The range is 0-12, 0 means its wild-carded")
    .def("year",        &DateAttr::year,     "Return the year, 0 means its wild-carded")
@@ -243,6 +251,7 @@ void export_NodeAttr()
 	class_<DayAttr>("Day",NodeAttrDoc::day_doc(),init<DayAttr::Day_t>() )
 	.def(self == self )                                    // __eq__
 	.def("__str__",     &DayAttr::toString)                // __str__
+   .def("__copy__",    copyObject<DayAttr>)               // __copy__ uses copy constructor
 	.def("day",         &DayAttr::day,      "Return the day as enumerator")
 	;
 
@@ -252,6 +261,7 @@ void export_NodeAttr()
 	.def( init<TimeSlot,TimeSlot,TimeSlot,bool>())
 	.def(self == self )                           // __eq__
 	.def("__str__",    &TimeAttr::toString)       // __str__
+   .def("__copy__",    copyObject<TimeAttr>)     // __copy__ uses copy constructor
 	.def("time_series",&TimeAttr::time_series,return_value_policy<copy_const_reference>(), "Return the Time attributes time series")
 	;
 
@@ -261,6 +271,7 @@ void export_NodeAttr()
 	.def( init<TimeSlot,TimeSlot,TimeSlot,bool>())
 	.def(self == self )                                     // __eq__
 	.def("__str__",    &TodayAttr::toString)                // __str__
+   .def("__copy__",   copyObject<TodayAttr>)               // __copy__ uses copy constructor
 	.def("time_series",&TodayAttr::time_series,return_value_policy<copy_const_reference>(), "Return the Todays time series")
 	;
 
@@ -292,6 +303,7 @@ void export_NodeAttr()
 	 )
 	.def(self == self )                                  // __eq__
 	.def("__str__",   &LateAttr::toString)               // __str__
+   .def("__copy__",   copyObject<LateAttr>)             // __copy__ uses copy constructor
 	.def("submitted", &LateAttr::submitted,return_value_policy<copy_const_reference>(), "Return the submitted time as a TimeSlot")
 	.def("active",    &LateAttr::active,   return_value_policy<copy_const_reference>(), "Return the active time as a TimeSlot")
 	.def("complete",  &LateAttr::complete, return_value_policy<copy_const_reference>(), "Return the complete time as a TimeSlot")
@@ -308,6 +320,7 @@ void export_NodeAttr()
 	.def( init<TimeSlot, bool>())
 	.def(self == self )                                       // __eq__
 	.def("__str__", &AutoCancelAttr::toString)                // __str__
+   .def("__copy__",copyObject<AutoCancelAttr>)               // __copy__ uses copy constructor
 	.def("time",    &AutoCancelAttr::time, return_value_policy<copy_const_reference>(), "returns cancel time as a TimeSlot")
 	.def("relative",&AutoCancelAttr::relative, "Returns a boolean where true means the time is relative")
 	.def("days",    &AutoCancelAttr::days,     "Returns a boolean true if time was specified in days")
@@ -317,6 +330,7 @@ void export_NodeAttr()
 	class_<RepeatDate >("RepeatDate",NodeAttrDoc::repeat_date_doc() ,init< std::string, int, int, optional<int> >()) // name, start, end , delta
  	.def(self == self )                              // __eq__
 	.def("__str__",        &RepeatDate::toString)    // __str__
+   .def("__copy__",       copyObject<RepeatDate>)   // __copy__ uses copy constructor
 	.def("name",           &RepeatDate::name, return_value_policy<copy_const_reference>(),"Return the name of the repeat.")
 	.def("start",          &RepeatDate::start ,"Return the start date as an integer in yyyymmdd format")
 	.def("end",            &RepeatDate::end,   "Return the end date as an integer in yyyymmdd format")
@@ -326,6 +340,7 @@ void export_NodeAttr()
 	class_<RepeatInteger>("RepeatInteger",NodeAttrDoc::repeat_integer_doc(),init< std::string, int, int, optional<int> >()) // name, start, end , delta = 1
  	.def(self == self )                                  // __eq__
 	.def("__str__",        &RepeatInteger::toString)     // __str__
+   .def("__copy__",       copyObject<RepeatInteger>)    // __copy__ uses copy constructor
 	.def("name",           &RepeatInteger::name, return_value_policy<copy_const_reference>(),"Return the name of the repeat.")
 	.def("start",          &RepeatInteger::start)
 	.def("end",            &RepeatInteger::end)
@@ -338,6 +353,7 @@ void export_NodeAttr()
    .def("__init__",make_constructor(&create_RepeatEnumerated) )
 	.def(self == self )                                     // __eq__
 	.def("__str__",        &RepeatEnumerated::toString)     // __str__
+   .def("__copy__",       copyObject<RepeatEnumerated>)    // __copy__ uses copy constructor
 	.def("name",           &RepeatEnumerated::name, return_value_policy<copy_const_reference>(),"Return the name of the :term:`repeat`.")
 	.def("start",          &RepeatEnumerated::start)
 	.def("end",            &RepeatEnumerated::end)
@@ -348,6 +364,7 @@ void export_NodeAttr()
    .def("__init__",make_constructor(&create_RepeatString) )
 	.def(self == self )                                 // __eq__
 	.def("__str__",        &RepeatString::toString)     // __str__
+   .def("__copy__",       copyObject<RepeatString>)    // __copy__ uses copy constructor
 	.def("name",           &RepeatString::name, return_value_policy<copy_const_reference>(),"Return the name of the :term:`repeat`.")
 	.def("start",          &RepeatString::start)
 	.def("end",            &RepeatString::end)
@@ -357,11 +374,13 @@ void export_NodeAttr()
 	class_<RepeatDay>("RepeatDay",NodeAttrDoc::repeat_day_doc(),init< optional<int> >())
  	.def(self == self )                              // __eq__
 	.def("__str__",        &RepeatDay::toString)     // __str__
+   .def("__copy__",       copyObject<RepeatDay>)    // __copy__ uses copy constructor
 	;
 
 	class_<Repeat>("Repeat",NodeAttrDoc::repeat_doc() ,init< int >())
 	.def(self == self )                    // __eq__
 	.def("__str__", &Repeat::toString)     // __str__
+   .def("__copy__",copyObject<Repeat>)    // __copy__ uses copy constructor
 	.def("empty",   &Repeat::empty ,"Return true if the repeat is empty.")
 	.def("name",    &Repeat::name, return_value_policy<copy_const_reference>(), "The :term:`repeat` name, can be referenced in :term:`trigger` expressions")
 	.def("start",   &Repeat::start,"The start value of the repeat, as an integer")
@@ -376,6 +395,7 @@ void export_NodeAttr()
 	class_<CronAttr>("Cron",NodeAttrDoc::cron_doc() )
 	.def(self == self )                                // __eq__
 	.def("__str__",            &CronAttr::toString)    // __str__
+   .def("__copy__",copyObject<CronAttr>)              // __copy__ uses copy constructor
    .def( "set_week_days",     &set_week_days ,   "Specifies days of week. Expects a list of integers, with integer range 0==Sun to 6==Sat")
 	.def( "set_days_of_month", &set_days_of_month,"Specifies days of the month. Expects a list of integers with integer range 1-31" )
 	.def( "set_months",        &set_months  ,     "Specifies months. Expects a list of integers, with integer range 1-12")
@@ -393,6 +413,7 @@ void export_NodeAttr()
 	class_<VerifyAttr>("Verify", init<NState::State,int>())  // state, expected
 	.def(self == self )                               // __eq__
 	.def("__str__",        &VerifyAttr::toString)     // __str__
+   .def("__copy__",copyObject<VerifyAttr>)           // __copy__ uses copy constructor
 	;
 
 
@@ -402,6 +423,7 @@ void export_NodeAttr()
    .def( init<bool>())
 	.def(self == self )                                   // __eq__
 	.def("__str__",             &ClockAttr::toString)     // __str__
+   .def("__copy__",copyObject<ClockAttr>)                // __copy__ uses copy constructor
 	.def( "set_gain_in_seconds",&ClockAttr::set_gain_in_seconds, "Set the gain in seconds")
 	.def( "set_gain",     &ClockAttr::set_gain,                  "Set the gain in hours and minutes")
  	.def( "set_virtual",  start_stop_with_server,   "Sets/unsets the clock as being virtual")
diff --git a/Pyext/src/ExportSuiteAndFamily.cpp b/Pyext/src/ExportSuiteAndFamily.cpp
index c24b039..eff5ff4 100644
--- a/Pyext/src/ExportSuiteAndFamily.cpp
+++ b/Pyext/src/ExportSuiteAndFamily.cpp
@@ -36,10 +36,11 @@ namespace bp = boost::python;
 // See: http://wiki.python.org/moin/boost.python/HowTo#boost.function_objects
 
 /// Since we don't pass in a child pos, the nodes are added to the end
-void add_family(NodeContainer* self,family_ptr f){ self->addFamily(f); }
-void add_task(NodeContainer* self,task_ptr t){ self->addTask(t); }
+family_ptr add_family(NodeContainer* self,family_ptr f){ self->addFamily(f); return f; }
+task_ptr add_task(NodeContainer* self,task_ptr t){ self->addTask(t); return t;}
 
 suite_ptr add_clock(suite_ptr self, const ClockAttr& clk) { self->addClock(clk); return self;}
+suite_ptr add_end_clock(suite_ptr self, const ClockAttr& clk) { self->add_end_clock(clk); return self;}
 
 // Context management, Only used to provide indentation
 suite_ptr suite_enter(suite_ptr self) { return self;}
@@ -65,27 +66,33 @@ void export_SuiteAndFamily()
    .def("add_family",add_family )
    .def("add_task",  &NodeContainer::add_task ,  DefsDoc::add_task_doc())
    .def("add_task",  add_task )
+   .def("find_task",   &NodeContainer::findTask    , "Find a task given a name")
+   .def("find_family", &NodeContainer::findFamily  , "Find a family given a name")
    .add_property("nodes",boost::python::range( &NodeContainer::node_begin,&NodeContainer::node_end),"Returns a list of Node's")
    ;
 
 
-   class_<Family, bases<NodeContainer>, family_ptr, boost::noncopyable>("Family",DefsDoc::family_doc())
+   class_<Family, bases<NodeContainer>, family_ptr>("Family",DefsDoc::family_doc())
    .def("__init__",make_constructor(&Family::create), DefsDoc::family_doc())
    .def(self == self )                    // __eq__
    .def("__str__",   &Family::to_string)  // __str__
+   .def("__copy__",  copyObject<Family>)  // __copy__ uses copy constructor
    .def("__enter__", &family_enter)       // allow with statement, hence indentation support
    .def("__exit__",  &family_exit)        // allow with statement, hence indentation support
    ;
 
 
-   class_<Suite, bases<NodeContainer>, suite_ptr, boost::noncopyable>("Suite",DefsDoc::suite_doc())
+   class_<Suite, bases<NodeContainer>, suite_ptr>("Suite",DefsDoc::suite_doc())
    .def("__init__",make_constructor(&Suite::create), DefsDoc::suite_doc())
    .def(self == self )                   // __eq__
    .def("__str__",   &Suite::to_string)  // __str__
+   .def("__copy__",  copyObject<Suite>)  // __copy__ uses copy constructor
    .def("__enter__", &suite_enter)       // allow with statement, hence indentation support
    .def("__exit__",  &suite_exit)        // allow with statement, hence indentation support
    .def("add_clock", &add_clock)
    .def("get_clock", &Suite::clockAttr,"Returns the :term:`suite` :term:`clock`")
+   .def("add_end_clock", &add_end_clock,"End clock, used to mark end of simulation")
+   .def("get_end_clock", &Suite::clock_end_attr,"Return the suite's end clock. Can be NULL")
    .def("begun",     &Suite::begun, "Returns true if the :term:`suite` has begun, false otherwise")
    ;
 }
diff --git a/Pyext/src/ExportTask.cpp b/Pyext/src/ExportTask.cpp
index 55fc263..ab612d0 100644
--- a/Pyext/src/ExportTask.cpp
+++ b/Pyext/src/ExportTask.cpp
@@ -22,6 +22,7 @@
 
 #include "Task.hpp"
 #include "DefsDoc.hpp"
+#include "BoostPythonUtil.hpp"
 
 using namespace ecf;
 using namespace boost::python;
@@ -49,18 +50,20 @@ void export_Task()
    .def("get_aborted_reason" ,     &Submittable::abortedReason,return_value_policy<copy_const_reference>(),        "If node was aborted and a reason was provided, return the string")
    ;
 
-   class_<Task, bases<Submittable>, task_ptr, boost::noncopyable>("Task",DefsDoc::task_doc() )
+   class_<Task, bases<Submittable>, task_ptr>("Task",DefsDoc::task_doc() )
    .def("__init__",make_constructor(&Task::create), DefsDoc::task_doc())
    .def(self == self )                        // __eq__
    .def("__enter__", &task_enter)             // allow with statement, hence indentation support
    .def("__exit__",  &task_exit)              // allow with statement, hence indentation support
    .def("__str__",         &Task::to_string)  // __str__
+   .def("__copy__",  copyObject<Task>)        // __copy__ uses copy constructor
    .add_property("aliases",boost::python::range( &Task::alias_begin,  &Task::alias_end), "Returns a list of aliases")
    .add_property("nodes",  boost::python::range( &Task::alias_begin,  &Task::alias_end), "Returns a list of aliases")
    ;
 
-   class_<Alias, bases<Submittable>, alias_ptr, boost::noncopyable>("Alias",DefsDoc::alias_doc(),no_init)
-   .def(self == self )                 // __eq__
-   .def("__str__", &Alias::to_string)  // __str__
+   class_<Alias, bases<Submittable>, alias_ptr>("Alias",DefsDoc::alias_doc(),no_init)
+   .def(self == self )                  // __eq__
+   .def("__str__", &Alias::to_string)   // __str__
+   .def("__copy__", copyObject<Alias>)  // __copy__ uses copy constructor
    ;
 }
diff --git a/Pyext/test/data/includes/head.h b/Pyext/test/data/includes/head.h
index f044408..34e6a0a 100755
--- a/Pyext/test/data/includes/head.h
+++ b/Pyext/test/data/includes/head.h
@@ -14,8 +14,8 @@ set -x # echo script lines as they are executed
 # Defines the variables that are needed for any
 # communication with ECF_
 
-export ECF_PORT=%ECF_PORT%    # ECF portnumber
-export ECF_NODE=%ECF_NODE%    # The name host that issued this task
+export ECF_PORT=%ECF_PORT%    # ECF port number on the server
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/Pyext/test/data/python_includes/head.py b/Pyext/test/data/python_includes/head.py
index 09cb3cc..a220916 100644
--- a/Pyext/test/data/python_includes/head.py
+++ b/Pyext/test/data/python_includes/head.py
@@ -1,26 +1,26 @@
 import os
 import ecflow
 
-print "PYTHONPATH====================================================="
-print os.environ['PYTHONPATH'].split(os.pathsep)
+print("PYTHONPATH=====================================================")
+print(os.environ['PYTHONPATH'].split(os.pathsep))
 
-print "Creating Client"
+print("Creating Client")
 ci = ecflow.Client()
-ci.set_host_port("%ECF_NODE%","%ECF_PORT%")
+ci.set_host_port("%ECF_HOST%","%ECF_PORT%")
 ci.set_child_pid(os.getpid())
 ci.set_child_path("%ECF_NAME%")
 ci.set_child_password("%ECF_PASS%")
 ci.set_child_try_no(%ECF_TRYNO%)
 
-print "Only wait 5  minutes, if the server cannot be contacted (note default is 24 hours) before failing"
+print("Only wait 5  minutes, if the server cannot be contacted (note default is 24 hours) before failing")
 ci.set_child_timeout(300) 
 
 try:
    ci.child_init();
-   print "child init ok"
-except RuntimeError, e:
-   print "Error: abort in head.h " + str(e)
+   print("child init ok")
+except RuntimeError as e:
+   print("Error: abort in head.h " + str(e))
    ci.child_abort("Abort in head" + str(e))
 except:
-   print "Error: abort in head.h"
+   print("Error: abort in head.h")
    ci.child_abort("Abort in head")
diff --git a/Pyext/test/data/python_includes/tail.py b/Pyext/test/data/python_includes/tail.py
index 1286f68..0e22073 100644
--- a/Pyext/test/data/python_includes/tail.py
+++ b/Pyext/test/data/python_includes/tail.py
@@ -1,7 +1,7 @@
 try:
    ci.child_complete()
-   print "Sent complete"
+   print("Sent complete")
 except:
-   print "complete aborted"
+   print("complete aborted")
    ci.child_abort("Abort in tail")
 
diff --git a/Pyext/test/ecflow_test_util.py b/Pyext/test/ecflow_test_util.py
index 5fce541..3328ddc 100644
--- a/Pyext/test/ecflow_test_util.py
+++ b/Pyext/test/ecflow_test_util.py
@@ -14,12 +14,27 @@
 #
 #////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 from socket import gethostname 
-import os
+import os,fnmatch
 import fcntl
 import shutil   # used to remove directory tree
 
 from ecflow import Client, debug_build, File
 
+def all_files(root, patterns='*', single_level=False, yield_folders=False):
+    """Expand patterns from semi-colon separated string to list"""
+    patterns = patterns.split(';')
+    for path, subdirs, files in os.walk(root):
+        if yield_folders:
+            files.extend(subdirs)
+        files.sort()
+        for name in files:
+            for pattern in patterns:
+                if fnmatch.fnmatch(name,pattern):
+                    yield os.path.join(path, name)
+                    break
+        if single_level:
+            break    
+        
 # Enable to stop data being deleted, and stop server from being terminated
 def debugging() : return False
 
@@ -45,7 +60,7 @@ def get_root_source_dir():
             
             # bjam, already at the source directory
             if os.path.exists(cwd + "/VERSION.cmake"): 
-                print "   Found VERSION.cmake in " + cwd
+                print("   Found VERSION.cmake in " + cwd)
                 return cwd
         
         if tail != "Pyext" and tail != "migrate":
@@ -75,7 +90,7 @@ def backup_checkpt_file_path(port): return "./" + gethostname() + "." + port + "
 def white_list_file_path(port): return "./" + gethostname() + "." + port + ".ecf.lists"
 
 def clean_up_server(port):
-    print "   clean_up " + port
+    print("   clean_up " + port)
     try: os.remove(log_file_path(port))
     except: pass
     try: os.remove(checkpt_file_path(port))
@@ -86,12 +101,12 @@ def clean_up_server(port):
     except: pass
     
 def clean_up_data(port):
-    print "   Attempting to Removing ECF_HOME " + ecf_home(port)
+    print("   Attempting to Removing ECF_HOME " + ecf_home(port))
     try: 
         shutil.rmtree(ecf_home(port),True)   # True means ignore errors 
-        print "   Remove OK" 
+        print("   Remove OK") 
     except: 
-        print "   Remove Failed" 
+        print("   Remove Failed") 
         pass
         
 # =======================================================================================
@@ -99,19 +114,19 @@ class EcfPortLock(object):
     """allow debug and release version of python tests to run at the same
     time, buy generating a unique port each time"""
     def __init__(self):
-        print "   EcfPortLock:__init__"
+        print("   EcfPortLock:__init__")
         pass
     
     def find_free_port(self,seed_port):
-        print "   EcfPortLock:find_free_port starting with " + str(seed_port)
+        print("   EcfPortLock:find_free_port starting with " + str(seed_port))
         port = seed_port
         while 1:
             if self._free_port(port) == True:
-                print "   *FOUND* free server port " + str(port)
+                print("   *FOUND* free server port " + str(port))
                 if self._do_lock(port) == True:
                     break;
             else:
-                 print "   *Server* port " + str(port) + " busy, trying next port"
+                 print("   *Server* port " + str(port) + " busy, trying next port")
             port = port + 1
             
         return str(port)  
@@ -122,7 +137,7 @@ class EcfPortLock(object):
             ci.set_host_port("localhost",str(port))
             ci.ping() 
             return False
-        except RuntimeError, e:
+        except RuntimeError as e:
             return True
             
     def _do_lock(self,port):
@@ -132,13 +147,13 @@ class EcfPortLock(object):
             try:
                 fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
                 self.lock_file_fp = fp
-                print "   *LOCKED* file " + file
+                print("   *LOCKED* file " + file)
                 return True;
             except IOError:
-                print "   Could *NOT* lock file " + file + " trying next port"
+                print("   Could *NOT* lock file " + file + " trying next port")
                 return False
-        except IOError, e:
-             print "   Could not open file " + file + " for write trying next port"
+        except IOError as e:
+             print("   Could not open file " + file + " for write trying next port")
              return False
         
     def remove(self,port):
@@ -155,7 +170,7 @@ class Server(object):
     """TestServer: allow debug and release version of python tests to run at the same
     time, by generating a unique port each time"""
     def __init__(self):
-        print "Server:__init__: Starting server"      
+        print("Server:__init__: Starting server")      
         if not debugging():
             seed_port = 3153
             if debug_build(): seed_port = 3152
@@ -172,12 +187,12 @@ class Server(object):
      
     def __enter__(self):
         try:
-            print "Server:__enter__: About to ping localhost:" + self.the_port       
+            print("Server:__enter__: About to ping localhost:" + self.the_port)       
             self.ci.ping() 
-            print "   ------- Server all ready running *UNEXPECTED* ------"
-        except RuntimeError, e:
-            print "   ------- Server not running as *EXPECTED* ------ " 
-            print "   ------- Start the server on port " + self.the_port + " ---------"  
+            print("   ------- Server all ready running *UNEXPECTED* ------")
+        except RuntimeError as e:
+            print("   ------- Server not running as *EXPECTED* ------ ") 
+            print("   ------- Start the server on port " + self.the_port + " ---------")  
             clean_up_server(str(self.the_port))
             clean_up_data(str(self.the_port))
     
@@ -185,33 +200,33 @@ class Server(object):
             assert len(server_exe) != 0, "Could not locate the server executable"
         
             server_exe += " --port=" + self.the_port + " --ecfinterval=4 &"
-            print "   TestClient.py: Starting server ", server_exe
+            print("   TestClient.py: Starting server ", server_exe)
             os.system(server_exe) 
         
-            print "   Allow time for server to start"
+            print("   Allow time for server to start")
             if self.ci.wait_for_server_reply() :
-                print "   Server has started"
+                print("   Server has started")
             else:
-                print "   Server failed to start after 60 second !!!!!!"
+                print("   Server failed to start after 60 second !!!!!!")
                 assert False , "Server failed to start after 60 second !!!!!!"
             
-        print "   Run the tests, leaving Server:__enter__:" 
+        print("   Run the tests, leaving Server:__enter__:") 
 
         # return the Client, that can call to the server
         return self.ci
     
     def __exit__(self,exctype,value,tb):
-        print "   Server:__exit__: Kill the server, clean up log file, check pt files and lock files, ECF_HOME"
-        print "   exctype:==================================================="
-        print exctype
-        print "   value:=====================================================" 
-        print value
-        print "   tb:========================================================"; 
-        print tb
-        print "   Terminate server ===================================================="
+        print("   Server:__exit__: Kill the server, clean up log file, check pt files and lock files, ECF_HOME")
+        print("   exctype:===================================================")
+        print(exctype)
+        print("   value:=====================================================") 
+        print(value)
+        print("   tb:========================================================"); 
+        print(tb)
+        print("   Terminate server ====================================================")
         self.ci.terminate_server()  
-        print "   Terminate server OK ================================================="
-        print "   Remove lock file"
+        print("   Terminate server OK =================================================")
+        print("   Remove lock file")
         self.lock_file.remove(self.the_port)
         clean_up_server(str(self.the_port))
         
diff --git a/Pyext/test/py_s_TestClientApi.py b/Pyext/test/py_s_TestClientApi.py
index ca3c87a..b3a4358 100644
--- a/Pyext/test/py_s_TestClientApi.py
+++ b/Pyext/test/py_s_TestClientApi.py
@@ -20,7 +20,7 @@ import shutil   # used to remove directory tree
 # ecflow_test_util, see File ecflow_test_util.py
 import ecflow_test_util as Test
 from ecflow import Defs, Clock, DState,  Style, State, RepeatDate, PrintStyle, File, Client, SState, \
-                   JobCreationCtrl, CheckPt, Cron, Late, debug_build
+                   CheckPt, Cron, Late, debug_build, Flag, FlagType
 #from __builtin__ import None
 
 def ecf_includes() :  return os.getcwd() + "/test/data/includes"
@@ -71,10 +71,10 @@ def test_client_host_port_(host_port):
         return False 
         
 def test_set_host_port():
-    print "test_set_host_port"
+    print("test_set_host_port")
     ci = Client();
-    print " Client.get_host() = " + ci.get_host()
-    print " Client.get_port() = " + ci.get_port()
+    print(" Client.get_host() = " + ci.get_host())
+    print(" Client.get_port() = " + ci.get_port())
     assert test_host_port(ci,"host","3141") ,  "Expected no errors"
     assert test_host_port(ci,"host",4444) ,    "Expected no errors"
     assert test_host_port_(ci,"host:4444") ,    "Expected no errors"
@@ -94,13 +94,15 @@ def test_set_host_port():
     assert test_client_host_port_("3141:host") == False , "Expected errors"
 
 def test_version(ci):
+    print("test_version")
     client_version = ci.version();
     server_version = ci.server_version();
+    print("  client_version: ",client_version)
+    print("  server_version: ",server_version)
     assert client_version == server_version, "Expected client version(" + client_version +") and server version(" +  server_version + ") to match\n";
     
 def test_client_get_server_defs(ci):
-    print "Client version is " + ci.version();
-    print "test_client_get_server_defs"
+    print("test_client_get_server_defs")
     ci.delete_all() # start fresh
     ci.load(create_defs())  
     ci.get_server_defs() 
@@ -113,7 +115,7 @@ def test_client_get_server_defs(ci):
 
 
 def test_client_new_log(ci, port):
-    print "test_client_new_log"
+    print("test_client_new_log")
     try : os.remove("./test_client_new_log.log") # delete file if it exists
     except: pass
     
@@ -134,7 +136,7 @@ def test_client_new_log(ci, port):
 
 
 def test_client_clear_log(ci, port):
-    print "test_client_clear_log"
+    print("test_client_clear_log")
     # populate log
     ci.ping();
     ci.ping();
@@ -152,7 +154,7 @@ def test_client_clear_log(ci, port):
 
 
 def test_client_log_msg(ci, port):
-    print "test_client_log_msg"
+    print("test_client_log_msg")
     # Send a message to the log file, then make sure it was written
     ci.log_msg("Humpty dumpty sat on a wall!")
     ci.flush_log(); # flush and close log file, so we can open it
@@ -163,7 +165,7 @@ def test_client_log_msg(ci, port):
         
          
 def test_client_restart_server(ci):
-    print "test_client_restart_server"
+    print("test_client_restart_server")
     ci.restart_server()
     ci.sync_local()
     assert ci.get_defs().get_server_state() == SState.RUNNING, "Expected server to be running"
@@ -172,8 +174,9 @@ def test_client_restart_server(ci):
     assert len(paths) == 1, "expected changed node to be the root node"
     assert paths[0] == "/", "Expected root path but found " + str(paths[0])
 
+
 def test_client_halt_server(ci):
-    print "test_client_halt_server"
+    print("test_client_halt_server")
     ci.halt_server()
     ci.sync_local()
     assert ci.get_defs().get_server_state() == SState.HALTED, "Expected server to be halted"
@@ -181,9 +184,10 @@ def test_client_halt_server(ci):
     paths = list(ci.changed_node_paths)
     assert len(paths) == 1, "expected changed node to be the root node"
     assert paths[0] == "/", "Expected root path but found " + str(paths[0])
+    ci.restart_server()   
 
 def test_client_shutdown_server(ci):
-    print "test_client_shutdown_server"
+    print("test_client_shutdown_server")
     ci.shutdown_server()
     ci.sync_local()
     assert ci.get_defs().get_server_state() == SState.SHUTDOWN, "Expected server to be shutdown"
@@ -194,7 +198,7 @@ def test_client_shutdown_server(ci):
 
 
 def test_client_load_in_memory_defs(ci):
-    print "test_client_load_in_memory_defs"
+    print("test_client_load_in_memory_defs")
     ci.delete_all() # start fresh
     ci.load(create_defs())  
     ci.sync_local() 
@@ -202,7 +206,7 @@ def test_client_load_in_memory_defs(ci):
 
 
 def test_client_load_from_disk(ci):            
-    print "test_client_load_from_disk"
+    print("test_client_load_from_disk")
     ci.delete_all() # start fresh
     defs = create_defs();
     defs_file = "test_client_load_from_disk.def"
@@ -217,7 +221,7 @@ def test_client_load_from_disk(ci):
 
 
 def test_client_checkpt(ci, port):
-    print "test_client_checkpt"
+    print("test_client_checkpt")
     # start fresh
     ci.delete_all() 
     try:    
@@ -244,7 +248,7 @@ def test_client_checkpt(ci, port):
 
 
 def test_client_restore_from_checkpt(ci, port):          
-    print "test_client_restore_from_checkpt"
+    print("test_client_restore_from_checkpt")
     # start fresh
     ci.delete_all() 
     try:    
@@ -266,12 +270,13 @@ def test_client_restore_from_checkpt(ci, port):
     assert ci.get_defs().find_suite("s1") != None, "Expected to find suite s1 after restore from checkpt:\n" + str(ci.get_defs())
 
     os.remove(Test.checkpt_file_path(port))
+    ci.restart_server()   
 
 
 def get_username(): return pwd.getpwuid(os.getuid())[ 0 ]
 
 def test_client_reload_wl_file(ci, port):
-    print "test_client_reload_wl_file"
+    print("test_client_reload_wl_file")
     
     expected = False
     try:    ci.reload_wl_file();            
@@ -296,17 +301,15 @@ def test_client_reload_wl_file(ci, port):
 
 
 def test_client_run(ci):            
-    print "test_client_run"
+    print("test_client_run")
     ci.delete_all()     
     defs = create_defs("test_client_run")  
     suite = defs.find_suite("test_client_run")
     suite.add_defstatus(DState.suspended)
 
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
     
     ci.restart_server()
     ci.load(defs)           
@@ -331,17 +334,15 @@ def test_client_run(ci):
     shutil.rmtree(dir_to_remove)      
 
 def test_client_run_with_multiple_paths(ci):            
-    print "test_client_run_with_multiple_paths"
+    print("test_client_run_with_multiple_paths")
     ci.delete_all()     
     defs = create_defs("test_client_run_with_multiple_paths")  
     suite = defs.find_suite("test_client_run_with_multiple_paths")
     suite.add_defstatus(DState.suspended)
 
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
     
     ci.restart_server()
     ci.load(defs)           
@@ -368,16 +369,15 @@ def test_client_run_with_multiple_paths(ci):
 
     
 def test_client_requeue(ci):
-    print "test_client_requeue"
+    print("test_client_requeue")
     ci.delete_all()     
     defs = create_defs("test_client_requeue")  
     suite = defs.find_suite("test_client_requeue")
     suite.add_defstatus(DState.suspended)
      
-    defs.generate_scripts();
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    defs.generate_scripts()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
  
     ci.restart_server()
     ci.load(defs)           
@@ -397,16 +397,15 @@ def test_client_requeue(ci):
     shutil.rmtree(dir_to_remove)      
 
 def test_client_requeue_with_multiple_paths(ci):
-    print "test_client_requeue_with_multiple_paths"
+    print("test_client_requeue_with_multiple_paths")
     ci.delete_all()     
     defs = create_defs("test_client_requeue_with_multiple_paths")  
     suite = defs.find_suite("test_client_requeue_with_multiple_paths")
     suite.add_defstatus(DState.suspended)
      
-    defs.generate_scripts();
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    defs.generate_scripts()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
  
     ci.restart_server()
     ci.load(defs)           
@@ -432,7 +431,7 @@ def test_client_requeue_with_multiple_paths(ci):
 
 
 def test_client_free_dep(ci):
-    print "test_client_free_dep"
+    print("test_client_free_dep")
     ci.delete_all()  
        
     # add a real clock, since we are adding date dependencies
@@ -462,10 +461,8 @@ def test_client_free_dep(ci):
     t4.add_trigger("1 == 0")
 
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
  
     ci.restart_server()
     ci.load(defs)           
@@ -497,22 +494,22 @@ def test_client_free_dep(ci):
 
 
 def test_client_stats(ci):
-    print "test_client_stats"
+    print("test_client_stats")
     ci.stats()  # writes to standard out
     
 def test_client_stats_reset(ci):
-    print "test_client_stats_reset"
+    print("test_client_stats_reset")
     ci.stats_reset()   
     ci.stats()  # should produce no ouput, where we measure requests
             
 def test_client_debug_server_on_off(ci):
-    print "test_client_debug_server_on_off"
+    print("test_client_debug_server_on_off")
     ci.debug_server_on()  # writes to standard out
     ci.debug_server_off()  
 
 
 def test_client_check(ci):
-    print "test_client_check"
+    print("test_client_check")
     ci.delete_all()     
     
     defs = Defs()
@@ -553,7 +550,7 @@ def test_client_check(ci):
     assert len(server_check) > 0, "Expected defs to fail, since no externs in server "
     
 def test_client_suites(ci):
-    print "test_client_suites"
+    print("test_client_suites")
     ci.delete_all() 
     assert len(ci.suites()) == 0 ,"expected 0 suite "
 
@@ -567,7 +564,7 @@ def test_client_suites(ci):
     assert len(ci.suites()) == 2 ,"expected 2 suite "
     
 def test_client_ch_suites(ci):
-    print "test_client_ch_suites"
+    print("test_client_ch_suites")
     ci.delete_all()     
     
     defs = Defs()
@@ -576,12 +573,18 @@ def test_client_ch_suites(ci):
     
     suite_names = [ 's1', 's2', 's3' ]
     ci.ch_register(True,suite_names)    # register interest in suites s1,s2,s3 and any new suites
-    ci.ch_register(False,[ "s1"])       # register interest in suites s1 
- 
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 3,"Expected 3 registered suites but found " + str(len(list((ci.get_defs().suites))))
+
+    ci.ch_register(False,[ "s1"])       # register interest in suites s1. ci remembers the last client handle
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 1,"Expected 1 registered suites but found " + str(len(list((ci.get_defs().suites))))
+    
     ci.ch_suites()  # writes to standard out, list of suites and handles
 
+
 def test_client_ch_register(ci):
-    print "test_client_ch_register"
+    print("test_client_ch_register")
     ci.delete_all()  
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -593,10 +596,13 @@ def test_client_ch_register(ci):
     suite_names = [ 's1', 's2', 's3' ]
     ci.ch_register(True, suite_names)    # register interest in suites s1,s2,s3 and any new suites
     ci.ch_register(False,suite_names)    # register interest in suites s1,s2,s3 only
+
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 3,"Expected 3 registered suites but found " + str(len(list((ci.get_defs().suites))))
   
             
 def test_client_ch_drop(ci):
-    print "test_client_ch_drop"
+    print("test_client_ch_drop")
     ci.delete_all()   
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -611,10 +617,13 @@ def test_client_ch_drop(ci):
         ci.ch_register(True, suite_names)    
     finally:  
         ci.ch_drop()  # drop using handle stored in ci., from last register
-          
+
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 6,"Expected 6 suites but found " + str(len(list((ci.get_defs().suites))))
+         
           
 def test_client_ch_drop_user(ci):
-    print "test_client_ch_drop_user"
+    print("test_client_ch_drop_user")
     ci.delete_all()   
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -627,14 +636,19 @@ def test_client_ch_drop_user(ci):
         # register interest in suites s1,s2,s3 and any new suites
         suite_names = [ 's1', 's2', 's3' ]
         ci.ch_register(True, suite_names)
-    except RuntimeError, e:
-        print str(e)
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 3,"Expected 3 suites but found " + str(len(list((ci.get_defs().suites))))
+
+    except RuntimeError as e:
+        print(str(e))
     
     ci.ch_drop_user("")  # drop all handle associated with current user
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 6,"Expected 6 suites but found " + str(len(list((ci.get_defs().suites))))
             
             
 def test_client_ch_add(ci):
-    print "test_client_ch_add"
+    print("test_client_ch_add")
     ci.delete_all()  
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -648,16 +662,24 @@ def test_client_ch_add(ci):
         ci.ch_register(True,suite_names)        # register interest in any new suites
         suite_names = [ 's1', 's2' ]
         ci.ch_add(suite_names)                  # add suites s1,s2 to the last added handle
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 2,"Expected 2 suites but found " + str(len(list((ci.get_defs().suites))))
+
         suite_names = [ 's3', 's4' ]
         ci.ch_add( ci.ch_handle(),suite_names)  # add suites s3,s4 using last handle
-    except RuntimeError, e:
-        print str(e)
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 4,"Expected 4 suites but found " + str(len(list((ci.get_defs().suites))))
+        
+    except RuntimeError as e:
+        print(str(e))
         
     ci.ch_drop_user("")  # drop all handle associated with current user
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 6,"Expected 6 suites but found " + str(len(list((ci.get_defs().suites))))
 
             
 def test_client_ch_auto_add(ci):
-    print "test_client_ch_auto_add"
+    print("test_client_ch_auto_add")
     ci.delete_all()  
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -668,18 +690,22 @@ def test_client_ch_auto_add(ci):
     
     try:
         suite_names = [ 's1', 's2' , 's3']
-        ci.ch_register(True,suite_names)     # register interest in suites s1,s2,s3 and any new suites
+        ci.ch_register(True,suite_names)        # register interest in suites s1,s2,s3 and any new suites
         ci.ch_auto_add( False )                 # disable adding newly created suites to last registered handle\n"
         ci.ch_auto_add( True )                  # enable adding newly created suites to last registered handle\n"
         ci.ch_auto_add( ci.ch_handle(), False ) # disable adding newly created suites to handle\n"
-    except RuntimeError, e:
-        print str(e)
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 3,"Expected 3 suites but found " + str(len(list((ci.get_defs().suites))))
+    except RuntimeError as e:
+        print(str(e))
         
     ci.ch_drop_user("")  # drop all handle associated with current user
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 6,"Expected 6 suites but found " + str(len(list((ci.get_defs().suites))))
         
            
 def test_client_ch_remove(ci):
-    print "test_client_ch_remove"
+    print("test_client_ch_remove")
     ci.delete_all()  
     try: ci.ch_drop_user("")  # drop all handle associated with current user
     except: pass              # Drop throws if no handle registered
@@ -691,26 +717,35 @@ def test_client_ch_remove(ci):
     try:
         suite_names = [ 's1', 's2' , 's3']
         ci.ch_register(True,suite_names)     # register interest in suites s1,s2,s3 and any new suites
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 3,"Expected 3 suites but found " + str(len(list((ci.get_defs().suites))))
+
         suite_names = [ 's1' ]
         ci.ch_remove( suite_names )          # remove suites s1 from the last added handle\n"
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 2,"Expected 2 suites but found " + str(len(list((ci.get_defs().suites))))
+        
         suite_names = [ 's2' ]
         ci.ch_remove( ci.ch_handle(), suite_names )  # remove suites s2 from the last added handle\n"
-    except RuntimeError, e:
-        print str(e)
+        ci.sync_local()
+        assert len(list(ci.get_defs().suites)) == 1,"Expected 1 suites but found " + str(len(list((ci.get_defs().suites))))
+
+    except RuntimeError as e:
+        print(str(e))
         
     ci.ch_drop_user("")  # drop all handle associated with current user
+    ci.sync_local()
+    assert len(list(ci.get_defs().suites)) == 6,"Expected 6 suites but found " + str(len(list((ci.get_defs().suites))))
            
            
 def test_client_get_file(ci):
-    print "test_client_get_file"
+    print("test_client_get_file")
     ci.delete_all()     
     defs = create_defs("test_client_get_file")  
       
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
  
     ci.restart_server()
     ci.load(defs)           
@@ -728,8 +763,8 @@ def test_client_get_file(ci):
         for file_t in [ 'script', 'job', 'jobout', 'manual' ]:
             the_returned_file = ci.get_file('/test_client_get_file/f1/t1',file_t)  # make a request to the server
             assert len(the_returned_file) > 0,"Expected ci.get_file(/test_client_get_file/f1/t1," + file_t + ") to return something"
-    except RuntimeError, e:
-        print str(e)
+    except RuntimeError as e:
+        print(str(e))
 
     dir_to_remove = Test.ecf_home(the_port) + "/" + "test_client_get_file"
     shutil.rmtree(dir_to_remove,True)   # True means ignore errors   
@@ -739,7 +774,7 @@ def test_client_plug(ci):
     pass
            
 def test_client_alter_add(ci):
-    print "test_client_alter_add"
+    print("test_client_alter_add")
     ci.delete_all()     
     ci.load(create_defs("test_client_alter_add"))   
 
@@ -771,11 +806,11 @@ def test_client_alter_add(ci):
     assert( len(list(task_t1.todays))) == 3 ,"Expected 3 today's :\n" + str(ci.get_defs())
     assert( len(list(task_t1.dates))) == 4 ,"Expected 4 dates :\n" + str(ci.get_defs())
     assert( len(list(task_t1.days))) == 7 ,"Expected 7 days :\n" + str(ci.get_defs())
-    assert( str(task_t1.get_late()) == "late -s +00:15 -a 20:00 -c +02:00", "Expected late 'late -s +00:15 -a 20:00 -c +02:00'" + str(ci.get_defs()))
+    assert str(task_t1.get_late()) == "late -s +00:15 -a 20:00 -c +02:00", "Expected late 'late -s +00:15 -a 20:00 -c +02:00'" + str(ci.get_defs())
            
 
 def test_client_alter_delete(ci):
-    print "test_client_alter_delete"
+    print("test_client_alter_delete")
     ci.delete_all() 
     defs =create_defs("test_client_alter_delete")  
      
@@ -809,13 +844,13 @@ def test_client_alter_delete(ci):
     task_t1.add_trigger( "t2 == active" )
     task_t1.add_complete( "t2 == complete" )
     
-    assert( len(str(task_t1.get_late())) == 0, "expected no late" )
+    assert task_t1.get_late() == None, "expected no late" 
     late = Late()
     late.submitted(20, 10)
     late.active(20, 10)
     late.complete(20, 10, True)
     task_t1.add_late(late)
-    assert( len(str(task_t1.get_late())) != 0, "expected late" )
+    assert task_t1.get_late() != None, "expected late" 
     
             
     t2 = "/test_client_alter_delete/f1/t2"
@@ -922,7 +957,7 @@ def test_client_alter_delete(ci):
     ci.alter(t1,"delete","late")   
     ci.sync_local()
     task_t1 = ci.get_defs().find_abs_node(t1)
-    assert( len(str(task_t1.get_late())) == 0, "expected no late after delete" )
+    assert task_t1.get_late() == None, "expected no late after delete" 
 
 
     task_t1 = ci.get_defs().find_abs_node(t1)
@@ -946,7 +981,7 @@ def test_client_alter_delete(ci):
     assert repeat.empty(), "Expected repeat to be deleted:\n" + str(ci.get_defs())
  
 def test_client_alter_change(ci):
-    print "test_client_alter_change"
+    print("test_client_alter_change")
     ci.delete_all() 
     defs =create_defs("test_client_alter_change")   
     t1 = "/test_client_alter_change/f1/t1"
@@ -1011,11 +1046,11 @@ def test_client_alter_change(ci):
     trigger = task_t1.get_trigger()
     assert trigger.get_expression() == "t2 == aborted", "Expected alter of trigger to be 't2 == aborted' but found " + trigger.get_expression()
 
-    ci.alter(t1,"change","trigger","/s1/f1/t2 == complete")   
+    ci.alter(t1,"change","trigger","/test_client_alter_change/f1/t2 == complete")   
     ci.sync_local()
     task_t1 = ci.get_defs().find_abs_node(t1)
     trigger = task_t1.get_trigger()
-    assert trigger.get_expression() == "/s1/f1/t2 == complete", "Expected alter of trigger to be '/s1/f1/t2 == complete' but found " + trigger.get_expression()
+    assert trigger.get_expression() == "/test_client_alter_change/f1/t2 == complete", "Expected alter of trigger to be '/test_client_alter_change/f1/t2 == complete' but found " + trigger.get_expression()
 
     ci.alter(t1,"change","complete","t2 == aborted")   
     ci.sync_local()
@@ -1023,11 +1058,11 @@ def test_client_alter_change(ci):
     complete = task_t1.get_complete()
     assert complete.get_expression() == "t2 == aborted", "Expected alter of complete to be 't2 == aborted' but found " + complete.get_expression()
 
-    ci.alter(t1,"change","complete","/s1/f1/t2 == active")   
+    ci.alter(t1,"change","complete","/test_client_alter_change/f1/t2 == active")   
     ci.sync_local()
     task_t1 = ci.get_defs().find_abs_node(t1)
     complete = task_t1.get_complete()
-    assert complete.get_expression() == "/s1/f1/t2 == active", "Expected alter of complete to be '/s1/f1/t2 == active' but found " + complete.get_expression()
+    assert complete.get_expression() == "/test_client_alter_change/f1/t2 == active", "Expected alter of complete to be '/test_client_alter_change/f1/t2 == active' but found " + complete.get_expression()
 
     ci.alter(t1,"change","limit_max","limit", "2")   
     ci.sync_local()
@@ -1056,6 +1091,69 @@ def test_client_alter_change(ci):
     repeat = task.get_repeat()
     assert repeat.value() == 20100113, "Expected alter of repeat to be 20100113 but found " + str(repeat.value())
  
+def test_client_alter_flag(ci):
+    print("test_client_alter_flag")
+    ci.delete_all() 
+    defs =create_defs("test_client_alter_flag")   
+    t1 = "/test_client_alter_flag/f1/t1"
+     
+    task_t1 = defs.find_abs_node(t1)
+           
+    ci.load(defs)   
+
+    flag = Flag()
+    flag_list = flag.list() # flag_list is of type FlagTypeVec
+    for flg in flag_list: 
+        ci.alter(t1,"set_flag",flag.type_to_string(flg) )   
+        ci.sync_local()
+        task_t1 = ci.get_defs().find_abs_node(t1)
+        task_flag = task_t1.get_flag()
+        assert task_flag.is_set( flg ),"expected flag %r to be set" % task_flag.type_to_string(flg)
+
+        # alter itself causes the flag message to be set, and preserved
+        if flg == FlagType.message: continue 
+        
+        ci.alter(t1,"clear_flag",flag.type_to_string(flg) )   
+        ci.sync_local()
+        task_t1 = ci.get_defs().find_abs_node(t1)
+        task_flag = task_t1.get_flag()
+        assert not task_flag.is_set( flg ),"expected flag %r NOT to be set" % task_flag.type_to_string(flg)
+
+
+def test_client_flag_migrated(ci):
+    print("test_client_flag_migrated")
+    ci.delete_all() 
+    defs =create_defs("test_client_flag_migrated")   
+    s1 = "/test_client_flag_migrated"
+  
+    ci.load(defs)   
+    ci.sync_local()
+
+    node_vec = ci.get_defs().get_all_nodes()
+    assert len(node_vec) == 4, "Expected 4 nodes, but found " + str(len(node_vec))
+
+    ci.alter(s1,"set_flag","migrated")   
+    ci.sync_local()
+    node_vec = ci.get_defs().get_all_nodes()
+    assert len(node_vec) == 1, "Expected 1 nodes, but found " + str(len(node_vec))
+
+    ci.checkpt()  # checkpoint after setting flag migrated, need to prove nodes still persisted
+    
+    ci.alter(s1,"clear_flag","migrated")   
+    ci.sync_local()
+    node_vec = ci.get_defs().get_all_nodes()
+    assert len(node_vec) == 4, "Expected 4 nodes, but found " + str(len(node_vec))
+
+    ci.delete_all() 
+    
+    ci.halt_server()  # server must be halted, otherwise restore_from_checkpt will throw
+    ci.restore_from_checkpt()
+    ci.alter(s1,"clear_flag","migrated")   
+    ci.sync_local() 
+    node_vec = ci.get_defs().get_all_nodes()
+    assert len(node_vec) == 4, "Expected 4 nodes, but found " + str(len(node_vec))
+    ci.restart_server()   
+
 
     # ISSUES:
     # o Currently we can only change clock attr if we have one.
@@ -1073,7 +1171,7 @@ def test_client_alter_change(ci):
 
 
 def test_client_force(ci):
-    print "test_client_force"
+    print("test_client_force")
     ci.delete_all()     
     defs = create_defs("test_client_force") 
      
@@ -1141,7 +1239,7 @@ def test_client_force(ci):
       
 
 def test_client_replace(ci,on_disk):
-    print "test_client_replace client_defs on disk = " + str(on_disk)
+    print("test_client_replace client_defs on disk = " + str(on_disk))
     # Create and load the following defs
     # s1
     #   f1
@@ -1229,7 +1327,7 @@ def test_client_group(ci):
     pass
            
 def test_client_suspend(ci):
-    print "test_client_suspend"
+    print("test_client_suspend")
     ci.delete_all()     
     defs = create_defs("test_client_suspend")  
     suite = defs.find_suite("test_client_suspend")
@@ -1246,7 +1344,7 @@ def test_client_suspend(ci):
     
 
 def test_client_suspend_multiple_paths(ci):
-    print "test_client_suspend_multiple_paths"
+    print("test_client_suspend_multiple_paths")
     ci.delete_all()     
     defs = create_defs("test_client_suspend_multiple_paths")  
     suite = defs.find_suite("test_client_suspend_multiple_paths")
@@ -1265,7 +1363,7 @@ def test_client_suspend_multiple_paths(ci):
     assert task_t2.is_suspended(), "Expected to find task t2 to be suspended"
             
 def test_client_resume(ci):
-    print "test_client_resume"
+    print("test_client_resume")
     ci.delete_all()     
     defs = create_defs("test_client_resume")  
     suite = defs.find_suite("test_client_resume")
@@ -1285,7 +1383,7 @@ def test_client_resume(ci):
     assert suite.is_suspended() == False, "Expected to find suite resumed"
 
 def test_client_resume_multiple_paths(ci):
-    print "test_client_resume_multiple_paths"
+    print("test_client_resume_multiple_paths")
     ci.delete_all()     
     defs = create_defs("test_client_resume_multiple_paths")  
     suite = defs.find_suite("test_client_resume_multiple_paths")
@@ -1312,7 +1410,7 @@ def test_client_resume_multiple_paths(ci):
  
           
 def test_client_delete_node(ci): 
-    print "test_client_delete_node"
+    print("test_client_delete_node")
     ci.delete_all() 
     defs = create_defs("test_client_delete_node")
     
@@ -1334,7 +1432,7 @@ def test_client_delete_node(ci):
         assert node == None , "Expected not to find task " + task.get_abs_node_path()  + " as it should have been deleted:\n" + str(ci.get_defs())   
     
 def test_client_delete_node_multiple_paths(ci): 
-    print "test_client_delete_node_multiple_paths"
+    print("test_client_delete_node_multiple_paths")
     ci.delete_all() 
     defs = create_defs("test_client_delete_node_multiple_paths")
     
@@ -1361,7 +1459,7 @@ def test_client_delete_node_multiple_paths(ci):
     
 
 def test_client_check_defstatus(ci):            
-    print "test_client_check_defstatus"
+    print("test_client_check_defstatus")
     ci.delete_all()     
     defs = create_defs("test_client_check_defstatus")  
     
@@ -1375,10 +1473,8 @@ def test_client_check_defstatus(ci):
     task_t1.add_defstatus(DState.suspended)
     
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
     
     ci.restart_server()
     ci.load(defs)           
@@ -1403,14 +1499,12 @@ def test_client_check_defstatus(ci):
 def test_ECFLOW_189(ci):
     # Bug, when a node is resumed it ignored holding dependencies higher up the tree.
     # i.e Previously when we resumed a node, it ignored trigger/time/node state, dependencies higher up the tree
-    print "test_ECFLOW_189"
+    print("test_ECFLOW_189")
     ci.delete_all()     
     defs = create_defs("test_ECFLOW_189")  
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
     
     ci.restart_server()
     ci.load(defs)   
@@ -1453,14 +1547,12 @@ def test_ECFLOW_189(ci):
 
 def test_ECFLOW_199(ci):
     # Test ClientInvoker::changed_node_paths
-    print "test_ECFLOW_199"
+    print("test_ECFLOW_199")
     ci.delete_all()     
     defs = create_defs("test_ECFLOW_199")  
     defs.generate_scripts();
-    
-    job_ctrl = JobCreationCtrl()
-    defs.check_job_creation(job_ctrl)       
-    assert len(job_ctrl.get_error_msg()) == 0, job_ctrl.get_error_msg()
+    msg = defs.check_job_creation()
+    assert len(msg) == 0, msg
     
     ci.restart_server()
     ci.load(defs)   
@@ -1479,13 +1571,13 @@ def test_ECFLOW_199(ci):
     ci.resume("/test_ECFLOW_199/f1/t1")
     ci.sync_local() 
     for path in ci.changed_node_paths:
-        print "   changed node path " + path;
+        print("   changed node path " + path);
     assert len(list(ci.changed_node_paths)) == 1, "Expected 1 changed path but found " + str(len(list(ci.changed_node_paths)))
 
     ci.resume("/test_ECFLOW_199/f1/t2")
     ci.sync_local() 
     for path in ci.changed_node_paths:
-        print "   changed node path " + path;
+        print("   changed node path " + path);
     assert len(list(ci.changed_node_paths)) == 1, "Expected 1 changed path but found " + str(len(list(ci.changed_node_paths)))
 
     dir_to_remove = Test.ecf_home(the_port) + "/" + "test_ECFLOW_199"
@@ -1493,9 +1585,9 @@ def test_ECFLOW_199(ci):
 
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
 
     # server independent tests
     test_set_host_port();
@@ -1509,24 +1601,24 @@ if __name__ == "__main__":
         test_client_new_log(ci, the_port)             
         test_client_clear_log(ci, the_port)             
         test_client_log_msg(ci, the_port)             
-          
+           
         test_client_restart_server(ci)             
         test_client_halt_server(ci)             
         test_client_shutdown_server(ci)   
-      
+       
         test_client_load_in_memory_defs(ci)             
         test_client_load_from_disk(ci)             
         test_client_checkpt(ci, the_port)             
         test_client_restore_from_checkpt(ci, the_port)             
-           
+            
         test_client_reload_wl_file(ci, the_port)             
-   
+    
         test_client_run(ci)  
         test_client_run_with_multiple_paths(ci)     
         test_client_requeue(ci)             
         test_client_requeue_with_multiple_paths(ci)             
         test_client_free_dep(ci)              
-  
+   
         test_client_suites(ci)
         test_client_ch_suites(ci)  
         test_client_ch_register(ci)             
@@ -1535,17 +1627,19 @@ if __name__ == "__main__":
         test_client_ch_add(ci)             
         test_client_ch_auto_add(ci)             
         test_client_ch_remove(ci)             
-             
+              
         test_client_get_file(ci)             
         #test_client_plug(ci)             
         test_client_alter_add(ci) 
         test_client_alter_delete(ci) 
         test_client_alter_change(ci) 
-                  
+        test_client_alter_flag(ci) 
+        test_client_flag_migrated(ci) 
+ 
         test_client_force(ci)             
         test_client_replace(ci,False)             
         test_client_replace(ci,True)             
-  
+   
         #test_client_kill(ci)             
         #test_client_status(ci)             
         #test_client_order(ci)             
@@ -1556,15 +1650,15 @@ if __name__ == "__main__":
         test_client_resume_multiple_paths(ci)             
         test_client_delete_node(ci)             
         test_client_delete_node_multiple_paths(ci)             
-  
+   
         test_client_check(ci)  
         test_client_check_defstatus(ci)  
-   
+    
         test_client_stats(ci)             
         test_client_stats_reset(ci)             
         test_client_debug_server_on_off(ci)    
-         
+          
         test_ECFLOW_189(ci)         
         test_ECFLOW_199(ci)         
 
-        print "All Tests pass ======================================================================"    
+        print("All Tests pass ======================================================================")    
diff --git a/Pyext/test/py_s_TestPythonChildApi.py b/Pyext/test/py_s_TestPythonChildApi.py
index 0a03504..3682a15 100644
--- a/Pyext/test/py_s_TestPythonChildApi.py
+++ b/Pyext/test/py_s_TestPythonChildApi.py
@@ -14,6 +14,7 @@
 import time
 import os
 import pwd
+import sys  # determine python version
 from datetime import datetime
 import shutil   # used to remove directory tree
 
@@ -34,7 +35,12 @@ def create_defs(name,the_port):
     suite.add_variable("ECF_INCLUDE", ecf_includes());
 
     family = suite.add_family("f1")
-    family.add_variable("ECF_JOB_CMD","python %ECF_JOB% 1> %ECF_JOBOUT% 2>&1")
+    # sys.version_info is a tuple containing (major,minor,micro,releaselevel,serial)
+    # releaselevel = alpha beta candidate final
+    if (sys.version_info > (3, 0)):
+        family.add_variable("ECF_JOB_CMD","python3 %ECF_JOB% 1> %ECF_JOBOUT% 2>&1")
+    else:
+        family.add_variable("ECF_JOB_CMD","python %ECF_JOB% 1> %ECF_JOBOUT% 2>&1")
 
     task = family.add_task("t1")
     task.add_event("event_fred")
@@ -47,9 +53,9 @@ def create_defs(name,the_port):
     
 
 def test_client_run(ci):            
-    print "\ntest_client_run " + ci.get_host() + ":" + str(ci.get_port())
-    print " ECF_HOME(" + Test.ecf_home(ci.get_port()) + ")"
-    print " ECF_INCLUDES(" + ecf_includes() + ")"
+    print("\ntest_client_run " + ci.get_host() + ":" + str(ci.get_port()))
+    print(" ECF_HOME(" + Test.ecf_home(ci.get_port()) + ")")
+    print(" ECF_INCLUDES(" + ecf_includes() + ")")
     ci.delete_all()     
     defs = create_defs("test_client_run",ci.get_port())  
     suite = defs.find_suite("test_client_run")
@@ -76,36 +82,36 @@ def test_client_run(ci):
 
     file = dir + "/t1.ecf"
     contents = "%include <head.py>\n\n"
-    contents += "print 'doing some work'\n"
+    contents += "print('doing some work')\n"
     contents += "try:\n"
     contents += "    ci.child_event('event_fred')\n"
     contents += "    ci.child_meter('meter',100)\n"
     contents += "    ci.child_label('label_name','100')\n"
-    contents += "    print 'Finished event,meter and label child commands'\n"
+    contents += "    print('Finished event,meter and label child commands')\n"
     contents += "except:\n"
     contents += "    ci.child_abort()\n\n"
     contents += "%include <tail.py>\n"
     open(file,'w').write(contents)
-    print " Created file " + file
+    print(" Created file " + file)
       
     # create the ecf file /test_client_run/f1/t2
     file = dir + "/t2.ecf"
     contents = "%include <head.py>\n\n"
-    contents += "print 'Waiting for /test_client_run/f1/t1 == complete'\n"
+    contents += "print('Waiting for /test_client_run/f1/t1 == complete')\n"
     contents += "try:\n"
     contents += "    ci.child_wait('/test_client_run/f1/t1 == complete')\n"
-    contents += "    print 'Finished waiting'\n"
+    contents += "    print('Finished waiting')\n"
     contents += "except:\n"
     contents += "    ci.child_abort()\n\n"
     contents += "%include <tail.py>\n"
     open(file,'w').write(contents)
-    print " Created file " + file
+    print((" Created file " , file))
       
     ci.restart_server()
     ci.load(defs)           
     ci.begin_all_suites()
     ci.run("/test_client_run", False)
-    print " Running the test, wait for suite to complete ..."  
+    print(" Running the test, wait for suite to complete ...")  
 
     count = 0
     while 1:
@@ -116,7 +122,7 @@ def test_client_run(ci):
         if suite.get_state() == State.complete:
             break;
         if suite.get_state() == State.aborted:
-            print defs;
+            print(defs);
             assert False," Suite aborted \n"  
         time.sleep(2)
         if count > 20:
@@ -126,15 +132,15 @@ def test_client_run(ci):
     
     if not Test.debugging():
         dir_to_remove = Test.ecf_home(ci.get_port()) + "/" + "test_client_run"
-        print " Test OK: removing directory " + dir_to_remove
+        print((" Test OK: removing directory " , dir_to_remove))
         shutil.rmtree(dir_to_remove)      
         
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
 
     with Test.Server() as ci:
         PrintStyle.set_style( Style.STATE ) # show node state 
         test_client_run(ci)  
-        print "\nAll Tests pass ======================================================================"    
+        print("\nAll Tests pass ======================================================================")    
diff --git a/Pyext/test/py_u_TestAddDelete.py b/Pyext/test/py_u_TestAddDelete.py
index 465db8b..32e26ff 100644
--- a/Pyext/test/py_u_TestAddDelete.py
+++ b/Pyext/test/py_u_TestAddDelete.py
@@ -19,11 +19,11 @@ import os
  
 if __name__ == "__main__":
     
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")"
-    print "PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep))
-    print "sys.path:   " + str(sys.path)
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")")
+    print("PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep)))
+    print("sys.path:   " + str(sys.path))
+    print("####################################################################")
  
     #===========================================================================
     # Defs: add and delete *USER* variables
@@ -108,7 +108,7 @@ if __name__ == "__main__":
     the_limit.increment(1,"/path2") ;  assert the_limit.value() == 2 ,"Expected limit value of 2"
     the_limit.increment(1,"/path3") ;  assert the_limit.value() == 3 ,"Expected limit value of 3"
     the_limit.increment(1,"/path4") ;  assert the_limit.value() == 4 ,"Expected limit value of 4"
-    for path in the_limit.node_paths(): print path
+    for path in the_limit.node_paths(): print(path)
     assert len(list(the_limit.node_paths())) == 4 ,"expected 4 path"
     the_limit.decrement(1,"/path1") ; assert the_limit.value() == 3 ,"Expected limit value of 3"
     the_limit.decrement(1,"/path2") ; assert the_limit.value() == 2 ,"Expected limit value of 2"
@@ -211,12 +211,12 @@ if __name__ == "__main__":
     assert(event.name() == "fred"), "Expected name to be empty, when name defind an not number, number is max_int"
     assert(event.value() == 0),"Expected to not to find event"
 
-    for e in task.events:     print str(e)," # value: ",str(e.value())
+    for e in task.events:     print(str(e)," # value: ",str(e.value()))
     a_dict = {}
     for e in task.events:
         if e.name() != "": a_dict[e.name()] = e.value()
         else:              a_dict[e.number()] = e.value()
-    print a_dict
+    print(a_dict)
 
     assert len(list(task.events)) == 5, "Expected 5 Events"
     task.delete_event("1");         assert len(list(task.events)) == 4, "Expected 4 Events"
@@ -259,7 +259,7 @@ if __name__ == "__main__":
     repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
     
     task.add_repeat(ecflow.RepeatEnumerated("enum", ["red", "green", "blue" ]))
-    print task
+    print(task)
     task.delete_repeat()      
     repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
 
@@ -402,24 +402,24 @@ if __name__ == "__main__":
     #===========================================================================
     # add autocancel
     #===========================================================================
-    print "test add autoCancel"
+    print("test add autoCancel")
     t1 = ecflow.Task("t1")
     assert t1.get_autocancel() == None, " Expected no autocancel"
     t1.add_autocancel(3)                       # 3 days
     assert t1.get_autocancel() != None, " Expected autocancel"
-    print str(t1.get_autocancel())
+    print(str(t1.get_autocancel()))
 
     t3 = ecflow.Task("t3")
     t3.add_autocancel(20, 10, True)              # hour,minutes,relative
-    print str(t3.get_autocancel())
+    print(str(t3.get_autocancel()))
     
     t4 = ecflow.Task("t4")
     t4.add_autocancel(ecflow.TimeSlot(10, 10), True)    # hour,minutes,relative
-    print str(t4.get_autocancel())
+    print(str(t4.get_autocancel()))
 
     t5 = ecflow.Task("t5")
     t5.add_autocancel(ecflow.Autocancel(1, 10, True))   # hour,minutes,relative
-    print str(t5.get_autocancel())
+    print(str(t5.get_autocancel()))
     
     #===========================================================================
     # add late
@@ -470,9 +470,9 @@ if __name__ == "__main__":
     s1 = ecflow.Suite("s1")
     s1.add_clock(clock)
     
-    print "#==========================================================================="
-    print "# get clock"
-    print "#==========================================================================="
+    print("#===========================================================================")
+    print("# get clock")
+    print("#===========================================================================")
     s0 = ecflow.Suite("s0")
     assert s0.get_clock() == None, "Expected no clock"
     
@@ -480,6 +480,27 @@ if __name__ == "__main__":
     assert s0.get_clock() != None, "Expected clock"
 
     #===========================================================================
+    # end clock, used in simulator only, not persisted
+    #===========================================================================
+    clock = ecflow.Clock(1, 1, 2010, False)     # day,month, year, hybrid
+    clock.set_gain(1, 10, True)                 # True means positive gain
+    suite = ecflow.Suite("suite")
+    suite.add_end_clock(clock)
+    
+    clock = ecflow.Clock(1, 1, 2011, True)       # day,month, year, hybrid
+    clock.set_gain_in_seconds(12, True)
+    s1 = ecflow.Suite("s1")
+    s1.add_end_clock(clock)
+    
+    print("#===========================================================================")
+    print("# get end clock")
+    print("#===========================================================================")
+    s0 = ecflow.Suite("s0")
+    assert s0.get_end_clock() == None, "Expected no end clock"
+    
+    s0.add_end_clock(ecflow.Clock(1, 1, 2010, False))
+    assert s0.get_end_clock() != None, "Expected end clock"
+    #===========================================================================
     # Add zombie. Note we can *NOT* add two zombie attributes of the same ZombieType
     #===========================================================================
     zombie_life_time_in_server = 800
@@ -516,5 +537,5 @@ if __name__ == "__main__":
         assert len(list(s1.zombies)) == 0, "Expected 0 zombie attributes but found " + str(len(list(s1.zombies)))
 
 
-    print "All Tests pass"
+    print("All Tests pass")
     
diff --git a/Pyext/test/py_u_TestAddDeleteError.py b/Pyext/test/py_u_TestAddDeleteError.py
index e76c47e..596817e 100644
--- a/Pyext/test/py_u_TestAddDeleteError.py
+++ b/Pyext/test/py_u_TestAddDeleteError.py
@@ -20,9 +20,9 @@ from ecflow import Defs, Suite, Variable, Limit, InLimit, Task, PartExpression,
     
 if __name__ == "__main__":
 
-    print "######################################################################################"
-    print "Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")"
-    print "######################################################################################"
+    print("######################################################################################")
+    print("Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")")
+    print("######################################################################################")
     
     #
     # Test for: See  ECFLOW-106 Times/Dates attributes attached to suite node
@@ -82,5 +82,5 @@ if __name__ == "__main__":
     assert expected_error, "Suite should not allow any time based dependencies"
      
 
-    print "All Tests pass"
+    print("All Tests pass")
     
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestAddDeleteFunc.py b/Pyext/test/py_u_TestAddDeleteFunc.py
index 0dc3c3d..bfd10f8 100644
--- a/Pyext/test/py_u_TestAddDeleteFunc.py
+++ b/Pyext/test/py_u_TestAddDeleteFunc.py
@@ -11,18 +11,16 @@
 # nor does it submit to any jurisdiction.
 #////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-#
 from ecflow import Defs, Suite, Variable, Limit, InLimit, Task, PartExpression, \
                    Event, Meter, Label, RepeatInteger, RepeatEnumerated, RepeatDate, RepeatString, \
                    TimeSlot, TimeSeries, Today, Time, Date, Day, Days, Cron, Autocancel, Late, \
                    DState, Clock, ChildCmdType, ZombieType, ZombieAttr, ZombieUserActionType, Client, debug_build
         
-    
 if __name__ == "__main__":
 
-    print "####################################################################"
-    print "Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
     
     #
     # Add Nodes functional way
@@ -42,7 +40,7 @@ if __name__ == "__main__":
          .add_variable("ECF_URL_BASE",'http://www.ecmwf.int')\
          .add_variable("ECF_URL",'"publications/manuals/sms"')\
          .add_variable(a_dict)
-    print suite
+    print(suite)
     assert len(list(suite.variables)) == 8,"Expected 8 variable"    
     suite.delete_variable("");         assert len(list(suite.variables)) == 0,"Expected 0 variable since we should have deleted all"
     
@@ -120,7 +118,7 @@ if __name__ == "__main__":
     repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
     
     task.add_repeat( RepeatEnumerated("enum", ["red", "green", "blue" ]) ).add_variable("Q","j")
-    print task
+    print(task)
     task.delete_repeat()      
     repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
 
@@ -274,10 +272,14 @@ if __name__ == "__main__":
     suite =  Suite("suite")
     suite.add_clock(clock).add_variable("fred1","j") 
     
+    end_clock = Clock(1, 1, 2017, False)     # day,month, year, hybrid
+    suite.add_end_clock(end_clock).add_variable("fred2","j") 
+    
     clock = Clock(1, 1, 2011, True)       # day,month, year, hybrid
     clock.set_gain_in_seconds(12, True)
     s1 =  Suite("s1")
-    s1.add_clock(clock).add_variable("fred2","j") 
+    s1.add_clock(clock).add_variable("fred3","j") 
+    s1.add_end_clock(end_clock).add_variable("fred4","j") 
     
     #
     # Add zombie. Note we can *NOT* add two zombie attributes of the same ZombieType
@@ -285,9 +287,11 @@ if __name__ == "__main__":
     zombie_life_time_in_server = 800
     child_list = [ ChildCmdType.init, ChildCmdType.event, ChildCmdType.meter, ChildCmdType.label, ChildCmdType.wait, ChildCmdType.abort, ChildCmdType.complete ]
     zombie_type_list = [ ZombieType.ecf, ZombieType.user, ZombieType.path ]
+    count = 1;
     for zombie_type in zombie_type_list:
         zombie_attr = ZombieAttr(zombie_type, child_list, ZombieUserActionType.block, zombie_life_time_in_server)
-        s1.add_zombie(zombie_attr).add_variable("fred","j") 
+        s1.add_zombie(zombie_attr).add_variable("afred" + str(count),"j") 
+        count += 1
     assert len(list(s1.zombies)) == 3,"Expected 3 zombie attributes but found " + str(len(list(s1.zombies)))
     
     # delete all the zombies
@@ -300,12 +304,13 @@ if __name__ == "__main__":
     zombie_type_list = [ ZombieType.ecf, ZombieType.user, ZombieType.path ]
     for zombie_type in zombie_type_list:
         zombie_attr = ZombieAttr(zombie_type, child_list, ZombieUserActionType.block)
-        s1.add_zombie(zombie_attr).add_variable("fred","j") 
+        s1.add_zombie(zombie_attr).add_variable("bfred" + str(count),"j") 
         
         # test delete of specific zombie attribute
         assert len(list(s1.zombies)) == 1,"Expected 1 zombie attributes but found " + str(len(list(s1.zombies)))
         s1.delete_zombie(zombie_type)
         assert len(list(s1.zombies)) == 0,"Expected 0 zombie attributes but found " + str(len(list(s1.zombies)))
+        count += 1;
 
-    print "All Tests pass"
+    print("All Tests pass")
     
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestAddNodeFunc.py b/Pyext/test/py_u_TestAddNodeFunc.py
index aaee178..b2910ca 100644
--- a/Pyext/test/py_u_TestAddNodeFunc.py
+++ b/Pyext/test/py_u_TestAddNodeFunc.py
@@ -48,9 +48,9 @@ def create_defs_functionally():
     
     
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version()  + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
 
     #
     # Add Nodes functional way
@@ -65,5 +65,5 @@ if __name__ == "__main__":
     # hence calling add_family/add_task still works.
     assert create_defs_sequentially() == create_defs_functionally(),"Functional suite not as expected "
   
-    print "All Tests pass"
+    print("All Tests pass")
     
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestAddDelete.py b/Pyext/test/py_u_TestCopy.py
similarity index 57%
copy from Pyext/test/py_u_TestAddDelete.py
copy to Pyext/test/py_u_TestCopy.py
index 465db8b..8133ff9 100644
--- a/Pyext/test/py_u_TestAddDelete.py
+++ b/Pyext/test/py_u_TestCopy.py
@@ -11,19 +11,29 @@
 # nor does it submit to any jurisdiction.
 #////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
 
-# code for testing addition and deletion 
+# code for testing copy
 #
 import ecflow
 import sys
 import os
+import copy
  
 if __name__ == "__main__":
     
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")"
-    print "PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep))
-    print "sys.path:   " + str(sys.path)
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")")
+    print("PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep)))
+    print("sys.path:   " + str(sys.path))
+    print("####################################################################")
+    
+    defs = ecflow.Defs()
+    defs.add_suite("a").add_family("f1").add_task("t1").add_variable("a","b").add_event(1).add_meter("meter", 0, 100).add_label("label", "v").add_time("+00:30 20:00 01:00")
+    print(defs)
+    
+    defs_copy = copy.copy(defs)
+    print(defs_copy)
+    assert defs_copy == defs,"defs should be equal after copy"
+    
  
     #===========================================================================
     # Defs: add and delete *USER* variables
@@ -34,19 +44,13 @@ if __name__ == "__main__":
     defs.add_variable("ECF_URL_BASE", "http://www.ecmwf.int")
     defs.add_variable("ECF_URL", "publications/manuals/sms")
     assert len(list(defs.user_variables)) == 4, "Expected *user* 4 variable"    
+    defs_copy = copy.copy(defs)
+    assert len(list(defs_copy.user_variables)) == 4, "Expected *user* 4 variable"    
+
     defs.delete_variable("FRED");     assert len(list(defs.user_variables)) == 3, "Expected 3 variables since we just delete FRED"
     defs.delete_variable("");         assert len(list(defs.user_variables)) == 0, "Expected 0 variables since we should have deleted all"
-    
-    a_dict = { "name":"value", "name2":"value2", "name3":"value3", "name4":"value4" }
-    defs.add_variable(a_dict)
-    assert len(list(defs.user_variables)) == 4, "Expected 4 variable"    
-    defs.delete_variable("");         assert len(list(defs.user_variables)) == 0, "Expected 0 variable since we should have deleted all"
+    assert len(list(defs_copy.user_variables)) == 4, "Expected *user* 4 variable"    
 
-    # add a empty dictionary
-    a_dict = {}
-    defs.add_variable(a_dict)
-    assert len(list(defs.user_variables)) == 0, "Expected zero variables"    
-    
     #===========================================================================
     # Suite: add and delete variables
     #===========================================================================
@@ -55,34 +59,9 @@ if __name__ == "__main__":
     suite.add_variable("ECF_URL_CMD", "${BROWSER:=firefox} -remote 'openURL(%ECF_URL_BASE%/%ECF_URL%)'")
     suite.add_variable("ECF_URL_BASE", "http://www.ecmwf.int")
     suite.add_variable("ECF_URL", "publications/manuals/sms")
-    assert len(list(suite.variables)) == 4, "Expected 4 variable"    
-    suite.delete_variable("ECF_HOME"); assert len(list(suite.variables)) == 3, "Expected 3 variable since we just delete ECF_HOME"
-    suite.delete_variable("");         assert len(list(suite.variables)) == 0, "Expected 0 variable since we should have deleted all"
-    
-    a_dict = { "name":"value", "name2":"value2", "name3":"value3", "name4":"value4" }
-    suite.add_variable(a_dict)
-    assert len(list(suite.variables)) == 4, "Expected 4 variable"    
-    suite.delete_variable("");         assert len(list(suite.variables)) == 0, "Expected 0 variable since we should have deleted all"
-
-    # add a empty dictionary
-    a_dict = { }
-    suite.add_variable(a_dict)
-    assert len(list(suite.variables)) == 0, "Expected zero variables"    
-
-    # adding dictionary items that are not strings should result in a type error
-    expected_type_error = False
-    try:
-        a_bad_dict = { "name":"fred", "name2":14, "name3":"12", "name4":12 }
-        suite.add_variable(a_bad_dict)
-    except TypeError:
-        expected_type_error = True
-        
-    assert expected_type_error, "Expected Type error"
-    assert len(list(suite.variables)) == 0, "Expected 0 variable since we should have deleted all"
-    
-    suite.add_variable("ECF_URL_CMD", "test duplicates") 
-    suite.add_variable("ECF_URL_CMD", "Expected warning")  # expect a warning message to standard out
-
+    assert len(list(suite.variables)) == 4, "Expected 4 variable"   
+    suite_copy = copy.copy(suite)
+    assert len(list(suite_copy.variables)) == 4, "Expected 4 variables in copy"   
 
     #===========================================================================
     # add and delete limits
@@ -92,11 +71,14 @@ if __name__ == "__main__":
     suite.add_limit("limitName3", 10)
     suite.add_limit("limitName4", 10)
     assert len(list(suite.limits)) == 4, "Expected 4 Limits"
-    suite.delete_limit("limitName1"); assert len(list(suite.limits)) == 3, "Expected 3 limits since we just deleted one limitName1" 
-    suite.delete_limit("");           assert len(list(suite.limits)) == 0, "Expected 0 limits since we just deleted all of them"
+    
+    suite_copy = copy.copy(suite)
+    assert len(list(suite_copy.limits)) == 4, "Expected 4 Limits in copy"
+    suite_copy.delete_limit("limitName1"); assert len(list(suite_copy.limits)) == 3, "Expected 3 limits since we just deleted one limitName1" 
+    suite_copy.delete_limit("");           assert len(list(suite_copy.limits)) == 0, "Expected 0 limits since we just deleted all of them"
 
     #===========================================================================
-    # Test Limit and node paths, ECFLOW-518
+    # Test Limit and node paths 
     #===========================================================================
     the_limit = ecflow.Limit("limitName1", 10)
     assert the_limit.name() == "limitName1", "name not as expected"
@@ -108,20 +90,24 @@ if __name__ == "__main__":
     the_limit.increment(1,"/path2") ;  assert the_limit.value() == 2 ,"Expected limit value of 2"
     the_limit.increment(1,"/path3") ;  assert the_limit.value() == 3 ,"Expected limit value of 3"
     the_limit.increment(1,"/path4") ;  assert the_limit.value() == 4 ,"Expected limit value of 4"
-    for path in the_limit.node_paths(): print path
+    for path in the_limit.node_paths(): print(path)
     assert len(list(the_limit.node_paths())) == 4 ,"expected 4 path"
-    the_limit.decrement(1,"/path1") ; assert the_limit.value() == 3 ,"Expected limit value of 3"
-    the_limit.decrement(1,"/path2") ; assert the_limit.value() == 2 ,"Expected limit value of 2"
-    the_limit.decrement(1,"/path3") ; assert the_limit.value() == 1 ,"Expected limit value of 1"
-    the_limit.decrement(1,"/path4") ; assert the_limit.value() == 0 ,"Expected limit value of 0"
-    assert len(list(the_limit.node_paths())) == 0 ,"Expected nodes which have consumed a limit to be empty"
+    
+    limit_copy = copy.copy(the_limit)
+    assert len(list(limit_copy.node_paths())) == 4 ,"expected 4 path in copy"
+
+    limit_copy.decrement(1,"/path1") ; assert limit_copy.value() == 3 ,"Expected limit value of 3"
+    limit_copy.decrement(1,"/path2") ; assert limit_copy.value() == 2 ,"Expected limit value of 2"
+    limit_copy.decrement(1,"/path3") ; assert limit_copy.value() == 1 ,"Expected limit value of 1"
+    limit_copy.decrement(1,"/path4") ; assert limit_copy.value() == 0 ,"Expected limit value of 0"
+    assert len(list(limit_copy.node_paths())) == 0 ,"Expected nodes which have consumed a limit to be empty"
 
-    the_limit.increment(1,"/path1") # add same path, should only consume one token
-    the_limit.increment(1,"/path1")
-    the_limit.increment(1,"/path1")
-    the_limit.increment(1,"/path1")
-    assert len(list(the_limit.node_paths())) == 1 ,"expected 1 path"
-    assert the_limit.value() == 1 ,"Expected limit value of 1"
+    limit_copy.increment(1,"/path1") # add same path, should only consume one token
+    limit_copy.increment(1,"/path1")
+    limit_copy.increment(1,"/path1")
+    limit_copy.increment(1,"/path1")
+    assert len(list(limit_copy.node_paths())) == 1 ,"expected 1 path"
+    assert limit_copy.value() == 1 ,"Expected limit value of 1"
 
     #===========================================================================
     # add and delete inlimits
@@ -131,8 +117,11 @@ if __name__ == "__main__":
     suite.add_inlimit("limitName3", "/s1/f1", 2)
     suite.add_inlimit("limitName4", "/s1/f1", 2)
     assert len(list(suite.inlimits)) == 4, "Expected 4 inLimits"
-    suite.delete_inlimit("limitName1"); assert len(list(suite.inlimits)) == 3, "Expected 3 inlimits since we just deleted one limitName1" 
-    suite.delete_inlimit("");           assert len(list(suite.inlimits)) == 0, "Expected 0 inlimits since we just deleted all of them"
+    
+    suite_copy = copy.copy(suite)
+    assert len(list(suite_copy.inlimits)) == 4, "Expected 4 inLimits"
+    suite_copy.delete_inlimit("limitName1"); assert len(list(suite_copy.inlimits)) == 3, "Expected 3 inlimits since we just deleted one limitName1" 
+    suite_copy.delete_inlimit("");           assert len(list(suite_copy.inlimits)) == 0, "Expected 0 inlimits since we just deleted all of them"
 
     #===============================================================================
     # add and delete triggers and complete
@@ -140,31 +129,22 @@ if __name__ == "__main__":
     task = ecflow.Task("task")
     task.add_trigger("t2 == active")
     task.add_complete("t2 == complete")
-    assert task.get_complete(), "Expected complete"
-    assert task.get_trigger(), "Expected trigger"
-    task.delete_trigger();  assert not task.get_trigger(), "Expected no trigger"
-    task.delete_complete(); assert not task.get_complete(), "Expected no complete"
-    
-    task.add_part_trigger(ecflow.PartExpression("t1 == complete"))
-    task.add_part_trigger(ecflow.PartExpression("t2 == active", True))  #  for long and/or expressions, subsequent expr must be and/or
-    task.add_part_complete(ecflow.PartExpression("t3 == complete"))
-    task.add_part_complete(ecflow.PartExpression("t4 == active", False))  #  for long and/or expressions, subsequent expr must be and/or
-    task.delete_trigger();  assert not task.get_trigger(), "Expected no trigger"
-    task.delete_complete(); assert not task.get_complete(), "Expected no complete"
-
-    task.add_part_trigger("t1 == complete")
-    task.add_part_trigger("t2 == active", True)  #  for long and/or expressions, subsequent expr must be and/or
-    task.add_part_complete("t3 == complete")
-    task.add_part_complete("t4 == active", False)  #  for long and/or expressions, subsequent expr must be and/or
-    task.delete_trigger();  assert not task.get_trigger(), "Expected no trigger"
-    task.delete_complete(); assert not task.get_complete(), "Expected no complete"
-   
+    
+    task_copy = copy.copy(task)
+    assert task_copy.get_complete(), "Expected complete"
+    assert task_copy.get_trigger(), "Expected trigger"
+    task_copy.delete_trigger();  assert not task_copy.get_trigger(), "Expected no trigger"
+    task_copy.delete_complete(); assert not task_copy.get_complete(), "Expected no complete"
+    
     #===========================================================================
     # Add triggers using expressions
     #===========================================================================
     expr = ecflow.Expression("t1 == complete")
     task = ecflow.Task("task")
     task.add_trigger(expr)
+    
+    task_copy = copy.copy(task)
+    assert task_copy.get_trigger(), "Expected trigger"
 
     expr = ecflow.Expression("t1 == complete")
     expr.add(ecflow.PartExpression("t1 == complete", True))
@@ -172,6 +152,9 @@ if __name__ == "__main__":
     task = ecflow.Task("task")
     task.add_trigger(expr)
 
+    task_copy = copy.copy(task)
+    assert task_copy.get_trigger(), "Expected trigger"
+
      
     #===========================================================================
     # add,delete,find events
@@ -183,45 +166,46 @@ if __name__ == "__main__":
     task.add_event("fred")                         
     
     # test find
-    event = task.find_event("EVENT")
-    assert(event.empty()),"Expected to not to find event"
+    task_copy = copy.copy(task)
+    event = task_copy.find_event("EVENT")
+    assert(event.empty()),"Expected to not find event"
     assert(event.name() == ""),"Expected to not to find event, number is maximum int"
     assert(event.value() == 0),"Expected to not to find event"
 
-    event = task.find_event("1"); 
+    event = task_copy.find_event("1"); 
     assert(not event.empty()),"Expected to find event"
     assert(event.number() == 1), "Expected to find event 1"
     assert(event.name() == ""), "Expected name to be empty"
     assert(event.value() == 0),"Expected to not to find event"
 
-    event = task.find_event("2"); 
+    event = task_copy.find_event("2"); 
     assert(not event.empty()),"Expected to find event"
     assert(event.number() == 2), "Expected to find event 1"
     assert(event.name() == ""), "Expected name to be empty"
     assert(event.value() == 0),"Expected to not to find event"
 
-    event = task.find_event("10"); 
+    event = task_copy.find_event("10"); 
     assert(not event.empty()),"Expected to find event"
     assert(event.number() == 10), "Expected to find event 10"
     assert(event.name() == "Eventname"), "Expected name to be empty"
     assert(event.value() == 0),"Expected to not to find event"
 
-    event = task.find_event("fred"); 
+    event = task_copy.find_event("fred"); 
     assert(not event.empty()),"Expected to find event"
     assert(event.name() == "fred"), "Expected name to be empty, when name defind an not number, number is max_int"
     assert(event.value() == 0),"Expected to not to find event"
 
-    for e in task.events:     print str(e)," # value: ",str(e.value())
+    for e in task_copy.events:     print(str(e)," # value: ",str(e.value()))
     a_dict = {}
-    for e in task.events:
+    for e in task_copy.events:
         if e.name() != "": a_dict[e.name()] = e.value()
         else:              a_dict[e.number()] = e.value()
-    print a_dict
+    print(a_dict)
 
-    assert len(list(task.events)) == 5, "Expected 5 Events"
-    task.delete_event("1");         assert len(list(task.events)) == 4, "Expected 4 Events"
-    task.delete_event("Eventname"); assert len(list(task.events)) == 3, "Expected 3 Events"
-    task.delete_event("");          assert len(list(task.events)) == 0, "Expected 0 Events"
+    assert len(list(task_copy.events)) == 5, "Expected 5 Events"
+    task_copy.delete_event("1");         assert len(list(task_copy.events)) == 4, "Expected 4 Events"
+    task_copy.delete_event("Eventname"); assert len(list(task_copy.events)) == 3, "Expected 3 Events"
+    task_copy.delete_event("");          assert len(list(task_copy.events)) == 0, "Expected 0 Events"
 
 
     #===========================================================================
@@ -231,10 +215,12 @@ if __name__ == "__main__":
     task.add_meter(ecflow.Meter("metername2", 0, 100))
     task.add_meter("metername3", 0, 100, 50)
     task.add_meter("metername4", 0, 100)
-    assert len(list(task.meters)) == 4, "Expected 4 Meters"
-    task.delete_meter("metername1"); assert len(list(task.meters)) == 3, "Expected 3 Meters"
-    task.delete_meter("metername4"); assert len(list(task.meters)) == 2, "Expected 2 Meters"
-    task.delete_meter("");           assert len(list(task.meters)) == 0, "Expected 0 Meters"
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.meters)) == 4, "Expected 4 Meters"
+    task_copy.delete_meter("metername1"); assert len(list(task_copy.meters)) == 3, "Expected 3 Meters"
+    task_copy.delete_meter("metername4"); assert len(list(task_copy.meters)) == 2, "Expected 2 Meters"
+    task_copy.delete_meter("");           assert len(list(task_copy.meters)) == 0, "Expected 0 Meters"
 
 
     #===========================================================================
@@ -244,32 +230,41 @@ if __name__ == "__main__":
     task.add_label(ecflow.Label("label_name2", "value"))
     task.add_label("label_name3", "value")
     task.add_label("label_name4", "value")
-    assert len(list(task.labels)) == 4, "Expected 4 labels"
-    task.delete_label("label_name1"); assert len(list(task.labels)) == 3, "Expected 3 Labels"
-    task.delete_label("label_name4"); assert len(list(task.labels)) == 2, "Expected 2 Labels"
-    task.delete_label("");            assert len(list(task.labels)) == 0, "Expected 0 Labels"
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.labels)) == 4, "Expected 4 labels"
+    task_copy.delete_label("label_name1"); assert len(list(task_copy.labels)) == 3, "Expected 3 Labels"
+    task_copy.delete_label("label_name4"); assert len(list(task_copy.labels)) == 2, "Expected 2 Labels"
+    task_copy.delete_label("");            assert len(list(task_copy.labels)) == 0, "Expected 0 Labels"
 
 
     #===========================================================================
     # add delete Repeat
     #===========================================================================
+    task = ecflow.Task("task")
     task.add_repeat(ecflow.RepeatInteger("integer", 0, 100, 2))
-    repeat = task.get_repeat(); assert not repeat.empty(), "Expected repeat"
-    task.delete_repeat()      
-    repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
+    task_copy = copy.copy(task)
+    repeat = task_copy.get_repeat(); assert not repeat.empty(), "Expected repeat"
+    task_copy.delete_repeat()      
+    repeat = task_copy.get_repeat(); assert repeat.empty(), "Expected no repeat"
     
+    task = ecflow.Task("task")
     task.add_repeat(ecflow.RepeatEnumerated("enum", ["red", "green", "blue" ]))
-    print task
-    task.delete_repeat()      
-    repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
+    task_copy = copy.copy(task)
+    task_copy.delete_repeat()      
+    repeat = task_copy.get_repeat(); assert repeat.empty(), "Expected no repeat"
 
+    task = ecflow.Task("task")
     task.add_repeat(ecflow.RepeatDate("date", 20100111, 20100115, 2))
-    task.delete_repeat()      
-    repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
+    task_copy = copy.copy(task)
+    task_copy.delete_repeat()      
+    repeat = task_copy.get_repeat(); assert repeat.empty(), "Expected no repeat"
     
+    task = ecflow.Task("task")
     task.add_repeat(ecflow.RepeatString("string", ["a", "b", "c" ]))
-    task.delete_repeat()      
-    repeat = task.get_repeat(); assert repeat.empty(), "Expected no repeat"
+    task_copy = copy.copy(task)
+    task_copy.delete_repeat()      
+    repeat = task_copy.get_repeat(); assert repeat.empty(), "Expected no repeat"
     
     
     #===========================================================================
@@ -303,11 +298,13 @@ if __name__ == "__main__":
     task.add_today(0, 59, True)
     task.add_today(ecflow.Today(ecflow.TimeSlot(20, 10)))
     task.add_today(ecflow.Today(ecflow.TimeSlot(20, 20), False)) 
-    assert len(list(task.todays)) == 8, "Expected 8 todays"
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.todays)) == 8, "Expected 8 todays"
     vec_copy = []
-    for today in task.todays: vec_copy.append(today)
-    for today in vec_copy: task.delete_today(today)
-    assert len(list(task.todays)) == 0, "Expected 0 todays"
+    for today in task_copy.todays: vec_copy.append(today)
+    for today in vec_copy: task_copy.delete_today(today)
+    assert len(list(task_copy.todays)) == 0, "Expected 0 todays"
         
     #===========================================================================
     # add and delete time
@@ -320,11 +317,13 @@ if __name__ == "__main__":
     task.add_time(0, 59, True)
     task.add_time(ecflow.Time(ecflow.TimeSlot(20, 10)))
     task.add_time(ecflow.Time(ecflow.TimeSlot(20, 20), False)) 
-    assert len(list(task.times)) == 8, "Expected 8 times"
+
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.times)) == 8, "Expected 8 times"
     vec_copy = []
-    for time in task.times: vec_copy.append(time)
-    for time in vec_copy: task.delete_time(time)
-    assert len(list(task.todays)) == 0, "Expected 0 todays"
+    for time in task_copy.times: vec_copy.append(time)
+    for time in vec_copy: task_copy.delete_time(time)
+    assert len(list(task_copy.times)) == 0, "Expected 0 todays"
 
     #===========================================================================
     # add and delete date
@@ -336,11 +335,13 @@ if __name__ == "__main__":
     task.add_date(ecflow.Date(2, 1, 2010))
     task.add_date(ecflow.Date(3, 1, 2010))
     task.add_date(ecflow.Date(4, 1, 2010)) 
-    assert len(list(task.dates)) == 10, "Expected 10 dates but found " + str(len(list(task.dates)))
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.dates)) == 10, "Expected 10 dates but found " + str(len(list(task_copy.dates)))
     vec_copy = []
-    for attr in task.dates: vec_copy.append(attr)
-    for attr in vec_copy: task.delete_date(attr)
-    assert len(list(task.dates)) == 0, "Expected 0 dates"
+    for attr in task_copy.dates: vec_copy.append(attr)
+    for attr in vec_copy: task_copy.delete_date(attr)
+    assert len(list(task_copy.dates)) == 0, "Expected 0 dates"
 
     #===========================================================================
     # add and delete day
@@ -349,11 +350,13 @@ if __name__ == "__main__":
     task.add_day(ecflow.Days.monday)
     task.add_day(ecflow.Days.tuesday)  # duplicate ?
     task.add_day("sunday")     
-    assert len(list(task.days)) == 4, "Expected 4 days"
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.days)) == 4, "Expected 4 days"
     vec_copy = []
-    for attr in task.days: vec_copy.append(attr)
-    for attr in vec_copy: task.delete_day(attr)
-    assert len(list(task.days)) == 0, "Expected 0 days"
+    for attr in task_copy.days: vec_copy.append(attr)
+    for attr in vec_copy: task_copy.delete_day(attr)
+    assert len(list(task_copy.days)) == 0, "Expected 0 days"
     
     #===========================================================================
     # add and delete crons
@@ -389,106 +392,73 @@ if __name__ == "__main__":
     cron3.set_week_days([0, 1, 2, 3, 4, 5, 6])
     cron3.set_time_series("+00:30")
 
+    task = ecflow.Task("task")
     task.add_cron(cron)
     task.add_cron(cron1)
     task.add_cron(cron2)
     task.add_cron(cron3)
-    assert len(list(task.crons)) == 4, "Expected 4 crons"
+    
+    task_copy = copy.copy(task)
+    assert len(list(task_copy.crons)) == 4, "Expected 4 crons"
     vec_copy = []
-    for attr in task.crons: vec_copy.append(attr)
-    for attr in vec_copy: task.delete_cron(attr)
-    assert len(list(task.crons)) == 0, "Expected 0 crons"  
+    for attr in task_copy.crons: vec_copy.append(attr)
+    for attr in vec_copy: task_copy.delete_cron(attr)
+    assert len(list(task_copy.crons)) == 0, "Expected 0 crons"  
     
     #===========================================================================
     # add autocancel
     #===========================================================================
-    print "test add autoCancel"
+    print("test add autoCancel")
     t1 = ecflow.Task("t1")
     assert t1.get_autocancel() == None, " Expected no autocancel"
-    t1.add_autocancel(3)                       # 3 days
-    assert t1.get_autocancel() != None, " Expected autocancel"
-    print str(t1.get_autocancel())
-
-    t3 = ecflow.Task("t3")
-    t3.add_autocancel(20, 10, True)              # hour,minutes,relative
-    print str(t3.get_autocancel())
+    t1.add_autocancel(3)  # 3 days
     
-    t4 = ecflow.Task("t4")
-    t4.add_autocancel(ecflow.TimeSlot(10, 10), True)    # hour,minutes,relative
-    print str(t4.get_autocancel())
+    task_copy = copy.copy(t1)
+    assert task_copy.get_autocancel() != None, " Expected autocancel"
+    print(str(task_copy.get_autocancel()))
 
-    t5 = ecflow.Task("t5")
-    t5.add_autocancel(ecflow.Autocancel(1, 10, True))   # hour,minutes,relative
-    print str(t5.get_autocancel())
-    
     #===========================================================================
-    # add late
+    # add late  
     #===========================================================================
     late = ecflow.Late()
     late.submitted(ecflow.TimeSlot(20, 10))
     late.active(ecflow.TimeSlot(20, 10))
     late.complete(ecflow.TimeSlot(20, 10), True)
     task.add_late(late)
-    
-    late = ecflow.Late()
-    late.submitted(20, 10)
-    late.active(20, 10)
-    late.complete(20, 10, True)
-    t1.add_late(late)
-    
+    task_copy = copy.copy(task)
+    assert task_copy.get_late() != None, " Expected late"
     
     #===========================================================================
     # add defstatus, last one set takes effect
     #===========================================================================
     task.add_defstatus(ecflow.DState.complete)
-    assert task.get_defstatus() == ecflow.DState.complete
-    task.add_defstatus(ecflow.DState.queued)
-    assert task.get_defstatus() == ecflow.DState.queued
-    task.add_defstatus(ecflow.DState.aborted)
-    assert task.get_defstatus() == ecflow.DState.aborted
-    task.add_defstatus(ecflow.DState.submitted)
-    assert task.get_defstatus() == ecflow.DState.submitted
-    task.add_defstatus(ecflow.DState.suspended)
-    assert task.get_defstatus() == ecflow.DState.suspended
-    task.add_defstatus(ecflow.DState.active)
-    assert task.get_defstatus() == ecflow.DState.active
-
-    # the state should be unknown until the suite is begun
-    assert task.get_state() == ecflow.State.unknown
-    assert task.get_dstate() == ecflow.DState.unknown
- 
+    task_copy = copy.copy(task)
+    assert task_copy.get_defstatus() == ecflow.DState.complete
+
     #===========================================================================
     # add clock
     #===========================================================================
     clock = ecflow.Clock(1, 1, 2010, False)     # day,month, year, hybrid
     clock.set_gain(1, 10, True)                 # True means positive gain
     suite = ecflow.Suite("suite")
+    assert suite.get_clock() == None, "Expected no clock"
     suite.add_clock(clock)
     
-    clock = ecflow.Clock(1, 1, 2011, True)       # day,month, year, hybrid
-    clock.set_gain_in_seconds(12, True)
-    s1 = ecflow.Suite("s1")
-    s1.add_clock(clock)
-    
-    print "#==========================================================================="
-    print "# get clock"
-    print "#==========================================================================="
-    s0 = ecflow.Suite("s0")
-    assert s0.get_clock() == None, "Expected no clock"
+    suite_copy = copy.copy(suite)
+    assert suite_copy.get_clock() != None, "expected clock"
     
-    s0.add_clock(ecflow.Clock(1, 1, 2010, False))
-    assert s0.get_clock() != None, "Expected clock"
-
     #===========================================================================
     # Add zombie. Note we can *NOT* add two zombie attributes of the same ZombieType
     #===========================================================================
+    s1 = ecflow.Task("s1")
     zombie_life_time_in_server = 800
     child_list = [ ecflow.ChildCmdType.init, ecflow.ChildCmdType.event, ecflow.ChildCmdType.meter, ecflow.ChildCmdType.label, ecflow.ChildCmdType.wait, ecflow.ChildCmdType.abort, ecflow.ChildCmdType.complete ]
     zombie_type_list = [ ecflow.ZombieType.ecf, ecflow.ZombieType.user, ecflow.ZombieType.path ]
     for zombie_type in zombie_type_list:
         zombie_attr = ecflow.ZombieAttr(zombie_type, child_list, ecflow.ZombieUserActionType.block, zombie_life_time_in_server)
         s1.add_zombie(zombie_attr)
-    assert len(list(s1.zombies)) == 3, "Expected 3 zombie attributes but found " + str(len(list(s1.zombies)))
+    task_copy = copy.copy(s1)
+    assert len(list(task_copy.zombies)) == 3, "Expected 3 zombie attributes but found " + str(len(list(task_copy.zombies)))
     
     # delete all the zombies
     s1.delete_zombie("")
@@ -498,23 +468,11 @@ if __name__ == "__main__":
     for zombie_type in zombie_type_list:
         zombie_attr = ecflow.ZombieAttr(zombie_type, child_list, ecflow.ZombieUserActionType.block)
         s1.add_zombie(zombie_attr)
-    assert len(list(s1.zombies)) == 3, "Expected 3 zombie attributes but found " + str(len(list(s1.zombies)))
+    task_copy = copy.copy(s1)
+    assert len(list(task_copy.zombies)) == 3, "Expected 3 zombie attributes but found " + str(len(list(task_copy.zombies)))
 
     s1.delete_zombie("")
     assert len(list(s1.zombies)) == 0, "Expected zero zombie attributes but found " + str(len(list(s1.zombies)))
 
-    # repeat the the test with empty child list. Empty child list means apply to all child commands
-    child_list = [ ]
-    zombie_type_list = [ ecflow.ZombieType.ecf, ecflow.ZombieType.user, ecflow.ZombieType.path ]
-    for zombie_type in zombie_type_list:
-        zombie_attr = ecflow.ZombieAttr(zombie_type, child_list, ecflow.ZombieUserActionType.block, zombie_life_time_in_server)
-        s1.add_zombie(zombie_attr)
-        
-        # test delete of specific zombie attribute
-        assert len(list(s1.zombies)) == 1, "Expected 1 zombie attributes but found " + str(len(list(s1.zombies)))
-        s1.delete_zombie(zombie_type)
-        assert len(list(s1.zombies)) == 0, "Expected 0 zombie attributes but found " + str(len(list(s1.zombies)))
-
-
-    print "All Tests pass"
-    
+    print("All Tests pass")
+    
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestDefs.py b/Pyext/test/py_u_TestDefs.py
index d272cf8..6418ec3 100644
--- a/Pyext/test/py_u_TestDefs.py
+++ b/Pyext/test/py_u_TestDefs.py
@@ -13,8 +13,8 @@
 #  code for testing creation of defs file in python
 import os
 import ecflow
-print ecflow.__doc__
-print ecflow.Defs.__doc__
+print(ecflow.__doc__)
+print(ecflow.Defs.__doc__)
     
 from ecflow import Suite, Family, Task, Defs, Clock, DState, PartExpression, Variable, Limit, InLimit, \
                    Date, Day, Event, Meter, Label, Autocancel, Days, TimeSlot, TimeSeries, Style, State, \
@@ -22,9 +22,9 @@ from ecflow import Suite, Family, Task, Defs, Clock, DState, PartExpression, Var
                    Verify, PrintStyle, Time, Today, Late, Cron, Client, debug_build
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
     
     suite = Suite("s1")
     assert (isinstance(suite, ecflow.Suite)), "Expected suite"
@@ -159,8 +159,8 @@ if __name__ == "__main__":
     
     task8 = family.add_task("t8")
     task8.add_repeat( RepeatDay() )
-    print "task8.get_try_no()    :string:",task8.get_try_no()
-    print "task8.get_int_try_no():int   :",task8.get_int_try_no()
+    print("task8.get_try_no()    :string:",task8.get_try_no())
+    print("task8.get_int_try_no():int   :",task8.get_int_try_no())
     
     the_defs = task8.get_defs()
  
@@ -180,42 +180,42 @@ if __name__ == "__main__":
     restored_checkpt_defs = Defs()
     restored_checkpt_defs.restore_from_checkpt(checkpt_file)
     
-    print "Save and restore as Defs ******************************************************"
+    print("Save and restore as Defs ******************************************************")
     defs.save_as_defs(defs_file)           # default is to save as DEFS
     restored_from_defs = Defs( defs_file ) # restore the defs
 
     defs.save_as_defs(defs_file,Style.DEFS)
     restored_from_defs = Defs( defs_file ) # restore the defs
             
-    print "Save and restore using STATE ******************************************************"
+    print("Save and restore using STATE ******************************************************")
     defs.save_as_defs(defs_file,Style.STATE)
     restored_from_defs = Defs( defs_file ) # restore the defs
 
-    print "Save and restore using MIGRATE ******************************************************"
+    print("Save and restore using MIGRATE ******************************************************")
     defs.save_as_defs(defs_file,Style.MIGRATE)
     restored_from_defs = Defs( defs_file ) # restore the defs
     assert restored_checkpt_defs == restored_from_defs ,"File should be the same"
 
         
-    print "Print in DEFS style ******************************************************"
+    print("Print in DEFS style ******************************************************")
     PrintStyle.set_style(Style.DEFS)
     the_string = str(restored_from_defs)
     assert the_string.find("defs_state") == -1, "Print in DEFS style failed"
-    print the_string
+    print(the_string)
     
-    print "Print in STATE style *****************************************************"
+    print("Print in STATE style *****************************************************")
     PrintStyle.set_style(Style.STATE)
     the_string = str(restored_from_defs)
     assert the_string.find("defs_state STATE") != -1, "Print in STATE style failed"
-    print the_string
+    print(the_string)
     
-    print "Print in MIGRATE style *****************************************************"
+    print("Print in MIGRATE style *****************************************************")
     PrintStyle.set_style(Style.MIGRATE)
     the_string = str(restored_from_defs)
     assert the_string.find("defs_state MIGRATE") != -1, "Print in MIGRATE style failed"
-    print the_string
+    print(the_string)
      
     # Comment this out if you want to see what the file looked like
     os.remove(checkpt_file)
     os.remove(defs_file)
-    print "All tests pass"
\ No newline at end of file
+    print("All tests pass")
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestDefsCheck.py b/Pyext/test/py_u_TestDefsCheck.py
index d5e8bdb..84c3808 100644
--- a/Pyext/test/py_u_TestDefsCheck.py
+++ b/Pyext/test/py_u_TestDefsCheck.py
@@ -16,15 +16,15 @@
 from ecflow import  Defs, Limit, InLimit, Client, debug_build
             
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
      
     defs = Defs()
     suite = defs.add_suite("s1");
     suite.add_task("t1").add_trigger("t2 == active)")   
     theCheckValue = defs.check();
-    print "Message: '" + theCheckValue + "'"
+    print("Message: '" + theCheckValue + "'")
     assert len(theCheckValue) != 0,  "Expected Error: triggers fail parse, miss-matched brackets in expression."
  
     # The number of tokens specified on the in-limit must be less than or equal to those specified on the LIMIT
@@ -35,7 +35,7 @@ if __name__ == "__main__":
     family.add_inlimit( InLimit("disk","/s1",100) )
     family.add_task( "t1" );
     theCheckValue = defs.check();
-    print "Message: '" + theCheckValue + "'"
+    print("Message: '" + theCheckValue + "'")
     assert len(theCheckValue) != 0,  "Expected Error: since inlimit value('100') is greater than the LIMIT value('50')"  
 
 
@@ -46,7 +46,7 @@ if __name__ == "__main__":
     family.add_inlimit( InLimit("disk","/s1",100) )
     family.add_task( "t1" );
     theCheckValue = defs.check();
-    print "Message: '" + theCheckValue + "'"
+    print("Message: '" + theCheckValue + "'")
     assert len(theCheckValue) != 0,  "Expected warning: since inlimit PATH(/s1:disk) reference a limit('disk') that does not exist"  
     
     # Add as extern and repeat the check
@@ -61,12 +61,12 @@ if __name__ == "__main__":
     family.add_inlimit( InLimit("disk","",100) )
     family.add_task( "t1" );
     theCheckValue = defs.check();
-    print "Message: '" + theCheckValue + "'"
+    print("Message: '" + theCheckValue + "'")
     assert len(theCheckValue) != 0,  "Expected warning: since inlimit SHOULD reference a limit('disk') somewhere UP parent hierarchy"  
     
     # Add as extern and repeat the check
     defs.add_extern("disk")
     assert len(defs.check()) == 0,  "Expected no warnings, since extern specified"  
     
-    print "All Tests pass"
+    print("All Tests pass")
     
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestDerivable.py b/Pyext/test/py_u_TestDerivable.py
index c1fc7d1..ee7015f 100644
--- a/Pyext/test/py_u_TestDerivable.py
+++ b/Pyext/test/py_u_TestDerivable.py
@@ -21,8 +21,8 @@ class MyTask(ecflow.Task): pass
 class MyClient(ecflow.Client): pass
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")")
+    print("####################################################################")
  
-    print "All tests pass"
\ No newline at end of file
+    print("All tests pass")
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestEcf.py b/Pyext/test/py_u_TestEcf.py
index 13d4cda..3c33868 100644
--- a/Pyext/test/py_u_TestEcf.py
+++ b/Pyext/test/py_u_TestEcf.py
@@ -17,9 +17,9 @@ import ecflow
 from ecflow import Ecf, Client, debug_build
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running TestEcf, ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running TestEcf, ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
     
     default_debug_level = Ecf.debug_level()
     assert default_debug_level == 0, "Expected default debug level to be 0"
@@ -35,4 +35,4 @@ if __name__ == "__main__":
     Ecf.set_debug_equality(False)
     assert  Ecf.debug_equality() == False, "Expected  Ecf.debug_equality() == False "
 
-    print "All tests pass"
\ No newline at end of file
+    print("All tests pass")
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestError.py b/Pyext/test/py_u_TestError.py
index 467a759..e0c2693 100644
--- a/Pyext/test/py_u_TestError.py
+++ b/Pyext/test/py_u_TestError.py
@@ -138,9 +138,9 @@ def check_defs(path_to_defs):
         return False
           
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
  
     # Names with leading '.' should not be allowed. Will interfere with triggers
     # Empty names not allowed
@@ -233,7 +233,7 @@ if __name__ == "__main__":
  
 
     # ========================================================================
-    print "Check node names"
+    print("Check node names")
     for i in range(25):
         assert check_node_name(str(i)),             "Integer names should be allowed"
      
@@ -247,7 +247,7 @@ if __name__ == "__main__":
     assert check_defs("a_made_up_path_that_doesnt_not_exit.def") == False, "Expected exception, Defs file does not exist"
 
     # =================================================================================
-    print "test save_as_defs"
+    print("test save_as_defs")
     defs = Defs()                      # create a empty definition
     s1 = defs.add_suite("s1")          # create a suite "s1" and add to defs
     defs.save_as_defs("testerror.def") # create a defs on disk
@@ -255,13 +255,13 @@ if __name__ == "__main__":
     os.remove("testerror.def")
 
     # =================================================================================
-    print "Check duplicate suites not allowed"
+    print("Check duplicate suites not allowed")
     test_passed = False
     try :
         defs = Defs()               # create a empty definition
         s1 = defs.add_suite("s1")   # create a suite "s1" and add to defs
         s2 = defs.add_suite("s1")   # Exception thrown trying to add suite name "s1" again
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass 
     assert test_passed,"duplicate suite test failed"   
@@ -271,48 +271,48 @@ if __name__ == "__main__":
     try:
         defs = Defs()
         defs.add_suite("1").add_today("00:30")
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"Adding today at the suite level should fail"   
-    print "check adding today at the suite level: RuntimeError: ",e
+    print("check adding today at the suite level: RuntimeError: ")
 
     # =================================================================================
     test_passed = False
     try:
         defs = Defs()
         defs.add_suite("1").add_time("00:30")
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"Adding time at the suite level should fail"    
-    print "check adding time at the suite level: RuntimeError: ",e
+    print("check adding time at the suite level: RuntimeError: ")
 
     # =================================================================================
     test_passed = False
     try:
         defs = Defs()
         defs.add_suite("1").add_date(1,1,2016)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"Adding date at the suite level should fail"    
-    print "check adding date at the suite level: RuntimeError: ",e
+    print("check adding date at the suite level: RuntimeError: ")
 
     # =================================================================================
     test_passed = False
     try:
         defs = Defs()
         defs.add_suite("1").add_day("monday")
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"Adding day at the suite level should fail"    
-    print "check adding day at the suite level: RuntimeError: ",e
+    print("check adding day at the suite level: RuntimeError: ")
 
 
     # =================================================================================
-    print "check duplicate family not allowed"
+    print("check duplicate family not allowed")
     test_passed = False
     try:
         suite = Suite("1")
@@ -320,13 +320,13 @@ if __name__ == "__main__":
         fam2 = Family("1")
         suite.add_family(fam1)
         suite.add_family(fam2)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate Family test failed"   
   
     # =================================================================================
-    print "duplicate task not allowed"
+    print("duplicate task not allowed")
     test_passed = False
     try:
         suite = Suite("1")
@@ -334,13 +334,13 @@ if __name__ == "__main__":
         tb = Task("a")
         suite.add_task(ta)
         suite.add_task(tb)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate Task test failed"   
 
     # =================================================================================
-    print "check duplicate meter not allowed"
+    print("check duplicate meter not allowed")
     test_passed = False
     try:
         defs = Defs()
@@ -348,7 +348,7 @@ if __name__ == "__main__":
         ta = suite.add_task("a")
         ta.add_meter("meter",0,100);
         ta.add_meter("meter",0,100);
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate event test failed"   
@@ -360,13 +360,13 @@ if __name__ == "__main__":
         ta = suite.add_task("a")
         ta.add_meter(Meter("meter",0,100));
         ta.add_meter(Meter("meter",10,100));
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate meter test failed"   
     
     # =================================================================================
-    print "check duplicate event not allowed"
+    print("check duplicate event not allowed")
     test_passed = False
     try:
         defs = Defs()
@@ -374,7 +374,7 @@ if __name__ == "__main__":
         ta = suite.add_task("a")
         ta.add_event(1);
         ta.add_event("1");
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate event test failed"   
@@ -386,7 +386,7 @@ if __name__ == "__main__":
         ta = suite.add_task("a")
         ta.add_event("name");
         ta.add_event("name");
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate event test failed"   
@@ -398,14 +398,14 @@ if __name__ == "__main__":
         ta = suite.add_task("a")
         ta.add_event(1,"name");
         ta.add_event(1,"name");
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass
     assert test_passed,"duplicate event test failed"   
     
     
     # =================================================================================
-    print "check cannot add same node to different containers"
+    print("check cannot add same node to different containers")
     defs1 = Defs();
     suite = defs1.add_suite("s1")
     family =  suite.add_family("f1")
@@ -415,7 +415,7 @@ if __name__ == "__main__":
     try :
         defs2 = Defs();
         defs2.add_suite(suite)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass    
     assert test_passed,"Can't add same suite to two different defs"   
@@ -425,7 +425,7 @@ if __name__ == "__main__":
         defs3 = Defs();
         suite = defs3.add_suite(suite)
         suite.add_family(family)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass    
     assert test_passed,"Can't add same family to two different suites"   
@@ -435,9 +435,9 @@ if __name__ == "__main__":
         defs4 = Defs();
         suite = defs4.add_suite("s1")
         suite.add_task(task)
-    except RuntimeError, e : 
+    except RuntimeError as e : 
         test_passed = True
         pass    
     assert test_passed,"Can't add same task to two different containers"   
 
-    print "All Tests pass"
\ No newline at end of file
+    print("All Tests pass")
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestFind.py b/Pyext/test/py_u_TestFind.py
index 31cf774..bd8a207 100644
--- a/Pyext/test/py_u_TestFind.py
+++ b/Pyext/test/py_u_TestFind.py
@@ -30,14 +30,37 @@ def create_defs(name=""):
     f2.add_task("f2_t1").add_variable("TASK_VAR","3")
     f2.add_task("f2_t2").add_variable("TASK_VAR","3")
     return defs;
+
+if __name__ == "__main__":    
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
+
+    defs = create_defs()
+    s1 = defs.find_suite("s1")
+    assert s1 != None, "expected find find suite s1"
+
+    sx = defs.find_suite("sx")
+    assert sx == None, "expected not to find suite sx"
     
+    f1 = s1.find_family("f1")
+    assert f1 != None, "expected find find family f1"
+
+    fx = s1.find_family("fx")
+    assert fx == None, "expected not to find family fx"
+
+    f2 = s1.find_family("f2")
+    assert f2 != None, "expected find find family f2"
     
-if __name__ == "__main__":    
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
- 
-    defs = create_defs();
+    f2_t1 = f2.find_task("f2_t1")
+    assert f2_t1 != None, "Expected to find task"
+
+    f2_t2 = f2.find_task("f2_t2")
+    assert f2_t2 != None, "Expected to find task"
+
+    f2_tx = f2.find_task("f2_tx")
+    assert f2_tx == None, "Expected not to find task"
+
     tasks = defs.get_all_tasks()
     assert len(tasks) == 4, "Expected four tasks, but found " + str(len(tasks))
     for task in tasks:
@@ -73,4 +96,4 @@ if __name__ == "__main__":
             node = task.find_node_up_the_tree("freddd")
             assert node == None
             
-    print "All Tests pass"
+    print("All Tests pass")
diff --git a/Pyext/test/py_u_TestFlag.py b/Pyext/test/py_u_TestFlag.py
index 06ca83d..b5b5918 100644
--- a/Pyext/test/py_u_TestFlag.py
+++ b/Pyext/test/py_u_TestFlag.py
@@ -17,11 +17,11 @@ import os
  
 if __name__ == "__main__":
     
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")"
-    print "PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep))
-    print "sys.path:   " + str(sys.path)
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version()  + " debug build(" + str(ecflow.debug_build()) +")")
+    print("PYTHONPATH: " + str(os.environ['PYTHONPATH'].split(os.pathsep)))
+    print("sys.path:   " + str(sys.path))
+    print("####################################################################")
  
     flag = ecflow.Flag()
     assert str(flag) == "", "expected empty string, for an empty flag"
@@ -44,10 +44,10 @@ if __name__ == "__main__":
                      ecflow.FlagType.zombie ,
                      ecflow.FlagType.no_reque 
                    ]
-    print "Flag list:"
-    for flg in flag_list: print "flag ",flag.type_to_string(flg)
-    print "My   list:"
-    for flg in my_flag_list: print "flag ",flag.type_to_string(flg)
+    print("Flag list:")
+    for flg in flag_list: print("flag ",flag.type_to_string(flg))
+    print("My   list:")
+    for flg in my_flag_list: print("flag ",flag.type_to_string(flg))
 
     assert len(flag_list) == len(my_flag_list), "expected flag list have changed"
     expected_flags = "force_aborted,user_edit,task_aborted,edit_failed,ecfcmd_failed,no_script,killed,migrated,late,message,by_rule,queue_limit,task_waiting,locked,zombie,no_reque";
@@ -75,7 +75,7 @@ if __name__ == "__main__":
     #===========================================================================
     for flg in my_flag_list:
         flag.set( flg )
-        print "current flag:",flag
+        print("current flag:",flag)
         assert flag.is_set( flg ),"expected flag %r to be set" % flag.type_to_string(flg)
 
     #===========================================================================
@@ -88,4 +88,4 @@ if __name__ == "__main__":
     assert str(flag) == "", "expected empty string, for an empty flag"
     
     #assert False
-    print "All tests pass"
+    print("All tests pass")
diff --git a/Pyext/test/py_u_TestGeneratedVariable.py b/Pyext/test/py_u_TestGeneratedVariable.py
index 12e2b23..11d5389 100644
--- a/Pyext/test/py_u_TestGeneratedVariable.py
+++ b/Pyext/test/py_u_TestGeneratedVariable.py
@@ -16,44 +16,44 @@
 import ecflow
     
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")")
+    print("####################################################################")
      
     #===========================================================================
-    print "Defs: test generated variables"
+    print("Defs: test generated variables")
     #===========================================================================
     defs = ecflow.Defs()
     suite = defs.add_suite("s1")
     family = suite.add_family("f1")
     task = family.add_task("t1")
 
-    print "\nsuite generated variables, Most of date related suite generated variables will only have values after the suite has begun"
+    print("\nsuite generated variables, Most of date related suite generated variables will only have values after the suite has begun")
     variable_list = ecflow.VariableList()
     suite.get_generated_variables(variable_list)
     for gen_var in variable_list:
-        print gen_var
-    assert len(list(variable_list)) == 12,"Expected 12 generated variables for suites"    
+        print(gen_var)
+    assert len(list(variable_list)) == 13,"Expected 13 generated variables for suites"    
     assert variable_list[0].name() == "SUITE", "expected generated variable of name SUITE but found " + variable_list[0].name()
     assert variable_list[0].value() == "s1", "expected generated variable of value 's1' but found " + variable_list[0].value()
 
 
-    print "\nfamily generated variables"
+    print("\nfamily generated variables")
     variable_list = ecflow.VariableList()
     family.get_generated_variables(variable_list)
     for gen_var in variable_list:
-        print gen_var
+        print(gen_var)
     assert len(list(variable_list)) == 2,"Expected 2 generated variables for families"    
     assert variable_list[0].name() == "FAMILY", "expected generated variable of name FAMILY but found " + variable_list[0].name()
     assert variable_list[0].value() == "f1", "expected generated variable of value 'f1' but found " + variable_list[0].value()
     assert variable_list[1].name() == "FAMILY1", "expected generated variable of name FAMILY1 but found " + variable_list[1].name()
     assert variable_list[1].value() == "f1", "expected generated variable of value 'f1' but found " + variable_list[1].value()
 
-    print "\ntask generated variables"
+    print("\ntask generated variables")
     variable_list = ecflow.VariableList()
     task.get_generated_variables(variable_list)
     for gen_var in variable_list:
-        print gen_var
+        print(gen_var)
     assert len(list(variable_list)) == 8,"Expected 8 generated variables for tasks"    
     assert variable_list[0].name() == "TASK", "expected generated variable of name TASK but found " + variable_list[0].name()
     assert variable_list[0].value() == "t1", "expected generated variable of value 't1' but found " + variable_list[0].value()
@@ -72,5 +72,5 @@ if __name__ == "__main__":
     assert variable_list[7].name() == "ECF_PASS", "expected generated variable of name ECF_NAME but found " + variable_list[7].name()
     assert variable_list[7].value() == "_DJP_", "expected generated variable of value '_DJP_' but found " + variable_list[7].value()
 
-    print "\nAll Tests pass"
+    print("\nAll Tests pass")
     
diff --git a/Pyext/test/py_u_TestGetAllTasks.py b/Pyext/test/py_u_TestGetAllTasks.py
index b0004ac..f5f1cdd 100644
--- a/Pyext/test/py_u_TestGetAllTasks.py
+++ b/Pyext/test/py_u_TestGetAllTasks.py
@@ -35,7 +35,7 @@ def test_get_all_tasks(defs):
     assert task_vec2[2].name() == "t2", "Expected task of name t2 but found " + task_vec2[2].name()
     assert task_vec2[3].name() == "t3", "Expected task of name t3 but found " + task_vec2[3].name()
    
-    print "test_get_all_tasks PASSED"
+    print("test_get_all_tasks PASSED")
    
 def test_get_all_nodes(defs):
     
@@ -61,7 +61,7 @@ def test_get_all_nodes(defs):
     node_vec = one_suite_defs.get_all_nodes()
     assert len(node_vec) == 1, "Expected one node, but found " + str(len(node_vec))
 
-    print "test_get_all_nodes PASSED"
+    print("test_get_all_nodes PASSED")
     
 def test_get_all_nodes_from_nodes():
     defs = Defs()
@@ -89,15 +89,15 @@ def test_get_all_nodes_from_nodes():
     node_vec = suite.get_all_nodes()
     assert len(node_vec) == 6, "Expected 6 nodes but found " + str(len(node_vec))
 
-    print "test_get_all_nodes_from_nodes PASSED"
+    print("test_get_all_nodes_from_nodes PASSED")
    
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
  
     test_get_all_tasks(create_defs())
     test_get_all_nodes(create_defs())
     test_get_all_nodes_from_nodes()
-    print "All Tests pass"    
\ No newline at end of file
+    print("All Tests pass")    
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestJobGeneration.py b/Pyext/test/py_u_TestJobGeneration.py
index 63dd7bc..8b099e5 100644
--- a/Pyext/test/py_u_TestJobGeneration.py
+++ b/Pyext/test/py_u_TestJobGeneration.py
@@ -47,28 +47,28 @@ def create_defs(ecf_home,task_vec):
 
 
 def delete_jobs(task_vec, ecf_home):
-    print "delete jobs"
+    print("delete jobs")
     for task in task_vec:
         the_job_file = ecf_home + task.get_abs_node_path() + ".job" + task.get_try_no()
         if os.path.exists(the_job_file) :
-            print "removing file " + the_job_file
+            print("removing file " + the_job_file)
             try: os.remove(the_job_file)
             except: pass
         man_file = ecf_home + task.get_abs_node_path() + ".man"  
         if os.path.exists(man_file) :
-            print "removing man_file " + man_file
+            print("removing man_file " + man_file)
             try: os.remove(man_file)
             except: pass
    
 def check_jobs(task_vec, ecf_home):
-    print "Check job file exists"
+    print("Check job file exists")
     for task in task_vec:
         variable = task.find_variable("ECF_DUMMY_TASK")
         if not variable.empty(): continue;
         the_job_file = ecf_home + task.get_abs_node_path() + ".job" + task.get_try_no()
       
         if os.path.exists(the_job_file) :
-            print "Found job file " + the_job_file
+            print("Found job file " + the_job_file)
         else:
             assert False, "Could not find job file " + the_job_file
 
@@ -76,46 +76,46 @@ def check_jobs(task_vec, ecf_home):
 
 
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
  
     workspace = Test.get_root_source_dir();
-    print workspace
+    print(workspace)
     
     ecf_home = workspace + "/Pyext/test/data/ECF_HOME"
     task_vec = TaskVec()
     defs = create_defs(ecf_home,task_vec)
-    print str(defs)
+    print(str(defs))
 
-    print "Generate jobs for *ALL* tasks, to default locations ECF_HOME/ECF_NAME.job0" 
-    print defs.check_job_creation()   
+    print("Generate jobs for *ALL* tasks, to default locations ECF_HOME/ECF_NAME.job0") 
+    print(defs.check_job_creation())   
     check_jobs(task_vec,ecf_home)
     delete_jobs(task_vec,ecf_home)
        
-    print "\nGenerate jobs for *ALL* tasks, to default locations ECF_HOME/ECF_NAME.job0"
+    print("\nGenerate jobs for *ALL* tasks, to default locations ECF_HOME/ECF_NAME.job0")
     job_ctrl = JobCreationCtrl()
     defs.check_job_creation( job_ctrl )       
-    print job_ctrl.get_error_msg()
+    print(job_ctrl.get_error_msg())
     check_jobs(task_vec,ecf_home)
     delete_jobs(task_vec,ecf_home)
     
-    print "\nGenerate jobs for all nodes, under path, to default locations ECF_HOME/ECF_NAME.job0"    
+    print("\nGenerate jobs for all nodes, under path, to default locations ECF_HOME/ECF_NAME.job0")    
     job_ctrl = JobCreationCtrl()
     job_ctrl.set_node_path( task_vec[0].get_abs_node_path() )    
     defs.check_job_creation(job_ctrl)       
-    print job_ctrl.get_error_msg();
+    print(job_ctrl.get_error_msg());
     delete_jobs(task_vec,ecf_home)
    
-    print "\nGenerate jobs for all tasks, to the specified directory"
+    print("\nGenerate jobs for all tasks, to the specified directory")
     # Directory will automatically created under the provided directory
     job_ctrl = JobCreationCtrl()
     job_ctrl.set_dir_for_job_creation(workspace + "/Pyext/test/data")  # generate jobs file under this directory
     defs.check_job_creation(job_ctrl)
-    print job_ctrl.get_error_msg()
+    print(job_ctrl.get_error_msg())
     
     generated_dir = job_ctrl.get_dir_for_job_creation() + "/suite_job_gen"
-    print "removing directory tree " + generated_dir
+    print("removing directory tree " + generated_dir)
     shutil.rmtree(generated_dir)      
  
  
@@ -125,11 +125,11 @@ if __name__ == "__main__":
         job_ctrl = JobCreationCtrl()                    
         job_ctrl.generate_temp_dir()       
         defs.check_job_creation(job_ctrl)
-        print job_ctrl.get_error_msg()
-        print "removing directory tree " + job_ctrl.get_dir_for_job_creation()
+        print(job_ctrl.get_error_msg())
+        print("removing directory tree " + job_ctrl.get_dir_for_job_creation())
         shutil.rmtree(job_ctrl.get_dir_for_job_creation())     
     
         delete_jobs(task_vec,ecf_home)
-        print "All test pass"
-    except RuntimeError, e:
-        print "failed: " + str(e)    
+        print("All test pass")
+    except RuntimeError as e:
+        print("failed: " + str(e))    
diff --git a/Pyext/test/py_u_TestParent.py b/Pyext/test/py_u_TestParent.py
index e53275b..a6fa838 100644
--- a/Pyext/test/py_u_TestParent.py
+++ b/Pyext/test/py_u_TestParent.py
@@ -34,9 +34,9 @@ def absNodePath(node):
     
 
 if __name__ == "__main__":    
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
    
     suite = Suite("s1");
     family = Family("f1")
@@ -46,9 +46,9 @@ if __name__ == "__main__":
     assert not family.get_parent(), "Expect no parent"
     assert not task.get_parent(), "Expect no parent"
     
-    print "suite.get_defs() = " + str(suite.get_defs())
-    print "family.get_defs() = " + str(family.get_defs())
-    print "task.get_defs() = " + str(task.get_defs())
+    print("suite.get_defs() = " + str(suite.get_defs()))
+    print("family.get_defs() = " + str(family.get_defs()))
+    print("task.get_defs() = " + str(task.get_defs()))
     assert not suite.get_defs(),   "Expected no defs, since suite not added to defs yet"
     assert not family.get_defs(),  "Expected no defs"
     assert not task.get_defs(),    "Expected no defs"
@@ -65,13 +65,13 @@ if __name__ == "__main__":
     defs = Defs()
     defs.add_suite(suite);
     
-    print absNodePath(t1)
-    print absNodePath(family2)
-    print absNodePath(family)
-    print absNodePath(suite)
+    print(absNodePath(t1))
+    print(absNodePath(family2))
+    print(absNodePath(family))
+    print(absNodePath(suite))
     
     assert t1.get_abs_node_path() == absNodePath(t1),          "Expected " + t1.get_abs_node_path()      + " but got " + absNodePath(t1)
     assert family2.get_abs_node_path() == absNodePath(family2),"Expected " + family2.get_abs_node_path() + " but got " + absNodePath(family2)
     assert family.get_abs_node_path() == absNodePath(family),  "Expected " + family.get_abs_node_path()  + " but got " + absNodePath(family)
     assert suite.get_abs_node_path() == absNodePath(suite),    "Expected " + family.get_abs_node_path()  + " but got " + absNodePath(suite)
-    print "All Tests pass"
+    print("All Tests pass")
diff --git a/Pyext/test/py_u_TestRemove.py b/Pyext/test/py_u_TestRemove.py
new file mode 100644
index 0000000..c79fd22
--- /dev/null
+++ b/Pyext/test/py_u_TestRemove.py
@@ -0,0 +1,64 @@
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+# Name        :
+# Author      : Avi
+# Revision    : $Revision: #10 $
+#
+# Copyright 2009-2016 ECMWF.
+# This software is licensed under the terms of the Apache Licence version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#  code for testing creation of defs file in python
+import os
+import ecflow
+import copy
+from ecflow import Suite, Family, Task, Defs, Clock, DState, PartExpression, Variable, Limit, InLimit, \
+                   Date, Day, Event, Meter, Label, Autocancel, Days, TimeSlot, TimeSeries, Style, State, \
+                   RepeatString, RepeatDate, RepeatInteger, RepeatDay, RepeatEnumerated, \
+                   Verify, PrintStyle, Time, Today, Late, Cron, Client, debug_build
+
+if __name__ == "__main__":
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
+    
+    defs = Defs()
+    s0 = defs.add_suite("s0")
+    s1 = defs.add_suite("s1")
+    f1 =  s1.add_family("f1")
+    t1 = f1.add_task("t1")
+    t2 = f1.add_task("t2")
+    assert len(list(f1.nodes)) == 2 ,"Expected family to have 2 nodes"
+    defs_copy = copy.copy(defs)
+     
+    
+    t2_remove = t2.remove()
+    assert len(list(f1.nodes)) == 1 ,"Expected family to have 1 nodes"
+
+    t1_remove = t1.remove()
+    assert len(list(f1.nodes)) == 0 ,"Expected family to have 0 nodes"
+
+    f1_remove = f1.remove()
+    assert len(list(s1.nodes)) == 0 ,"Expected suite to have no nodes"
+
+    node_vec = defs.get_all_nodes()
+    assert len(node_vec) == 2, "Expected 2 suites only, but found " + str(len(node_vec))
+
+    s1_remove = s1.remove()
+    node_vec = defs.get_all_nodes()
+    assert len(node_vec) == 1, "Expected 1 suites only, but found " + str(len(node_vec))
+
+    s0_remove = s0.remove()
+    node_vec = defs.get_all_nodes()
+    assert len(node_vec) == 0, "Expected 0 suites only, but found " + str(len(node_vec))
+
+    # =========================================================
+    defs2 = Defs();
+    defs2.add_suite(s0_remove)
+    s = defs2.add_suite(s1_remove) # s1_remove is returned as s
+    f =  s.add_family(f1_remove)   # f1_remove is returned as f
+    f.add_task(t1_remove)
+    f.add_task(t2_remove)
+    assert defs2 == defs_copy ,"expected defs to be the same"
diff --git a/Pyext/test/py_u_TestRepeatArithmetic.py b/Pyext/test/py_u_TestRepeatArithmetic.py
index 7b109b7..a554881 100644
--- a/Pyext/test/py_u_TestRepeatArithmetic.py
+++ b/Pyext/test/py_u_TestRepeatArithmetic.py
@@ -19,9 +19,9 @@
 import ecflow
  
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) + ")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) + ")")
+    print("####################################################################")
  
     defs = ecflow.Defs()
     s1 = defs.add_suite("s1");
@@ -48,5 +48,5 @@ if __name__ == "__main__":
     t2.change_trigger("t1:YMD + 1 eq 20090201");   
     assert t2.evaluate_trigger(), "Expected trigger to evaluate. 20090131 + 1  == 20090201"
 
-    print "All Tests pass"
+    print("All Tests pass")
     
diff --git a/Pyext/test/py_u_TestSimulator.py b/Pyext/test/py_u_TestSimulator.py
index 0370545..abe6e89 100644
--- a/Pyext/test/py_u_TestSimulator.py
+++ b/Pyext/test/py_u_TestSimulator.py
@@ -1,20 +1,21 @@
-#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#####1####/2####/3####/4####/5####/6####/7####/8
 # Name        :
 # Author      : Avi
 # Revision    : $Revision: #10 $
 #
 # Copyright 2009-2016 ECMWF.
 # This software is licensed under the terms of the Apache Licence version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# which can be obtained at http:#www.apache.org/licenses/LICENSE-2.0.
 # In applying this licence, ECMWF does not waive the privileges and immunities
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
-#////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
+#####1####/2####/3####/4####/5####/6####/7####/8
 
-#  Test the simulation works
+#  Test that simulation works
 
-import os
+import os,fnmatch
 import ecflow
+import ecflow_test_util as Test
 
 def simulate_defs_with_time():
     #suite test_time_series
@@ -23,7 +24,7 @@ def simulate_defs_with_time():
     #         time 00:00 23:00 04:00  # should run 6 times 00:00 04:00 08:00 12:00 16:00 20:00
     #  endfamily
     #endsuite
-    print "simulate_defs_with_time()"
+    print("simulate_defs_with_time()")
     defs = ecflow.Defs()
     suite = defs.add_suite("test_time_series")
     clock = ecflow.Clock(1, 1, 2011, False)       # day,month, year, hybrid make test start at midnight, otherwise current time used
@@ -37,18 +38,19 @@ def simulate_defs_with_time():
     theResult = defs.simulate()
     assert len(theResult) == 0,  "Expected simulation to return without any errors, but found:\n" + theResult
     
-    print "  simple check for state change time"
-    print "   iso_extended:",task.get_state_change_time()
-    print "   iso_extended:",task.get_state_change_time("is0_extended")
-    print "   iso         :",task.get_state_change_time("iso")
-    print "   simple      :",task.get_state_change_time("simple")
-    print "   rubbish     :",task.get_state_change_time("rubbish")
+    print("  simple check for state change time")
+    print("   iso_extended:",task.get_state_change_time())
+    print("   iso_extended:",task.get_state_change_time("is0_extended"))
+    print("   iso         :",task.get_state_change_time("iso"))
+    print("   simple      :",task.get_state_change_time("simple"))
+    print("   rubbish     :",task.get_state_change_time("rubbish"))
  
     os.remove("test_time_series.def.log")
     
 def simulate_deadlock():
     # This simulation is expected to fail, since we have a deadlock/ race condition
     
+    print ("simulate_deadlock")
     # suite dead_lock
     #  family family
     #    task t1
@@ -66,17 +68,64 @@ def simulate_deadlock():
     
     theResult = defs.simulate()
     assert len(theResult) != 0, "Expected simulation to return errors, but found none" 
-    print theResult
+    print(theResult)
            
     os.remove("dead_lock.def.log")
     os.remove("defs.depth")
     os.remove("defs.flat")
 
+def test_time_series():
+    print "Simulator:: ...test_time_series";
+
+    # suite suite
+    #  clock real <sunday>
+    #    family family
+    #       task t1
+    #       time 00:30 23:59 04:00  # should run 6 times 00:30 4:30 8:30 12:30 16:30 20:30
+    #      endfamily
+    #endsuite
+
+    # Initialise real clock on a Monday, such that task should _only_ run
+    # on Monday since we are using a hybrid clock
+    clock = ecflow.Clock(12, 10, 2009, False)     # day,month, year, hybrid 12 October 2009 was a Monday
+
+    theDefs = ecflow.Defs()
+    suite = theDefs.add_suite("test_time_series")
+    suite.add_clock( clock )
+
+    fam = suite.add_family( "family" )
+    task = fam.add_task("t")
+    
+    task.add_time("00:30 23:59 04:00");
+    task.add_verify( ecflow.Verify(ecflow.State.complete, 6) ) # expect task to complete 6 times
+
+    theResult = theDefs.simulate()
+    assert len(theResult) == 0,  "Expected simulation to return without any errors, but found:\n" + theResult
+
+    os.remove("test_time_series.def.log")
+    
+
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")")
+    print("####################################################################")
  
     simulate_defs_with_time()
     simulate_deadlock()
-    print "All Tests pass"
+    test_time_series()
+    
+    # traverse the CSim test data, make sure python simulation matches c++
+    workspace_dir = Test.get_root_source_dir()
+    csim_test_data = workspace_dir + "/CSim/test/data/good_defs"
+    print csim_test_data
+    for path in Test.all_files(csim_test_data,'*.def'):
+        print path
+        theDefs = ecflow.Defs(path)
+        theResult = theDefs.simulate()
+        assert len(theResult) == 0,  "Expected simulation to return without any errors, but found:\n" + theResult
+
+    # remove generated .log files
+    for path in Test.all_files(".",'*.log'):
+        os.remove(path)
+        
+    print("All Tests pass")
diff --git a/Pyext/test/py_u_TestTraversal.py b/Pyext/test/py_u_TestTraversal.py
index 9774db8..f751a42 100644
--- a/Pyext/test/py_u_TestTraversal.py
+++ b/Pyext/test/py_u_TestTraversal.py
@@ -155,26 +155,26 @@ def check_traversal(path_to_def):
     # be the same as def on disk.
     try:
         traversed_def = ecflow.Defs( file_name )
-    except RuntimeError, e: 
-        print "Could not parse file " + file_name + "\n" + str(e)
+    except RuntimeError as e: 
+        print("Could not parse file " + file_name + "\n" + str(e))
         exit(1)
          
     # compare the two defs
     ecflow.Ecf.set_debug_equality(True)
     defs_equal = (traversed_def == reference_def)
     if not defs_equal:
-        print str(path_to_def) + " FAILED "
-        print "The traversed defs=========\n" + str(traversed_def) + "\nnot the same as reference def============\n" + str(reference_def)
-        print "===================== " + file_name + " ===================================="
+        print(str(path_to_def) + " FAILED ")
+        print("The traversed defs=========\n" + str(traversed_def) + "\nnot the same as reference def============\n" + str(reference_def))
+        print("===================== " + file_name + " ====================================")
         the_traversed_def_on_disk = open(file_name)
         for line in the_traversed_def_on_disk:
-            print line,
+            print(line)
             
         assert defs_equal, "Failed: ---"
       
         # Notice: this path does not delete file_name, left for analysis of failure
     else:
-        print str(path_to_def) + " PASSED "
+        print(str(path_to_def) + " PASSED ")
         os.remove(file_name)        
         
 
@@ -194,9 +194,9 @@ def all_files(root, patterns='*', single_level=False, yield_folders=False):
             break    
         
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + ecflow.Client().version() + " debug build(" + str(ecflow.debug_build()) +")")
+    print("####################################################################")
  
     cwd = os.getcwd()
     #print cwd
@@ -218,4 +218,4 @@ if __name__ == "__main__":
     # try the mega_def. Commented out since it takes to long
     #mega_def = os.path.join( os.path.dirname(cwd), "AParser/test/data/single_defs/mega.def")
     #check_traversal(mega_def)
-    print "All Tests pass"    
\ No newline at end of file
+    print("All Tests pass")    
\ No newline at end of file
diff --git a/Pyext/test/py_u_TestUserManual.py b/Pyext/test/py_u_TestUserManual.py
index 98a9248..306bcaa 100644
--- a/Pyext/test/py_u_TestUserManual.py
+++ b/Pyext/test/py_u_TestUserManual.py
@@ -57,15 +57,15 @@ if __name__ == "__main__":
                 family.add_complete("../main:YMD ge " + str(self.end_))
             return
  
-    print str( ExperimentalSuite(20050601,20050605).generate() )
+    print(str( ExperimentalSuite(20050601,20050605).generate() ))
    
 # ==========================================================================
  
 # Control structure and looping
     var = "aa"
-    if var in ( "a", "aa", "aaa" ) :     print "it is a kind of a "
-    elif var in ( "b", "bb", "bb" ) :    print "it is a kind of b "
-    else :                               print "it is something else "
+    if var in ( "a", "aa", "aaa" ) :     print("it is a kind of a ")
+    elif var in ( "b", "bb", "bb" ) :    print("it is a kind of b ")
+    else :                               print("it is something else ")
    
 # ==========================================================================
 
@@ -105,41 +105,41 @@ if __name__ == "__main__":
              }.get(time, self.errorHandler)(self)
       
         def add6(self, time):  
-            print "add6 " + str(time)
+            print("add6 " + str(time))
             self.node.add_today(17, 30)
             self.node.add_variable("ANTIME", str(time))
 
         def add12(self, time):  
-            print "add12 " + str(time)
+            print("add12 " + str(time))
             self.node.add_today(19, 15)
             self.node.add_variable("ANTIME", str(time))
 
         def add18(self, time):  
-            print "add18 " + str(time)
+            print("add18 " + str(time))
             self.node.add_time(1, 30)
             self.node.add_variable("ANTIME", str(time))
 
         def add24(self, time):  
-            print "add24 " + str(time)
+            print("add24 " + str(time))
             self.node.add_time(3, 0)
             self.node.add_variable("ANTIME", "0")
             self.node.add_variable("DELTA_DAY", "1")
             self.node.add_variable("EXPVER", "0002")
          
-        def errorHandler(self, ignore): print "invalid time " + str(ignore)
+        def errorHandler(self, ignore): print("invalid time " + str(ignore))
 
 #for i in (0, 6 ,12, 18, 24):
 for i in (0, 6):
     task = Task("t" + str(i))
-    print task.name()
+    print(task.name())
     varAdder = VarAdder(task)
     varAdder.add(114)
     for var in task.variables: 
-        print str(var) + "\n"
+        print(str(var) + "\n")
     for the_time in task.times : 
-        print str(the_time) + "\n"
+        print(str(the_time) + "\n")
     for today in task.todays : 
-        print str(today) + "\n"
+        print(str(today) + "\n")
          
 # ==========================================================================
 
diff --git a/Pyext/test/py_u_TestWith.py b/Pyext/test/py_u_TestWith.py
index e5b4ed9..b308f50 100644
--- a/Pyext/test/py_u_TestWith.py
+++ b/Pyext/test/py_u_TestWith.py
@@ -18,16 +18,17 @@ from ecflow import Defs, Suite, Family, Client, debug_build
 import sys
     
 if __name__ == "__main__":
-    print "####################################################################"
-    print "Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")"
-    print "####################################################################"
+    print("####################################################################")
+    print("Running ecflow version " + Client().version() + " debug build(" + str(debug_build()) +")")
+    print("####################################################################")
  
+    # sys.version_info is a tuple containing (major,minor,micro,releaselevel,serial)
     version = sys.version_info;
-    if  version[1] < 7 : 
-        print "This test only run with python version 2.7, but found : " + str(version)
+    if (sys.version_info < (2, 7)):
+        print("This test only run with python version 2.7 or greater, but found : " + str(version))
         exit(0)
     
-    print "start test"
+    print("start test")
     # Add with context manager, in our case this only provides ability to indent
     with Defs() as defs:
         with defs.add_suite("s2") as s2:
@@ -76,4 +77,4 @@ if __name__ == "__main__":
                     
     assert defs1 == defs2,"expected defs to be the same"        
         
-    print "All tests pass"
\ No newline at end of file
+    print("All tests pass")
\ No newline at end of file
diff --git a/Server/CMakeLists.txt b/Server/CMakeLists.txt
index 517c655..1b6908d 100644
--- a/Server/CMakeLists.txt
+++ b/Server/CMakeLists.txt
@@ -32,11 +32,11 @@ ecbuild_add_library( TARGET libserver
 target_link_libraries(libserver debug ${Boost_THREAD_LIBRARY_DEBUG} ${Boost_THREAD_LIBRARY_RELEASE})
 
 # =======================================================
-# EXE ecflow_server
+# EXE ecflow_server, if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 
 ecbuild_add_executable( TARGET   ecflow_server
                         SOURCES  src/ServerMain.cpp
-                        LIBS     libserver    
+                        LIBS     libserver ${OPENSSL_LIBRARIES}
                         INCLUDES ${Boost_INCLUDE_DIRS} 
                        )
 
@@ -70,7 +70,7 @@ ecbuild_add_test( TARGET       u_server
                   BOOST  
                   SOURCES      test/TestServerEnvironment.cpp 
                                test/TestServer1.cpp
-                  LIBS         libserver  
+                  LIBS         libserver ${OPENSSL_LIBRARIES}
                   TEST_DEPENDS u_base
               )
 
diff --git a/Server/Jamfile.jam b/Server/Jamfile.jam
index df5cc67..a2a5116 100644
--- a/Server/Jamfile.jam
+++ b/Server/Jamfile.jam
@@ -68,6 +68,7 @@ exe ecflow_server : [ glob src/*Main.cpp ]
              /site-config//boost_datetime
              /site-config//boost_program_options
            : <variant>debug:<define>DEBUG
+             [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
            ;
 
 #
@@ -90,4 +91,5 @@ exe u_server : [ glob test/*.cpp ]
              /site-config//boost_program_options
              /site-config//boost_test
            : <variant>debug:<define>DEBUG
+             [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
            ;
diff --git a/Server/server_environment.cfg b/Server/server_environment.cfg
index 61dc98d..73c4793 100644
--- a/Server/server_environment.cfg
+++ b/Server/server_environment.cfg
@@ -143,6 +143,7 @@ ECF_MICRODEF = %
 #  ******************************************************************
 ECF_LISTS = ecf.lists
 
+ECF_PASSWD = ecf.passwd
 
 # ***************************************************************************
 # * ECF_TASK_THRESHOLD:
diff --git a/Server/src/NodeTreeTraverser.cpp b/Server/src/NodeTreeTraverser.cpp
index ecca943..7e95157 100644
--- a/Server/src/NodeTreeTraverser.cpp
+++ b/Server/src/NodeTreeTraverser.cpp
@@ -46,7 +46,9 @@ NodeTreeTraverser::NodeTreeTraverser( Server* s,
   serverEnv_(serverEnv),
   timer_( io, boost::posix_time::seconds( 0 ) ),
   interval_(0,0,serverEnv_.submitJobsInterval(),0),
+#ifdef DEBUG_TRAVERSER
   count_( 0 ),
+#endif
   firstTime_( true),
   running_(false)
 {
@@ -68,7 +70,9 @@ void NodeTreeTraverser::start()
 #endif
 
 	if (!running_) {
+#ifdef DEBUG_TRAVERSER
 		count_ = 0;
+#endif
 		running_ = true;
 		if (firstTime_) {
 			// If the server is stopped/started we want to avoid skewing the calendar, since each time
@@ -165,6 +169,7 @@ void NodeTreeTraverser::do_traverse()
 	time_duration duration = time_now - last_time_;
 	int diff_from_last_time = duration.total_seconds();
 	int submitJobsIntervalInSeconds = serverEnv_.submitJobsInterval();
+
 #ifdef DEBUG_TRAVERSER
 	int real_diff = diff_from_last_time - submitJobsIntervalInSeconds;
 	std::stringstream ss;
@@ -186,7 +191,6 @@ void NodeTreeTraverser::do_traverse()
 	}
 
 
-
 	/// Remove any stale zombies
 	server_->zombie_ctrl().remove_stale_zombies(time_now);
 
@@ -195,7 +199,6 @@ void NodeTreeTraverser::do_traverse()
 	ss << " Traverse duration:" << traverse_duration.total_seconds();
 #endif
 
-
 	// We poll *EVERY second but update the next_poll_time_ to be consistent with the job submission interval
 	// Hence the next poll times *will* vary( SOFT REAL TIME ).
 	// Note: On server start, we modified the next_poll_time_ to hit the minute boundary.
@@ -322,7 +325,9 @@ void NodeTreeTraverser::update_suite_calendar_and_traverse_node_tree(const boost
 		// In the case where defs/node tree is suspended updateCalendar will continue
 		// to mark those time dep' are free, as free. This information is then used
 		// during the resume
+#ifdef DEBUG_TRAVERSER
 		++count_;
+#endif
 		CalendarUpdateParams calParams(time_now, interval_/* calendar increment */, running_ );
 		server_->defs_->updateCalendar( calParams );
 
diff --git a/Server/src/NodeTreeTraverser.hpp b/Server/src/NodeTreeTraverser.hpp
index b8b3fbe..965ae27 100644
--- a/Server/src/NodeTreeTraverser.hpp
+++ b/Server/src/NodeTreeTraverser.hpp
@@ -29,6 +29,7 @@
 
 class Server;
 class ServerEnvironment;
+//#define DEBUG_TRAVERSER 1
 
 class NodeTreeTraverser : private boost::noncopyable {
 public:
@@ -78,7 +79,9 @@ private:
 	boost::posix_time::ptime last_time_;        // ensure poll is in sync
 	boost::posix_time::ptime next_poll_time_;   // Keep as sync as possible with hard real times
 	boost::posix_time::time_duration interval_; // Job submission interval
+#ifdef DEBUG_TRAVERSER
  	int count_;
+#endif
  	bool firstTime_;
  	bool running_;
 };
diff --git a/Server/src/Server.cpp b/Server/src/Server.cpp
index 6c11072..ca04a54 100644
--- a/Server/src/Server.cpp
+++ b/Server/src/Server.cpp
@@ -24,7 +24,7 @@
 #include <boost/bind.hpp>
 #include <iostream>
 
-#include "Server.hpp" // Must come before boost/serialization headers.
+#include "Server.hpp"  // Must come before boost/serialization headers.
                        // defines ECFLOW_MT
 #include <boost/thread/thread.hpp> // needed for ECFLOW_MT and debug() to print thread ID
 #include "Defs.hpp"
@@ -35,6 +35,10 @@
 #include "Calendar.hpp"
 #include "Version.hpp"
 #include "Str.hpp"
+#include "File.hpp"
+#ifdef ECF_OPENSSL
+#include "Openssl.hpp"
+#endif
 
 using boost::asio::ip::tcp;
 namespace fs = boost::filesystem;
@@ -46,6 +50,9 @@ using namespace ecf;
 /// Constructor opens the acceptor and starts waiting for the first incoming connection.
 Server::Server( ServerEnvironment& serverEnv ) :
    io_service_(),
+#ifdef ECF_OPENSSL
+   context_(ecf::Openssl::method()),
+#endif
    signals_(io_service_),
    acceptor_(io_service_),
 #ifdef ECFLOW_MT
@@ -83,6 +90,17 @@ Server::Server( ServerEnvironment& serverEnv ) :
    acceptor_.bind(endpoint);
    acceptor_.listen();   // address is use error, when it comes, bombs out here
 
+#ifdef ECF_OPENSSL
+   std::string home_path = ecf::Openssl::certificates_dir();
+   context_.set_options(
+       boost::asio::ssl::context::default_workarounds
+       | boost::asio::ssl::context::no_sslv2
+       | boost::asio::ssl::context::single_dh_use);
+   context_.set_password_callback(boost::bind(&Server::get_password, this));
+   context_.use_certificate_chain_file(home_path + "server.crt" );
+   context_.use_private_key_file(home_path + "server.key", boost::asio::ssl::context::pem);
+   context_.use_tmp_dh_file(home_path + "dh1024.pem");
+#endif
 
    // Update stats, this is returned via --stats command option
    stats().host_ = serverEnv.hostPort().first;
@@ -116,6 +134,32 @@ Server::Server( ServerEnvironment& serverEnv ) :
    start_accept();
 }
 
+
+#ifdef ECF_OPENSSL
+std::string Server::get_password() const
+{
+   // Running the tests, shows that this is called only once, at server start up
+   // std::cout << "Server::get_password()\n";
+   std::string passwd_file = ecf::Openssl::certificates_dir();
+   passwd_file += "/server.passwd";
+   if (fs::exists(passwd_file)) {
+      std::string contents;
+      if (ecf::File::open(passwd_file,contents)) {
+         // remove /n added by editor.
+         if (!contents.empty() && contents[contents.size()-1] == '\n') contents.erase(contents.begin() + contents.size()-1);
+         //std::cout << "Server::get_password() passwd('" << contents << "')\n";
+         return contents;
+      }
+      else {
+         std::stringstream ss; ss << "Server::get_password file " << passwd_file << " exists, but can't be opened";
+         throw std::runtime_error(ss.str());
+      }
+   }
+   //std::cout << "Server::get_password() passwd('test')\n";
+   return "test";
+}
+#endif
+
 Server::~Server()
 {
    if (serverEnv_.debug()) cout << "<--Server::~server exiting server on port " << serverEnv_.port() << endl;
@@ -163,16 +207,24 @@ void Server::start_accept()
                           boost::bind(&Server::handle_accept, this,
                                       boost::asio::placeholders::error));
 #else
+
    if (serverEnv_.debug()) cout << "   Server::start_accept()" << endl;
+
+#ifdef ECF_OPENSSL
+   connection_ptr new_conn( new connection( io_service_, context_ ) );
+#else
    connection_ptr new_conn( new connection( io_service_ ) );
+#endif
+
    if (serverEnv_.allow_old_client_new_server() !=0 ) {
       new_conn->allow_old_client_new_server(serverEnv_.allow_old_client_new_server());
    }
-   acceptor_.async_accept( new_conn->socket(),
+
+   acceptor_.async_accept( new_conn->socket_ll(),
                            boost::bind( &Server::handle_accept, this,
                                  boost::asio::placeholders::error,
                                  new_conn ) );
-#endif
+#endif // ECFLOW_MT
 }
 
 #ifdef ECFLOW_MT
@@ -198,6 +250,8 @@ void Server::handle_accept(const boost::system::error_code& e)
 #else
 void Server::handle_accept( const boost::system::error_code& e, connection_ptr conn )
 {
+   if (serverEnv_.debug()) cout << "   Server::handle_accept" << endl;
+
    // Check whether the server was stopped by a signal before this completion
    // handler had a chance to run.
    if (!acceptor_.is_open()) {
@@ -209,12 +263,20 @@ void Server::handle_accept( const boost::system::error_code& e, connection_ptr c
       // Read and interpret message from the client
       if (serverEnv_.debug()) cout << "   Server::handle_accept" << endl;
 
+#ifdef ECF_OPENSSL
+         conn->socket().async_handshake(boost::asio::ssl::stream_base::server,
+                                 boost::bind(&Server::handle_handshake, this,
+                                       boost::asio::placeholders::error,conn ));
+
+#else
       // Successfully accepted a new connection. Determine what the
       // client sent to us. The connection::async_read() function will
       // automatically. serialise the inbound_request_ data structure for us.
       conn->async_read( inbound_request_,
                      boost::bind( &Server::handle_read, this,
                                 boost::asio::placeholders::error,conn ) );
+#endif
+
    }
    else {
       if (serverEnv_.debug()) cout << "   Server::handle_accept " << e.message() << endl;
@@ -233,6 +295,32 @@ void Server::handle_accept( const boost::system::error_code& e, connection_ptr c
    // However can this get into an infinite loop ???
    start_accept();
 }
+#endif
+
+#ifdef ECF_OPENSSL
+void Server::handle_handshake(const boost::system::error_code& e,connection_ptr new_conn )
+{
+   if (serverEnv_.debug()) cout << "   Server::handle_handshake" << endl;
+
+   if (!e)
+   {
+      // Successfully accepted a new connection. Determine what the
+      // client sent to us. The connection::async_read() function will
+      // automatically. serialise the inbound_request_ data structure for us.
+      new_conn->async_read( inbound_request_,
+                     boost::bind( &Server::handle_read, this,
+                                boost::asio::placeholders::error,new_conn ) );
+   }
+   else
+   {
+      // An error occurred.
+      LogToCout toCoutAsWell;
+      LOG(Log::ERR, "Server::handle_handshake: " <<  e.message());
+      // delete this;
+   }
+}
+#endif
+
 
 void Server::handle_read(  const boost::system::error_code& e,connection_ptr conn )
 {
@@ -330,7 +418,7 @@ bool Server::shutdown_socket(connection_ptr conn, const std::string& msg) const
    //
    // Since this can happen, instead of throwing, we use non-throwing version & just report it
    boost::system::error_code ec;
-   conn->socket().shutdown(boost::asio::ip::tcp::socket::shutdown_both,ec);
+   conn->socket_ll().shutdown(boost::asio::ip::tcp::socket::shutdown_both,ec);
    if (ec) {
       ecf::LogToCout logToCout;
       std::stringstream ss; ss << msg << " socket shutdown both failed: " << ec.message() << " : for request " << inbound_request_;
@@ -340,8 +428,6 @@ bool Server::shutdown_socket(connection_ptr conn, const std::string& msg) const
    return true;
 }
 
-#endif
-
 
 void Server::terminate()
 {
@@ -630,19 +716,40 @@ void Server::traverse_node_tree_and_job_generate(const boost::posix_time::ptime&
 bool Server::reloadWhiteListFile(std::string& errorMsg)
 {
    if (serverEnv_.debug()) cout << "   Server::reloadWhiteListFile" << endl;
-
    return serverEnv_.reloadWhiteListFile(errorMsg);
 }
 
-bool Server::authenticateReadAccess(const std::string& user)
+bool Server::reloadPasswdFile(std::string& errorMsg)
 {
-   return serverEnv_.authenticateReadAccess(user);
+   if (serverEnv_.debug()) cout << "   Server::reloadPasswdFile" << endl;
+   return serverEnv_.reloadPasswdFile(errorMsg);
+}
+
+bool Server::authenticateReadAccess(const std::string& user,const std::string& passwd)
+{
+   return serverEnv_.authenticateReadAccess(user,passwd);
+}
+bool Server::authenticateReadAccess(const std::string& user,const std::string& passwd, const std::string& path)
+{
+   return serverEnv_.authenticateReadAccess(user,passwd,path);
+}
+bool Server::authenticateReadAccess(const std::string& user,const std::string& passwd, const std::vector<std::string>& paths)
+{
+   return serverEnv_.authenticateReadAccess(user,passwd,paths);
 }
 
 bool Server::authenticateWriteAccess(const std::string& user )
 {
    return serverEnv_.authenticateWriteAccess(user);
 }
+bool Server::authenticateWriteAccess(const std::string& user, const std::string& path)
+{
+   return serverEnv_.authenticateWriteAccess(user,path);
+}
+bool Server::authenticateWriteAccess(const std::string& user, const std::vector<std::string>& paths)
+{
+   return serverEnv_.authenticateWriteAccess(user,paths);
+}
 
 bool Server::lock(const std::string& user)
 {
diff --git a/Server/src/Server.hpp b/Server/src/Server.hpp
index a1361e6..be616e2 100644
--- a/Server/src/Server.hpp
+++ b/Server/src/Server.hpp
@@ -66,6 +66,12 @@ private:
    /// Handle completion of a accept operation.
    void handle_accept(const boost::system::error_code& e);
 #else
+
+#ifdef ECF_OPENSSL
+   void handle_handshake(const boost::system::error_code& error,connection_ptr conn);
+   std::string get_password() const;
+#endif
+
    /// Handle completion of a accept operation.
    void handle_accept(const boost::system::error_code& e, connection_ptr conn);
 
@@ -107,8 +113,13 @@ protected: // Allow test to override
    virtual void halted();
    virtual void restart();
    virtual bool reloadWhiteListFile(std::string& errorMsg);
-   virtual bool authenticateReadAccess(const std::string& user);
+   virtual bool reloadPasswdFile(std::string& errorMsg);
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd);
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::string& path);
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::vector<std::string>& paths);
    virtual bool authenticateWriteAccess(const std::string& user);
+   virtual bool authenticateWriteAccess(const std::string& user, const std::string& path);
+   virtual bool authenticateWriteAccess(const std::string& user, const std::vector<std::string>& paths);
    virtual bool lock(const std::string& user);
    virtual void unlock();
    virtual const std::string& lockedUser() const;
@@ -126,6 +137,10 @@ private:
    /// The io_service used to perform asynchronous operations.
    boost::asio::io_service io_service_;
 
+#ifdef ECF_OPENSSL
+   boost::asio::ssl::context context_;
+#endif
+
    /// The signal_set is used to register for automatic check pointing
    boost::asio::signal_set signals_;
 
diff --git a/Server/src/ServerEnvironment.cpp b/Server/src/ServerEnvironment.cpp
index fa24368..672bfa4 100644
--- a/Server/src/ServerEnvironment.cpp
+++ b/Server/src/ServerEnvironment.cpp
@@ -14,8 +14,6 @@
 //
 //============================================================================
 
-#include <sys/types.h> // for getpid
-#include <unistd.h>    // for getpid
 #include <stdlib.h>    // for getenv()
 
 #include <iostream>
@@ -41,6 +39,7 @@
 #include "File.hpp"
 #include "boost_archive.hpp"
 #include "JobProfiler.hpp"
+#include "Pid.hpp"
 
 using namespace ecf;
 using namespace std;
@@ -86,6 +85,7 @@ ServerEnvironment::ServerEnvironment( int argc, char* argv[])
   tcp_protocol_(boost::asio::ip::tcp::v4())
 {
    init(argc,argv,"server_environment.cfg");
+   if (debug_) std::cout << dump() << "\n";
 }
 
 // This is ONLY used in test
@@ -107,6 +107,7 @@ ServerEnvironment::ServerEnvironment(int argc, char* argv[], const std::string&
   tcp_protocol_(boost::asio::ip::tcp::v4())
 {
    init(argc,argv,path_to_config_file);
+   if (debug_) std::cout << dump() << "\n";
 }
 
 void ServerEnvironment::init(int argc, char* argv[], const std::string& path_to_config_file)
@@ -126,8 +127,8 @@ void ServerEnvironment::init(int argc, char* argv[], const std::string& path_to_
    }
 
    // get server process id. This may be visualised in xecf. makes it easier to kill server
-   try { ecf_pid_ = boost::lexical_cast<std::string>(getpid());  }
-   catch (boost::bad_lexical_cast& e) {
+   try { ecf_pid_ = Pid::getpid();  }
+   catch (...) {
       throw ServerEnvironmentException("ServerEnvironment::ServerEnvironment:: Could not convert PID to a string\n");
    }
    // std::cout << "PID = " << ecf_pid_ << "\n";
@@ -147,6 +148,8 @@ void ServerEnvironment::init(int argc, char* argv[], const std::string& path_to_
    assert(!ecf_backup_checkpt_file_.empty());   // expect name of form "ecf.check.b"
    assert(!log_file_name.empty());              // expect name of form "ecf.log"
    assert(!ecf_white_list_file_.empty());       // expect name of form "ecf.lists"
+   assert(!ecf_passwd_file_.empty());           // expect name of form "ecf.passwd"
+
    std::string port = boost::lexical_cast<std::string>(serverPort_);
 
    // If path is absolute leave as is
@@ -173,6 +176,9 @@ void ServerEnvironment::init(int argc, char* argv[], const std::string& path_to_
    if (ecf_white_list_file_ == Str::WHITE_LIST_FILE())
       ecf_white_list_file_ = host_name_.prefix_host_and_port(port,ecf_white_list_file_);
 
+   if (ecf_passwd_file_ == Str::ECF_PASSWD())
+      ecf_passwd_file_ = host_name_.prefix_host_and_port(port,ecf_passwd_file_);
+
    // Change directory to ECF_HOME and check thats its accessible
    change_dir_to_ecf_home_and_check_accesibility();
 
@@ -305,6 +311,20 @@ bool ServerEnvironment::valid(std::string& errorMsg) const
  		return false;
 	}
 
+#ifdef ECF_SECURE_USER
+ 	if (!ecf_passwd_file_.empty() && fs::exists(ecf_passwd_file_)) {
+	   if (!passwd_file_.load(ecf_passwd_file_, debug(), errorMsg)) {
+ 	      std::cout << "Error: could not parse ECF_PASSWD file " << ecf_passwd_file_ << "\n" << errorMsg << "\n";
+ 	      return false;
+ 	   }
+ 	   if (!passwd_file_.check_at_least_one_user_with_host_and_port(serverHost_,the_port())) {
+         std::cout << "Error: password file " << ecf_passwd_file_;
+         std::cout << " does not contain any users, which match the host and port of this server\n";
+         return false;
+ 	   }
+ 	}
+#endif
+
 	// If the white list file is empty or does not exist, *ON* server start, its perfectly valid
 	// i.e any user is free to access the server
 	if (ecf_white_list_file_.empty()) return true;
@@ -337,7 +357,8 @@ void ServerEnvironment::variables(std::vector<std::pair<std::string,std::string>
 	   // The server sets these variable for use by the client. i.e when creating the jobs
 	   // The clients then uses them to communicate back with the server.
   	theRetVec.push_back( std::make_pair(Str::ECF_PORT(), the_port()) );
-	theRetVec.push_back( std::make_pair(std::string("ECF_NODE"), serverHost_) );
+   theRetVec.push_back( std::make_pair(Str::ECF_HOST(), serverHost_) );
+   theRetVec.push_back( std::make_pair(Str::ECF_NODE(), "%ECF_HOST%") );
 
 	theRetVec.push_back( std::make_pair(Str::ECF_HOME(), ecfHome_) );
 	if (Log::instance()) theRetVec.push_back( std::make_pair(std::string("ECF_LOG"), Log::instance()->path()) );
@@ -351,6 +372,9 @@ void ServerEnvironment::variables(std::vector<std::pair<std::string,std::string>
 	// ECF_CHECKINTERVAL
 
    theRetVec.push_back( std::make_pair(std::string("ECF_LISTS"), ecf_white_list_file_) ); // read only variable, changing it has no effect
+#ifdef ECF_SECURE_USER
+   theRetVec.push_back( std::make_pair(std::string("ECF_PASSWD"), ecf_passwd_file_) );    // read only variable, changing it has no effect
+#endif
 
 	// variables that can be overridden, in the suite definition
 	theRetVec.push_back( std::make_pair(std::string("ECF_JOB_CMD"), ecf_cmd_) );
@@ -386,17 +410,63 @@ bool ServerEnvironment::reloadWhiteListFile(std::string& errorMsg)
 	return white_list_file_.load(ecf_white_list_file_, debug(), errorMsg );
 }
 
+bool ServerEnvironment::reloadPasswdFile(std::string& errorMsg)
+{
+   if (debug()) cout << "ServerEnvironment::reloadPasswdFile:(" << ecf_passwd_file_ << ") CWD(" << fs::current_path().string() << ")\n";
+   if (ecf_passwd_file_.empty()) {
+      errorMsg += "The ECF_PASSWD file ";
+      errorMsg += ecf_passwd_file_;
+      errorMsg += " has not been specified.";
+      return false;
+   }
+   if (!fs::exists(ecf_passwd_file_)) {
+      errorMsg += "The ECF_PASSWD file ";
+      errorMsg += ecf_passwd_file_;
+      errorMsg += " does not exist. Server CWD : " + fs::current_path().string();
+      return false;
+   }
+
+   // Only override valid users if we successfully opened and parsed file
+   return passwd_file_.load(ecf_passwd_file_, debug(), errorMsg );
+}
 
-bool ServerEnvironment::authenticateReadAccess(const std::string& user) const
+bool ServerEnvironment::authenticateReadAccess(const std::string& user,const std::string& passwd) const
 {
+#ifdef ECF_SECURE_USER
+   if (!passwd_file_.authenticate(user,passwd)) return false;
+#endif
 	// if *NO* users specified then all users are valid
-	return white_list_file_.allow_read_access(user);
+	return white_list_file_.verify_read_access(user);
+}
+
+bool ServerEnvironment::authenticateReadAccess(const std::string& user,const std::string& passwd,const std::string& path) const
+{
+#ifdef ECF_SECURE_USER
+   if (!passwd_file_.authenticate(user,passwd)) return false;
+#endif
+   return white_list_file_.verify_read_access(user,path);
+}
+
+bool ServerEnvironment::authenticateReadAccess(const std::string& user,const std::string& passwd,const std::vector<std::string>& paths) const
+{
+#ifdef ECF_SECURE_USER
+   if (!passwd_file_.authenticate(user,passwd)) return false;
+#endif
+   return white_list_file_.verify_read_access(user,paths);
 }
 
 bool ServerEnvironment::authenticateWriteAccess(const std::string& user) const
 {
    // if *NO* users specified then all users have write access
-   return white_list_file_.allow_write_access(user);
+   return white_list_file_.verify_write_access(user);
+}
+bool ServerEnvironment::authenticateWriteAccess(const std::string& user,const std::string& path) const
+{
+   return white_list_file_.verify_write_access(user,path);
+}
+bool ServerEnvironment::authenticateWriteAccess(const std::string& user,const std::vector<std::string>& paths) const
+{
+   return white_list_file_.verify_write_access(user,paths);
 }
 
 // ============================================================================================
@@ -430,8 +500,9 @@ void ServerEnvironment::read_config_file(std::string& log_file_name,const std::s
          ("ECF_URL_BASE",  po::value<std::string>(&urlBase_)->default_value(Ecf::URL_BASE()), "Defines url base.")
          ("ECF_URL",       po::value<std::string>(&url_)->default_value(Ecf::URL()), "The default url.")
          ("ECF_MICRODEF",  po::value<std::string>(&ecf_micro_)->default_value(Ecf::MICRO()), "Preprocessor character for variable substitution and including files")
-         ("ECF_LISTS",     po::value<std::string>(&ecf_white_list_file_)->default_value(Str::WHITE_LIST_FILE()), "Path name to file the list valid users and thier access rights")
-         ("ECF_TASK_THRESHOLD",po::value<int>(&the_task_threshold)->default_value(JobProfiler::task_threshold_default()),"The defaults thresholfs when profiling job generation")
+         ("ECF_LISTS",     po::value<std::string>(&ecf_white_list_file_)->default_value(Str::WHITE_LIST_FILE()), "Path name to file the list valid users and their access rights")
+         ("ECF_PASSWD",    po::value<std::string>(&ecf_passwd_file_)->default_value(Str::ECF_PASSWD()), "Path name to passwd file")
+         ("ECF_TASK_THRESHOLD",po::value<int>(&the_task_threshold)->default_value(JobProfiler::task_threshold_default()),"The defaults thresholds when profiling job generation")
          ;
 
       ifstream ifs(path_to_config_file.c_str());
@@ -502,6 +573,9 @@ void ServerEnvironment::read_environment_variables(std::string& log_file_name)
 	char* smsWhiteListFile = getenv("ECF_LISTS");
 	if (smsWhiteListFile) ecf_white_list_file_ = smsWhiteListFile;
 
+   char* passwd = getenv("ECF_PASSWD");
+   if (passwd) ecf_passwd_file_ = passwd;
+
 	if (getenv("ECF_DEBUG_SERVER")) {
 		debug_ = true; // can also be enabled via --debug option
 	}
@@ -568,6 +642,9 @@ std::string ServerEnvironment::dump() const
    ss << "check pt save time alarm " << checkpt_save_time_alarm_ << "\n";
    ss << "Job generation " << jobGeneration_ << "\n";
    ss << "Server host name " << serverHost_ << "\n";
+#ifdef ECF_SECURE_USER
+   ss << "ECF_PASSWD = " << ecf_passwd_file_ << "\n";
+#endif
 #ifdef ECFLOW_MT
    ss << "No of threads used by server " << threads_ << "\n";
 #endif
diff --git a/Server/src/ServerEnvironment.hpp b/Server/src/ServerEnvironment.hpp
index 1d692eb..f73ad87 100644
--- a/Server/src/ServerEnvironment.hpp
+++ b/Server/src/ServerEnvironment.hpp
@@ -32,8 +32,9 @@
 #include <boost/asio.hpp>
 
 #include "Host.hpp"
-#include "WhiteListFile.hpp"
 #include "CheckPt.hpp"
+#include "WhiteListFile.hpp"
+#include "PasswdFile.hpp"
 
 // Added ServerEvinronmentException so that it can be in the same scope as server
 // in ServerMain. Previously we had a separate try block
@@ -127,7 +128,8 @@ public:
 	/// Some of these variables hold environment variables
 	/// Note:: additional variable are created for use by clients, i.e like
 	///        ECF_PORT(jobs, server, client)
-	///        ECF_NODE(jobs).   ECF_NODE is the server machine host name
+   ///        ECF_NODE(jobs).   ECF_NODE is the server machine host name  /* OLD NAME, TOBE DEPRECATED*/
+   ///        ECF_HOST(jobs).   ECF_HOST is the server machine host name
   	void variables(std::vector<std::pair<std::string,std::string> >&) const;
 
 	/// Ask the server to reload file the hold list of users and their access rights
@@ -140,6 +142,8 @@ public:
 	/// If errors arise the exist user still stay in affect
   	bool reloadWhiteListFile(std::string& errorMsg);
 
+  	bool reloadPasswdFile(std::string& errorMsg);
+
 #ifdef ECFLOW_MT
   	// returns the numbers threads to be used by the server.
    size_t threads() const { return threads_; };
@@ -152,8 +156,12 @@ public:
 	/// At the moment we will only implement options a/ and b/
 	//
 	/// Returns true if the given user has access to the server, false otherwise
-	bool authenticateReadAccess(const std::string& user)const;
+   bool authenticateReadAccess(const std::string& user,const std::string& passwd)const;
+   bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::string& path)const;
+   bool authenticateReadAccess(const std::string& user,const std::string& passwd,const std::vector<std::string>& paths)const;
  	bool authenticateWriteAccess(const std::string& user) const;
+   bool authenticateWriteAccess(const std::string& user,const std::string& path)const;
+   bool authenticateWriteAccess(const std::string& user,const std::vector<std::string>& paths)const;
 
 	/// return true if help option was selected
    bool help_option() const  { return help_option_; }
@@ -205,6 +213,10 @@ private:
 	std::string ecf_micro_;
    std::string ecf_white_list_file_;
    mutable WhiteListFile white_list_file_;
+
+   std::string ecf_passwd_file_;      // Only used if ECF_SECURE_USER defined
+   mutable PasswdFile passwd_file_;   // Only used if ECF_SECURE_USER defined
+
 	boost::asio::ip::tcp tcp_protocol_;      // defaults to IPv4 TCP protocol
 	friend class ServerOptions;
 };
diff --git a/Server/test/TestServer1.cpp b/Server/test/TestServer1.cpp
index df7c8c9..e4d1042 100644
--- a/Server/test/TestServer1.cpp
+++ b/Server/test/TestServer1.cpp
@@ -66,9 +66,18 @@ public:
    virtual void shutdown() { Server::shutdown(); }
    virtual void halted() { Server::halted(); }
    virtual void restart() { Server::restart(); }
+
    virtual bool reloadWhiteListFile(std::string& errorMsg) { return Server::reloadWhiteListFile(errorMsg);}
-   virtual bool authenticateReadAccess(const std::string& user) { return Server::authenticateReadAccess(user); }
+   virtual bool reloadPasswdFile(std::string& errorMsg) { return Server::reloadPasswdFile(errorMsg);}
+
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd) { return Server::authenticateReadAccess(user,passwd); }
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd, const std::string& path) { return Server::authenticateReadAccess(user,passwd,path); }
+   virtual bool authenticateReadAccess(const std::string& user,const std::string& passwd, const std::vector<std::string>& paths){ return Server::authenticateReadAccess(user,passwd,paths); }
+
    virtual bool authenticateWriteAccess(const std::string& user) { return Server::authenticateWriteAccess(user); }
+   virtual bool authenticateWriteAccess(const std::string& user, const std::string& path) { return Server::authenticateWriteAccess(user,path); }
+   virtual bool authenticateWriteAccess(const std::string& user, const std::vector<std::string>& paths){ return Server::authenticateWriteAccess(user,paths); }
+
    virtual bool lock(const std::string& user) { return Server::lock(user); }
    virtual void unlock() { Server::unlock();}
    virtual const std::string& lockedUser() const { return Server::lockedUser(); }
diff --git a/Server/test/TestServerEnvironment.cpp b/Server/test/TestServerEnvironment.cpp
index c0b9d08..f281526 100644
--- a/Server/test/TestServerEnvironment.cpp
+++ b/Server/test/TestServerEnvironment.cpp
@@ -171,8 +171,12 @@ BOOST_AUTO_TEST_CASE( test_server_config_file )
    expected_variables.push_back( "ECF_VERSION" );
    expected_variables.push_back( "ECF_LISTS" );
    expected_variables.push_back(  Str::ECF_PORT() );
-   expected_variables.push_back( "ECF_NODE");
+   expected_variables.push_back(  Str::ECF_NODE() );
+   expected_variables.push_back(  Str::ECF_HOST() );
    expected_variables.push_back( "ECF_INTERVAL");
+#ifdef ECF_SECURE_USER
+   expected_variables.push_back( "ECF_PASSWD");
+#endif
 
    std::vector<std::pair<std::string,std::string> > server_vars;
    serverEnv.variables(server_vars);
@@ -262,6 +266,19 @@ BOOST_AUTO_TEST_CASE( test_server_config_file )
           BOOST_CHECK_MESSAGE(p.second == expected,"for ECF_MICRODEF expected " <<  expected << " but found " << p.second);
           continue;
       }
+
+#ifdef ECF_SECURE_USER
+      if (string("ECF_PASSWD") == p.first) {
+
+         Host host;
+         std::string port = Str::DEFAULT_PORT_NUMBER();
+         if (getenv("ECF_PORT")) port = getenv("ECF_PORT");
+         std::string expected = host.prefix_host_and_port(port,Str::ECF_PASSWD());
+
+         BOOST_CHECK_MESSAGE(p.second == expected,"for ECF_PASSWD expected " <<  expected << " but found " << p.second);
+         continue;
+      }
+#endif
    }
 
    // tear down remove the log file created by ServerEnvironment
@@ -296,8 +313,12 @@ BOOST_AUTO_TEST_CASE( test_server_environment_variables )
    expected_variables.push_back( "ECF_VERSION" );
    expected_variables.push_back( "ECF_LISTS" );
    expected_variables.push_back(  Str::ECF_PORT() );
-   expected_variables.push_back( "ECF_NODE");
+   expected_variables.push_back(  Str::ECF_NODE() );
+   expected_variables.push_back(  Str::ECF_HOST() );
    expected_variables.push_back( "ECF_INTERVAL");
+#ifdef ECF_SECURE_USER
+   expected_variables.push_back( "ECF_PASSWD");
+#endif
 
    std::vector<std::pair<std::string,std::string> > server_vars;
    serverEnv.variables(server_vars);
diff --git a/Test/CMakeLists.txt b/Test/CMakeLists.txt
index 50f15a9..8590176 100644
--- a/Test/CMakeLists.txt
+++ b/Test/CMakeLists.txt
@@ -54,18 +54,19 @@ if (ENABLE_ALL_TESTS)
 	./TestWhyCmd.cpp
 	./Test_Time.cpp
 	)
+	
+	# if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 	ecbuild_add_test( TARGET s_test
 	                  BOOST
 	                  SOURCES  ${test_srcs}
-	                  LIBS     libharness
+	                  LIBS     libharness ${OPENSSL_LIBRARIES}
 	                  TEST_DEPENDS s_client
 	                )
 	
-	
 	ecbuild_add_test( TARGET  s_test_zombies
 	                  BOOST
 	                  SOURCES   ./TestZombies.cpp
-	                  LIBS      libharness 
+	                  LIBS      libharness ${OPENSSL_LIBRARIES}
 	                  TEST_DEPENDS s_test
 	                )
 	
diff --git a/Test/Jamfile.jam b/Test/Jamfile.jam
index 5830e6e..18ed2a4 100644
--- a/Test/Jamfile.jam
+++ b/Test/Jamfile.jam
@@ -70,6 +70,7 @@ exe s_test : [ glob Test*.cpp : TestSingle.cpp TestZombies.cpp ]
            /site-config//boost_test
          : <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
  	     ;
  	     
 # Split because this was more error prone, Now stabilised all all platforms ?
@@ -90,6 +91,7 @@ exe s_test_zombies : [ glob TestZombies.cpp  ]
            /site-config//boost_test
          : <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
         ;
 
 # use for standalone testing
@@ -110,6 +112,5 @@ exe singletest : [ glob TestSingle.cpp  ]
            /site-config//boost_test
          : <include>../Base/test 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
  	     ;
- 
- 
\ No newline at end of file
diff --git a/Test/TestEcfNoScriptCmd.cpp b/Test/TestEcfNoScriptCmd.cpp
new file mode 100644
index 0000000..8416719
--- /dev/null
+++ b/Test/TestEcfNoScriptCmd.cpp
@@ -0,0 +1,84 @@
+//============================================================================
+// Name        :
+// Author      : Avi
+// Revision    : $Revision: #25 $
+//
+// Copyright 2009-2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+// Description :
+//============================================================================
+#include "ServerTestHarness.hpp"
+
+#include "Defs.hpp"
+#include "Suite.hpp"
+#include "Family.hpp"
+#include "Task.hpp"
+#include "DurationTimer.hpp"
+
+#include "boost/filesystem/operations.hpp"
+#include "boost/filesystem/path.hpp"
+#include <boost/test/unit_test.hpp>
+#include <boost/lexical_cast.hpp>
+
+#include <iostream>
+#include <fstream>
+#include <stdlib.h>
+
+using namespace std;
+using namespace ecf;
+namespace fs = boost::filesystem;
+
+BOOST_AUTO_TEST_SUITE( TestSuite )
+
+BOOST_AUTO_TEST_CASE( test_ecf_no_script )
+{
+   // This test is used to case where we ONLY want to execute ECF_JOB_CMD WITHOUT processing .ecf script.
+   // For this ECF_NO_SCRIPT must be set to any value.
+   // The ECF_JOB_CMD must then encompass ecflow_client --init/complete and the environment settings
+   // Additionally the user can see the output by directing the word done to ECF_JOBOUT
+   // Although ServerTestHarness creates the .ecf file, they are ignored when ECF_NO_SCRIPT is specified.
+
+   DurationTimer timer;
+   cout << "Test:: ...test_ecf_no_script " << flush;
+   TestClean clean_at_start_and_end;
+
+   // Create the defs file corresponding to the text below
+   // ECF_HOME variable is automatically added by the test harness.
+   // ECF_INCLUDE variable is automatically added by the test harness.
+   // SLEEPTIME variable is automatically added by the test harness.
+   // ECF_CLIENT_EXE_PATH variable is automatically added by the test harness.
+   //                     This is substituted in sms includes
+   //                     Allows test to run without requiring installation
+
+   //# Note: we have to use relative paths, since these tests are relocatable
+   // suite test_ecf_no_script_cmd
+   //      edit ECF_NO_SCRIPT 1
+   //      edit ECF_JOB_CMD "export ECF_PASS=%ECF_PASS%;...."
+   //      task t1
+   //      task t2
+   //     endfamily
+   // endsuite
+   Defs theDefs;
+   {
+      suite_ptr suite = theDefs.add_suite("test_ecf_no_script");
+      suite->add_variable("ECF_NO_SCRIPT","1");
+      std::string ecf_job_cmd="export ECF_PASS=%ECF_PASS%;export ECF_PORT=%ECF_PORT%;export ECF_HOST=%ECF_HOST%;export ECF_NAME=%ECF_NAME%;export ECF_TRYNO=%ECF_TRYNO%;";
+      ecf_job_cmd += "%ECF_CLIENT_EXE_PATH% --init=$$; echo 'test test_ecf_no_script' >> %ECF_JOBOUT%; %ECF_CLIENT_EXE_PATH% --complete";
+      suite->add_variable("ECF_JOB_CMD",ecf_job_cmd);
+      suite->add_task("t1")->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      suite->add_task("t2")->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      //cout << theDefs;
+   }
+
+   ServerTestHarness serverTestHarness;
+   serverTestHarness.run(theDefs, ServerTestHarness::testDataDefsLocation("test_ecf_no_script.def") );
+
+   cout << timer.duration() << " update-calendar-count(" << serverTestHarness.serverUpdateCalendarCount() << ")\n";
+}
+
+BOOST_AUTO_TEST_SUITE_END()
diff --git a/Test/TestLate.cpp b/Test/TestLate.cpp
index 74774ad..553b824 100644
--- a/Test/TestLate.cpp
+++ b/Test/TestLate.cpp
@@ -87,8 +87,7 @@ BOOST_AUTO_TEST_CASE( test_late_hierarchically )
    // ECFLOW-610
    DurationTimer timer;
    cout << "Test:: ...test_late_hierarchically " << flush;
-   char* the_env = getenv("ECF_DISABLE_TEST_FOR_OLD_SERVERS");
-   if (the_env) {
+   if (getenv("ECF_DISABLE_TEST_FOR_OLD_SERVERS")) {
       std::cout << "\n    Disable test_late_hierarchically for old server *************************************************************\n";
       return;
    }
diff --git a/Test/TestTrigger.cpp b/Test/TestTrigger.cpp
index 691be9a..faabff5 100644
--- a/Test/TestTrigger.cpp
+++ b/Test/TestTrigger.cpp
@@ -89,4 +89,66 @@ BOOST_AUTO_TEST_CASE( test_triggers_and_meters )
 	cout << timer.duration() << " update-calendar-count(" << serverTestHarness.serverUpdateCalendarCount() << ")\n";
 }
 
+
+BOOST_AUTO_TEST_CASE( test_triggers_with_limits )
+{
+   if (getenv("ECF_DISABLE_TEST_FOR_OLD_SERVERS")) {
+      std::cout << "\n    Disable test_triggers_with_limits for old server ************************************************\n";
+      return;
+   }
+
+   // One family is in the limits, another is without. Bit of hack
+   // But shows use of limits in triggers
+   DurationTimer timer;
+   cout << "Test:: ...test_triggers_with_limits " << flush;
+   TestClean clean_at_start_and_end;
+
+   //# Note: we have to use relative paths, since these tests are relocatable
+   //suite test_triggers_with_limits
+   // limit limit 10
+   // edit SLEEPTIME 1
+   // edit ECF_INCLUDE $ECF_HOME/includes
+   // family family
+   //      inlimit /test_triggers_and_meters:limit 3
+   //      task model
+   //      task t0
+   //      task t1
+   //      task t2
+   //  endfamily
+   //  family other
+   //      trigger /test_triggers_with_limits:limit >1
+   //      task t1
+   //      task t2
+   //  endfamily
+   //endsuite
+   Defs theDefs;
+   {
+      suite_ptr suite = theDefs.add_suite( "test_triggers_with_limits");
+      suite->addLimit(Limit("limit",10));
+      suite->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      family_ptr fam = suite->add_family( "family");
+      fam->addInLimit(InLimit("limit","/test_triggers_with_limits",3));
+      fam->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      int taskSize = 10;
+      for(int i=0; i < taskSize; i++) {
+         task_ptr task = fam->add_task( "t" + boost::lexical_cast<std::string>(i) );
+         task->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      }
+
+      family_ptr fam2 = suite->add_family( "other");
+      fam2->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      fam2->add_trigger("/test_triggers_with_limits:limit > 1");
+      for(int i=0; i < 3; i++) {
+         task_ptr task = fam2->add_task( "t" + boost::lexical_cast<std::string>(i) );
+         task->addVerify( VerifyAttr(NState::COMPLETE,1) );
+      }
+   }
+
+   // The test harness will create corresponding directory structure & default ecf file
+   ServerTestHarness serverTestHarness;
+   serverTestHarness.run(theDefs,ServerTestHarness::testDataDefsLocation( "test_triggers_and_meters.def"));
+
+   cout << timer.duration() << " update-calendar-count(" << serverTestHarness.serverUpdateCalendarCount() << ")\n";
+}
+
 BOOST_AUTO_TEST_SUITE_END()
diff --git a/Test/Test_Time.cpp b/Test/Test_Time.cpp
index f474443..01e5263 100644
--- a/Test/Test_Time.cpp
+++ b/Test/Test_Time.cpp
@@ -96,6 +96,70 @@ BOOST_AUTO_TEST_CASE( test_single_real_time )
    cout << timer.duration() << " update-calendar-count(" << serverTestHarness.serverUpdateCalendarCount() << ")\n";
 }
 
+BOOST_AUTO_TEST_CASE( test_single_time_trigger )
+{
+   if (getenv("ECF_DISABLE_TEST_FOR_OLD_SERVERS")) {
+      std::cout << "\n    Disable test_single_time_trigger for old server ************************************************\n";
+      return;
+   }
+
+   // ECFLOW-833
+   DurationTimer timer;
+   cout << "Test:: ...test_single_time_trigger " << flush;
+   TestClean clean_at_start_and_end;
+
+   // Create the defs file corresponding to the text below
+   // ECF_HOME variable is automatically added by the test harness.
+   // ECF_INCLUDE variable is automatically added by the test harness.
+   // SLEEPTIME variable is automatically added by the test harness.
+   // ECF_CLIENT_EXE_PATH variable is automatically added by the test harness.
+   //                     This is substituted in sms includes
+   //                     Allows test to run without requiring installation
+
+   //# Note: we have to use relative paths, since these tests are relocatable
+   //suite suite
+   // edit SLEEPTIME 1
+   // edit ECF_INCLUDE $ECF_HOME/includes
+   //  clock real <todays date>
+   // family family
+   //    task t1
+   //         trigger /suite:TIME == 1001
+   //    endfamily
+   //endsuite
+   Defs theDefs;
+   {
+      // Initialise clock with fixed date and time, then create a time attribute
+      // with todays time + minute
+      // Avoid adding directly to TimeSlot
+      // i.e if local time is 9:59 and we create a TimeSlot like
+      //       task->addTime( ecf::TimeAttr( ecf::TimeSlot(theTm.tm_hour,theTm.tm_min+3) )  );
+      // The the minute will be 62, which is illegal and will not parse
+      boost::posix_time::ptime theLocalTime = boost::posix_time::ptime(date(2010,6,21),time_duration(10,0,0));
+
+      // For each 2 seconds of poll in the server update calendar by 1 minute
+      // Note: if we use 1 seconds poll to update calendar by 1 minute, then
+      //       we will find that state change happens at job submission interval,
+      //       and hence skews time series.  Which can leave state in a queued state,
+      //       and hence test never completes
+      suite_ptr suite = theDefs.add_suite("test_single_time_trigger");
+      ClockAttr clockAttr(theLocalTime,false);
+      suite->addClock( clockAttr );
+
+      family_ptr fam = suite->add_family("family");
+      task_ptr task = fam->add_task("t");
+      std::stringstream ss; ss << "/test_single_time_trigger:TIME == " << "1001";
+      task->add_trigger( ss.str());
+      task->addVerify( VerifyAttr(NState::COMPLETE,1) );      // task should complete 1 times
+   }
+
+   // The test harness will create corresponding directory structure
+   // and populate with standard ecf files.
+   ServerTestHarness serverTestHarness;
+   serverTestHarness.run(theDefs,ServerTestHarness::testDataDefsLocation("test_single_time_trigger.def"));
+
+   cout << timer.duration() << " update-calendar-count(" << serverTestHarness.serverUpdateCalendarCount() << ")\n";
+}
+
 BOOST_AUTO_TEST_CASE( test_time_multiple_single_slot )
 {
    DurationTimer timer;
diff --git a/Test/data/.gitignore b/Test/data/.gitignore
index bc8249c..809f78e 100644
--- a/Test/data/.gitignore
+++ b/Test/data/.gitignore
@@ -4,3 +4,6 @@
 /ECF_HOME_release_gnu/
 /ECF_HOME_release_intel/
 /ECF_HOME_debug_gnu/
+/ECF_HOME_release_gnu_python3/
+/ECF_HOME_release_gnu_shared/
+/ECF_HOME_release_gnu_ssl/
diff --git a/Test/data/includes/head.h b/Test/data/includes/head.h
index 9eb3728..983f06a 100644
--- a/Test/data/includes/head.h
+++ b/Test/data/includes/head.h
@@ -11,8 +11,9 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF
 
-export ECF_PORT=%ECF_PORT%    # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The ecflow server that issued the task
+export ECF_PORT=%ECF_PORT%    # The port number on the ecflow server
+export ECF_HOST=%ECF_HOST:%   # The hostname where the server is running
+export ECF_NODE=%ECF_NODE%    # *TEMP* Needed for migration tests, since *OLD* servers( < 4.5.0) dont have ECF_HOST
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/Test/src/TestFixture.cpp b/Test/src/TestFixture.cpp
index 3be8dd2..d4bd79a 100644
--- a/Test/src/TestFixture.cpp
+++ b/Test/src/TestFixture.cpp
@@ -51,9 +51,9 @@ namespace fs = boost::filesystem;
 // ************************************************************************************************
 // For test purpose the server can be started:
 // 	1/ By this test fixture
-//  2/ Externally but on the same machine. by defining env variable: export ECF_NODE=localhost
+//  2/ Externally but on the same machine. by defining env variable: export ECF_HOST=localhost
 // 	   WHY? To test for memory leak. (i.e. with valgrind)
-//  3/ Externally but on a different platform. by defining env variable: export ECF_NODE=itanium
+//  3/ Externally but on a different platform. by defining env variable: export ECF_HOST=itanium
 //     In this case we NEED to copy the test data, so that it is
 //     accessible by the client AND server
 //
@@ -98,7 +98,7 @@ void TestFixture::init(const std::string& project_test_dir)
    // ********************************************************
    PrintStyle::setStyle(PrintStyle::STATE);
 
-   // Let first see if we need do anything. If ECF_NODE is specified (ie the name
+   // Let first see if we need do anything. If ECF_HOST is specified (ie the name
    // of the machine, which has the ecflow server), only then do we need to do anything.
    // The server must have access to the file system specified by ECF_HOME.
    // This becomes an issue when the server is on a different machine
@@ -143,17 +143,27 @@ void TestFixture::init(const std::string& project_test_dir)
    else if (!host_.empty() && host_ == Str::LOCALHOST()) {
 
       client().set_host_port(host_,port_);
-      std::cout << "   EXTERNAL SERVER running on _SAME_ PLATFORM. Assuming " << host_ << ":" << port_ << "\n";
+      std::cout << "   EXTERNAL SERVER running on _SAME_ PLATFORM. Assuming " << client().host() << ":" << client().port() << "\n";
+
+      // Print the server stats before we start + checks if it is up and running::
+      client().set_cli(true); // so server stats are written to standard out
+      if (client().stats() != 0) {
+         std::cout << "   ClientInvoker " << CtsApi::stats() << " failed: " << client().errorMsg() << ". Is the server running?\n";
+         assert(false);
+      }
+      client().set_cli(false);
 
       // log file may have been deleted, by previous tests. Create a new log file
       std::string the_log_file = TestFixture::pathToLogFile();
       if ( !fs::exists( the_log_file )) {
          std::cout << "   Log file " << the_log_file << " does NOT exist, attempting to recreate\n";
          std::cout << "   Creating new log(via remote server) file " << the_log_file  << "\n";
-         client().new_log( the_log_file );
-         client().logMsg("Created new log file. msg sent to force new log file to be written to disk");
+         if ( 0 == client().new_log( the_log_file )) {
+            client().logMsg("Created new log file. msg sent to force new log file to be written to disk");
+         }
+         else  cout << "   Log file " << TestFixture::pathToLogFile() << " creation failed " << client().errorMsg() << "\n";
       }
-      else std::cout << "   Log file " << the_log_file << " already exist\n";
+      else cout << "   Log file " << the_log_file << " already exists\n";
    }
    else {
       // For local host start by removing log file. Server invocation should create a new log file
@@ -184,7 +194,7 @@ void TestFixture::init(const std::string& project_test_dir)
       theServerInvokePath += "&";
       if ( system( theServerInvokePath.c_str() ) != 0)  assert(false); // " Server invoke failed "
 
-      std::cout << "   ECF_NODE not specified, starting LOCAL " << theServerInvokePath << "\n";
+      std::cout << "   ECF_HOST not specified, starting LOCAL " << theServerInvokePath << "\n";
    }
 
    /// Ping the server to see if its running
@@ -192,22 +202,27 @@ void TestFixture::init(const std::string& project_test_dir)
    /// Either way, we wait for 60 seconds for server, for it to respond to pings
    /// This is important when server is started locally. We must wait for it to come alive.
    if (!client().wait_for_server_reply()) {
-      cout << "Ping server on " << host_ << Str::COLON() << port_ << " failed. Is the server running ? " << client().errorMsg() << "\n";
+      cout << "   Ping server on " << client().host() << Str::COLON() << client().port() << " failed. Is the server running ? " << client().errorMsg() << "\n";
       assert(false);
    }
+   cout << "   Ping OK: server running on:  " << client().host() << Str::COLON() << client().port() << "\n";
 
    // Log file must exist, otherwise test will not work. Log file required for comparison
    if ( !fs::exists( TestFixture::pathToLogFile() )) {
-      cout << "Log file " << TestFixture::pathToLogFile() << " does not exist\n";
+      cout << "   Log file " << TestFixture::pathToLogFile() << " does not exist *************************** \n";
       assert(false);
    }
+
+   // Check host and port match
+   assert(host_ == client().host());
+   assert(port_ == client().port());
 }
 
 
 TestFixture::~TestFixture()
 {
 	// Note: Global fixture Destructor can not use BOOST macro
-  	std::cout << "TestFixture::~TestFixture() " << host_ << ":" << port_ << "\n";
+  	std::cout << "TestFixture::~TestFixture() " << client().host() << ":" << client().port() << "\n";
 
    // destructors should not allow exception propagation
    try {
@@ -369,6 +384,10 @@ std::string TestFixture::local_ecf_home()
 
 #endif
 
+   // Allow post-fix to be added, to allow test to run in parallel
+   char* theEnv = getenv("TEST_ECF_HOME_POSTFIX");
+   if (theEnv) rel_path += std::string(theEnv);
+
    std::string absolute_path = File::test_data(rel_path,project_test_dir_);
    return absolute_path;
 }
diff --git a/Test/src/TestFixture.hpp b/Test/src/TestFixture.hpp
index 2515506..929e0b1 100644
--- a/Test/src/TestFixture.hpp
+++ b/Test/src/TestFixture.hpp
@@ -52,7 +52,7 @@ struct TestFixture {
 	/// that was created in the constructor
 	static std::string smshome();
 
-	/// Will end up checking to see if ECF_NODE is specified. This specifies the name
+	/// Will end up checking to see if ECF_HOST is specified. This specifies the name
 	/// of the machine that is running the server. Otherwise return true
 	static bool serverOnLocalMachine();
 
diff --git a/Test/src/ZombieUtill.cpp b/Test/src/ZombieUtill.cpp
index bbca69e..6870c64 100644
--- a/Test/src/ZombieUtill.cpp
+++ b/Test/src/ZombieUtill.cpp
@@ -35,7 +35,9 @@ void ZombieUtil::test_clean_up(int timeout) {
    TestFixture::client().zombieGet();
    std::vector<Zombie> zombies = TestFixture::client().server_reply().zombies();
    if (!zombies.empty()) {
-      cout << "\n***** test_clean_up: found\n" << Zombie::pretty_print( zombies , 9) << "\n, attempting to *fob* then *remove* ...\n";
+      cout << "\nZombieUtil::test_clean_up: Found Zombies:\n";
+      cout << "Client Environment:\n" << TestFixture::client().to_string() << "\n";
+      cout << Zombie::pretty_print( zombies , 9) << "\n, attempting to *fob* then *remove* ...\n";
 
       int no_fobed = do_zombie_user_action(User::FOB, zombies.size(), timeout, false /* don't fail if it takes to long */);
 
diff --git a/Test/test.ddoc b/Test/test.ddoc
index bee6cb1..b4b34bc 100644
--- a/Test/test.ddoc
+++ b/Test/test.ddoc
@@ -87,7 +87,7 @@ $SCRATCH  : This specifies the location of the file system shared between the
             client and server. The test data that resides on local linux machine
             is copied over.
                
- $ECF_NODE : This specfies the machine name on which the server is running.
+ $ECF_HOST : This specfies the machine name on which the server is running.
             The server must be running first.
             
  $ECF_LOG : specifies the path to log file created by the server.
diff --git a/VERSION.cmake b/VERSION.cmake
index 5b14724..c42a86e 100644
--- a/VERSION.cmake
+++ b/VERSION.cmake
@@ -1,7 +1,7 @@
 set( ECFLOW_RELEASE  "4" )
-set( ECFLOW_MAJOR    "1" )
+set( ECFLOW_MAJOR    "5" )
 set( ECFLOW_MINOR    "0" )
 
 # use this form to be consistent with other packages,+ allow standard extraction of version from scripts
 # could replaced "4.0.8" with "${ECFLOW_RELEASE}.${ECFLOW_MAJOR}.${ECFLOW_MINOR}"
-set( ${PROJECT_NAME}_VERSION_STR  "4.1.0" )
+set( ${PROJECT_NAME}_VERSION_STR  "4.5.0" )
diff --git a/Viewer/ServerListSyncDialog.hpp b/Viewer/ServerListSyncDialog.hpp
new file mode 100644
index 0000000..9ae0fcb
--- /dev/null
+++ b/Viewer/ServerListSyncDialog.hpp
@@ -0,0 +1,5 @@
+#ifndef SERVERLISTSYNCDIALOG_HPP
+#define SERVERLISTSYNCDIALOG_HPP
+
+#endif // SERVERLISTSYNCDIALOG_HPP
+
diff --git a/Viewer/images/dock_chain_closed.svg b/Viewer/images/dock_chain_closed.svg
new file mode 100644
index 0000000..d598117
--- /dev/null
+++ b/Viewer/images/dock_chain_closed.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="dock_chain_closed.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient4294">
+      <stop
+         style="stop-color:#d5e5ff;stop-opacity:1;"
+         offset="0"
+         id="stop4296" />
+      <stop
+         style="stop-color:#edf7ff;stop-opacity:1;"
+         offset="1"
+         id="stop4298" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4294"
+       id="linearGradient4300"
+       x1="26.98015"
+       y1="1035.3843"
+       x2="15.10096"
+       y2="1024.985"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4294"
+       id="linearGradient4302"
+       x1="17.446945"
+       y1="1045.2266"
+       x2="5.7556653"
+       y2="1034.0756"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.962652"
+     inkscape:cx="5.9452798"
+     inkscape:cy="16.208218"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1140"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1020.3622)">
+    <path
+       style="fill:url(#linearGradient4302);stroke:none;fill-opacity:1"
+       d="m 14.238879,1035.5941 c -2.149582,2.0051 -5.3129902,4.9843 -6.2730801,6.4085 -0.8461756,1.2551 1.6972835,3.8567 2.9714591,2.6557 1.053821,-0.9933 3.081515,-2.7712 3.081515,-2.7712 0,0 1.344582,0.5074 2.047554,0.6043 0.650939,0.09 1.969417,-0.027 1.969417,-0.027 0,0 -3.158543,4.3507 -5.447676,5.3114 -5.2387886,2.2619 -9.646468,-2.4582 -7.7037827,-7.3321 0.6407728,-1.4569 5.6121857,-6.2203 6.9884327,-7.4478 1.050497,-0.9369 3.64451,-1.1504 4.952432,-0.6928 0.505166,0.1768 2.51295 [...]
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="csscscccsscc" />
+    <path
+       sodipodi:nodetypes="csscscccsscc"
+       inkscape:connector-curvature="0"
+       id="path3774"
+       d="m 18.121043,1037.5619 c 2.149565,-2.0052 5.313042,-4.9843 6.273108,-6.4084 0.84614,-1.2552 -1.697289,-3.8569 -2.971463,-2.6559 -1.05379,0.9934 -3.081524,2.7713 -3.081524,2.7713 0,0 -1.344619,-0.5075 -2.047585,-0.6043 -0.650877,-0.089 -1.969411,0.027 -1.969411,0.027 0,0 3.158558,-4.3507 5.447697,-5.3116 5.238818,-2.2619 9.646516,2.4583 7.703808,7.3323 -0.640775,1.4566 -5.612215,6.2203 -6.988457,7.4476 -1.050452,0.9369 -3.644475,1.1505 -4.95238,0.6927 -0.505242,-0.1766 -2.513036, [...]
+       style="fill:url(#linearGradient4300);stroke:none;fill-opacity:1" />
+  </g>
+</svg>
diff --git a/Viewer/images/dock_chain_open.svg b/Viewer/images/dock_chain_open.svg
new file mode 100644
index 0000000..2d3aed8
--- /dev/null
+++ b/Viewer/images/dock_chain_open.svg
@@ -0,0 +1,109 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="dock_chain_open.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient4304">
+      <stop
+         style="stop-color:#f7c56f;stop-opacity:1;"
+         offset="0"
+         id="stop4306" />
+      <stop
+         style="stop-color:#fff2df;stop-opacity:1;"
+         offset="1"
+         id="stop4308" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4304"
+       id="linearGradient4310"
+       x1="26.414892"
+       y1="1038.3674"
+       x2="12.845695"
+       y2="1024.272"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4304"
+       id="linearGradient4312"
+       x1="16.945774"
+       y1="1046.0336"
+       x2="5.7570815"
+       y2="1034.444"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.962652"
+     inkscape:cx="20.412575"
+     inkscape:cy="16.302187"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1140"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-1020.3622)">
+    <path
+       style="fill:url(#linearGradient4312);stroke:none;fill-opacity:1"
+       d="m 12.422138,1036.0953 c -2.019763,2.0963 -2.750796,2.5864 -4.456339,5.0303 -0.84612,1.2551 1.697283,3.8567 2.971459,2.6557 1.053821,-0.9933 4.710317,-4.4627 4.710317,-4.4627 l 2.513461,2.6447 c 0,0 -3.283835,3.9748 -5.572968,4.9355 -5.238789,2.2619 -9.646468,-2.4582 -7.703783,-7.3321 0.640773,-1.4569 3.607507,-4.5288 4.983754,-5.7563 z"
+       id="path3772"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccscccccc" />
+    <path
+       sodipodi:nodetypes="csscccccc"
+       inkscape:connector-curvature="0"
+       id="path3774"
+       d="m 19.499261,1035.8705 c 2.149565,-2.0052 3.934824,-4.1699 4.89489,-5.594 0.84614,-1.2552 -1.697289,-3.8569 -2.971463,-2.6559 -1.05379,0.9934 -5.336789,5.0892 -5.336789,5.0892 -2.43e-4,0.084 -2.513485,-2.6446 -2.513485,-2.6446 0,0 3.910312,-4.6013 6.199451,-5.5622 5.238818,-2.2619 9.646516,2.4583 7.703808,7.3323 -0.640775,1.4566 -4.421937,4.9674 -5.798179,6.1947 z"
+       style="fill:url(#linearGradient4310);stroke:none;fill-opacity:1" />
+  </g>
+</svg>
diff --git a/Viewer/images/filesaveas.svg b/Viewer/images/filesaveas.svg
new file mode 100644
index 0000000..8bd90a4
--- /dev/null
+++ b/Viewer/images/filesaveas.svg
@@ -0,0 +1,313 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.4 r9939"
+   version="1.0"
+   sodipodi:docname="filesaveas.svg"
+   inkscape:export-xdpi="90"
+   inkscape:export-ydpi="90"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3829">
+      <stop
+         style="stop-color:#786535;stop-opacity:1;"
+         offset="0"
+         id="stop3831" />
+      <stop
+         style="stop-color:#cd6938;stop-opacity:1;"
+         offset="1"
+         id="stop3833" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3821">
+      <stop
+         style="stop-color:#050505;stop-opacity:1;"
+         offset="0"
+         id="stop3823" />
+      <stop
+         style="stop-color:#949494;stop-opacity:1;"
+         offset="1"
+         id="stop3825" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient12168">
+      <stop
+         style="stop-color:#858585;stop-opacity:1;"
+         offset="0"
+         id="stop12170" />
+      <stop
+         id="stop12172"
+         offset="0.5"
+         style="stop-color:#cbcbcb;stop-opacity:1;" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1"
+         offset="1"
+         id="stop12174" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient11450">
+      <stop
+         style="stop-color:#191919;stop-opacity:1;"
+         offset="0"
+         id="stop11452" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="1"
+         id="stop11454" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2263">
+      <stop
+         style="stop-color:#3e848c;stop-opacity:1;"
+         offset="0"
+         id="stop2265" />
+      <stop
+         style="stop-color:#b3c7de;stop-opacity:1;"
+         offset="1"
+         id="stop2267" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient2263"
+       id="linearGradient7454"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9673902,0,0,-1.1589562,-0.79677103,52.162489)"
+       x1="28.673536"
+       y1="2.2797322"
+       x2="9.2870998"
+       y2="46.581879" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12168"
+       id="linearGradient7458"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0595231,0,0,-1.0264164,-2.3364269,49.429715)"
+       x1="13.444483"
+       y1="41.398193"
+       x2="38.408127"
+       y2="31.618719" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11450"
+       id="linearGradient11456"
+       x1="19.784695"
+       y1="29.870388"
+       x2="19.784693"
+       y2="42.991951"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.903975,0,0,0.6975501,11.791609,-36.457522)" />
+    <linearGradient
+       id="linearGradient3869-6">
+      <stop
+         style="stop-color:#ffad02;stop-opacity:1;"
+         offset="0"
+         id="stop3871-9" />
+      <stop
+         style="stop-color:#c4ba4a;stop-opacity:1;"
+         offset="1"
+         id="stop3873-2" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3869-6"
+       id="linearGradient3031"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0884669,-0.47416089,0.46157136,1.1181553,-7.8141323,11.773461)"
+       x1="19.055012"
+       y1="7.0745502"
+       x2="22.446272"
+       y2="10.200515" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3821"
+       id="linearGradient3827"
+       x1="13.555334"
+       y1="23.807344"
+       x2="15.984475"
+       y2="19.714443"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3829"
+       id="linearGradient3835"
+       x1="20.204853"
+       y1="14.127702"
+       x2="18.328623"
+       y2="13.355288"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient11450"
+       id="linearGradient3024"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.68205329,0,0,0.49614612,6.7301674,-24.473576)"
+       x1="19.784695"
+       y1="29.870388"
+       x2="19.784693"
+       y2="42.991951" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient12168"
+       id="linearGradient3027"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.79941504,0,0,-0.73005869,-3.9295005,33.700301)"
+       x1="13.444483"
+       y1="41.398193"
+       x2="38.408127"
+       y2="31.618719" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#efefef"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="27.1875"
+     inkscape:cx="15.640579"
+     inkscape:cy="14.790975"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     inkscape:showpageshadow="false"
+     showborder="true"
+     borderlayer="top"
+     showgrid="true"
+     inkscape:grid-points="false"
+     inkscape:window-width="1585"
+     inkscape:window-height="1096"
+     inkscape:window-x="316"
+     inkscape:window-y="46"
+     width="32px"
+     height="32px"
+     inkscape:window-maximized="0"
+     inkscape:snap-grids="false">
+    <inkscape:grid
+       id="GridFromPre046Settings"
+       type="xygrid"
+       originx="0px"
+       originy="0px"
+       spacingx="1px"
+       spacingy="1px"
+       color="#9f9f9f"
+       empcolor="#9f9f9f"
+       opacity="0.10196078"
+       empopacity="0.25490196"
+       empspacing="10" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>ecFlowUI icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>ecFlowUI icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     style="display:inline">
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:#333333;fill-opacity:1;stroke:#000000;stroke-width:0.79999995000000002;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       d="m 2.7518662,29.379519 26.6240988,0 c 0.403427,0 0.728208,-0.32299 0.728208,-0.724192 l 0,-25.7112341 c 0,-0.4012011 -0.324781,-0.7241914 -0.728208,-0.7241914 l -24.7031852,0 c 0,0 -2.7226862,2.7476156 -2.7226862,2.7476156 l 0.073563,23.6878099 c 0,0.401202 0.3247814,0.724192 0.7282094,0.724192 z"
+       id="path7428"
+       sodipodi:nodetypes="ccccccccc" />
+    <path
+       inkscape:connector-curvature="0"
+       style="fill:url(#linearGradient3027);fill-opacity:1;stroke:#371d1d;stroke-width:0.58788466;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dashoffset:0"
+       d="m 9.6014482,11.246452 13.5449798,0 c 0.608995,0 1.099269,-0.460139 1.099269,-1.031701 l 0,-8.0895889 c 0,0 -15.7435182,0 -15.7435182,0 l 0,8.0895889 c 0,0.571562 0.4902741,1.031701 1.0992694,1.031701 z"
+       id="path7444"
+       sodipodi:nodetypes="ccccccc" />
+    <rect
+       transform="scale(1,-1)"
+       style="fill:url(#linearGradient3024);fill-opacity:1;stroke:#251818;stroke-width:0.48245448;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect7446"
+       width="3.1925707"
+       height="4.4885483"
+       x="18.628098"
+       y="-8.6094503"
+       rx="0.47681904"
+       ry="0.33497337" />
+    <g
+       inkscape:groupmode="layer"
+       id="layer3"
+       inkscape:label="white">
+      <rect
+         y="-27.690033"
+         x="5.7776341"
+         height="12.439459"
+         width="20.560297"
+         id="rect7430"
+         style="fill:#ffffff;fill-opacity:1;stroke:#371d1d;stroke-width:0.63016373;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+         transform="scale(1,-1)" />
+    </g>
+    <g
+       inkscape:groupmode="layer"
+       id="layer2"
+       inkscape:label="label">
+      <rect
+         style="fill:#cccccc;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.4163833;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
+         id="rect11357"
+         width="15.208806"
+         height="0.61792487"
+         x="8.3011494"
+         y="-19.845976"
+         rx="0.10916411"
+         ry="0"
+         transform="scale(1,-1)" />
+      <rect
+         transform="scale(1,-1)"
+         ry="0"
+         rx="0.10925798"
+         y="-24.18055"
+         x="8.3313904"
+         height="0.58149546"
+         width="15.221885"
+         id="rect13161"
+         style="fill:#b3b3b3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.4040966;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline" />
+    </g>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer5"
+     inkscape:label="pencil" />
+</svg>
diff --git a/Viewer/images/icon_children_hidden.svg b/Viewer/images/icon_children_hidden.svg
new file mode 100644
index 0000000..8e53b82
--- /dev/null
+++ b/Viewer/images/icon_children_hidden.svg
@@ -0,0 +1,412 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   inkscape:export-ydpi="90"
+   inkscape:export-xdpi="90"
+   width="32"
+   height="32"
+   id="svg11300"
+   sodipodi:version="0.32"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="icon_children_hidden.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape"
+   version="1.0">
+  <metadata
+     id="metadata76">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     stroke="#3465a4"
+     fill="#729fcf"
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="0.25490196"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="22.36894"
+     inkscape:cx="19.481643"
+     inkscape:cy="15.446687"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:grid-bbox="false"
+     inkscape:document-units="px"
+     inkscape:showpageshadow="false"
+     inkscape:window-width="1607"
+     inkscape:window-height="1044"
+     inkscape:window-x="2142"
+     inkscape:window-y="37"
+     gridtolerance="50"
+     inkscape:grid-points="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     objecttolerance="0.4"
+     inkscape:object-paths="true"
+     width="32px"
+     height="32px"
+     inkscape:window-maximized="0">
+    <sodipodi:guide
+       orientation="horizontal"
+       position="50.977307"
+       id="guide9112" />
+    <inkscape:grid
+       type="xygrid"
+       id="grid4091" />
+  </sodipodi:namedview>
+  <defs
+     id="defs3">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective4089" />
+    <linearGradient
+       id="linearGradient3206">
+      <stop
+         id="stop3208"
+         offset="0"
+         style="stop-color:#3e97a9;stop-opacity:1;" />
+      <stop
+         style="stop-color:#d9ebeb;stop-opacity:1;"
+         offset="0.69999999"
+         id="stop3210" />
+      <stop
+         id="stop3212"
+         offset="0.829"
+         style="stop-color:#3164b2;stop-opacity:1;" />
+      <stop
+         id="stop3214"
+         offset="0.958"
+         style="stop-color:#e6c3b4;stop-opacity:1;" />
+      <stop
+         id="stop3216"
+         offset="1"
+         style="stop-color:#bf7c4f;stop-opacity:1" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3272">
+      <stop
+         style="stop-color:#668e93;stop-opacity:1;"
+         offset="0"
+         id="stop3274" />
+      <stop
+         id="stop2215"
+         offset="0.322"
+         style="stop-color:#d1e8e9;stop-opacity:1;" />
+      <stop
+         id="stop2205"
+         offset="0.69999999"
+         style="stop-color:#9fc2c2;stop-opacity:1;" />
+      <stop
+         style="stop-color:#718b98;stop-opacity:1;"
+         offset="0.829"
+         id="stop2209" />
+      <stop
+         style="stop-color:#e6c3b4;stop-opacity:1;"
+         offset="0.958"
+         id="stop2207" />
+      <stop
+         style="stop-color:#dff0ef;stop-opacity:1;"
+         offset="1"
+         id="stop3276" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3257">
+      <stop
+         style="stop-color:#2faeb8;stop-opacity:1;"
+         offset="0"
+         id="stop3259" />
+      <stop
+         style="stop-color:#eef9fa;stop-opacity:1;"
+         offset="1"
+         id="stop3261" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5048">
+      <stop
+         offset="0"
+         style="stop-color:black;stop-opacity:0;"
+         id="stop5050" />
+      <stop
+         offset="0.5"
+         style="stop-color:black;stop-opacity:1;"
+         id="stop5056" />
+      <stop
+         offset="1"
+         style="stop-color:black;stop-opacity:0;"
+         id="stop5052" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient2933">
+      <stop
+         offset="0"
+         style="stop-color:#9baec2;stop-opacity:1;"
+         id="stop2935" />
+      <stop
+         id="stop3204"
+         style="stop-color:#c0dbdf;stop-opacity:1;"
+         offset="0.5" />
+      <stop
+         offset="1"
+         style="stop-color:#e4e4e4;stop-opacity:1;"
+         id="stop2937" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3257"
+       id="linearGradient11118"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.9920914,0,0,1.0001933,1.6937616,5.6202644)"
+       x1="8.375"
+       y1="24.5"
+       x2="40.625"
+       y2="24.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3257"
+       id="linearGradient11146"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0000001,0,0,0.64,1.5000002,9.8199999)"
+       x1="8.375"
+       y1="24.5"
+       x2="40.625"
+       y2="24.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3257"
+       id="linearGradient11149"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0000001,0,0,0.64,1.0000002,10.32)"
+       x1="8.375"
+       y1="24.5"
+       x2="40.625"
+       y2="24.5" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3257"
+       id="linearGradient11161"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0000001,0,0,0.64,-2.6562498,16.82)"
+       x1="8.375"
+       y1="24.5"
+       x2="40.625"
+       y2="24.5" />
+    <inkscape:perspective
+       id="perspective4262"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4749"
+       id="linearGradient4235"
+       x1="2.3853252"
+       y1="34.659901"
+       x2="8.3853254"
+       y2="34.659901"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.27631905,0,0,0.27631998,0.5183764,14.206616)" />
+    <linearGradient
+       id="linearGradient4749">
+      <stop
+         id="stop4751"
+         offset="0"
+         style="stop-color:#2c936f;stop-opacity:1;" />
+      <stop
+         id="stop4753"
+         offset="1"
+         style="stop-color:#d0e0d1;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4749"
+       id="linearGradient4227"
+       x1="7.4365482"
+       y1="14.912783"
+       x2="17.436548"
+       y2="14.912783"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.27631905,0,0,0.27631998,1.3331798,12.816283)" />
+    <linearGradient
+       id="linearGradient4271">
+      <stop
+         id="stop4273"
+         offset="0"
+         style="stop-color:#2c936f;stop-opacity:1;" />
+      <stop
+         id="stop4275"
+         offset="1"
+         style="stop-color:#d0e0d1;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4749"
+       id="linearGradient3684"
+       x1="14.5655"
+       y1="32.444443"
+       x2="61.434502"
+       y2="32.444443"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.27459154,0,0,0.28,0.99583091,13.833234)" />
+    <linearGradient
+       id="linearGradient4278">
+      <stop
+         id="stop4280"
+         offset="0"
+         style="stop-color:#2c936f;stop-opacity:1;" />
+      <stop
+         id="stop4282"
+         offset="1"
+         style="stop-color:#d0e0d1;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4275"
+       id="linearGradient4283"
+       x1="7.75"
+       y1="34.875"
+       x2="34.875"
+       y2="34.875"
+       gradientUnits="userSpaceOnUse" />
+    <linearGradient
+       id="linearGradient4275">
+      <stop
+         style="stop-color:#c5e9eb;stop-opacity:1;"
+         offset="0"
+         id="stop4277" />
+      <stop
+         style="stop-color:#e6f3f4;stop-opacity:1;"
+         offset="1"
+         id="stop4279" />
+    </linearGradient>
+    <linearGradient
+       y2="34.875"
+       x2="34.875"
+       y1="34.875"
+       x1="7.75"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4293"
+       xlink:href="#linearGradient4275"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4749"
+       id="linearGradient4884"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.0792528,-0.08034002,0.08034028,0.07925308,5.6528726,17.259792)"
+       x1="7.4365482"
+       y1="14.912783"
+       x2="17.436548"
+       y2="14.912783" />
+    <inkscape:perspective
+       id="perspective4894"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4749-0"
+       id="linearGradient4884-1"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.0792528,-0.08034002,0.08034028,0.07925308,5.4987246,17.058844)"
+       x1="7.4365482"
+       y1="14.912783"
+       x2="17.436548"
+       y2="14.912783" />
+    <linearGradient
+       id="linearGradient4749-0">
+      <stop
+         id="stop4751-4"
+         offset="0"
+         style="stop-color:#2c936f;stop-opacity:1;" />
+      <stop
+         id="stop4753-6"
+         offset="1"
+         style="stop-color:#d0e0d1;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       y2="14.912783"
+       x2="17.436548"
+       y1="14.912783"
+       x1="7.4365482"
+       gradientTransform="matrix(0.0792528,-0.08034002,0.08034028,0.07925308,11.058923,28.294415)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient4903"
+       xlink:href="#linearGradient4749-0"
+       inkscape:collect="always" />
+  </defs>
+  <g
+     inkscape:groupmode="layer"
+     id="layer6"
+     inkscape:label="tape">
+    <path
+       style="fill:#f2f2f2;stroke:#000000;stroke-width:2.22614408;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       d="m 0.72629544,16.606375 c 0,0 9.98612456,-8.4199591 15.68907356,-8.4199591 5.702948,0 15.689073,8.4199591 15.689073,8.4199591 0,0 -9.986125,8.419961 -15.689073,8.419961 -5.702949,0 -15.68907356,-8.419961 -15.68907356,-8.419961 z"
+       id="rect3049"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="czcsc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="disk"
+     style="display:inline">
+    <path
+       sodipodi:type="arc"
+       style="fill:#afc6e9;fill-opacity:1;fill-rule:evenodd;stroke:#1c1f2b;stroke-width:0.9573679;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path4193"
+       sodipodi:cx="17.300776"
+       sodipodi:cy="16.889763"
+       sodipodi:rx="11.62326"
+       sodipodi:ry="11.355031"
+       d="m 28.924035,16.889763 a 11.62326,11.355031 0 1 1 -23.246519,0 11.62326,11.355031 0 1 1 23.246519,0 z"
+       transform="matrix(0.43969085,0,0,0.49282942,8.7894017,8.1661821)" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3054"
+       sodipodi:cx="7.5"
+       sodipodi:cy="4.5"
+       sodipodi:rx="1.5"
+       sodipodi:ry="1.5"
+       d="m 9,4.5 a 1.5,1.5 0 1 1 -3,0 1.5,1.5 0 1 1 3,0 z"
+       transform="matrix(1.0991597,0,0,1.0651455,8.1120158,11.597513)" />
+    <path
+       style="fill:#ff0000;stroke:#ff0000;stroke-width:3.06100011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 28.453077,4.8192435 8.0400824,31.733708"
+       id="path3062"
+       inkscape:connector-curvature="0" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="center"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="front"
+     style="display:inline" />
+</svg>
diff --git a/Viewer/images/icon_killed.svg b/Viewer/images/icon_killed.svg
new file mode 100644
index 0000000..7d77f69
--- /dev/null
+++ b/Viewer/images/icon_killed.svg
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="icon_killed.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3756">
+      <stop
+         id="stop3758"
+         offset="0"
+         style="stop-color:#519aed;stop-opacity:1;" />
+      <stop
+         id="stop3760"
+         offset="1"
+         style="stop-color:#e9dddd;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3728">
+      <stop
+         style="stop-color:#f1f3fb;stop-opacity:1;"
+         offset="0"
+         id="stop3730" />
+      <stop
+         style="stop-color:#273df9;stop-opacity:0;"
+         offset="1"
+         id="stop3732" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3614">
+      <stop
+         style="stop-color:#2c71d9;stop-opacity:1;"
+         offset="0"
+         id="stop3616" />
+      <stop
+         style="stop-color:#ececec;stop-opacity:1;"
+         offset="1"
+         id="stop3618" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3602">
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:1;"
+         offset="0"
+         id="stop3604" />
+      <stop
+         style="stop-color:#141bc6;stop-opacity:1;"
+         offset="1"
+         id="stop3606" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3614"
+       id="linearGradient3691"
+       gradientUnits="userSpaceOnUse"
+       x1="15.413333"
+       y1="12.89746"
+       x2="15.413333"
+       y2="31.085577" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3602"
+       id="linearGradient3693"
+       gradientUnits="userSpaceOnUse"
+       x1="15.413333"
+       y1="2.2337441"
+       x2="15.413333"
+       y2="31.085577" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3728"
+       id="linearGradient3710"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0688752,0,0,-1.1672542,-31.566354,35.860667)"
+       x1="15.413333"
+       y1="3.4795053"
+       x2="15.941438"
+       y2="18.883736" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3756"
+       id="linearGradient3720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0688752,0,0,-1.1672542,-31.566354,35.860667)"
+       x1="24.437176"
+       y1="3.4853487"
+       x2="15.941438"
+       y2="18.883736" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="18.75"
+     inkscape:cx="31.063574"
+     inkscape:cy="15.447292"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1408"
+     inkscape:window-height="1096"
+     inkscape:window-x="399"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0"
+     showguides="true"
+     inkscape:guide-bbox="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2816"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="bg"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="item"
+     style="display:inline">
+    <text
+       xml:space="preserve"
+       style="font-size:20px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"
+       x="3.8399999"
+       y="21.973333"
+       id="text3783"><tspan
+         sodipodi:role="line"
+         id="tspan3785"
+         x="3.8399999"
+         y="21.973333" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="7.2533331"
+       y="15.146667"
+       id="text3787"><tspan
+         sodipodi:role="line"
+         id="tspan3789"
+         x="7.2533331"
+         y="15.146667" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:34.85697556px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="0.9342829"
+       y="28.088413"
+       id="text3791"
+       transform="scale(0.94993331,1.0527055)"><tspan
+         sodipodi:role="line"
+         id="tspan3793"
+         x="0.9342829"
+         y="28.088413"
+         style="font-size:34.85697556px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#c83737;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif">K</tspan></text>
+  </g>
+</svg>
diff --git a/Viewer/images/logo.png b/Viewer/images/logo.png
new file mode 100644
index 0000000..6153633
Binary files /dev/null and b/Viewer/images/logo.png differ
diff --git a/Viewer/images/logo.svg b/Viewer/images/logo.svg
new file mode 100644
index 0000000..e21f6f9
--- /dev/null
+++ b/Viewer/images/logo.svg
@@ -0,0 +1,111 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   id="Layer_1"
+   data-name="Layer 1"
+   viewBox="0 0 92 92"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   width="100%"
+   height="100%"
+   sodipodi:docname="logo.svg"
+   inkscape:export-filename="/var/tmp/cgr/git/ecflow/Viewer/images/logo_small.png"
+   inkscape:export-xdpi="19.565218"
+   inkscape:export-ydpi="19.565218">
+  <title
+     id="title2992">ecflow logo</title>
+  <metadata
+     id="metadata27">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title>ecflow logo</dc:title>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>ecflow icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>ecflow icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="1505"
+     inkscape:window-height="1047"
+     id="namedview25"
+     showgrid="false"
+     inkscape:zoom="5.2234043"
+     inkscape:cx="15.368636"
+     inkscape:cy="46"
+     inkscape:window-x="105"
+     inkscape:window-y="11"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="Layer_1" />
+  <defs
+     id="defs3">
+    <style
+       id="style5">.cls-1{fill:url(#linear-gradient);}.cls-2{fill:url(#linear-gradient-2);}.cls-3{fill:#fff;opacity:0.66;}</style>
+    <linearGradient
+       id="linear-gradient-2"
+       x1="21"
+       y1="46"
+       x2="83"
+       y2="46"
+       gradientUnits="userSpaceOnUse">
+      <stop
+         offset="0"
+         stop-color="#007ac1"
+         id="stop13"
+         style="stop-color:#007dc1;stop-opacity:1;" />
+      <stop
+         offset="1"
+         stop-color="#00294e"
+         id="stop15" />
+    </linearGradient>
+  </defs>
+  <rect
+     class="cls-1"
+     width="89.894096"
+     height="89.128311"
+     rx="13.679536"
+     ry="13.563003"
+     id="rect19"
+     style="fill:#ffffff;fill-opacity:1;stroke:#ffffff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+     x="1.1486762"
+     y="1.7230142" />
+  <polygon
+     class="cls-2"
+     points="69,12 21,12 21,86 37,86 37,63 37,60 53,60 53,66 67,52 53,38 53,44 53,44 37,44 37,28 69,28 69,34 83,20 69,6 "
+     id="polygon21"
+     style="fill:url(#linear-gradient-2)"
+     transform="matrix(0.92589186,0,0,0.94974542,1.3648249,2.2159877)" />
+  <polygon
+     class="cls-3"
+     points="56,54 56,56 60,52 56,48 56,50 31,50 31,22 72,22 72,24 75.93,20 75.93,20 72,16 72,18 27,18 27,80 31,80 31,54 "
+     id="polygon23"
+     transform="matrix(0.92589186,0,0,0.94974542,1.3648249,2.2159877)"
+     style="opacity:0.66000001;fill:#ffffff" />
+</svg>
diff --git a/Viewer/images/logo_small.png b/Viewer/images/logo_small.png
new file mode 100644
index 0000000..d0075d3
Binary files /dev/null and b/Viewer/images/logo_small.png differ
diff --git a/Viewer/images/menu_arrow_down.svg b/Viewer/images/menu_arrow_down.svg
new file mode 100644
index 0000000..1cea54c
--- /dev/null
+++ b/Viewer/images/menu_arrow_down.svg
@@ -0,0 +1,118 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.2 r9819"
+   sodipodi:docname="menu_arrow_down.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3601">
+      <stop
+         style="stop-color:#a2a2a2;stop-opacity:1;"
+         offset="0"
+         id="stop3603" />
+      <stop
+         style="stop-color:#343434;stop-opacity:1;"
+         offset="1"
+         id="stop3605" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3601"
+       id="linearGradient3607"
+       x1="14.194276"
+       y1="14.459461"
+       x2="17.471718"
+       y2="39.653805"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.96774194,0,0,0.96774194,-38.540698,-10.847573)" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="15.46875"
+     inkscape:cx="-6.3676771"
+     inkscape:cy="16.354555"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="true"
+     inkscape:window-width="1881"
+     inkscape:window-height="1026"
+     inkscape:window-x="-8"
+     inkscape:window-y="-8"
+     inkscape:window-maximized="1"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2831"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="arrow"
+     style="display:inline">
+    <path
+       style="opacity:0.98999999;fill:none;stroke:#464646;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="M 6,12 16,22 26,12"
+       id="path3009"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="bar" />
+</svg>
diff --git a/Viewer/images/remove.svg b/Viewer/images/remove.svg
new file mode 100644
index 0000000..9791a45
--- /dev/null
+++ b/Viewer/images/remove.svg
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="remove.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3795">
+      <stop
+         style="stop-color:#c53143;stop-opacity:1;"
+         offset="0"
+         id="stop3797" />
+      <stop
+         style="stop-color:#b8382b;stop-opacity:0;"
+         offset="1"
+         id="stop3799" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3728">
+      <stop
+         style="stop-color:#fa0c1e;stop-opacity:1;"
+         offset="0"
+         id="stop3730" />
+      <stop
+         style="stop-color:#d9afb1;stop-opacity:0;"
+         offset="1"
+         id="stop3732" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3614">
+      <stop
+         style="stop-color:#e8220f;stop-opacity:1;"
+         offset="0"
+         id="stop3616" />
+      <stop
+         style="stop-color:#ececec;stop-opacity:1;"
+         offset="1"
+         id="stop3618" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3602">
+      <stop
+         style="stop-color:#932626;stop-opacity:1;"
+         offset="0"
+         id="stop3604" />
+      <stop
+         style="stop-color:#bc4343;stop-opacity:1;"
+         offset="1"
+         id="stop3606" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3614"
+       id="linearGradient3691"
+       gradientUnits="userSpaceOnUse"
+       x1="15.413333"
+       y1="12.89746"
+       x2="15.413333"
+       y2="31.085577" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3602"
+       id="linearGradient3693"
+       gradientUnits="userSpaceOnUse"
+       x1="15.413333"
+       y1="2.2337441"
+       x2="15.413333"
+       y2="31.085577" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3728"
+       id="linearGradient3710"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0688752,0,0,-1.1672542,-36.473021,43.380667)"
+       x1="15.413333"
+       y1="3.4795053"
+       x2="15.941438"
+       y2="18.883736" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3795"
+       id="linearGradient3720"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(1.0688752,0,0,-1.1672542,-36.473021,43.380667)"
+       x1="24.437176"
+       y1="3.4853487"
+       x2="15.941438"
+       y2="18.883736" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="18.75"
+     inkscape:cx="4.716314"
+     inkscape:cy="11.949442"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer4"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1658"
+     inkscape:window-height="1026"
+     inkscape:window-x="209"
+     inkscape:window-y="0"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2816"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="circle"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="item"
+     style="display:inline">
+    <text
+       xml:space="preserve"
+       style="font-size:20px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"
+       x="3.8399999"
+       y="21.973333"
+       id="text3783"><tspan
+         sodipodi:role="line"
+         id="tspan3785"
+         x="3.8399999"
+         y="21.973333" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="7.2533331"
+       y="15.146667"
+       id="text3787"><tspan
+         sodipodi:role="line"
+         id="tspan3789"
+         x="7.2533331"
+         y="15.146667" /></text>
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke:#aa0000;stroke-width:3.33893824;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3809"
+       width="1.9917427"
+       height="25.309771"
+       x="-1.3921721"
+       y="9.7108259"
+       ry="0.15833335"
+       transform="matrix(0.70832302,-0.70588845,0.72446995,0.68930639,0,0)" />
+    <rect
+       ry="0.15733515"
+       y="-12.969934"
+       x="-23.740509"
+       height="25.150208"
+       width="1.9991302"
+       id="rect3811"
+       style="fill:#ff2a2a;fill-opacity:1;stroke:#aa0000;stroke-width:3.33456326;stroke-linecap:square;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       transform="matrix(-0.72446995,-0.68930639,0.70832302,-0.70588845,0,0)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="top"
+     style="display:inline" />
+</svg>
diff --git a/Viewer/images/submit_round.svg b/Viewer/images/submit_round.svg
new file mode 100644
index 0000000..884f26f
--- /dev/null
+++ b/Viewer/images/submit_round.svg
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="submit_round.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient5324">
+      <stop
+         style="stop-color:#61af3d;stop-opacity:1;"
+         offset="0"
+         id="stop5326" />
+      <stop
+         style="stop-color:#81e060;stop-opacity:1;"
+         offset="1"
+         id="stop5328" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5324"
+       id="linearGradient5330"
+       x1="18.005625"
+       y1="26.582415"
+       x2="10.748308"
+       y2="7.0853157"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.15625"
+     inkscape:cx="11.38469"
+     inkscape:cy="15.852477"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1140"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer"
+     style="display:inline">
+    <circle
+       style="fill:url(#linearGradient5330);fill-opacity:1;fill-rule:evenodd;stroke:#136922;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3346"
+       cx="15.955303"
+       cy="16.060171"
+       r="14.963701" />
+    <path
+       style="fill:#ffffff;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 8.8665378,13.071566 C 8.6286267,13 5,17 5.13658,17.000004 c 2.7645077,2.745675 5.956143,5.432548 8.791853,8.104445 L 27.032309,11.649205 23.433269,8.44294 14,19.404256"
+       id="path4146"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/Viewer/images/sync_black.svg b/Viewer/images/sync_black.svg
new file mode 100644
index 0000000..7ab76ce
--- /dev/null
+++ b/Viewer/images/sync_black.svg
@@ -0,0 +1,392 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="sync_black.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient4573">
+      <stop
+         style="stop-color:#2165c4;stop-opacity:1;"
+         offset="0"
+         id="stop4575" />
+      <stop
+         style="stop-color:#5e95e2;stop-opacity:1;"
+         offset="1"
+         id="stop4577" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient4485">
+      <stop
+         id="stop4487"
+         offset="0"
+         style="stop-color:#f1bd45;stop-opacity:1;" />
+      <stop
+         id="stop4489"
+         offset="1"
+         style="stop-color:#ffeebd;stop-opacity:1;" />
+    </linearGradient>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 16 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="32 : 16 : 1"
+       inkscape:persp3d-origin="16 : 10.666667 : 1"
+       id="perspective49" />
+    <linearGradient
+       id="linearGradient5256">
+      <stop
+         style="stop-color:#cedcdd;stop-opacity:1;"
+         offset="0"
+         id="stop5258" />
+      <stop
+         style="stop-color:#7199cb;stop-opacity:1;"
+         offset="1"
+         id="stop5260" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5222">
+      <stop
+         style="stop-color:#465178;stop-opacity:1;"
+         offset="0"
+         id="stop5224" />
+      <stop
+         style="stop-color:#314552;stop-opacity:1;"
+         offset="1"
+         id="stop5226" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5194">
+      <stop
+         style="stop-color:#204492;stop-opacity:1;"
+         offset="0"
+         id="stop5196" />
+      <stop
+         style="stop-color:#81a2d2;stop-opacity:1;"
+         offset="1"
+         id="stop5198" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient5186">
+      <stop
+         style="stop-color:#eba34c;stop-opacity:1;"
+         offset="0"
+         id="stop5188" />
+      <stop
+         style="stop-color:#f9f9f9;stop-opacity:1;"
+         offset="1"
+         id="stop5190" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3795">
+      <stop
+         style="stop-color:#c53143;stop-opacity:1;"
+         offset="0"
+         id="stop3797" />
+      <stop
+         style="stop-color:#b8382b;stop-opacity:0;"
+         offset="1"
+         id="stop3799" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3728">
+      <stop
+         style="stop-color:#fa0c1e;stop-opacity:1;"
+         offset="0"
+         id="stop3730" />
+      <stop
+         style="stop-color:#d9afb1;stop-opacity:0;"
+         offset="1"
+         id="stop3732" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3614">
+      <stop
+         style="stop-color:#e8220f;stop-opacity:1;"
+         offset="0"
+         id="stop3616" />
+      <stop
+         style="stop-color:#ececec;stop-opacity:1;"
+         offset="1"
+         id="stop3618" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3602">
+      <stop
+         style="stop-color:#932626;stop-opacity:1;"
+         offset="0"
+         id="stop3604" />
+      <stop
+         style="stop-color:#bc4343;stop-opacity:1;"
+         offset="1"
+         id="stop3606" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5256"
+       id="linearGradient5262"
+       x1="-5.8968949"
+       y1="8.2935667"
+       x2="-5.5726938"
+       y2="4.0554204"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.65143369,0,0,0.72465707,8.5653256,0.88669298)" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5256"
+       id="linearGradient5266"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.56219622,0,0,0.55767089,7.7886026,8.071931)"
+       x1="-6.1533332"
+       y1="7.3333344"
+       x2="-5.5266666"
+       y2="3.9733334" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5256"
+       id="linearGradient5270"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.56219622,0,0,0.55767089,17.263483,11.641025)"
+       x1="-6.5266666"
+       y1="3.4400015"
+       x2="-6.1133332"
+       y2="0.18666674" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient5256"
+       id="linearGradient5274"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="translate(26.826667,5.3333334)"
+       x1="-6.5266666"
+       y1="9.0933342"
+       x2="-5.5266666"
+       y2="3.9733334" />
+    <inkscape:perspective
+       id="perspective2951"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3650"
+       id="linearGradient3593"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(-0.86061684,-0.15090715,0.13376284,-0.97092167,26.431688,37.768288)"
+       x1="15.603005"
+       y1="11.415942"
+       x2="14.703928"
+       y2="5.6313658" />
+    <linearGradient
+       id="linearGradient3650">
+      <stop
+         style="stop-color:#30cf38;stop-opacity:1;"
+         offset="0"
+         id="stop3652" />
+      <stop
+         style="stop-color:#fcfcfe;stop-opacity:1;"
+         offset="1"
+         id="stop3654" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3650"
+       id="linearGradient3656"
+       x1="15.603005"
+       y1="11.415942"
+       x2="14.703928"
+       y2="5.6313658"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86061684,0.15090715,-0.13376284,0.97092167,5.6361914,-5.6778006)" />
+    <linearGradient
+       id="linearGradient2960">
+      <stop
+         style="stop-color:#449abb;stop-opacity:1;"
+         offset="0"
+         id="stop2962" />
+      <stop
+         style="stop-color:#fcfcfe;stop-opacity:1;"
+         offset="1"
+         id="stop2964" />
+    </linearGradient>
+    <linearGradient
+       y2="5.6313658"
+       x2="14.703928"
+       y1="11.415942"
+       x1="15.603005"
+       gradientTransform="matrix(0.86061684,0.15090715,-0.13376284,0.97092167,6.2083117,-5.554955)"
+       gradientUnits="userSpaceOnUse"
+       id="linearGradient2968"
+       xlink:href="#linearGradient3650"
+       inkscape:collect="always" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3650"
+       id="linearGradient3000"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86061684,0.15090715,-0.13376284,0.97092167,6.2083117,-5.554955)"
+       x1="15.603005"
+       y1="11.415942"
+       x2="14.703928"
+       y2="5.6313658" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient3650"
+       id="linearGradient3003"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.86061684,0.15090715,-0.13376284,0.97092167,6.2083117,-5.554955)"
+       x1="15.603005"
+       y1="11.415942"
+       x2="14.703928"
+       y2="5.6313658" />
+    <linearGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient4485"
+       id="linearGradient3006"
+       gradientUnits="userSpaceOnUse"
+       gradientTransform="matrix(0.56466735,0.09622175,-0.08776439,0.61908121,14.227777,7.1986057)"
+       x1="15.603005"
+       y1="11.415942"
+       x2="14.703928"
+       y2="5.6313658" />
+    <inkscape:perspective
+       id="perspective4544"
+       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+       inkscape:vp_z="1 : 0.5 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_x="0 : 0.5 : 1"
+       sodipodi:type="inkscape:persp3d" />
+    <linearGradient
+       id="linearGradient4485-7">
+      <stop
+         id="stop4487-7"
+         offset="0"
+         style="stop-color:#f1bd45;stop-opacity:1;" />
+      <stop
+         id="stop4489-5"
+         offset="1"
+         style="stop-color:#ffeebd;stop-opacity:1;" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="11.313708"
+     inkscape:cx="7.9286379"
+     inkscape:cy="15.503207"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1272"
+     inkscape:window-height="966"
+     inkscape:window-x="91"
+     inkscape:window-y="93"
+     inkscape:window-maximized="0"
+     inkscape:snap-to-guides="false">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2816"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="item"
+     style="display:inline">
+    <text
+       xml:space="preserve"
+       style="font-size:20px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"
+       x="3.8399999"
+       y="21.973333"
+       id="text3783"><tspan
+         sodipodi:role="line"
+         id="tspan3785"
+         x="3.8399999"
+         y="21.973333" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="7.2533331"
+       y="15.146667"
+       id="text3787"><tspan
+         sodipodi:role="line"
+         id="tspan3789"
+         x="7.2533331"
+         y="15.146667" /></text>
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer1"
+     inkscape:label="top">
+    <path
+       sodipodi:type="arc"
+       style="fill:none;stroke:#414a5b;stroke-width:0.41006634;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
+       id="path4533-4"
+       sodipodi:cx="20.594486"
+       sodipodi:cy="20.200155"
+       sodipodi:rx="12.285981"
+       sodipodi:ry="12.948894"
+       d="m 32.880467,20.200155 a 12.285981,12.948894 0 1 1 -24.5719619,0 12.285981,12.948894 0 1 1 24.5719619,0 z"
+       transform="matrix(1.2589928,0,0,1.1808874,-9.7974359,-7.7198171)" />
+    <path
+       style="fill:#333333;fill-opacity:1;stroke:none;display:inline"
+       d="M 15.405667,4.9908058 C 14.416179,4.9696766 12.379939,5.1710089 11.394671,5.7347947 9.8182439,6.6368537 7.5180123,9.2006316 7.6657467,9.4004172 8.6617506,10.747354 8.966057,11.313207 8.966057,11.313207 c 0,0 1.374952,-1.764833 2.589367,-2.6024539 1.667647,-1.1502312 2.589472,-1.231399 4.429037,-0.9235739 2.441651,0.474329 3.754065,1.9989678 5.033,4.3613158 l -3.623759,3.181197 8.077962,0.846609 1.20792,-8.8252527 -3.422438,2.8989927 c 0,0 -1.361861,-2.0412957 -2.26485,-3.001612 [...]
+       id="path2876-8"
+       sodipodi:nodetypes="csscsccccccssccccsssscscccc"
+       inkscape:connector-curvature="0" />
+  </g>
+</svg>
diff --git a/Viewer/images/system.svg b/Viewer/images/system.svg
new file mode 100644
index 0000000..bcdf1db
--- /dev/null
+++ b/Viewer/images/system.svg
@@ -0,0 +1,180 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="system.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3756">
+      <stop
+         id="stop3758"
+         offset="0"
+         style="stop-color:#519aed;stop-opacity:1;" />
+      <stop
+         id="stop3760"
+         offset="1"
+         style="stop-color:#e9dddd;stop-opacity:0;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3728">
+      <stop
+         style="stop-color:#f1f3fb;stop-opacity:1;"
+         offset="0"
+         id="stop3730" />
+      <stop
+         style="stop-color:#273df9;stop-opacity:0;"
+         offset="1"
+         id="stop3732" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3614">
+      <stop
+         style="stop-color:#e8f0fb;stop-opacity:1;"
+         offset="0"
+         id="stop3616" />
+      <stop
+         style="stop-color:#ececec;stop-opacity:1;"
+         offset="1"
+         id="stop3618" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3602">
+      <stop
+         style="stop-color:#f5f5f5;stop-opacity:1;"
+         offset="0"
+         id="stop3604" />
+      <stop
+         style="stop-color:#141bc6;stop-opacity:1;"
+         offset="1"
+         id="stop3606" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="18.75"
+     inkscape:cx="13.651379"
+     inkscape:cy="15.420625"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="true"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1408"
+     inkscape:window-height="1096"
+     inkscape:window-x="415"
+     inkscape:window-y="36"
+     inkscape:window-maximized="0">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2816"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="circle"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="top">
+    <path
+       sodipodi:type="arc"
+       style="fill:#f6f8fa;fill-opacity:1;stroke:#919191;stroke-width:1.21152616;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+       id="path3786"
+       sodipodi:cx="16.213333"
+       sodipodi:cy="17.973333"
+       sodipodi:rx="13.973333"
+       sodipodi:ry="13.706667"
+       d="m 30.186666,17.973333 a 13.973333,13.706667 0 1 1 -27.9466662,0 13.973333,13.706667 0 1 1 27.9466662,0 z"
+       transform="matrix(1.0627385,0,0,1.0834144,-1.4205346,-3.4425622)" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="item"
+     style="display:inline">
+    <text
+       xml:space="preserve"
+       style="font-size:20;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Calibri;-inkscape-font-specification:Calibri"
+       x="3.8399999"
+       y="21.973333"
+       id="text3783"><tspan
+         sodipodi:role="line"
+         id="tspan3785"
+         x="3.8399999"
+         y="21.973333" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:40px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;font-family:Bitstream Vera Sans"
+       x="7.2533331"
+       y="15.146667"
+       id="text3787"><tspan
+         sodipodi:role="line"
+         id="tspan3789"
+         x="7.2533331"
+         y="15.146667" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:26px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#214478;fill-opacity:1;stroke:none;font-family:Arial;-inkscape-font-specification:Arial Bold"
+       x="7.6266656"
+       y="25.546665"
+       id="text3791"><tspan
+         sodipodi:role="line"
+         id="tspan3793"
+         x="7.6266656"
+         y="25.546665"
+         style="font-size:26px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#214478;fill-opacity:1;font-family:Arial;-inkscape-font-specification:Arial Bold">S</tspan></text>
+  </g>
+</svg>
diff --git a/Viewer/images/tip.svg b/Viewer/images/tip.svg
new file mode 100644
index 0000000..bed1f6c
--- /dev/null
+++ b/Viewer/images/tip.svg
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="tip.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient5324">
+      <stop
+         style="stop-color:#7cbd17;stop-opacity:1;"
+         offset="0"
+         id="stop5326" />
+      <stop
+         style="stop-color:#b1e060;stop-opacity:1;"
+         offset="1"
+         id="stop5328" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="16.15625"
+     inkscape:cx="11.38469"
+     inkscape:cy="15.821529"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer2"
+     showgrid="true"
+     inkscape:snap-to-guides="false"
+     inkscape:snap-grids="false"
+     inkscape:window-width="1920"
+     inkscape:window-height="1140"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2985"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="Layer"
+     style="display:inline">
+    <circle
+       style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#136922;stroke-width:1.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="path3346"
+       cx="15.955303"
+       cy="16.060171"
+       r="14.963701" />
+    <path
+       style="fill:#008000;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;fill-opacity:1"
+       d="M 8.8665378,13.071566 C 8.6286267,13 5,17 5.13658,17.000004 c 2.7645077,2.745675 5.956143,5.432548 8.791853,8.104445 L 27.032309,11.649205 23.433269,8.44294 14,19.404256"
+       id="path4146"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccccc" />
+  </g>
+</svg>
diff --git a/Viewer/images/trigger.svg b/Viewer/images/trigger.svg
new file mode 100644
index 0000000..e5c7b5d
--- /dev/null
+++ b/Viewer/images/trigger.svg
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="32"
+   height="32"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="trigger.svg">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient3796">
+      <stop
+         id="stop3798"
+         offset="0"
+         style="stop-color:#e8eef2;stop-opacity:1;" />
+      <stop
+         id="stop3800"
+         offset="1"
+         style="stop-color:#c5d9e4;stop-opacity:1;" />
+    </linearGradient>
+    <linearGradient
+       id="linearGradient3994">
+      <stop
+         style="stop-color:#ffc444;stop-opacity:1;"
+         offset="0"
+         id="stop3996" />
+      <stop
+         style="stop-color:#efc87e;stop-opacity:1;"
+         offset="1"
+         id="stop3998" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="18.75"
+     inkscape:cx="5.0304082"
+     inkscape:cy="10.597701"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer3"
+     showgrid="true"
+     inkscape:snap-grids="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1140"
+     inkscape:window-x="-4"
+     inkscape:window-y="-4"
+     inkscape:window-maximized="1"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:snap-to-guides="true">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2816"
+       empspacing="5"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title />
+        <cc:license
+           rdf:resource="Apache License 2.0" />
+        <dc:creator>
+          <cc:Agent>
+            <dc:title />
+          </cc:Agent>
+        </dc:creator>
+        <dc:publisher>
+          <cc:Agent>
+            <dc:title>ECMWF</dc:title>
+          </cc:Agent>
+        </dc:publisher>
+        <dc:language>en-GB</dc:language>
+        <dc:subject>
+          <rdf:Bag>
+            <rdf:li>Metview icon</rdf:li>
+          </rdf:Bag>
+        </dc:subject>
+        <dc:description>Metview icon</dc:description>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:groupmode="layer"
+     id="layer4"
+     inkscape:label="second"
+     style="display:inline" />
+  <g
+     inkscape:groupmode="layer"
+     id="layer3"
+     inkscape:label="first"
+     style="display:inline">
+    <path
+       style="fill:none;stroke:#4d4d4d;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 13.546666,7.781333 0,8.810666"
+       id="path3799"
+       inkscape:connector-curvature="0" />
+    <path
+       style="fill:none;stroke:#4d4d4d;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 7.2133333,24.653333 0,-8 16.9999997,0 0,8"
+       id="path3801"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cccc" />
+    <rect
+       style="fill:#2c5aa0;fill-opacity:1;fill-rule:evenodd;stroke:none"
+       id="rect3021"
+       width="11.293333"
+       height="5.3200002"
+       x="8.1333342"
+       y="2.6266668"
+       ry="0.16846669" />
+    <rect
+       ry="0.16846669"
+       y="24.333334"
+       x="1.5200007"
+       height="5.3200002"
+       width="11.293333"
+       id="rect3815"
+       style="fill:#2c5aa0;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+    <rect
+       ry="0.16846669"
+       y="24.333334"
+       x="18.906668"
+       height="5.3200002"
+       width="11.293333"
+       id="rect3817"
+       style="fill:#2c5aa0;fill-opacity:1;fill-rule:evenodd;stroke:none" />
+  </g>
+  <g
+     inkscape:groupmode="layer"
+     id="layer2"
+     inkscape:label="top" />
+</svg>
diff --git a/Viewer/scripts/CMakeLists.txt b/Viewer/scripts/CMakeLists.txt
index af69f55..394d1e0 100644
--- a/Viewer/scripts/CMakeLists.txt
+++ b/Viewer/scripts/CMakeLists.txt
@@ -1,6 +1,6 @@
 
 # the list of files we want to install
-set (files ecflow_ui)
+set (files ecflow_ui ecflow_test_ui.sh)
 
 
 
@@ -15,6 +15,13 @@ if(NOT UI_BACKTRACE_EMAIL_ADDRESSES)
     set(UI_BACKTRACE_EMAIL_ADDRESSES "x")
 endif()
 
+if(NOT UI_LOG_FILE)
+	set(UI_LOG_FILE "x")
+endif()
+
+if(NOT UI_LOG_SITE_TAG)
+	set(UI_LOG_SITE_TAG "x")
+endif()
 
 # for each file, copy it into the build directory at build time
 # and install it into the installation directory at install time (!)
diff --git a/Viewer/scripts/ecflow_test_ui.sh.in b/Viewer/scripts/ecflow_test_ui.sh.in
new file mode 100755
index 0000000..5ea5689
--- /dev/null
+++ b/Viewer/scripts/ecflow_test_ui.sh.in
@@ -0,0 +1,151 @@
+#!/bin/bash
+
+#============================================================================
+# Copyright 2016 ECMWF.
+# This software is licensed under the terms of the Apache Licence version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+#============================================================================
+
+
+
+# ----------------------------------------------------------
+# Clean up the tmp directory at the end or on error
+#-----------------------------------------------------------
+cleanup(){
+    status=$?
+    trap "" EXIT ERR
+
+    echo "Shutting down server"
+    #$EXE_DIR/ecflow_client --delete=yes /operation_suite
+    #$EXE_DIR/ecflow_client --shutdown=yes
+    #$EXE_DIR/ecflow_client --halt=yes
+    $EXE_DIR/ecflow_client --terminate=yes
+
+    echo "Cleaning up temporary directory"
+
+    # remove temporary directory
+    if [ $(echo $ECFTEST_TMPDIR | grep -c "/ecflow_ui_test.") -ge 1 ] ; then
+        rm -Rf $ECFTEST_TMPDIR
+    fi
+
+    echo "Done"
+    exit $status
+}
+
+
+
+
+# =============================================================
+# tmp directory cleaned automatically at end or at error.
+# on new platforms check that these signals are valid:
+
+ECFLOWUI_SIGLIST="HUP INT QUIT TERM XCPU  XFSZ"
+#           1   2   3    15   30/24 31/25
+
+trap 'cleanup "EXIT" $LINENO' EXIT
+trap 'cleanup "SIGNAL trap" $LINENO' $ECFLOWUI_SIGLIST
+
+
+
+
+
+# Figure out the directory of the exe
+EXE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+ETC_DIR="$EXE_DIR/../share/ecflow/etc"
+DEF_FILE="$ETC_DIR/ecflow_ui_test.def"
+
+
+
+# =======================================================================
+# Create a temporary directory
+# =======================================================================
+
+# Define tmp root dir
+TMPDIR_TEST_ROOT=${TMPDIR:=/tmp}
+
+# check that TMPDIR_ROOT actually exists - we can't run without it
+if [ ! -d $TMPDIR_TEST_ROOT ]
+then
+    echo ""
+    echo "  Temporary directory '$TMPDIR_TEST_ROOT' does not exist"
+    echo "  ecFlowUI needs this in order to run. Check that environment"
+    echo "  variable \$TMPDIR is set to a valid directory and try again."
+    exit 1
+fi
+
+# Define and create tmp dir
+# We add a subdirectory 'x' to the end because otherwise the temp dir inherits
+# the time stamp from the .tar.gz that we uncompress there
+export ECFTEST_TMPDIR=${TMPDIR_TEST_ROOT}/ecflow_ui_test.$$.$LOGNAME
+mkdir -p $ECFTEST_TMPDIR
+
+# Check if we could create it
+if [ $? -ne 0 ]
+then
+    echo ""
+    echo "  Temporary directory '$ECFTEST_TMPDIR' could not be created."
+    echo "  ecFlowUI needs this in order to run. Check that environment"
+    echo "  variable \$TMPDIR is set to a valid directory and try again."
+    exit 1
+fi
+
+
+
+
+
+# =======================================================================
+# Start server
+# =======================================================================
+
+export ECF_PORT=4949
+$EXE_DIR/ecflow_client --version
+
+rm -rf `hostname`.${ECF_PORT}.*
+
+
+export PATH=${EXE_DIR}:${PATH}
+
+#export ECF_ALLOW_OLD_CLIENT_NEW_SERVER=9
+SLEEPTIME=4
+echo "Start server, port $ECF_PORT  (and wait $SLEEPTIME seconds for it to start)"
+$EXE_DIR/ecflow_server&
+sleep $SLEEPTIME
+
+
+# =======================================================================
+# Create suite definition
+# =======================================================================
+
+echo "Create suite definition in $ECFTEST_TMPDIR"
+sed -e "s,ECF_HOME_PLACEHOLDER,${ECFTEST_TMPDIR}\/operation_suite,g"  $DEF_FILE             > $ECFTEST_TMPDIR/1.txt
+sed -e "s,ECF_INCLUDE_PLACEHOLDER,${ECFTEST_TMPDIR}\/includes,g"      $ECFTEST_TMPDIR/1.txt > $ECFTEST_TMPDIR/2.txt
+sed -e "s,ECF_FILES_PLACEHOLDER,${ECFTEST_TMPDIR}\/operation_suite,g" $ECFTEST_TMPDIR/2.txt > $ECFTEST_TMPDIR/test_suite.def
+
+ECFTEST_SCRIPTS_HOME=$ECFTEST_TMPDIR
+cd $ECFTEST_SCRIPTS_HOME
+tar xzvf $ETC_DIR/ecflow_ui_test_server_scripts.tar.gz
+cd -
+
+# =======================================================================
+# Load suite definition and start
+# =======================================================================
+
+echo "Load suite definition"
+$EXE_DIR/ecflow_client --server_version
+$EXE_DIR/ecflow_client --load=$ECFTEST_TMPDIR/test_suite.def
+$EXE_DIR/ecflow_client --restart
+$EXE_DIR/ecflow_client --begin=operation_suite
+
+
+# =======================================================================
+# Launch ecFlowUI
+# =======================================================================
+
+echo "Starting ecFlowUI"
+export ECFUI_TEMP_SESSION_PRESERVE_CONFIRM="no"
+$EXE_DIR/ecflow_ui -ts localhost $ECF_PORT
+
+
diff --git a/Viewer/scripts/ecflow_ui.in b/Viewer/scripts/ecflow_ui.in
index 32815ee..0217857 100755
--- a/Viewer/scripts/ecflow_ui.in
+++ b/Viewer/scripts/ecflow_ui.in
@@ -9,12 +9,13 @@
 # nor does it submit to any jurisdiction.
 #============================================================================
 
-
 # Environment variables from the configuration step
 ECFLOWUI_BT=@UI_BACKTRACE@
 ECFLOWUI_BT_EMAIL_ADDRESSES=@UI_BACKTRACE_EMAIL_ADDRESSES@
 ECFLOWUI_VERSION=@ECFLOW_VERSION_STR@
 ECFLOWUI_INSTALLDIR=@CMAKE_INSTALL_PREFIX@
+ECFLOWUI_USAGE_LOG=@UI_LOG_FILE@
+ECFLOWUI_SITE_TAG=@UI_LOG_SITE_TAG@
 
 # ----------------------------------------------------------
 # Clean up the tmp directory at the end or on error
@@ -30,7 +31,6 @@ cleanup(){
         exec 2>&6
     fi
 
-
     if [ "$status" -eq "0" ]
     then
         echo "$(basename $0): $1 (OK) (line $2), exit status $status, starting 'cleanup'"
@@ -40,6 +40,7 @@ cleanup(){
         if [ -e $ECFLOWUI_LOGFILE ] ; then
 
             TAILNUM=50
+            UI_TAILNUM=50
 
             if [ $ECFLOWUI_BT != "no" ] ; then
                 # find the backtrace tag if there
@@ -67,6 +68,13 @@ cleanup(){
                 echo ""                                          >> $EFLOWUI_LOGTAIL
                 tail -$TAILNUM $ECFLOWUI_LOGFILE                 >> $EFLOWUI_LOGTAIL
 
+                #Add the last lines from the user interaction log file
+                if [ -e $ECFLOWUI_UI_LOGFILE ] ; then
+                    echo ""                                      >> $EFLOWUI_LOGTAIL
+                    echo "Last $UI_TAILNUM lines of user interaction log file:" >> $EFLOWUI_LOGTAIL
+                    tail -${UI_TAILNUM} $ECFLOWUI_UI_LOGFILE     >> $EFLOWUI_LOGTAIL
+                fi
+
                 addr=$(echo $ECFLOWUI_BT_EMAIL_ADDRESSES | sed 's/,/ /g')
                 mail -s "$ecfuimsg"  $addr < $EFLOWUI_LOGTAIL
                 rm -f $EFLOWUI_LOGTAIL
@@ -74,8 +82,14 @@ cleanup(){
             else
                 echo "Last $TAILNUM lines of log file:"
                 tail -$TAILNUM $ECFLOWUI_LOGFILE
-            fi
 
+                #Add the last lines from the user interaction log file
+                if [ -e $ECFLOWUI_UI_LOGFILE ] ; then
+                    echo ""
+                    echo "Last $UI_TAILNUM lines of user interaction log file:"
+                    tail -${UI_TAILNUM} $ECFLOWUI_UI_LOGFILE
+                fi
+            fi
         fi
     fi
 
@@ -114,9 +128,27 @@ do
 			export ECFUI_SESSION_MANAGER=yes
 			;;
 
-        -h)
-            ECFUI_HELP=yes
-            ;;
+		-ts)
+			export ECFUI_TEMP_SESSION_HOST=$2
+			export ECFUI_TEMP_SESSION_PORT=$3
+			if [ "x$ECFUI_TEMP_SESSION_HOST" == x -o "x$ECFUI_TEMP_SESSION_PORT" == x ]
+			then
+				echo "Please supply a host and port:"
+				echo "ecflow_ui -ts <host> <port>"
+				exit 1
+			fi
+			echo "Starting a temporary session: host=$ECFUI_TEMP_SESSION_HOST, port=$ECFUI_TEMP_SESSION_PORT"
+			shift 2
+			;;
+
+		-title)
+			export ECFUI_TITLE=$2
+            shift
+			;;
+
+		-h)
+			ECFUI_HELP=yes
+			;;
 
 	esac
 	shift
@@ -139,15 +171,37 @@ then
     cat <<HEND
 EcflowUI
   Command-line flags:
-    -log : write log messages to standard output
-    -s   : start via the session manager
-    -h   : print this help message
+    -log              : write log messages to standard output
+    -s                : start via the session manager
+    -ts <host> <port> : start a temporary session viewing the given server
+    -h                : print this help message
 HEND
 
     exit 0
 fi
 
 
+#-----------------------------------------------------------
+# usage log
+#-----------------------------------------------------------
+
+set +e  # failing to write to the log file should not cause a fatal error
+if [ $ECFLOWUI_USAGE_LOG != x ]
+then
+	# checks on file existence and size
+	if [ -f $ECFLOWUI_USAGE_LOG ]  # log file exists?
+	then
+		if [ ! -s $ECFLOWUI_USAGE_LOG ]  # file is empty? - write the header line
+		then
+			echo "date,time,version,user,host,site" >> $ECFLOWUI_USAGE_LOG
+		fi
+
+		echo "`date -u '+%Y.%m.%d,%R'`,$ECFLOWUI_VERSION,$USER,`hostname`,$ECFLOWUI_SITE_TAG" >> $ECFLOWUI_USAGE_LOG
+	else
+		echo "Log file $ECFLOWUI_USAGE_LOG does not exist."
+	fi
+fi
+set -e
 
 
 
@@ -180,8 +234,10 @@ fi
 
 
 # Where to write the log file to
-ECFLOWUI_LOGFILE=$ECFLOWUI_TMPDIR/ecflowui_log_$$.$LOGNAME.txt
+export ECFLOWUI_LOGFILE=$ECFLOWUI_TMPDIR/ecflowui_log_$$.$LOGNAME.txt
 
+# Where to write the user interaction log file to
+export ECFLOWUI_UI_LOGFILE=$ECFLOWUI_TMPDIR/ecflowui_uilog_$$.$LOGNAME.txt
 
 #-----------------------------------------------------------
 # Close tty and redirect stdout to a file?
diff --git a/Viewer/scripts/generate_ui_test_scripts.sh b/Viewer/scripts/generate_ui_test_scripts.sh
new file mode 100755
index 0000000..6bdf523
--- /dev/null
+++ b/Viewer/scripts/generate_ui_test_scripts.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+#============================================================================
+# Copyright 2016 ECMWF.
+# This software is licensed under the terms of the Apache Licence version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+#============================================================================
+
+
+echo "Create suite definition"
+
+rm -rf ui_test_gen
+mkdir -p ui_test_gen
+cd ui_test_gen
+
+
+# Figure out the directory of the exe
+EXE_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
+echo "$EXE_DIR"
+ETC_DIR="$EXE_DIR/../../share/ecflow/etc"
+DEF_FILE="$ETC_DIR/ecflow_ui_test.def"
+
+ECFTEST_SCRIPTS_HOME="."
+TBPY=$EXE_DIR/../../Doc/online/cookbook/src/test_bench.py
+unset WK # otherwise it will be used by the Python script
+export ECF_PORT=4949
+python $TBPY --port $ECF_PORT --ecf_home $ECFTEST_SCRIPTS_HOME $DEF_FILE
+
+tar -pzcf ../ecflow_ui_test_server_scripts.tar.gz operation_suite includes
+
+echo "  ** Now copy ecflow_ui_test_server_scripts.tar.gz into $ETC_DIR **"
diff --git a/Viewer/src/AboutDialog.cpp b/Viewer/src/AboutDialog.cpp
index dc2ba13..8d08f0e 100644
--- a/Viewer/src/AboutDialog.cpp
+++ b/Viewer/src/AboutDialog.cpp
@@ -11,6 +11,7 @@
 #include "AboutDialog.hpp"
 
 #include "Version.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <QDate>
 #include <QRegExp>
@@ -19,7 +20,6 @@ AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent)
 {
     setupUi(this);
 
-
     QString title="EcflowUI";
     QString ecfVersionTxt=QString::fromStdString(ecf::Version::raw());
     QString desc=QString::fromStdString(ecf::Version::description());
@@ -52,13 +52,15 @@ AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent)
     	descTxt+="<br><b>Qt version: </b>" + QString(qtv);
     }
 
-    QString logoTxt;
-    logoTxt+="<h3>  " + title + "</h3>";
+    QString logoTxt="<table><tr><td><img src=\':/viewer/logo.png\'></td>    <td></td><td>";
+    logoTxt+="<h2>" + title + "</h2>";
     if(!ecfVersionTxt.isEmpty())
     {
-    	logoTxt+="<p>  ecflow version: " + ecfVersionTxt + "</p>";
+        logoTxt+="<p>ecflow version: <b>" + ecfVersionTxt + "</b><br>";
+        logoTxt+="<i>Copyright 2009-2016 ECMWF</i><p>";
     }
 
+    logoTxt+="</td></tr></table>";
     logoLabel_->setText(logoTxt);
 
     versionLabel_->setText(descTxt);
@@ -71,4 +73,6 @@ AboutDialog::AboutDialog(QWidget* parent) : QDialog(parent)
     licenseText+=" nor does it submit to any jurisdiction.";
 
     licenseLabel_->setText(licenseText);
+
+    WidgetNameProvider::nameChildren(this);
 }
diff --git a/Viewer/src/AbstractNodeModel.cpp b/Viewer/src/AbstractNodeModel.cpp
index 6293bda..f6b4185 100644
--- a/Viewer/src/AbstractNodeModel.cpp
+++ b/Viewer/src/AbstractNodeModel.cpp
@@ -159,17 +159,27 @@ QModelIndex AbstractNodeModel::infoToIndex(VInfo_ptr info,int column) const
 				return serverToIndex(s);
 			}
 		}
-		else if(VNode* n=info->node())
-		{
-			return nodeToIndex(n);
-		}
+        else if(info->isNode())
+        {
+            VNode* n=info->node();
+            QModelIndex idx=nodeToIndex(n);
+            if(!idx.isValid())
+            {
+                return forceShowNode(n);
+            }
+            return idx;
+        }
+        else if(info->isAttribute())
+        {
+            VAttribute* a=info->attribute();
+            QModelIndex idx=attributeToIndex(a);
+            if(!idx.isValid())
+            {
+                return forceShowAttribute(a);
+            }
+            return idx;
+        }
 	}
 
 	return QModelIndex();
 }
-
-
-
-
-
-
diff --git a/Viewer/src/AbstractNodeModel.hpp b/Viewer/src/AbstractNodeModel.hpp
index 0c602d1..7ff34e8 100644
--- a/Viewer/src/AbstractNodeModel.hpp
+++ b/Viewer/src/AbstractNodeModel.hpp
@@ -40,7 +40,7 @@ public:
    						 NodeDataRole = Qt::UserRole+9, AttributeRole = Qt::UserRole+10,
 						 AttributeLineRole = Qt::UserRole+11, AbortedReasonRole = Qt::UserRole + 12,
                          NodeTypeRole = Qt::UserRole + 13, NodeTypeForegroundRole = Qt::UserRole + 14,
-                         ServerPointerRole = Qt::UserRole + 15};
+                         ServerPointerRole = Qt::UserRole + 15, SortRole = Qt::UserRole + 16};
 
 	void dataIsAboutToChange();
 	virtual VInfo_ptr nodeInfo(const QModelIndex& index)=0;
@@ -51,6 +51,10 @@ public:
 	virtual VModelData* data() const = 0;
 	virtual QModelIndex infoToIndex(VInfo_ptr,int column=0) const;
 	virtual QModelIndex nodeToIndex(const VNode*,int column=0) const=0;
+    virtual QModelIndex attributeToIndex(const VAttribute* a, int column=0) const=0;
+
+    virtual QModelIndex forceShowNode(const VNode*) const=0;
+    virtual QModelIndex forceShowAttribute(const VAttribute*) const=0;
 
 Q_SIGNALS:
 	void changed();
diff --git a/Viewer/src/AbstractTextEditSearchInterface.cpp b/Viewer/src/AbstractTextEditSearchInterface.cpp
index 906ed0a..6c01a85 100644
--- a/Viewer/src/AbstractTextEditSearchInterface.cpp
+++ b/Viewer/src/AbstractTextEditSearchInterface.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -21,5 +21,18 @@ AbstractTextEditSearchInterface::AbstractTextEditSearchInterface()
 	{
 		highlightColour_=p->value().value<QColor>();
 	}
+
+	vpPerformAutomaticSearch_ = VConfig::instance()->find("panel.output.automaticSearch.performSearch");
+	vpAutomaticSearchMode_    = VConfig::instance()->find("panel.output.automaticSearch.searchMode");
+	vpAutomaticSearchText_    = VConfig::instance()->find("panel.output.automaticSearch.searchText");
+	vpAutomaticSearchFrom_    = VConfig::instance()->find("panel.output.automaticSearch.searchFrom");
+	vpAutomaticSearchCase_    = VConfig::instance()->find("panel.output.automaticSearch.caseSensitive");
+
+	// these should always exist - if they don't then there is a spelling error in the above lines
+	assert(vpPerformAutomaticSearch_);
+	assert(vpAutomaticSearchMode_);
+	assert(vpAutomaticSearchText_);
+	assert(vpAutomaticSearchFrom_);
+	assert(vpAutomaticSearchCase_);
 }
 
diff --git a/Viewer/src/AbstractTextEditSearchInterface.hpp b/Viewer/src/AbstractTextEditSearchInterface.hpp
index b18d34c..1ef178d 100644
--- a/Viewer/src/AbstractTextEditSearchInterface.hpp
+++ b/Viewer/src/AbstractTextEditSearchInterface.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,9 +12,11 @@
 #define VIEWER_SRC_ABSTRACTTEXTEDITSEARCHINTERFACE_HPP_
 
 #include "StringMatchMode.hpp"
+#include "VProperty.hpp"
 
 #include <QColor>
 #include <QTextDocument>
+#include <QTextCursor>
 
 class AbstractTextEditSearchInterface
 {
@@ -23,16 +25,22 @@ public:
 	virtual ~AbstractTextEditSearchInterface() {};
 
 	virtual bool findString (QString str, bool highlightAll, QTextDocument::FindFlags findFlags,
-			                bool gotoStartOfWord, int iteration,StringMatchMode::Mode matchMode)=0;
+							 QTextCursor::MoveOperation move, int iteration,StringMatchMode::Mode matchMode)=0;
 	virtual void automaticSearchForKeywords(bool)=0;
 	virtual void refreshSearch()=0;
     virtual void clearHighlights()=0;
     virtual void disableHighlights()=0;
 	virtual void enableHighlights()=0;
 	virtual bool highlightsNeedSearch()=0;
+	virtual void gotoLastLine()=0;
 
 protected:
 	static QColor highlightColour_;
+	VProperty *vpPerformAutomaticSearch_;
+	VProperty *vpAutomaticSearchMode_;
+	VProperty *vpAutomaticSearchText_;
+	VProperty *vpAutomaticSearchFrom_;
+	VProperty *vpAutomaticSearchCase_;
 };
 
 
diff --git a/Viewer/src/ActionHandler.cpp b/Viewer/src/ActionHandler.cpp
index 09d1b33..88a6cef 100644
--- a/Viewer/src/ActionHandler.cpp
+++ b/Viewer/src/ActionHandler.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -24,10 +24,12 @@
 #include <QApplication>
 #endif
 
+#include "VNode.hpp"
 #include "Str.hpp"
 #include "ServerHandler.hpp"
 #include "MenuHandler.hpp"
 #include "CustomCommandDialog.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 #define _UI_ACTIONHANDLER_DEBUG
@@ -55,7 +57,7 @@ void ActionHandler::contextMenu(std::vector<VInfo_ptr> nodesLst,QPoint pos)
     {
 
 #ifdef _UI_ACTIONHANDLER_DEBUG
-        UserMessage::debug("ActionHandler::contextMenu --> item=" + item->name());
+        UiLog().dbg() << "ActionHandler::contextMenu --> item=" + item->name();
 #endif
     	if(item->handler() == "info_panel")
     	{
@@ -100,23 +102,125 @@ void ActionHandler::contextMenu(std::vector<VInfo_ptr> nodesLst,QPoint pos)
 #endif
     	}
 
-        else if(item->command() == "custom")  // would expect this to be 'Custom...' but it's just 'Custom'
+        else if(item->command() == "mark_for_move")
         {
-            CustomCommandDialog customCommandDialog(0);
-            customCommandDialog.setNodes(nodesLst);
-            if (customCommandDialog.exec() == QDialog::Accepted)
+            if (nodesLst.size() > 1)
             {
-                // the user could have changed the node selection within the custom editor
-                std::vector<VInfo_ptr> selectedNodes = customCommandDialog.selectedNodes();
+                UserMessage::message(UserMessage::ERROR, true, "Only one node can be marked for move at a time");
+                return;
+            }
+
+            VNode::setNodeMarkedForMove(nodesLst[0]->serverAlias(), nodesLst[0]->relativePath());
+
 
-                // send the command to the server
-                ServerHandler::command(selectedNodes, customCommandDialog.command().toStdString());
+            // suspend if not already suspended
+            ServerHandler* shSource = ServerHandler::findServer(VNode::nodeMarkedForMoveServerAlias());
+            assert(shSource);
+            VServer* vs = shSource->vRoot();
+            VNode* vnodeSource = vs->find(VNode::nodeMarkedForMoveRelPath());
+            if (!vnodeSource->isSuspended())
+            {
+                std::string suspendCommand = "ecflow_client --suspend <full_name> ";
+                shSource->command(VNode::nodeMarkedForMoveRelPath(), suspendCommand);
             }
+
+            UserMessage::message(UserMessage::INFO, true, "Node " + VNode::nodeMarkedForMoveServerAlias() + ":/" +
+                                                                    VNode::nodeMarkedForMoveRelPath() + " suspended and marked for move.");
         }
+
+        else if(item->command() == "move_marked")
+        {
+            if (nodesLst.size() > 1)
+            {
+                UserMessage::message(UserMessage::ERROR, true, "Only one destination node should be selected");
+                return;
+            }
+
+            // if same server, then error
+            // NO - ecflowview had this restriction, but it does not seem to be necessary
+            //if (nodesLst[0]->serverAlias() == aliasOfMarkedServer)
+            //{
+            //    UserMessage::message(UserMessage::ERROR, true, "Cannot move node to the same server");
+            //    return;
+            //}
+
+            // get a ServerHandler for the server
+            std::string aliasOfMarkedServer(VNode::nodeMarkedForMoveServerAlias());
+            ServerHandler* shSource = ServerHandler::findServer(aliasOfMarkedServer);
+            if (shSource == NULL)
+            {
+                UserMessage::message(UserMessage::ERROR, true, "The source server " + aliasOfMarkedServer + " must be loaded into the UI");
+                return;
+            }
+
+            // can only do this if the source (marked) node is suspended
+            std::string pathOfMarkedNode(VNode::nodeMarkedForMoveRelPath());
+            VServer* vs = shSource->vRoot();
+            assert(vs);
+            VNode* vnodeSource = vs->find(pathOfMarkedNode);
+            if (!vnodeSource)
+            {
+                UserMessage::message(UserMessage::ERROR, true, "The source node " + pathOfMarkedNode + " no longer exists on server " + aliasOfMarkedServer);
+                return;
+            }
+
+            if (!vnodeSource->isSuspended())
+            {
+                UserMessage::message(UserMessage::ERROR, true, "Node " + VNode::nodeMarkedForMoveServerAlias() + ":/" +
+                                                                         VNode::nodeMarkedForMoveRelPath() +
+                                                                         " must be suspended first.");
+                return;
+            }
+
+            // tell the user what we're about to do
+            ServerHandler *shDest = nodesLst[0]->server();
+            bool ok = UserMessage::confirm("About to move node " +
+                                           pathOfMarkedNode + " from server " +
+                                           aliasOfMarkedServer + " (" + shSource->host() + ":" + shSource->port() + ") to " +
+                                           nodesLst[0]->serverAlias() + " (" + shDest->host() + ":" + shDest->port() + ") "
+                                           "/" + nodesLst[0]->relativePath() +  ". Ok?");
+            // do it (?)
+            if (ok)
+            {
+                std::string plugCommand;
+                plugCommand = "ecflow_client --plug <full_name> " + shDest->host() + ":" + shDest->port() + nodesLst[0]->relativePath();
+                shSource->command(pathOfMarkedNode, plugCommand);
+                shDest->reset();  // the dest server will have a big update, and we don't want to wait for the next sync to see it
+                VNode::clearNodeMarkedForMove();
+            }
+        }
+
+
         else
         {
-        	bool ok=true;
-        	if(item && !item->question().empty() && item->shouldAskQuestion(nodesLst))
+            CustomCommandDialog *customCommandDialog = NULL;
+
+            if(item->command() == "custom")  // would expect this to be 'Custom...' but it's just 'Custom'
+            {
+                // invoke the custom command dialogue
+                customCommandDialog = new CustomCommandDialog(0);
+                customCommandDialog->setNodes(nodesLst);
+                if (customCommandDialog->exec() == QDialog::Accepted)
+                {
+                    // the user could have changed the node selection within the custom editor
+                    std::vector<VInfo_ptr> selectedNodes = customCommandDialog->selectedNodes();
+
+                    // the dialogue contains a 'fake' menu item created from the custom command
+                    item = &(customCommandDialog->menuItem());
+                }
+                else
+                {
+                    // user cancelled the custom command dialogue
+                    delete customCommandDialog;
+                    return;
+                }
+            }
+
+            bool ok=true;
+            if (item->isCustom())
+                MenuHandler::interceptCommandsThatNeedConfirmation(item);
+
+            if(item && !item->question().empty() && item->shouldAskQuestion(nodesLst))
         	{
                 std::string fullNames("<ul>");
                 std::string nodeNames("<ul>");
@@ -153,10 +257,10 @@ void ActionHandler::contextMenu(std::vector<VInfo_ptr> nodesLst,QPoint pos)
 
                 std::string question(item->question());
 
-			    std::string placeholder("<full_name>");
+                std::string placeholder("<full_name>");
                 ecf::Str::replace_all(question, placeholder, fullNames);
                 placeholder = "<node_name>";
-			    ecf::Str::replace_all(question, placeholder, nodeNames);
+                ecf::Str::replace_all(question, placeholder, nodeNames);
 
                 QMessageBox msgBox;
                 msgBox.setText(QString::fromStdString(question));
@@ -172,6 +276,9 @@ void ActionHandler::contextMenu(std::vector<VInfo_ptr> nodesLst,QPoint pos)
             if(ok)
                 ServerHandler::command(nodesLst,item->command());
                 //ServerHandler::command(nodesLst,action->iconText().toStdString(), true);
+
+            if (customCommandDialog)
+                   delete customCommandDialog;
         }
     }
 
diff --git a/Viewer/src/AstCollateVNodesVisitor.cpp b/Viewer/src/AstCollateVNodesVisitor.cpp
new file mode 100644
index 0000000..21931c4
--- /dev/null
+++ b/Viewer/src/AstCollateVNodesVisitor.cpp
@@ -0,0 +1,114 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "AstCollateVNodesVisitor.hpp"
+
+#include <assert.h>
+
+#include "VAttribute.hpp"
+#include "VAttributeType.hpp"
+#include "VNode.hpp"
+
+//AstCollateVNodesVisitor::AstCollateVNodesVisitor( std::set<VItem*>& s) : theSet_(s) {}
+
+AstCollateVNodesVisitor::AstCollateVNodesVisitor(std::vector<VItemTmp_ptr>& s) : items_(s) {}
+
+AstCollateVNodesVisitor::~AstCollateVNodesVisitor() {}
+
+void AstCollateVNodesVisitor::visitEventState(AstEventState* astNode)
+{
+}
+
+void AstCollateVNodesVisitor::visitNode(AstNode* astNode)
+{
+    if(Node* referencedNode = astNode->referencedNode())
+    {
+        if(VNode* n=static_cast<VNode*>(referencedNode->graphic_ptr()))
+        {
+            //theSet_.insert(n);
+            items_.push_back(VItemTmp::create(n));
+        }
+    }
+}
+
+void AstCollateVNodesVisitor::visitVariable(AstVariable* astVar)
+{
+
+#if 0
+    if(Node* referencedNode = astVar->referencedNode())
+    {
+        if(VNode* n=static_cast<VNode*>(referencedNode->graphic_ptr()))
+        {
+            QStringList types;
+            types << "event" << "meter" << "var" << "genvar";
+            Q_FOREACH(QString tName,types)
+            {                               
+                QList<VAttribute*> lst;
+                VAttributeType::getSearchData(tName.toStdString(),n,lst);
+                Q_FOREACH(VAttribute *a,lst)
+                {
+                    bool hasIt=false;
+                    for(std::set<VItem*>::iterator it = theSet_.begin();
+                        it != theSet_.end(); ++it)
+                    {
+                        if(a->sameContents(*it))
+                        {
+                            hasIt=true;
+                            return;
+                        }
+                    }
+
+                    if(!hasIt && a->strName() == astVar->name())
+                    {
+                        theSet_.insert(a);
+                        return;
+                    }
+                    else
+                        delete a;
+                }
+            }
+        }
+    }
+#endif
+
+    if(Node* referencedNode = astVar->referencedNode())
+    {
+        if(VNode* n=static_cast<VNode*>(referencedNode->graphic_ptr()))
+        {
+            QStringList types;
+            types << "event" << "meter" << "var" << "genvar";
+            Q_FOREACH(QString tName,types)
+            {
+                QList<VItemTmp_ptr> lst;
+                VAttributeType::items(tName.toStdString(),n,lst);
+                Q_FOREACH(VItemTmp_ptr aItem,lst)
+                {
+                    VAttribute *a=aItem->attribute();
+                    assert(a);
+                    for(std::vector<VItemTmp_ptr>::iterator it = items_.begin();it != items_.end(); ++it)
+                    {
+                        if(a->sameContents((*it)->item()))
+                        {
+                             return;
+                        }
+                    }
+
+                    if(a->strName() == astVar->name())
+                    {
+                        items_.push_back(aItem);
+                        return;
+                    }
+                }
+            }
+        }
+    }
+
+}
+
diff --git a/Viewer/src/AstCollateVNodesVisitor.hpp b/Viewer/src/AstCollateVNodesVisitor.hpp
new file mode 100644
index 0000000..afbffba
--- /dev/null
+++ b/Viewer/src/AstCollateVNodesVisitor.hpp
@@ -0,0 +1,59 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef ASTCOLLATEVNODESVISITOR_HPP
+#define ASTCOLLATEVNODESVISITOR_HPP
+
+#include "ExprAstVisitor.hpp"
+
+//#include <set>
+#include <vector>
+
+class VItem;
+
+#include "VItemTmp.hpp"
+
+class AstCollateVNodesVisitor : public ecf::ExprAstVisitor
+{
+public:
+  AstCollateVNodesVisitor(std::vector<VItemTmp_ptr>& );
+  virtual ~AstCollateVNodesVisitor();
+
+  virtual void visitTop(AstTop*){}
+  virtual void visitRoot(AstRoot*){}
+  virtual void visitAnd(AstAnd*){}
+  virtual void visitNot(AstNot*){}
+  virtual void visitPlus(AstPlus*){}
+  virtual void visitMinus(AstMinus*){}
+  virtual void visitDivide(AstDivide*){}
+  virtual void visitMultiply(AstMultiply*){}
+  virtual void visitModulo(AstModulo*){}
+  virtual void visitOr(AstOr*){}
+  virtual void visitEqual(AstEqual*){}
+  virtual void visitNotEqual(AstNotEqual*){}
+  virtual void visitLessEqual(AstLessEqual*){}
+  virtual void visitGreaterEqual(AstGreaterEqual*){}
+  virtual void visitGreaterThan(AstGreaterThan*){}
+  virtual void visitLessThan(AstLessThan*){}
+  virtual void visitLeaf(AstLeaf*){}
+  virtual void visitInteger(AstInteger*){}
+  virtual void visitFunction(AstFunction*){}
+  virtual void visitNodeState(AstNodeState*){}
+  virtual void visitEventState(AstEventState*);
+  virtual void visitNode(AstNode*);
+  virtual void visitVariable(AstVariable*);
+
+private:
+  //std::set<VItem*>& theSet_;
+  std::vector<VItemTmp_ptr>& items_;
+};
+
+#endif // ASTCOLLATEVNODESVISITOR_HPP
+
diff --git a/Viewer/src/AttributeEditor.cpp b/Viewer/src/AttributeEditor.cpp
index 49d58a5..52d0022 100644
--- a/Viewer/src/AttributeEditor.cpp
+++ b/Viewer/src/AttributeEditor.cpp
@@ -15,7 +15,7 @@
 #include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
 #include "VRepeat.hpp"
 
@@ -40,6 +40,8 @@ AttributeEditor::AttributeEditor(VInfo_ptr info,QString type,QWidget* parent) :
     Q_ASSERT(info_ && info_->isAttribute() && info_->attribute());
     messageLabel_->hide();
     
+    attrData_=info_->attribute()->data();
+
     QString wt="Edit " + type;
     wt+="  -  " + QString::fromStdString(VConfig::instance()->appLongName());
     setWindowTitle(wt);
@@ -53,7 +55,7 @@ AttributeEditor::AttributeEditor(VInfo_ptr info,QString type,QWidget* parent) :
 AttributeEditor::~AttributeEditor()
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::~AttributeEditor -->");
+    UiLog().dbg() << "AttributeEditor::~AttributeEditor -->";
 #endif
     detachInfo();
 #ifdef _USE_MODELESS_ATTRIBUTEDITOR
@@ -113,7 +115,7 @@ void AttributeEditor::accept()
 void AttributeEditor::attachInfo()
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::attachInfo -->");
+    UiLog().dbg() << "AttributeEditor::attachInfo -->";
 #endif
 
     if(info_)
@@ -128,30 +130,30 @@ void AttributeEditor::attachInfo()
     } 
 
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::attachInfo");
+    UiLog().dbg() << "<-- attachInfo";
 #endif
 }
 
 void AttributeEditor::detachInfo()
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::detachInfo -->");
+    UiLog().dbg() << "AttributeEditor::detachInfo -->";
 #endif
     if(info_)
     {
         if(info_->server())
         {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-            UserMessage::debug("   remove NodeObserver");
+            UiLog().dbg() << " remove NodeObserver";
 #endif
             info_->server()->removeNodeObserver(this);
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-            UserMessage::debug("   remove ServerObserver");
+            UiLog().dbg() << " remove ServerObserver";
 #endif
             info_->server()->removeServerObserver(this);
         }
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-            UserMessage::debug("   remove InfoObserver");
+            UiLog().dbg() << " remove InfoObserver";
 #endif
             info_->removeObserver(this);
     }
@@ -159,7 +161,7 @@ void AttributeEditor::detachInfo()
     messageLabel_->stopLoadLabel();
 
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::detachInfo");
+    UiLog().dbg() << "<-- detachInfo";
 #endif
 }
 
@@ -183,7 +185,7 @@ void AttributeEditor::setResetStatus(bool st)
 
 void AttributeEditor::setSuspended(bool st)
 {
-    UserMessage::qdebug("AttributeEditor::setSuspended --> " + QString::number(st));
+    UiLog().dbg() << "AttributeEditor::setSuspended --> " << st;
 
     Q_ASSERT(form_);
     form_->setEnabled(!st);
@@ -200,7 +202,7 @@ void AttributeEditor::setSuspended(bool st)
 void AttributeEditor::notifyDataLost(VInfo* info)
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::notifyDataLost -->");
+    UiLog().dbg() << "AttributeEditor::notifyDataLost -->";
 #endif
     if(info_ && info_.get() == info)
     {
@@ -209,14 +211,14 @@ void AttributeEditor::notifyDataLost(VInfo* info)
         setSuspended(true);
     }
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::notifyDataLost");
+    UiLog().dbg() << "<-- notifyDataLost";
 #endif
 }
 
 void AttributeEditor::notifyBeginNodeChange(const VNode* vn, const std::vector<ecf::Aspect::Type>& aspect,const VNodeChange&)
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::notifyBeginNodeChange -->");
+    UiLog().dbg() << "AttributeEditor::notifyBeginNodeChange -->";
 #endif
     if(info_ && info_->node() && info_->node() == vn)
     {
@@ -224,14 +226,14 @@ void AttributeEditor::notifyBeginNodeChange(const VNode* vn, const std::vector<e
         if(attrNumCh)
         {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("   ADD_REMOVE_ATTR");
+            UiLog().dbg() << " ADD_REMOVE_ATTR";
 #endif
             VAttribute* a=info_->attribute();
             Q_ASSERT(a);
-            if(!a->isValid(info_->node()))
+            if(!a->isValid(info_->node(),attrData_))
             {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-                UserMessage::debug("   attribute does not exist");
+                UiLog().dbg() << " attribute does not exist";
 #endif
                 detachInfo();
                 messageLabel_->showWarning("The edited " + type_ + " <b>is not available</b> any more! Please close the dialog!");
@@ -244,7 +246,7 @@ void AttributeEditor::notifyBeginNodeChange(const VNode* vn, const std::vector<e
         }
     }
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::notifyBeginNodeChange");
+    UiLog().dbg() << "<-- notifyBeginNodeChange";
 #endif
 }
 
@@ -260,7 +262,7 @@ void AttributeEditor::notifyDefsChanged(ServerHandler* server, const std::vector
 void AttributeEditor::notifyServerDelete(ServerHandler* server)
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::notifyServerDelete -->");
+    UiLog().dbg() << "AttributeEditor::notifyServerDelete -->";
 #endif
     if(info_ && info_->server() == server)
     {
@@ -269,7 +271,7 @@ void AttributeEditor::notifyServerDelete(ServerHandler* server)
         setSuspended(true);
     }
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::notifyServerDelete");
+    UiLog().dbg() << "<-- notifyServerDelete";
 #endif
 }
     
@@ -277,7 +279,7 @@ void AttributeEditor::notifyServerDelete(ServerHandler* server)
 void AttributeEditor::notifyBeginServerClear(ServerHandler* server)
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::notifyBeginServerClear -->");
+    UiLog().dbg() << "AttributeEditor::notifyBeginServerClear -->";
 #endif
 
     if(info_)
@@ -295,7 +297,7 @@ void AttributeEditor::notifyBeginServerClear(ServerHandler* server)
     }
 
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::notifyBeginServerClear");
+    UiLog().dbg() << "<-- notifyBeginServerClear";
 #endif
 }
 
@@ -303,7 +305,7 @@ void AttributeEditor::notifyBeginServerClear(ServerHandler* server)
 void AttributeEditor::notifyEndServerScan(ServerHandler* server)
 {
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("AttributeEditor::notifyEndServerScan -->");
+    UiLog(server).dbg() << "AttributeEditor::notifyEndServerScan -->";
 #endif
 
     if(info_)
@@ -329,7 +331,7 @@ void AttributeEditor::notifyEndServerScan(ServerHandler* server)
     }
 
 #ifdef _UI_ATTRIBUTEDITOR_DEBUG
-    UserMessage::debug("<-- AttributeEditor::notifyEndServerScan");
+    UiLog(server).dbg() << "<-- notifyEndServerScan";
 #endif
 }
 
diff --git a/Viewer/src/AttributeEditor.hpp b/Viewer/src/AttributeEditor.hpp
index 250293c..8c99d6d 100644
--- a/Viewer/src/AttributeEditor.hpp
+++ b/Viewer/src/AttributeEditor.hpp
@@ -65,6 +65,7 @@ protected:
     virtual bool isValueChanged()=0;
 
     VInfo_ptr info_;
+    QStringList attrData_;
     QWidget* form_;
     QString type_;
 };
diff --git a/Viewer/src/AttributeSearchPanel.cpp b/Viewer/src/AttributeSearchPanel.cpp
index dc5f57d..5fd1482 100644
--- a/Viewer/src/AttributeSearchPanel.cpp
+++ b/Viewer/src/AttributeSearchPanel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,6 +12,7 @@
 
 #include "CaseSensitiveButton.hpp"
 #include "NodeQuery.hpp"
+#include "NodeQueryOptionEdit.hpp"
 #include "StringMatchCombo.hpp"
 
 #include <QtGlobal>
@@ -67,7 +68,9 @@ class AttrGroupDesc
 public:
 	AttrGroupDesc(QString name,QGridLayout* grid) : name_(name), grid_(grid) {}
 
-	QString query() const;
+#if 0
+    QString query() const;
+#endif
 	void hide();
 	void show();
 	void add(AttrLineDesc* line) {lines_ << line;}
@@ -78,6 +81,8 @@ protected:
 	QGridLayout* grid_;
 };
 
+
+#if 0
 QString AttrGroupDesc::query() const
 {
 	QString q;
@@ -97,6 +102,7 @@ QString AttrGroupDesc::query() const
 
 	return q;
 }
+#endif
 
 void AttrGroupDesc::hide()
 {
@@ -113,7 +119,7 @@ void AttrGroupDesc::hide()
 				}
 			}
 		}
-	}
+    }
 }
 
 void AttrGroupDesc::show()
@@ -145,29 +151,46 @@ AttributeSearchPanel::AttributeSearchPanel(QWidget* parent) :
 	query_(NULL)
 {
 	//setupUi(this);
-
+#if 0
 	QVBoxLayout* vb=new QVBoxLayout;
 	setLayout(vb);
+    vb->setContentsMargins(0,0,0,0);
 
 	grid_=new QGridLayout();
 	vb->addLayout(grid_);
+    vb->addStretch(1);
 
-	//Build groups
+            //Build groups
 	//QStringList attGroupNames;
 	//attGroupNames << "date" << "event" << "label" << "late" << "limit" << "limiter" << "meter"
 	//    	   << "repeat" << "time" << "trigger" << "variable";
 
-	Q_FOREACH(QString grName,NodeQuery::attrGroupTerms())
-	{
-		AttrGroupDesc* gr=new AttrGroupDesc(grName,grid_);
-		groups_[grName]=gr;
+//TODO
 
-		Q_FOREACH(QString name,NodeQuery::attrTerms(grName))
-		{
-			QString label=name;
-			addStringLine(label,name,grName);
-		}
-	}
+    Q_FOREACH(NodeQueryAttrDef* aDef,NodeQuery::attrDef().values())
+    {
+        Q_ASSERT(aDef);
+        QString grName=aDef->name();
+        //AttrGroupDesc* gr=new AttrGroupDesc(grName,grid_);
+        //groups_[grName]=gr;
+
+        Q_FOREACH(NodeQueryDef* d,aDef->defs())
+        {
+            //NodeQueryOptionEdit *e=new NodeQueryStringOptionEdit(d->name(),grid_,this);
+            //groups_[grName] << e;
+
+#if 0
+            AttrLineStringDesc* line=new AttrLineStringDesc(text,row,le);
+
+            QMap<QString,AttrGroupDesc*>::iterator it=groups_.find(group);
+            assert(it != groups_.end());
+            it.value()->add(line);
+#endif
+            //e->setVisible(false);
+
+            //addStringLine(d->label(),d->name(),grName);
+        }
+    }
 
 	/*
 
@@ -191,23 +214,31 @@ AttributeSearchPanel::AttributeSearchPanel(QWidget* parent) :
 	addStringLine("Variable value","variable_value","variable");
 */
 	//Initialise lines
-	QMapIterator<QString,AttrGroupDesc*> it(groups_);
+
+#if 0
+    QMapIterator<QString,AttrGroupDesc*> it(groups_);
 	while (it.hasNext())
 	{
 		it.next();
 		it.value()->hide();
 	}
 	hide();
+#endif
+
+#endif
+
 }
 
 AttributeSearchPanel::~AttributeSearchPanel()
 {
-	QMapIterator<QString,AttrGroupDesc*> it(groups_);
+#if 0
+    QMapIterator<QString,AttrGroupDesc*> it(groups_);
 	while (it.hasNext())
 	{
 		it.next();
 		delete it.value();
 	}
+#endif
 }
 
 void AttributeSearchPanel::setQuery(NodeQuery* query)
@@ -215,18 +246,21 @@ void AttributeSearchPanel::setQuery(NodeQuery* query)
 	query_=query;
 }
 
-
-
+#if 0
 void AttributeSearchPanel::addStringLine(QString labelTxt,QString text,QString group)
 {
 	QLabel *label=new QLabel(labelTxt + ":",this);
 	QLineEdit* le=new QLineEdit(this);
 	StringMatchCombo *matchCb=new StringMatchCombo(this);
-	CaseSensitiveButton* caseTb=new CaseSensitiveButton(this);
-
+#if 0
+    CaseSensitiveButton* caseTb=new CaseSensitiveButton(this);
+#endif
 	le->setProperty("id",text);
 	matchCb->setProperty("id",text);
-	caseTb->setProperty("id",text);
+
+#if 0
+    caseTb->setProperty("id",text);
+#endif
 
 #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
     le->setClearButtonEnabled(true);
@@ -234,18 +268,21 @@ void AttributeSearchPanel::addStringLine(QString labelTxt,QString text,QString g
 
 	int row=grid_->rowCount();
 	grid_->addWidget(label,row,0);
-	grid_->addWidget(le,row,1);
-	grid_->addWidget(matchCb,row,2);
-	grid_->addWidget(caseTb,row,3);
-
+    grid_->addWidget(matchCb,row,1);
+    grid_->addWidget(le,row,2);
+#if 0
+    grid_->addWidget(caseTb,row,3);
+#endif
 	connect(le,SIGNAL(textEdited(QString)),
 			this,SLOT(slotTextEdited(QString)));
 
 	connect(matchCb,SIGNAL(currentIndexChanged(int)),
 			this,SLOT(slotMatchChanged(int)));
 
+#if 0
 	connect(caseTb,SIGNAL(changed(bool)),
 			this,SLOT(slotCaseChanged(bool)));
+#endif
 
 	AttrLineStringDesc* line=new AttrLineStringDesc(text,row,le);
 
@@ -253,13 +290,48 @@ void AttributeSearchPanel::addStringLine(QString labelTxt,QString text,QString g
 	assert(it != groups_.end());
 	it.value()->add(line);
 }
+#endif
 
 void AttributeSearchPanel::setSelection(QStringList lst)
 {
 	if(lst == selection_)
 		return;
 
-	QMapIterator<QString,AttrGroupDesc*> it(groups_);
+    QMapIterator<QString,QList<NodeQueryOptionEdit*> > it(groups_);
+    while (it.hasNext())
+    {
+        it.next();
+        bool inNew=lst.contains(it.key());
+        bool inCurrent=selection_.contains(it.key());
+
+        bool st=false;
+        if(inNew && !inCurrent)
+        {
+           st=true;
+        }
+        else if(!inNew && inCurrent)
+        {
+           st=false;
+        }
+
+        Q_FOREACH(NodeQueryOptionEdit* e,it.value())
+        {
+            e->setVisible(st);
+        }
+
+    }
+
+    if(lst.isEmpty())
+        hide();
+    else
+        show();
+
+    selection_=lst;
+
+    buildQuery();
+
+#if 0
+    QMapIterator<QString,QList<NodeQueryOptionEdit*> >> it(groups_);
 	while (it.hasNext())
 	{
 		it.next();
@@ -284,6 +356,8 @@ void AttributeSearchPanel::setSelection(QStringList lst)
 	selection_=lst;
 
 	buildQuery();
+#endif
+
 }
 
 void AttributeSearchPanel::clearSelection()
@@ -291,15 +365,25 @@ void AttributeSearchPanel::clearSelection()
 	setSelection(QStringList());
 }
 
+void AttributeSearchPanel::slotOptionEditChanged()
+{
+
+}
+
+
+#if 0
 void AttributeSearchPanel::slotTextEdited(QString val)
 {
 	if(QLineEdit *le=static_cast<QLineEdit*>(sender()))
 	{
-		QString id=le->property("id").toString();
+#if 0
+        QString id=le->property("id").toString();
 		if(NodeQueryStringOption *op=query_->stringOption(id))
 		{
 			op->setValue(val);
 		}
+#endif
+         Q_EMIT queryChanged();
 	}
 
 	buildQuery();
@@ -309,16 +393,23 @@ void AttributeSearchPanel::slotMatchChanged(int val)
 {
 	if(StringMatchCombo *cb=static_cast<StringMatchCombo*>(sender()))
 	{
-		QString id=cb->property("id").toString();
+#if 0
+        QString id=cb->property("id").toString();
 		if(NodeQueryStringOption *op=query_->stringOption(id))
 		{
 			op->setMatchMode(cb->currentMatchMode());
-		}
+        }
+#endif
+        Q_EMIT queryChanged();
 	}
 
 	buildQuery();
 }
+#endif
+
 
+
+#if 0
 void AttributeSearchPanel::slotCaseChanged(bool val)
 {
 	if(CaseSensitiveButton *tb=static_cast<CaseSensitiveButton*>(sender()))
@@ -332,7 +423,7 @@ void AttributeSearchPanel::slotCaseChanged(bool val)
 
 	buildQuery();
 }
-
+#endif
 
 void AttributeSearchPanel::buildQuery()
 {
diff --git a/Viewer/src/AttributeSearchPanel.hpp b/Viewer/src/AttributeSearchPanel.hpp
index bc0e158..4199791 100644
--- a/Viewer/src/AttributeSearchPanel.hpp
+++ b/Viewer/src/AttributeSearchPanel.hpp
@@ -17,6 +17,8 @@ class QGridLayout;
 class QStandardItemModel;
 class AttrGroupDesc;
 class NodeQuery;
+class NodeQueryOptionEdit;
+
 
 class AttributeSearchPanel : public QWidget
 {
@@ -36,18 +38,22 @@ public Q_SLOTS:
     void clearSelection();
 
 protected Q_SLOTS:
-	void slotTextEdited(QString);
-	void slotMatchChanged(int);
-	void slotCaseChanged(bool);
+    void slotOptionEditChanged();
+
+//    void slotTextEdited(QString);
+//	void slotMatchChanged(int);
+#if 0
+    void slotCaseChanged(bool);
+#endif
 
 Q_SIGNALS:
 	void queryChanged();
 
 private:
-	void addStringLine(QString labelTxt,QString text,QString group);
+    //void addStringLine(QString labelTxt,QString text,QString group);
 
 	NodeQuery* query_;
-	QMap<QString,AttrGroupDesc*> groups_;
+    QMap<QString,QList<NodeQueryOptionEdit*> > groups_;
 	QGridLayout* grid_;
 	QStringList selection_;
 
diff --git a/Viewer/src/CMakeLists.txt b/Viewer/src/CMakeLists.txt
index 388e1d6..f111810 100644
--- a/Viewer/src/CMakeLists.txt
+++ b/Viewer/src/CMakeLists.txt
@@ -7,9 +7,9 @@ set(viewer_srcs
     AbstractTextEditSearchInterface.cpp
     ActionHandler.cpp
     Animation.cpp
+    AstCollateVNodesVisitor.cpp
     AttributeEditor.cpp
-    AttributeEditorFactory.cpp
-    AttributeSearchPanel.cpp
+    AttributeEditorFactory.cpp   
     CaseSensitiveButton.cpp
     ChangeNotify.cpp
     ChangeNotifyDialog.cpp
@@ -29,7 +29,7 @@ set(viewer_srcs
     DashboardDialog.cpp
     DashboardDock.cpp
     DashboardTitle.cpp
-    DashboardWidget.hpp
+    DashboardWidget.cpp
     DirectoryHandler.cpp
     EditItemWidget.cpp
     EditProvider.cpp
@@ -47,6 +47,7 @@ set(viewer_srcs
     InfoPanelItem.cpp   
     InfoPanelHandler.cpp
     InfoProvider.cpp
+    InputEventLog.cpp
     JobItemWidget.cpp
     LabelEditor.cpp
     LimitEditor.cpp
@@ -55,6 +56,7 @@ set(viewer_srcs
     LogModel.cpp
     LogProvider.cpp
     LogServer.cpp
+    LogTruncator.cpp
     MainWindow.cpp
     ManualItemWidget.cpp 
     MenuConfigDialog.cpp
@@ -72,6 +74,8 @@ set(viewer_srcs
     NodeQueryEditor.cpp
     NodeQueryEngine.cpp
     NodeQueryHandler.cpp
+    NodeQueryOption.cpp
+    NodeQueryOptionEdit.cpp
     NodeQueryResult.cpp
     NodeQueryResultModel.cpp
     NodeQueryResultView.cpp
@@ -113,6 +117,7 @@ set(viewer_srcs
     ServerItem.cpp
     ServerList.cpp
     ServerListDialog.cpp
+    ServerListSyncWidget.cpp
     ServerSettingsItemWidget.cpp
     SessionDialog.cpp
     SessionRenameDialog.cpp
@@ -132,14 +137,21 @@ set(viewer_srcs
     TableNodeViewDelegate.cpp
     TableNodeWidget.cpp
     TextEditSearchLine.cpp
-    TimeItemWidget.cpp
+    TimeItemWidget.cpp    
+    TriggerBrowser.cpp
+    TriggerEditor.cpp
     TriggerItemWidget.cpp
+    TriggerTextWidget.cpp
     TreeNodeModel.cpp
     TreeNodeView.cpp
     TreeNodeViewDelegate.cpp
     TreeNodeWidget.cpp
     TreeView.cpp
+    TriggerCollector.cpp
     TriggerView.cpp
+    TriggeredScanner.cpp
+    UIDebug.cpp
+    UiLog.cpp
     UpdateTimer.cpp
     UserMessage.cpp
     VAttribute.cpp
@@ -151,6 +163,9 @@ set(viewer_srcs
     VInfo.cpp
     VFile.cpp
     VFileInfo.cpp
+    VItem.cpp
+    VItemPathParser.cpp
+    VItemTmp.cpp
     VModelData.cpp
     VNode.cpp
     VNodeList.cpp
@@ -172,6 +187,7 @@ set(viewer_srcs
     VariableView.cpp
     VConfigLoader.cpp
     WhyItemWidget.cpp
+    WidgetNameProvider.cpp
     ZombieItemWidget.cpp
     ZombieModel.cpp
     TextPager/TextPagerCursor.cpp
@@ -197,7 +213,6 @@ set(viewer_moc_files AbstractNodeModel.hpp
     ActionHandler.hpp
     Animation.hpp
     AttributeEditor.hpp
-    AttributeSearchPanel.hpp
     CaseSensitiveButton.hpp
     ChangeNotifyDialog.hpp
     ChangeNotifyEditor.hpp
@@ -219,10 +234,12 @@ set(viewer_moc_files AbstractNodeModel.hpp
     GotoLineDialog.hpp
     HistoryItemWidget.hpp              
     InfoPanel.hpp
+    InputEventLog.hpp
     LabelEditor.hpp
     LimitEditor.hpp
     LineEdit.hpp
     LogProvider.hpp
+    LogTruncator.hpp
     MainWindow.hpp
     MenuConfigDialog.hpp
     MeterEditor.hpp
@@ -231,6 +248,7 @@ set(viewer_moc_files AbstractNodeModel.hpp
     NodePathWidget.hpp
     NodeQueryCombo.hpp           
     NodeQueryEditor.hpp
+    NodeQueryOptionEdit.hpp
     NodeQueryEngine.hpp
     NodeQueryResult.hpp
     NodeQueryResultModel.hpp
@@ -257,6 +275,7 @@ set(viewer_moc_files AbstractNodeModel.hpp
     ServerComThread.hpp
     ServerHandler.hpp
     ServerListDialog.hpp
+    ServerListSyncWidget.hpp
     ServerSettingsItemWidget.hpp
     SessionDialog.hpp
     SessionRenameDialog.hpp
@@ -273,6 +292,10 @@ set(viewer_moc_files AbstractNodeModel.hpp
     TreeNodeView.hpp           
     TreeNodeViewDelegate.hpp
     TreeNodeWidget.hpp
+    TriggerBrowser.hpp
+    TriggerEditor.hpp
+    TriggerItemWidget.hpp
+    TriggeredScanner.hpp
     VariableItemWidget.hpp
     VariableModel.hpp
     VariableModelData.hpp
@@ -280,6 +303,7 @@ set(viewer_moc_files AbstractNodeModel.hpp
     VFilter.hpp
     VModelData.hpp
     VNodeList.hpp
+    WhyItemWidget.hpp
     ZombieItemWidget.hpp
     TextPager/TextPagerCursor_p.hpp
     TextPager/TextPagerDocument.hpp
@@ -326,6 +350,7 @@ set(viewer_wrap_ui_files
     ServerAddDialog.ui
     ServerEditDialog.ui 
     ServerListDialog.ui
+    ServerListSyncWidget.ui
     ServerSettingsItemWidget.ui
     SessionDialog.ui
     SessionRenameDialog.ui
@@ -334,7 +359,9 @@ set(viewer_wrap_ui_files
     TableNodeWidget.ui
     TimeItemWidget.ui
     TreeNodeWidget.ui
-    TriggerItemWidget.ui          
+    TriggerBrowser.ui
+    TriggerEditorWidget.ui
+    TriggerItemWidget.ui
     VariableAddDialog.ui
     VariablePropDialog.ui
     VariableItemWidget.ui
@@ -379,8 +406,9 @@ ecbuild_add_executable( TARGET   ecflow_ui.x
      ${CMAKE_CURRENT_BINARY_DIR}
     LIBS core nodeattr node libparser base libclient 
          pthread  
-         m crypt dl fl
+         m dl
          ${ECFLOW_QT_LIBRARIES}
+         ${OPENSSL_LIBRARIES}
 )
 
 # This ensures that for debug config, we only link with debug boost libs, for other configs, we link with optimised boost libs
diff --git a/Viewer/src/ChangeNotify.cpp b/Viewer/src/ChangeNotify.cpp
index 31d0c6e..f69a84a 100644
--- a/Viewer/src/ChangeNotify.cpp
+++ b/Viewer/src/ChangeNotify.cpp
@@ -14,7 +14,7 @@
 #include "ChangeNotifyModel.hpp"
 #include "ChangeNotifyWidget.hpp"
 #include "Sound.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
 #include "VConfigLoader.hpp"
 #include "VNode.hpp"
@@ -267,7 +267,7 @@ void ChangeNotify::load(VProperty* group)
 {
 	if(group->name() == "notification")
 	{
-		UserMessage::message(UserMessage::DBG, false,"ChangeNotify:load() -- > notification");
+        UiLog().dbg() << "ChangeNotify:load() -- > notification";
 
 		for(int i=0; i < group->children().size(); i++)
 		{
@@ -306,10 +306,10 @@ void ChangeNotify::load(VProperty* group)
 
 void ChangeNotify::loadServerSettings()
 {
-	UserMessage::message(UserMessage::DBG, false,"ChangeNotify::loadServerSettings() --> " + id_);
+    UiLog().dbg() << "ChangeNotify::loadServerSettings() --> " << id_;
 
 	std::string v("server.notification." + id_ + ".enabled");
-	UserMessage::message(UserMessage::DBG, false," property: " +  v);
+    UiLog().dbg() << " property: " <<  v;
 
 	if(VProperty *p=VConfig::instance()->find(v))
 	{
@@ -317,8 +317,7 @@ void ChangeNotify::loadServerSettings()
 	}
 	else
 	{
-		UserMessage::message(UserMessage::ERROR, false,
-			std::string("  Error!  Unable to find property: " + v));
+        UiLog().err() << "  Error!  Unable to find property: " << v;
 	}
 }
 
diff --git a/Viewer/src/ChangeNotifyDialog.cpp b/Viewer/src/ChangeNotifyDialog.cpp
index 6e62b3f..20efb50 100644
--- a/Viewer/src/ChangeNotifyDialog.cpp
+++ b/Viewer/src/ChangeNotifyDialog.cpp
@@ -17,6 +17,7 @@
 #include "TreeView.hpp"
 #include "VNodeList.hpp"
 #include "VProperty.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <QCloseEvent>
 #include <QDebug>
@@ -135,6 +136,8 @@ ChangeNotifyDialog::ChangeNotifyDialog(QWidget *parent) :
 	grad_.setFinalStop(0,1);
 
 	readSettings();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 ChangeNotifyDialog::~ChangeNotifyDialog()
diff --git a/Viewer/src/CommandDesignerWidget.cpp b/Viewer/src/CommandDesignerWidget.cpp
index a1d5eb3..210f558 100644
--- a/Viewer/src/CommandDesignerWidget.cpp
+++ b/Viewer/src/CommandDesignerWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -15,14 +15,14 @@
 #include "CustomCommandHandler.hpp"
 #include "Child.hpp"
 #include "Str.hpp"
-#include "MenuHandler.hpp"
 #include "NodeQueryResult.hpp"
+#include "NodeExpression.hpp"
 
 using namespace boost;
 namespace po = boost::program_options;
 
 
-CommandDesignerWidget::CommandDesignerWidget(QWidget *parent) : QWidget(parent)
+CommandDesignerWidget::CommandDesignerWidget(QWidget *parent) : QWidget(parent), menuItem_("")
 {
 	setupUi(this);
 
@@ -643,6 +643,24 @@ void CommandDesignerWidget::on_savedCommandsTable__cellClicked(int row, int colu
 }
 
 
+// the caller has asked for a 'fake' menu item from the dialogue, so we create it here
+MenuItem &CommandDesignerWidget::menuItem()
+{
+	// put the right information into our menu item and return a reference to it
+	menuItem_.setCommand(commandLineEdit_->text().toStdString());
+	menuItem_.setCustom(true);
+
+	if (menuItem_.visibleCondition() == NULL)
+	{
+		BaseNodeCondition *trueCond  = new TrueNodeCondition();
+		menuItem_.setEnabledCondition(trueCond);
+		menuItem_.setVisibleCondition(trueCond);
+		menuItem_.setQuestionCondition(trueCond);
+	}
+	return menuItem_;
+}
+
+
 /*
 bool CommandDesignerWidget::eventFilter(QObject* object, QEvent* event)
 {
diff --git a/Viewer/src/CommandDesignerWidget.hpp b/Viewer/src/CommandDesignerWidget.hpp
index c10c333..0546655 100644
--- a/Viewer/src/CommandDesignerWidget.hpp
+++ b/Viewer/src/CommandDesignerWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -18,6 +18,7 @@ class CommandLineEdit;
 #include "ui_CommandDesignerWidget.h"
 #include "CustomCommandHandler.hpp"
 #include "NodeQueryResultModel.hpp"
+#include "MenuHandler.hpp"
 
 #include "CtsCmdRegistry.hpp"
 
@@ -29,7 +30,7 @@ public:
 	explicit CommandDesignerWidget(QWidget *parent = 0);
 	~CommandDesignerWidget();
 
-	QString command() {return commandLineEdit_->text();};
+	MenuItem &menuItem();
 	void setNodes(std::vector<VInfo_ptr> &nodes);
 	std::vector<VInfo_ptr> &selectedNodes();
 
@@ -89,6 +90,7 @@ private:
 	bool saveCommandsOnExit_;
 	bool saveOptionsVisible_;
 	std::vector<std::string> componentBlacklist_;
+	MenuItem menuItem_;
 
 	std::vector<VInfo_ptr> nodes_;
 	NodeQueryResultModel nodeModel_; 
diff --git a/Viewer/src/CustomCommandDialog.cpp b/Viewer/src/CustomCommandDialog.cpp
index ebb4572..ebd7245 100644
--- a/Viewer/src/CustomCommandDialog.cpp
+++ b/Viewer/src/CustomCommandDialog.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
diff --git a/Viewer/src/CustomCommandDialog.hpp b/Viewer/src/CustomCommandDialog.hpp
index ca453fc..e74f399 100644
--- a/Viewer/src/CustomCommandDialog.hpp
+++ b/Viewer/src/CustomCommandDialog.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -23,7 +23,7 @@ public:
 	explicit CustomCommandDialog(QWidget *parent = 0);
 	~CustomCommandDialog() {};
 
-    QString command() {return commandDesigner_->command();};
+	MenuItem &menuItem() {return commandDesigner_->menuItem();};
 	void setNodes(std::vector<VInfo_ptr> &nodes) {commandDesigner_->setNodes(nodes);};
 	std::vector<VInfo_ptr> &selectedNodes() {return commandDesigner_->selectedNodes();};
 
diff --git a/Viewer/src/CustomCommandHandler.cpp b/Viewer/src/CustomCommandHandler.cpp
index 4004557..3031cfb 100644
--- a/Viewer/src/CustomCommandHandler.cpp
+++ b/Viewer/src/CustomCommandHandler.cpp
@@ -74,7 +74,7 @@ CustomCommand* CustomCommandHandler::replace(int index, const std::string& name,
 
 CustomCommand* CustomCommandHandler::replace(int index, const CustomCommand &cmd)
 {
-    replace(index, cmd.name(), cmd.command(), cmd.inContextMenu());
+    return replace(index, cmd.name(), cmd.command(), cmd.inContextMenu());
 }
 
 
@@ -105,6 +105,8 @@ CustomCommand* CustomCommandHandler::duplicate(int index)
     CustomCommand*newCmd = add(newName, item->command(), item->inContextMenu(), false);
 
     writeSettings();
+
+    return newCmd;
 }
 
 void CustomCommandHandler::swapCommandsByIndex(int i1, int i2)
diff --git a/Viewer/src/Dashboard.cpp b/Viewer/src/Dashboard.cpp
index 1ee512b..2be1cba 100644
--- a/Viewer/src/Dashboard.cpp
+++ b/Viewer/src/Dashboard.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -19,9 +19,10 @@
 #include "ServerFilter.hpp"
 #include "TableNodeWidget.hpp"
 #include "TreeNodeWidget.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VFilter.hpp"
 #include "VSettings.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <QDebug>
 #include <QVBoxLayout>
@@ -41,6 +42,8 @@ Dashboard::Dashboard(QString rootNode,QWidget *parent) :
 	//to dock all the component widgets!
 	setWindowFlags(Qt::Widget);
 
+    setObjectName("db");
+
 	//The serverfilter. It holds the list of servers displayed by this dashboard.
 	serverFilter_=new ServerFilter();
 	serverFilter_->addObserver(this);
@@ -50,20 +53,21 @@ Dashboard::Dashboard(QString rootNode,QWidget *parent) :
 	//Central widget - we need to create it but we do not
 	//use it. So we can hide it!
 	QWidget *w=new QLabel("centre",this);
-	setCentralWidget(w);
+    w->setObjectName("dbc");
+    setCentralWidget(w);
 	w->hide();
 
 	layout()->setContentsMargins(0,0,0,0);
 
 	setDockOptions(QMainWindow::AnimatedDocks|QMainWindow::AllowTabbedDocks|QMainWindow::AllowNestedDocks);
-
-	connect(titleHandler_,SIGNAL(changed(QString,QPixmap)),
-			this,SLOT(slotTitle(QString,QPixmap)));
 }
 
 Dashboard::~Dashboard()
 {
-	Q_EMIT aboutToDelete();
+    widgets_.clear();
+    popupWidgets_.clear();
+
+    Q_EMIT aboutToDelete();
 
 	serverFilter_->removeObserver(this);
 	delete serverFilter_;
@@ -79,9 +83,6 @@ DashboardWidget* Dashboard::addWidgetCore(const std::string& type)
 	{
 		NodeWidget* ctl=new TreeNodeWidget(serverFilter_,this);
 
-		connect(ctl,SIGNAL(selectionChanged(VInfo_ptr)),
-				this,SIGNAL(selectionChanged(VInfo_ptr)));
-
 		connect(ctl,SIGNAL(popInfoPanel(VInfo_ptr,QString)),
 				this,SLOT(slotPopInfoPanel(VInfo_ptr,QString)));
 
@@ -94,9 +95,6 @@ DashboardWidget* Dashboard::addWidgetCore(const std::string& type)
 	{
 		NodeWidget* ctl=new TableNodeWidget(serverFilter_,this);
 
-		connect(ctl,SIGNAL(selectionChanged(VInfo_ptr)),
-				this,SIGNAL(selectionChanged(VInfo_ptr)));
-
 		connect(ctl,SIGNAL(popInfoPanel(VInfo_ptr,QString)),
 				this,SLOT(slotPopInfoPanel(VInfo_ptr,QString)));
 
@@ -107,25 +105,45 @@ DashboardWidget* Dashboard::addWidgetCore(const std::string& type)
 	}
 	else if(type == "info")
 	{
-		InfoPanel* ctl=new InfoPanel(this);
-		connect(this,SIGNAL(selectionChanged(VInfo_ptr)),
-					ctl,SLOT(slotReload(VInfo_ptr)));
-
-        connect(ctl,SIGNAL(selectionChanged(VInfo_ptr)),
-                    this,SLOT(slotInfoPanelSelection(VInfo_ptr)));
+		InfoPanel* ctl=new InfoPanel(this);       
 		w=ctl;
 	}
 
+    if(w)
+    {
+        connect(w,SIGNAL(selectionChanged(VInfo_ptr)),
+                this,SLOT(slotSelectionChanged(VInfo_ptr)));
+    }
+
 	return w;
 }
 
 
+void Dashboard::slotSelectionChanged(VInfo_ptr info)
+{
+    DashboardWidget* s=static_cast<DashboardWidget*>(sender());
+
+    Q_FOREACH(DashboardWidget* dw,widgets_)
+    {
+         if(dw != s)
+             dw->setCurrentSelection(info);
+    }
+    Q_FOREACH(DashboardWidget* dw,popupWidgets_)
+    {
+         if(dw != s)
+             dw->setCurrentSelection(info);
+    }
+
+    Q_EMIT selectionChanged(info);
+}
+
+
 DashboardWidget* Dashboard::addWidget(const std::string& type)
 {
 	//Get a unique dockId stored as objectName
 	QString dockId=uniqueDockId();
 
-	DashboardWidget*w=addWidget(type,dockId.toStdString());
+    DashboardWidget* w=addWidget(type,dockId.toStdString());
 
 	//At this point the widgets can be inactive. Reload will make them active!!!
 	w->reload();
@@ -197,6 +215,9 @@ DashboardWidget* Dashboard::addDialog(const std::string& type)
     connect(dia,SIGNAL(finished(int)),
             this,SLOT(slotDialogFinished(int)));
 
+    connect(dia,SIGNAL(aboutToClose()),
+            this,SLOT(slotDialogClosed()));
+
     //The dialog will reparent the widget
     dia->add(w);
 	dia->show();
@@ -211,15 +232,8 @@ void Dashboard::addSearchDialog()
 	NodeSearchDialog* d=new NodeSearchDialog(0);
 	d->queryWidget()->setServerFilter(serverFilter_);
 
-	for(int i=0; i < widgets_.count(); i++)
-	{
-		if(widgets_.at(i)->type() == "tree")
-		{
-			connect(d->queryWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
-				    widgets_.at(i),SLOT(setCurrentSelection(VInfo_ptr)));
-
-		}
-	}
+    connect(d->queryWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
+            this,SLOT(slotSelectionChanged(VInfo_ptr)));
 
     connect(d->queryWidget(),SIGNAL(infoPanelCommand(VInfo_ptr,QString)),
             this,SLOT(slotPopInfoPanel(VInfo_ptr,QString)));
@@ -239,14 +253,8 @@ void Dashboard::addSearchDialog(VInfo_ptr info)
 	d->queryWidget()->setServerFilter(serverFilter_);
 	d->queryWidget()->setRootNode(info);
 
-	for(int i=0; i < widgets_.count(); i++)
-	{
-		if(widgets_.at(i)->type() == "tree")
-		{
-			connect(d->queryWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
-				    widgets_.at(i),SLOT(setCurrentSelection(VInfo_ptr)));
-		}
-	}
+    connect(d->queryWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
+            this,SLOT(slotSelectionChanged(VInfo_ptr)));
 
     connect(d->queryWidget(),SIGNAL(infoPanelCommand(VInfo_ptr,QString)),
             this,SLOT(slotPopInfoPanel(VInfo_ptr,QString)));
@@ -291,6 +299,8 @@ void Dashboard::slotPopInfoPanel(QString name)
             ip->setDetached(true);
 			ip->setCurrent(name.toStdString());
 		}
+
+        popupWidgets_ <<  dw;
 	}
 }
 
@@ -304,16 +314,11 @@ void Dashboard::slotPopInfoPanel(VInfo_ptr info,QString name)
             ip->slotReload(info);
             ip->setCurrent(name.toStdString());
 		}
-	}
-}
 
-void Dashboard::slotTitle(QString s,QPixmap p)
-{
-	Q_EMIT titleChanged(this,s,p);
+        popupWidgets_ <<  dw;
+	}
 }
 
-
-
 void Dashboard::slotCommand(VInfo_ptr info,QString cmd)
 {
 	if(!info || !info.get() )
@@ -334,9 +339,19 @@ void Dashboard::slotDialogFinished(int)
 	if(DashboardDialog* dia=static_cast<DashboardDialog*>(sender()))
 	{
 		disconnect(this,0,dia->dashboardWidget(),0);
+        popupWidgets_.removeOne(dia->dashboardWidget());
 	}
 }
 
+void Dashboard::slotDialogClosed()
+{
+    if(DashboardDialog* dia=static_cast<DashboardDialog*>(sender()))
+    {
+        disconnect(this,0,dia->dashboardWidget(),0);
+        popupWidgets_.removeOne(dia->dashboardWidget());
+    }
+}
+
 //------------------------
 // Rescan
 //------------------------
@@ -404,7 +419,7 @@ void Dashboard::readSettings(VComboSettings* vs)
 
 	Q_FOREACH(QWidget* w,findChildren<QDockWidget*>())
 	{
-		UserMessage::message(UserMessage::DBG,false,std::string("DashBoard::readSettings() dock: ") +  w->objectName().toStdString());
+        UiLog().dbg() << "DashBoard::readSettings() dock: " <<  w->objectName();
 	}
 
 	//Read the information about the dashboard widgets.
@@ -443,10 +458,13 @@ void Dashboard::readSettings(VComboSettings* vs)
 	settingsAreRead_=false;
 }
 
+#if 0
 void Dashboard::slotInfoPanelSelection(VInfo_ptr info)
 {
     selectInTreeView(info);
 }
+#endif
+
 
 void Dashboard::selectFirstServerInView()
 {
diff --git a/Viewer/src/Dashboard.hpp b/Viewer/src/Dashboard.hpp
index 756b794..6472529 100644
--- a/Viewer/src/Dashboard.hpp
+++ b/Viewer/src/Dashboard.hpp
@@ -45,6 +45,7 @@ public:
 	void selectFirstServer();
     bool selectInTreeView(VInfo_ptr);
     void addSearchDialog();
+    DashboardTitle* titleHandler() const {return titleHandler_;}
 
 	void notifyServerFilterAdded(ServerItem* item);
 	void notifyServerFilterRemoved(ServerItem* item);
@@ -56,7 +57,6 @@ public:
 
 Q_SIGNALS:
     void selectionChanged(VInfo_ptr);
-	void titleChanged(QWidget*,QString,QPixmap);
 	void contentsChanged();
 	void aboutToDelete();
 
@@ -65,11 +65,12 @@ public Q_SLOTS:
 	void slotCommand(VInfo_ptr,QString);
 
 protected Q_SLOTS:
-	void slotTitle(QString,QPixmap);
     void slotDockClose();
     void slotDialogFinished(int);
+    void slotDialogClosed();
     void slotPopInfoPanel(QString);
-    void slotInfoPanelSelection(VInfo_ptr);
+    //void slotInfoPanelSelection(VInfo_ptr);
+    void slotSelectionChanged(VInfo_ptr info);
 
 private:
 	DashboardWidget* addWidgetCore(const std::string& type);
@@ -82,7 +83,8 @@ private:
 
 	ServerFilter* serverFilter_;
 	DashboardTitle* titleHandler_;
-	QList<DashboardWidget*> widgets_;
+    QList<DashboardWidget*> widgets_;
+    QList<DashboardWidget*> popupWidgets_;
 	bool settingsAreRead_;
 	static int maxWidgetNum_;
 };
diff --git a/Viewer/src/DashboardDialog.cpp b/Viewer/src/DashboardDialog.cpp
index 8dcc1ee..8998b52 100644
--- a/Viewer/src/DashboardDialog.cpp
+++ b/Viewer/src/DashboardDialog.cpp
@@ -12,6 +12,7 @@
 
 #include "DashboardWidget.hpp"
 #include "SessionHandler.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <QAbstractButton>
 #include <QCloseEvent>
@@ -34,6 +35,8 @@ DashboardDialog::DashboardDialog(QWidget *parent) :
 	}
 
 	readSettings();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 DashboardDialog::~DashboardDialog()
@@ -64,7 +67,8 @@ void DashboardDialog::reject()
 
 void DashboardDialog::closeEvent(QCloseEvent * event)
 {
-	event->accept();
+    Q_EMIT aboutToClose();
+    event->accept();
 	writeSettings();
 }
 
diff --git a/Viewer/src/DashboardDialog.hpp b/Viewer/src/DashboardDialog.hpp
index 009711c..38a41bb 100644
--- a/Viewer/src/DashboardDialog.hpp
+++ b/Viewer/src/DashboardDialog.hpp
@@ -25,13 +25,16 @@ public:
     ~DashboardDialog();
 	
     void add(DashboardWidget*);
-	DashboardWidget* dashboardWidget() const {return dw_;}
+	DashboardWidget* dashboardWidget() const {return dw_;} 
 
 public Q_SLOTS:	
 	void reject();
     void slotUpdateTitle(QString);
     void slotOwnerDelete();
 	
+Q_SIGNALS:
+    void aboutToClose();
+
 protected:
 	void closeEvent(QCloseEvent * event);
     void readSettings();
diff --git a/Viewer/src/DashboardDock.cpp b/Viewer/src/DashboardDock.cpp
index 12326ae..85f7d8b 100644
--- a/Viewer/src/DashboardDock.cpp
+++ b/Viewer/src/DashboardDock.cpp
@@ -26,10 +26,10 @@ DashboardDockTitleWidget::DashboardDockTitleWidget(QWidget *parent) :
 	QPalette p=palette();
 	QLinearGradient gr(0,0,0,1);
 	gr.setCoordinateMode(QGradient::ObjectBoundingMode);
-	gr.setColorAt(0,QColor(130,130,130));
-	gr.setColorAt(0.4,QColor(120,120,120));
-	gr.setColorAt(0.41,QColor(112,112,112));
-	gr.setColorAt(1,QColor(95,95,95));
+    gr.setColorAt(0,QColor(126,126,126));
+    gr.setColorAt(0.4,QColor(105,105,105));
+    gr.setColorAt(0.41,QColor(97,97,97));
+    gr.setColorAt(1,QColor(70,70,70));
 	p.setBrush(QPalette::Window,gr);
 	setPalette(p);
 
@@ -37,9 +37,11 @@ DashboardDockTitleWidget::DashboardDockTitleWidget(QWidget *parent) :
 	p.setColor(QPalette::WindowText,Qt::white);
 	titleLabel_->setPalette(p);
 
+    detachedTb_->setProperty("docktitle","1");
     optionsTb_->setProperty("docktitle","1");
     closeTb_->setProperty("docktitle","1");
 
+#if 0
 	//Set the initial state of the float tool button
 	if(QDockWidget *dw = qobject_cast<QDockWidget*>(parentWidget()))
 	{
@@ -49,6 +51,12 @@ DashboardDockTitleWidget::DashboardDockTitleWidget(QWidget *parent) :
             floatTb_->hide();
 		}
 	}
+#endif
+}
+
+void DashboardDockTitleWidget::setDetachedAction(QAction *ac)
+{
+    detachedTb_->setDefaultAction(ac);
 }
 
 void DashboardDockTitleWidget::addActions(QList<QAction*> lst)
@@ -81,8 +89,8 @@ void DashboardDockTitleWidget::addActions(QList<QAction*> lst)
     }
 
     //Hide the separator line if no buttons were added
-    if(actionTbList_.isEmpty())
-        line_->hide();
+    //if(actionTbList_.isEmpty())
+    //    line_->hide();
 }
 
 void DashboardDockTitleWidget::slotActionChanged()
@@ -120,6 +128,7 @@ QToolButton* DashboardDockTitleWidget::optionsTb() const
 	return optionsTb_;
 }
 
+#if 0
 void DashboardDockTitleWidget::on_floatTb__clicked(bool)
 {
 	if(QDockWidget *dw = qobject_cast<QDockWidget*>(parentWidget()))
@@ -131,6 +140,7 @@ void DashboardDockTitleWidget::on_floatTb__clicked(bool)
 		}
 	}
 }
+#endif
 
 void DashboardDockTitleWidget::on_closeTb__clicked(bool)
 {
@@ -160,6 +170,7 @@ DashboardDock::DashboardDock(DashboardWidget *dw,QWidget * parent) :
 
 	setTitleBarWidget(dt);
 
+    dt->setDetachedAction(dw->detachedAction());
 	dt->addActions(dw->dockTitleActions());
 
 	connect(dw,SIGNAL(titleUpdated(QString)),
diff --git a/Viewer/src/DashboardDock.hpp b/Viewer/src/DashboardDock.hpp
index 9bd42e5..ee40251 100644
--- a/Viewer/src/DashboardDock.hpp
+++ b/Viewer/src/DashboardDock.hpp
@@ -29,15 +29,21 @@ public:
 	QSize minimumSizeHint() const;
 	QToolButton* optionsTb() const;
 	void addActions(QList<QAction*> lst);
+    void setDetachedAction(QAction *ac);
 
 public Q_SLOTS:
 	void slotUpdateTitle(QString txt);
 
 protected Q_SLOTS:
-	void on_floatTb__clicked(bool);
+#if 0
+    void on_floatTb__clicked(bool);
+#endif
     void on_closeTb__clicked(bool);
     void slotActionChanged();
 
+Q_SIGNALS:
+    void detachedChanged(bool);
+
 protected:
     QList<QToolButton*> actionTbList_;
 };
diff --git a/Viewer/src/DashboardDockTitleWidget.ui b/Viewer/src/DashboardDockTitleWidget.ui
index a6d929b..d4242ab 100644
--- a/Viewer/src/DashboardDockTitleWidget.ui
+++ b/Viewer/src/DashboardDockTitleWidget.ui
@@ -25,7 +25,7 @@
   <property name="autoFillBackground">
    <bool>true</bool>
   </property>
-  <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0,0,0,0">
+  <layout class="QHBoxLayout" name="horizontalLayout" stretch="0,0,0,0,0,0,0">
    <property name="spacing">
     <number>2</number>
    </property>
@@ -105,52 +105,45 @@
     </layout>
    </item>
    <item>
-    <widget class="Line" name="line_">
-     <property name="orientation">
-      <enum>Qt::Vertical</enum>
-     </property>
-    </widget>
-   </item>
-   <item>
-    <widget class="QToolButton" name="optionsTb_">
+    <widget class="QToolButton" name="detachedTb_">
      <property name="toolTip">
-      <string>Options</string>
+      <string>Detach from selection in other panels</string>
      </property>
      <property name="text">
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="viewer.qrc">
-       <normaloff>:/viewer/dock_config.svg</normaloff>:/viewer/dock_config.svg</iconset>
+      <iconset>
+       <normaloff>:/viewer/images/dock_float.svg</normaloff>:/viewer/images/dock_float.svg</iconset>
      </property>
      <property name="checkable">
       <bool>false</bool>
      </property>
-     <property name="popupMode">
-      <enum>QToolButton::InstantPopup</enum>
-     </property>
      <property name="autoRaise">
-      <bool>true</bool>
+      <bool>false</bool>
      </property>
     </widget>
    </item>
    <item>
-    <widget class="QToolButton" name="floatTb_">
+    <widget class="QToolButton" name="optionsTb_">
      <property name="toolTip">
-      <string>Float</string>
+      <string>Options</string>
      </property>
      <property name="text">
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="viewer.qrc">
-       <normaloff>:/viewer/images/dock_float.svg</normaloff>:/viewer/images/dock_float.svg</iconset>
+      <iconset>
+       <normaloff>:/viewer/dock_config.svg</normaloff>:/viewer/dock_config.svg</iconset>
      </property>
      <property name="checkable">
       <bool>false</bool>
      </property>
+     <property name="popupMode">
+      <enum>QToolButton::InstantPopup</enum>
+     </property>
      <property name="autoRaise">
-      <bool>false</bool>
+      <bool>true</bool>
      </property>
     </widget>
    </item>
@@ -175,7 +168,7 @@
       <string/>
      </property>
      <property name="icon">
-      <iconset resource="viewer.qrc">
+      <iconset>
        <normaloff>:/viewer/images/dock_close.svg</normaloff>:/viewer/images/dock_close.svg</iconset>
      </property>
      <property name="iconSize">
@@ -191,8 +184,6 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/DashboardTitle.cpp b/Viewer/src/DashboardTitle.cpp
index 693bf1d..d7ddab6 100644
--- a/Viewer/src/DashboardTitle.cpp
+++ b/Viewer/src/DashboardTitle.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,16 +9,27 @@
 
 #include "DashboardTitle.hpp"
 
+#include "Dashboard.hpp"
+#include "ServerFilter.hpp"
 #include "ServerHandler.hpp"
 #include "VNode.hpp"
+#include "UiLog.hpp"
 
+#include <QLinearGradient>
 #include <QPainter>
 
-DashboardTitle::DashboardTitle(ServerFilter* filter,QObject *parent) :
+int DashboardTitle::lighter_=150;
+
+//#define _UI_DASHBOARDTITLE_DEBUG
+
+DashboardTitle::DashboardTitle(ServerFilter* filter,Dashboard *parent) :
   QObject(parent),
-  filter_(filter)
+  dashboard_(parent),
+  filter_(filter),
+  maxPixWidth_(0),
+  current_(false)
 {
-	filter_->addObserver(this);
+    filter_->addObserver(this);
 }
 
 DashboardTitle::~DashboardTitle()
@@ -96,74 +107,280 @@ void DashboardTitle::notifyServerActivityChanged(ServerHandler* server)
 	updateTitle();
 }
 
-void DashboardTitle::updateTitle()
+void DashboardTitle::setMaxPixWidth(int w)
 {
-	if(!filter_)
-		return;
-
-	const int marginX=0;
-	const int marginY=0;
-	const int textMarginX=2;
-	const int textMarginY=1;
-	const int gap=8;
-	QFont f;
-	QFontMetrics fm(f);
-
-	//Compute the pixmap size
-	int w=0;
-	int h=fm.height()+2*marginY+2*textMarginY+1;
-
-	QStringList texts;
-	QList<QRect> textRects;
-	QList<QRect> fillRects;
-	QList<QColor> fillColors;
-	QList<QColor> textColors;
-
-	int xp=marginX;
-	int yp=marginY;
-	const std::vector<ServerItem*> items=filter_->items();
-	for(std::vector<ServerItem*>::const_iterator it=items.begin(); it != items.end(); ++it)
-	{
-		//Get text
-		QString str=QString::fromStdString((*it)->name());
-		textRects << QRect(xp+textMarginX,yp+textMarginY,fm.width(str),fm.height());
-		texts << str;
-
-		//Get server status
-		ServerHandler* server=(*it)->serverHandler();
-		fillColors << server->vRoot()->stateColour();
-		textColors << server->vRoot()->stateFontColour();
-		fillRects << QRect(xp,yp,fm.width(str)+2*textMarginX,fm.height()+2*textMarginY);
-
-		xp=fillRects.back().right()+gap;
-	}
-	w=xp-gap+marginX+2;
+    maxPixWidth_=w;
+    updateTitle();
+}
 
-	//Render the pixmap
-	QPixmap pix(w,h);
-	pix.fill(Qt::transparent);
-	QPainter painter(&pix);
+void DashboardTitle::setCurrent(bool b)
+{
+    if(b != current_)
+    {
+        current_=b;
+        updateTitle();
+    }
+}
 
-	for(int i=0; i < texts.count(); i++)
-	{
-		QColor c=fillColors[i].darker(110);
+int DashboardTitle::fullWidth() const
+{
+    QFont f;
+    QFontMetrics fm(f);
+    const int gap=1;
+    const int padding=10;
+    int w=0;
+    for(size_t i=0; i < filter_->items().size(); i++)
+    {
+        QString str=QString::fromStdString(filter_->items()[i]->name());
+        int tw=fm.width(str);
+        if(tw > w) w=tw;
+    }
+
+    return 10+filter_->items().size()*(w+padding)+(filter_->items().size()-1)*gap;
+}
 
-		QColor cp=fillColors[i].darker(120);
+void DashboardTitle::updateTitle()
+{
+    pix_=QPixmap();
+    tooltip_.clear();
+    title_.clear();
+    desc_.clear();
+    descPix_=QPixmap();
+
+    if(!filter_ || filter_->itemCount()==0)
+    {
+        tooltip_=tr("No server is loaded in this this tab");
+        desc_=tr("No server loaded in tab");
+        Q_EMIT changed(this);
+        return;
+    }
+
+    if(maxPixWidth_ == 0)
+        return;
+
+    QStringList texts;
+    QList<QColor> fillColors;
+    QList<QColor> textColors;
+
+    const std::vector<ServerItem*> items=filter_->items();
+    for(std::vector<ServerItem*>::const_iterator it=items.begin(); it != items.end(); ++it)
+    {
+        //Get text
+        QString str=QString::fromStdString((*it)->name());
+        QString host=QString::fromStdString((*it)->host());
+        QString port=QString::fromStdString((*it)->port());
+
+        //Get server status
+        ServerHandler* server=(*it)->serverHandler();
+        fillColors << server->vRoot()->stateColour();
+        textColors << server->vRoot()->stateFontColour();
+
+        texts << str;
+
+        //Description for tab list menu
+        if(!desc_.isEmpty())
+        {
+            desc_+=", ";
+        }
+        desc_+=str;
+
+        //Tooltip
+        if(!tooltip_.isEmpty())
+        {
+            tooltip_+="<br>-------------------<br>";
+        }
+        tooltip_+=server->vRoot()->toolTip();
+    }
+
+    int num=texts.count();
+    Q_ASSERT(num>0);
+
+    {
+        const int marginX=0;
+        const int marginY=0;
+        const int gap=1;
+
+        int maxBandH=2;
+        int bandH=(current_)?maxBandH:2;
+
+        QFont f;
+        QFontMetrics fm(f);
+
+        QList<QRect> textRects;
+        QList<QRect> fillRects;
+
+        //Compute the pixmap size
+        int h=fm.height()+bandH+1;
+        //int w=fm.width("ABCD...")+(num-1);
+        int w=maxPixWidth_-10;
+        int dw=w/num;
+
+        int xp=0;
+        int yp=0;
+        bool noText=false;
+
+        for(int i=0; i < texts.count(); i++)
+        {
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg() << i << texts[i] << dw << fm.width(texts[0]);
+#endif
+            QString txt=fm.elidedText(texts[i],Qt::ElideRight,dw);
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg() << "  " << txt << fm.width(txt);
+#endif
+            QString ellips(0x2026); //horizontal ellipsis
+
+            if(txt.startsWith(ellips))
+            {
+                txt=texts[i].left(2);
+                txt=fm.elidedText(txt,Qt::ElideRight,dw);
+            }
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg() << "  " << txt << fm.width(txt);
+#endif
+            if(txt.startsWith(ellips))
+            {
+                txt=texts[i].left(1);
+                txt=fm.elidedText(txt,Qt::ElideRight,dw);
+            }
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg()<< "  " << txt << fm.width(txt);
+#endif
+            if(txt.isEmpty())
+            {
+                txt=texts[i].left(1);
+            }
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg() << "  " << txt << fm.width(txt);
+#endif
+            if(fm.width(txt) > dw)
+            {
+                texts[i]="";
+                noText=true;
+            }
+            else
+            {
+                texts[i]=txt;
+            }
+#ifdef _UI_DASHBOARDTITLE_DEBUG
+            UiLog().dbg() << "  " << texts[i] << fm.width(texts[i]);
+#endif
+            textRects << QRect(xp,yp,dw,fm.height());
+            fillRects << QRect(xp,yp+fm.height(),dw,bandH);
+            xp=fillRects.back().right()+gap;
+        }
+
+        w=xp-gap+marginX+2;
+
+        //Render the pixmap
+        pix_=QPixmap(w,h);
+        pix_.fill(Qt::transparent);
+        QPainter painter(&pix_);
+
+        for(int i=0; i < texts.count(); i++)
+        {       
+            QColor bg=fillColors[i];
+
+            if(noText)
+            {
+               QRect r=fillRects[i];
+               r.setTop(0);
+               r.setBottom(h-2);
+               fillRects[i]=r;
+
+               QColor bgLight;
+               if(bg.value() < 235)
+                   bgLight=bg.lighter(130);
+               else
+                   bgLight=bg.lighter(lighter_);
+
+               QLinearGradient grad;
+               grad.setCoordinateMode(QGradient::ObjectBoundingMode);
+               grad.setStart(0,0);
+               grad.setFinalStop(0,1);
+
+               grad.setColorAt(0,bgLight);
+               grad.setColorAt(1,bg);
+               QBrush bgBrush(grad);
+
+               QColor borderCol=bg.darker(150);
+               painter.setPen(borderCol);
+               painter.setBrush(bgBrush);
+               painter.drawRect(fillRects[i]);
+            }
+            else
+            {                
+                QColor fg=QColor(0,0,0);
+                painter.setPen(fg);
+                painter.drawText(textRects[i],Qt::AlignCenter,texts[i]);
+
+                QColor borderCol=bg.darker(140);
+                painter.setPen(borderCol);
+                painter.setBrush(bg);
+                painter.drawRect(fillRects[i]);
+
+                if( i >0)
+                {
+                    painter.setPen(QColor(140,140,140));
+                    painter.drawLine(fillRects[i].left(),fillRects[i].bottom(),
+                                     fillRects[i].left(),textRects[i].center().y());
+                }
+            }
+        }
+    }
+
+    //Desc pix
+    {
+        QFont f;
+        QFontMetrics fm(f);//Compute the pixmap size
+        int h=fm.height()+2;
+        //int w=fm.width("ABCD...")+(num-1);
+        int w=h*5/4;
+        int dw=w/num;
+
+        descPix_=QPixmap(w+1,h+1);
+        descPix_.fill(Qt::transparent);
+        QPainter painter(&descPix_);
+
+        int xp=0;
+        for(int i=0; i < fillColors.count(); i++)
+        {
+            QRect r(xp,0,dw,h);
+            QColor bg=fillColors[i];
+            QColor bgLight;
+            if(bg.value() < 235)
+                bgLight=bg.lighter(130);
+            else
+                bgLight=bg.lighter(lighter_);
+
+            QColor borderCol=bg.darker(150);
+            QLinearGradient grad;
+            grad.setCoordinateMode(QGradient::ObjectBoundingMode);
+            grad.setStart(0,0);
+            grad.setFinalStop(0,1);
+
+            grad.setColorAt(0,bgLight);
+            grad.setColorAt(1,bg);
+            QBrush bgBrush(grad);
+
+            painter.setPen(borderCol);
+            painter.setBrush(bgBrush);
+            painter.drawRect(r);
+            xp+=dw;
+        }
+
+    }
+
+    if(tooltip_.isEmpty())
+        tooltip_=tr("No server is loaded in this this tab");
+
+    if(desc_.isEmpty())
+        desc_=tr("No server loaded in tab");
+
+    Q_EMIT changed(this);
+}
 
-		painter.setPen(cp);
-		painter.setBrush(fillColors[i]);
-		painter.drawRoundedRect(fillRects[i],0,0);
 
-		QRect half=fillRects[i];
-		half.setY(half.center().y());
-		half.adjust(1,0,-1,-1);
-		painter.setPen(Qt::NoPen);
-		painter.fillRect(half,c);
 
-		painter.setPen(QPen(textColors[i]));
-		painter.drawText(textRects[i],texts[i]);
-	}
 
-	Q_EMIT changed("",pix);
-}
 
diff --git a/Viewer/src/DashboardTitle.hpp b/Viewer/src/DashboardTitle.hpp
index 675ce41..ad906d7 100644
--- a/Viewer/src/DashboardTitle.hpp
+++ b/Viewer/src/DashboardTitle.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -26,9 +26,19 @@ Q_OBJECT
 friend class Dashboard;
 
 public:
-	DashboardTitle(ServerFilter*,QObject *parent=0);
+    DashboardTitle(ServerFilter*,Dashboard *parent);
 	~DashboardTitle();
 
+    Dashboard* dashboard() const {return dashboard_;}
+    QString title() const {return title_;}
+    QString tooltip() const {return tooltip_;}
+    QString desc() const {return desc_;}
+    QPixmap pix() const {return pix_;}
+    QPixmap descPix() const {return descPix_;}
+    void setMaxPixWidth(int w);
+    void setCurrent(bool b);
+    int fullWidth() const;
+
 	void notifyServerFilterAdded(ServerItem* item);
 	void notifyServerFilterRemoved(ServerItem* item);
 	void notifyServerFilterChanged(ServerItem*);
@@ -36,22 +46,31 @@ public:
 
 	void notifyDefsChanged(ServerHandler* server, const std::vector<ecf::Aspect::Type>& a);
 	void notifyServerDelete(ServerHandler* server);
-	void notifyBeginServerClear(ServerHandler* server) {};
+    void notifyBeginServerClear(ServerHandler* server) {}
 	void notifyEndServerClear(ServerHandler* server);
-	void notifyBeginServerScan(ServerHandler* server,const VServerChange&) {};
+    void notifyBeginServerScan(ServerHandler* server,const VServerChange&) {}
 	void notifyEndServerScan(ServerHandler* server);
 	void notifyServerConnectState(ServerHandler* server);
 	void notifyServerActivityChanged(ServerHandler* server);
-	void notifyServerSuiteFilterChanged(ServerHandler* server) {};
+    void notifyServerSuiteFilterChanged(ServerHandler* server) {}
 
 Q_SIGNALS:
-	void changed(QString,QPixmap);
+    void changed(DashboardTitle*);
 
 private:
-	void updateTitle();
 	void clear();
+    void updateTitle();
 
+    Dashboard* dashboard_;
 	ServerFilter* filter_;
+    int maxPixWidth_;
+    QPixmap pix_;
+    QPixmap descPix_;
+    QString title_;
+    QString tooltip_;
+    QString desc_;
+    bool current_;
+    static int lighter_;
 };
 
 #endif
diff --git a/Viewer/src/DashboardWidget.cpp b/Viewer/src/DashboardWidget.cpp
new file mode 100644
index 0000000..cfc2816
--- /dev/null
+++ b/Viewer/src/DashboardWidget.cpp
@@ -0,0 +1,62 @@
+/***************************** LICENSE START ***********************************
+
+ Copyright 2016 ECMWF and INPE. This software is distributed under the terms
+ of the Apache License version 2.0. In applying this license, ECMWF does not
+ waive the privileges and immunities granted to it by virtue of its status as
+ an Intergovernmental Organization or submit itself to any jurisdiction.
+
+ ***************************** LICENSE END *************************************/
+
+#include "DashboardWidget.hpp"
+
+#include "VSettings.hpp"
+
+static QString tooltipUnchk("This panel is <b>linked</b> and will respond to selections made in other panels. Click to toggle.") ;
+static QString tooltipChk("This panel is <b>detached</b> and will not respond to selections made in other panels. Click to toggle.");
+
+DashboardWidget::DashboardWidget(const std::string& type, QWidget* parent) :
+    QWidget(parent),
+    type_(type),
+    acceptSetCurrent_(false)
+{
+    detachedAction_=new QAction("Detached",this);
+    QIcon ic(QPixmap(":viewer/dock_chain_closed.svg"));
+    ic.addPixmap(QPixmap(":viewer/dock_chain_open.svg"),QIcon::Normal,QIcon::On);
+    detachedAction_->setIcon(ic);
+    detachedAction_->setCheckable(true);
+    detachedAction_->setChecked(false);
+
+    connect(detachedAction_,SIGNAL(toggled(bool)),
+            this,SLOT(slotDetachedToggled(bool)));
+
+    detachedAction_->setToolTip(tooltipUnchk);
+}
+
+void DashboardWidget::slotDetachedToggled(bool b)
+{
+    detachedChanged();
+    detachedAction_->setToolTip((detached())?tooltipChk:tooltipUnchk);
+}
+
+void DashboardWidget::setDetached(bool b)
+{
+    if(detached() != b)
+    {
+        detachedAction_->setChecked(b);
+    }
+}
+
+bool DashboardWidget::detached() const
+{
+    return detachedAction_->isChecked();
+}
+
+void DashboardWidget::writeSettings(VSettings* vs)
+{
+    vs->putAsBool("detached",detached());
+}
+
+void DashboardWidget::readSettings(VSettings* vs)
+{
+    setDetached(vs->getAsBool("detached",detached()));
+}
diff --git a/Viewer/src/DashboardWidget.hpp b/Viewer/src/DashboardWidget.hpp
index a0c3909..2d1f26d 100644
--- a/Viewer/src/DashboardWidget.hpp
+++ b/Viewer/src/DashboardWidget.hpp
@@ -14,6 +14,7 @@
 #include <QDockWidget>
 #include <QWidget>
 #include <QAction>
+#include <QIcon>
 
 #include "VInfo.hpp"
 
@@ -26,8 +27,7 @@ class DashboardWidget : public QWidget
 Q_OBJECT
 
 public:
-	DashboardWidget(const std::string& type, QWidget* parent=0) :
-        QWidget(parent),type_(type), acceptSetCurrent_(false) {}
+	DashboardWidget(const std::string& type, QWidget* parent=0);
     virtual ~DashboardWidget() {}
 
     virtual void populateDockTitleBar(DashboardDockTitleWidget*)=0;
@@ -36,10 +36,14 @@ public:
 	virtual void rerender()=0;
     virtual bool selectFirstServerInView() {return false;}
 	virtual VInfo_ptr currentSelection() {return VInfo_ptr(); }
-	virtual QList<QAction*> dockTitleActions() {return QList<QAction*>();}
+    QAction* detachedAction() const {return detachedAction_;}
+    virtual QList<QAction*> dockTitleActions() {return QList<QAction*>();}
 
-	virtual void writeSettings(VSettings*)=0;
-	virtual void readSettings(VSettings*)=0;
+    bool detached() const;
+    void setDetached(bool b);
+
+    virtual void writeSettings(VSettings*);
+    virtual void readSettings(VSettings*);
 
 	const std::string type() const {return type_;}
 	void id(const std::string& id) {id_=id;}
@@ -48,12 +52,20 @@ public Q_SLOTS:
 	virtual void setCurrentSelection(VInfo_ptr)=0;
 
 Q_SIGNALS:
-	void titleUpdated(QString);
+    void titleUpdated(QString);
+    void selectionChanged(VInfo_ptr);
+
+protected Q_SLOTS:
+    void slotDetachedToggled(bool);
 
 protected:
-	std::string id_;
+    virtual void detachedChanged()=0;
+
+    std::string id_;
 	std::string type_;
 	bool acceptSetCurrent_;
+    QAction *detachedAction_;
 };
 
+
 #endif
diff --git a/Viewer/src/DirectoryHandler.cpp b/Viewer/src/DirectoryHandler.cpp
index 009275b..a1aff8e 100644
--- a/Viewer/src/DirectoryHandler.cpp
+++ b/Viewer/src/DirectoryHandler.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -17,6 +17,8 @@
 #include <boost/algorithm/string/predicate.hpp>
 
 #include "DirectoryHandler.hpp"
+#include "File.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 std::string DirectoryHandler::shareDir_;
@@ -24,6 +26,8 @@ std::string DirectoryHandler::etcDir_;
 std::string DirectoryHandler::configDir_;
 std::string DirectoryHandler::rcDir_;
 std::string DirectoryHandler::tmpDir_;
+std::string DirectoryHandler::uiLogFile_;
+std::string DirectoryHandler::uiEventLogFile_;
 
 static bool firstStartUp=false;
 
@@ -41,9 +45,10 @@ DirectoryHandler::DirectoryHandler()
 void DirectoryHandler::init(const std::string& exeStr)
 {
 	//Sets paths in the home directory
-	if(char *h=getenv("HOME"))
+    if(char *h=getenv("HOME"))
 	{
-  	    boost::filesystem::path homeDir(h);
+        std::string home(h);
+        boost::filesystem::path homeDir(home);
 
 		boost::filesystem::path configDir = homeDir;
 		configDir /= ".ecflow_ui";
@@ -120,24 +125,24 @@ void DirectoryHandler::init(const std::string& exeStr)
         tmpDir_=std::string(h);
         boost::filesystem::path tmp(tmpDir_);
         tmp /= "eclow_ui.tmp";
+        tmpDir_=tmp.string();
         if(!boost::filesystem::exists(tmp))
         {
-            UserMessage::message(UserMessage::WARN, false,
-                "ECFLOWUI_TMPDIR env variable is not defined. ecFlowUI creates its tmp direcoty in TMPDIR as "  + tmp.string());
+            UiLog().warn() << "ECFLOWUI_TMPDIR env variable is not defined. ecFlowUI creates its tmp direcoty in TMPDIR as "  <<
+                              tmp.string();
 
             try
             {
                 if(boost::filesystem::create_directory(tmp))
-                {
-                    tmpDir_=tmp.string();
-                    UserMessage::debug("Tmp dir created: " + tmpDir_);
+                {                   
+                    UiLog().dbg() << "Tmp dir created: " << tmpDir_;
                 }
             }
             catch (const boost::filesystem::filesystem_error& e)
             {
                 UserMessage::message(UserMessage::ERROR,true,"Creating tmp directory failed:" + std::string(e.what()));
             }
-        }
+        }        
     }
     else
     {
@@ -145,6 +150,25 @@ void DirectoryHandler::init(const std::string& exeStr)
             "Neither of ECFLOWUI_TMPDIR and TMPDIR are defined. ecflowUI cannot be started up!");
         exit(1);
     }
+
+    //Ui log. The ui logging either goes into the stdout or into a
+    //file. The startup script desides on it.
+    if(char *h=getenv("ECFLOWUI_LOGFILE"))
+    {
+        uiLogFile_=std::string(h);
+    }
+
+    //Ui event log file. Ui event logging always goes into a file
+    if(char *h=getenv("ECFLOWUI_UI_LOGFILE"))
+    {
+        uiEventLogFile_=std::string(h);
+    }
+    else
+    {
+        boost::filesystem::path tmp(tmpDir_);
+        tmp /= "ecflowui_uilog.txt";
+        uiEventLogFile_=tmp.string();
+     }
 }
 
 
@@ -228,8 +252,7 @@ std::string DirectoryHandler::tmpFileName()
         }
         catch(const boost::filesystem::filesystem_error& err)
         {
-            UserMessage::message(UserMessage::WARN, false,
-                std::string("Could not generate tmp filename! Reason: ") + err.what());
+            UiLog().warn() << "Could not generate tmp filename! Reason: " << err.what();
         }
     }
 
@@ -255,7 +278,7 @@ bool DirectoryHandler::copyDir(const std::string &srcDir, const std::string &des
     }
 
 
-    // create the destination directory if it does not alreadt exist
+    // create the destination directory if it does not already exist
     if (!boost::filesystem::exists(dest))
     {
         bool created = createDir(dest.string());
@@ -266,7 +289,8 @@ bool DirectoryHandler::copyDir(const std::string &srcDir, const std::string &des
         }
     }
 
-    // go through all the files/dirs in the
+    // go through all the files/dirs in the dir
+    bool ok = true;
     boost::filesystem::directory_iterator it(src), eod;
     BOOST_FOREACH(boost::filesystem::path const &p, std::make_pair(it, eod))
     {
@@ -284,15 +308,15 @@ bool DirectoryHandler::copyDir(const std::string &srcDir, const std::string &des
                 return false;
             }
         }
-        else if (is_directory(p))  // directory? then copt it recursively
+        else if (is_directory(p))  // directory? then copy it recursively
         {
             boost::filesystem::path destSubDir(destDir);
             destSubDir /= p.filename();
-            return copyDir(p.string(), destSubDir.string(), errorMessage);
+            ok = ok && copyDir(p.string(), destSubDir.string(), errorMessage);
         }
     }
 
-    return true;
+    return ok;
 }
 
 
@@ -339,6 +363,31 @@ bool DirectoryHandler::renameDir(const std::string &dir, const std::string &newN
     return true;
 }
 
+
+// -------------------------------------------------------------
+// copyFile
+// Copies the given file to the given destintation (full paths).
+// -------------------------------------------------------------
+
+bool DirectoryHandler::copyFile(const std::string &srcFile, std::string &destFile, std::string &errorMessage)
+{
+    boost::filesystem::path src(srcFile);
+    boost::filesystem::path dest(destFile);
+
+    try
+    {
+        boost::filesystem::copy_file(src, dest,  boost::filesystem::copy_option::overwrite_if_exists);
+    }
+    catch (const boost::filesystem::filesystem_error& err)
+    {
+        errorMessage = "Could not copy file " + srcFile + " to " + destFile + "; reason: " + err.what();
+        return false;
+    }
+
+    return true;
+}
+
+
 // --------------------------------------------------------
 // removeFile
 // Removes the given file
@@ -360,3 +409,20 @@ bool DirectoryHandler::removeFile(const std::string &path, std::string &errorMes
     return true;
 }
 
+bool DirectoryHandler::truncateFile(const std::string &path,int lastLineNum,std::string &errorMessage)
+{
+    std::string s=ecf::File::get_last_n_lines(path,lastLineNum,errorMessage);
+    if(!errorMessage.empty())
+    {
+        errorMessage="Could not truncate file " + path + "; reason: " + errorMessage;
+        return false;
+    }
+
+    if(!ecf::File::create(path,s,errorMessage))
+    {
+        errorMessage="Could not truncate file " + path + "; reason: " + errorMessage;
+        return false;
+    }
+
+    return true;
+}
diff --git a/Viewer/src/DirectoryHandler.hpp b/Viewer/src/DirectoryHandler.hpp
index f85a6f6..cbd78f4 100644
--- a/Viewer/src/DirectoryHandler.hpp
+++ b/Viewer/src/DirectoryHandler.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -20,10 +20,12 @@ public:
     DirectoryHandler();
 
     static void init(const std::string& exePath);
-    static std::string shareDir()  {return shareDir_;}
-    static std::string etcDir()    {return etcDir_;}
-    static std::string configDir()  {return configDir_;}
-    static std::string rcDir()    {return rcDir_;}
+    static const std::string& shareDir()  {return shareDir_;}
+    static const std::string& etcDir()    {return etcDir_;}
+    static const std::string& configDir()  {return configDir_;}
+    static const std::string& rcDir()    {return rcDir_;}
+    static const std::string& uiLogFileName() {return uiLogFile_;}
+    static const std::string& uiEventLogFileName() {return uiEventLogFile_;}
     static std::string concatenate(const std::string &path1, const std::string &path2);
     static std::string tmpFileName();
     static bool createDir(const std::string& path);
@@ -40,7 +42,9 @@ public:
     static bool copyDir(const std::string &srcDir, const std::string &destDir, std::string &errorMessage);
     static bool removeDir(const std::string &dir, std::string &errorMessage);
     static bool renameDir(const std::string &dir, const std::string &newName, std::string &errorMessage);
+    static bool copyFile(const std::string &srcFile, std::string &destFile, std::string &errorMessage);
     static bool removeFile(const std::string &file, std::string &errorMessage);
+    static bool truncateFile(const std::string &path,int lastLineNum,std::string &errorMessage);
     static bool isFirstStartUp();
 
 private:
@@ -49,6 +53,8 @@ private:
     static std::string configDir_;
     static std::string rcDir_;
     static std::string tmpDir_;
+    static std::string uiLogFile_;
+    static std::string uiEventLogFile_;
 };
 
 #endif
diff --git a/Viewer/src/EditItemWidget.cpp b/Viewer/src/EditItemWidget.cpp
index 8bef98e..c9f938d 100644
--- a/Viewer/src/EditItemWidget.cpp
+++ b/Viewer/src/EditItemWidget.cpp
@@ -15,6 +15,7 @@
 #include "VConfig.hpp"
 #include "VNode.hpp"
 #include "VReply.hpp"
+#include "MessageLabel.hpp"
 
 //========================================================
 //
@@ -75,18 +76,24 @@ void EditItemWidget::clearContents()
 {
 	InfoPanelItem::clear();
 	textEdit_->clear();
+	infoLabel_->clear();
+	infoLabel_->hide();
 }
 
 void EditItemWidget::infoReady(VReply* reply)
 {
+	infoLabel_->hide();
 	QString s=QString::fromStdString(reply->text());
 	textEdit_->setPlainText(s);
 }
 
-void EditItemWidget::infoFailed(VReply*)
+void EditItemWidget::infoFailed(VReply* reply)
 {
-
+	infoLabel_->showError(QString::fromStdString(reply->errorText()));
+	infoLabel_->show();
+	//UserMessage::message(UserMessage::ERROR, true, reply->errorText());
 }
+
 void EditItemWidget::infoProgress(VReply*)
 {
 
diff --git a/Viewer/src/EditItemWidget.ui b/Viewer/src/EditItemWidget.ui
index 98ff27d..75f9e11 100644
--- a/Viewer/src/EditItemWidget.ui
+++ b/Viewer/src/EditItemWidget.ui
@@ -13,11 +13,20 @@
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,1,0">
+  <layout class="QVBoxLayout" name="verticalLayout_3" stretch="0,0,1,0">
    <property name="spacing">
     <number>1</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
@@ -70,7 +79,7 @@
         <string>...</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/fontsize_up.svg</normaloff>:/viewer/fontsize_up.svg</iconset>
        </property>
        <property name="shortcut">
@@ -90,7 +99,7 @@
         <string>...</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/fontsize_down.svg</normaloff>:/viewer/fontsize_down.svg</iconset>
        </property>
        <property name="shortcut">
@@ -117,7 +126,7 @@
         <string>...</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/search_decor.svg</normaloff>:/viewer/search_decor.svg</iconset>
        </property>
        <property name="shortcut">
@@ -140,7 +149,7 @@
         <string>...</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/images/goto_line.svg</normaloff>:/viewer/images/goto_line.svg</iconset>
        </property>
        <property name="shortcut">
@@ -160,7 +169,7 @@
         <string>Submit</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/submit.svg</normaloff>:/viewer/submit.svg</iconset>
        </property>
        <property name="toolButtonStyle">
@@ -171,6 +180,10 @@
     </layout>
    </item>
    <item>
+    <widget class="MessageLabel" name="infoLabel_" native="true">
+    </widget>
+   </item>
+   <item>
     <widget class="PlainTextEdit" name="textEdit_">
      <property name="sizePolicy">
       <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
@@ -203,9 +216,13 @@
    <extends>QPlainTextEdit</extends>
    <header location="global">PlainTextEdit.hpp</header>
   </customwidget>
+  <customwidget>
+   <class>MessageLabel</class>
+   <extends>QWidget</extends>
+   <header>MessageLabel.hpp</header>
+   <container>1</container>
+  </customwidget>
  </customwidgets>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/EditProvider.cpp b/Viewer/src/EditProvider.cpp
index d2dfc4b..c5d1daf 100644
--- a/Viewer/src/EditProvider.cpp
+++ b/Viewer/src/EditProvider.cpp
@@ -15,7 +15,7 @@
 #include "VNode.hpp"
 #include "VReply.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <boost/algorithm/string.hpp>
 
@@ -109,7 +109,7 @@ void EditProvider::submit(const std::vector<std::string>& txt,bool alias)
 
     if(vars.empty())
     {
-    	UserMessage::message(UserMessage::DBG, false, std::string(" No user variables!"));
+        UiLog().dbg() << " No user variables!";
     }
 
 
diff --git a/Viewer/src/FileInfoLabel.cpp b/Viewer/src/FileInfoLabel.cpp
index 388097b..8634c79 100644
--- a/Viewer/src/FileInfoLabel.cpp
+++ b/Viewer/src/FileInfoLabel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -237,39 +237,56 @@ QColor FileInfoLabel::fileSizeColour(qint64 size) const
 	return col;
 }
 
-void DirInfoLabel::update(VDir_ptr dir)
+void DirInfoLabel::update(VReply* reply) //VDir_ptr dir)
 {
-	if(!dir)
+    VDir_ptr dir=reply->directory();
+
+    if(!dir)
 		clear();
 
 	QString s;
-	QColor col(Qt::black);
-	QColor colText("#000010");
-	QColor colSize(0,0,255);
-	QColor colErr(255,0,0);
+
+    QColor col(39,49,101);
+    QColor colText("#000010");
+    QColor colSize(0,0,255);
+    QColor colErr(255,0,0);
 
 	QString dirName=QString::fromStdString(dir->path());
 
 	if(dirName.isEmpty())
 	{
-		s="<b><font color=" + col.name() + ">Directory: </font></b>";
+        s="<b><font color=" + col.name() + ">Directory: </font></b>";
 		s+="<font color=" + colErr.name() + "> ??? </font>";
 		setText(s);
 		return;
 	}
 
+#if 0
 	//Name
-	s="<b><font color=" + col.name() + ">Directory: </font></b>";
+    s="<b><font color=" + col.name() + ">Dir: </font></b>";
 	s+="<font color=" +colText.name() + ">" + dirName + "</font>";
-
-	//Where
-	QString where=QString::fromStdString(dir->where());
-	if(where.isEmpty())
-		where="???";
-
-	s+="<br>";
-	s+="<b><font color=" + col.name() + ">Host: </font></b>";
-	s+="<font color=" +colText.name() + ">" + where + "</font>";
+#endif
+    //Local read
+    if(dir->fetchMode() == VDir::LocalFetchMode)
+    {
+        s+="<b><font color=" + col.name() + "> Directory: </font></b>";
+        s+="<font color=" + colText.name() + "> read from disk</font>";
+
+        QString dt=dir->fetchDate().toString("yyyy-MM-dd HH:mm:ss");
+        s+="<b><font color=" + col.name() + "> at </font></b>";
+        s+="<font color=" + colText.name() + ">" + dt +  + "</font>";
+
+    }
+    else if(dir->fetchMode() == VDir::LogServerFetchMode)
+    {
+        s+="<b><font color=" + col.name() + "> Directory: </font></b>";
+        s+="<font color=" + colText.name() + "> " + QString::fromStdString(dir->fetchModeStr()) + "</font>";
+
+        QString dt=dir->fetchDate().toString("yyyy-MM-dd HH:mm:ss");
+        s+="<b><font color=" + col.name() + "> at </font></b>";
+        s+="<font color=" + colText.name() + ">" + dt +  + "</font>";
+
+    }
 
 	setText(s);
 }
diff --git a/Viewer/src/FileInfoLabel.hpp b/Viewer/src/FileInfoLabel.hpp
index eefde4b..54c3c33 100644
--- a/Viewer/src/FileInfoLabel.hpp
+++ b/Viewer/src/FileInfoLabel.hpp
@@ -32,7 +32,7 @@ class DirInfoLabel : public FileInfoLabel
 public:
 	explicit DirInfoLabel(QWidget* parent=0) : FileInfoLabel(parent) {}
 
-	void update(VDir_ptr);
+    void update(VReply*);
 
 };
 
diff --git a/Viewer/src/FilterWidget.cpp b/Viewer/src/FilterWidget.cpp
index 058e299..7e59c74 100644
--- a/Viewer/src/FilterWidget.cpp
+++ b/Viewer/src/FilterWidget.cpp
@@ -54,6 +54,7 @@ VParamFilterMenu::VParamFilterMenu(QMenu * parent,VParamSet* filter,QString titl
 				  (*it)->name());
 	}
 
+    //For status
 	if(decorMode_ == ColourDecor)
 	{
 		QLinearGradient grad;
@@ -105,33 +106,47 @@ VParamFilterMenu::VParamFilterMenu(QMenu * parent,VParamSet* filter,QString titl
 		}
 	}
 
+    //For icons
+    else if(decorMode_ == PixmapDecor)
+    {
+        QFont f;
+        QFontMetrics fm(f);
+        int pixSize=fm.height()-2;
+
+        Q_FOREACH(QAction* ac,menu_->actions())
+        {
+            if(!ac->isSeparator())
+            {
+                if(VIcon* vs=VIcon::find(ac->data().toString().toStdString()))
+                {
+                    QPixmap pix(vs->pixmap(pixSize));
+                    ac->setIcon(pix);
+                }
+            }
+        }
+    }
+
 	QAction *ac = new QAction(this);
 	ac->setSeparator(true);
 	menu_->addAction(ac);
 
-	if(itemMode_ == FilterMode)
-	{
-		ac = new QAction(this);
-		ac->setText(tr("Clear filter"));
-		menu_->addAction(ac);
-		connect(ac,SIGNAL(triggered(bool)),
-			this,SLOT(slotUnselectAll(bool)));
-	}
-	else
-	{
-		ac = new QAction(this);
-		ac->setText(tr("Show all"));
-		menu_->addAction(ac);
-		connect(ac,SIGNAL(triggered(bool)),
-					this,SLOT(slotSelectAll(bool)));
-
-		ac = new QAction(this);
-		ac->setText(tr("Hide all"));
-		menu_->addAction(ac);
-		connect(ac,SIGNAL(triggered(bool)),
-			this,SLOT(slotUnselectAll(bool)));
-
-	}
+    selectAllAc_ = new QAction(this);
+    if(itemMode_ == FilterMode)
+        selectAllAc_->setText(tr("Select all"));
+    else
+        selectAllAc_->setText(tr("Show all"));
+    menu_->addAction(selectAllAc_);
+    connect(selectAllAc_,SIGNAL(triggered(bool)),
+                this,SLOT(slotSelectAll(bool)));
+
+    unselectAllAc_ = new QAction(this);
+    if(itemMode_ == FilterMode)
+        unselectAllAc_->setText(tr("Clear filter"));
+    else
+        unselectAllAc_->setText(tr("Hide all"));
+    menu_->addAction(unselectAllAc_);
+    connect(unselectAllAc_,SIGNAL(triggered(bool)),
+        this,SLOT(slotUnselectAll(bool)));
 
 	reload();
 }
@@ -216,7 +231,7 @@ void VParamFilterMenu::slotUnselectAll(bool)
 		}
 	}
 
-	slotChanged(true);
+	slotChanged(true);    
 }
 
 void VParamFilterMenu::slotChanged(bool)
@@ -233,6 +248,8 @@ void VParamFilterMenu::slotChanged(bool)
 
 	if(filter_)
 		filter_->current(items);
+
+   checkActionState();
 }
 
 void VParamFilterMenu::reload()
@@ -244,6 +261,13 @@ void VParamFilterMenu::reload()
 			ac->setChecked(filter_->isSet(ac->data().toString().toStdString()));
 		}
 	}
+    checkActionState();
+}
+
+void VParamFilterMenu::checkActionState()
+{
+    selectAllAc_->setEnabled(!filter_->isComplete());
+    unselectAllAc_->setEnabled(!filter_->isEmpty());
 }
 
 //===========================================
diff --git a/Viewer/src/FilterWidget.hpp b/Viewer/src/FilterWidget.hpp
index 26a0f4b..dd9bce3 100644
--- a/Viewer/src/FilterWidget.hpp
+++ b/Viewer/src/FilterWidget.hpp
@@ -44,11 +44,14 @@ protected Q_SLOTS:
 protected:
 	void buildTitle(QString,QMenu*);
 	void addAction(QString name,QString id);
+    void checkActionState();
 
 	QMenu*  menu_;
 	VParamSet* filter_;
 	ItemMode itemMode_;
 	DecorMode decorMode_;
+    QAction *selectAllAc_;
+    QAction *unselectAllAc_;
 };
 
 
diff --git a/Viewer/src/Highlighter.cpp b/Viewer/src/Highlighter.cpp
index 530988e..24493fe 100644
--- a/Viewer/src/Highlighter.cpp
+++ b/Viewer/src/Highlighter.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,6 +11,11 @@
 #include "UserMessage.hpp"
 #include "VParam.hpp"
 
+#include <QTextCursor>
+#include <QTextDocument>
+#include <QTextDocumentFragment>
+#include <QTextLayout>
+
 #include <boost/property_tree/json_parser.hpp>
 #include <boost/property_tree/ptree.hpp>
 
@@ -108,3 +113,59 @@ void Highlighter::load(QString id)
 		addRule(pattern,format);
 	}
 }
+
+void Highlighter::toHtml(QString& html)
+{
+    // Create a new document from all the selected text document.
+    QTextCursor cursor(document());
+    cursor.select(QTextCursor::Document);
+
+    QTextDocument* tmpDoc(new QTextDocument());
+    Q_ASSERT(tmpDoc);
+    QTextCursor tmpCursor(tmpDoc);
+    tmpCursor.insertFragment(cursor.selection());
+    tmpCursor.select(QTextCursor::Document);
+
+    // Set the default foreground for the inserted characters.
+    //QTextCharFormat textfmt = tmpCursor.charFormat();
+    //textfmt.setForeground(Qt::black);
+    //tmpCursor.setCharFormat(textfmt);
+
+    // Apply the additional formats set by the syntax highlighter
+    QTextBlock start = document()->findBlock(cursor.selectionStart());
+    QTextBlock end = document()->findBlock(cursor.selectionEnd());
+    end = end.next();
+
+    const int selectionStart = cursor.selectionStart();
+    const int endOfDocument = tmpDoc->characterCount() - 1;
+    for(QTextBlock current = start; current.isValid() and current not_eq end; current = current.next())
+    {
+        const QTextLayout* layout(current.layout());
+
+        Q_FOREACH(const QTextLayout::FormatRange &range, layout->additionalFormats())
+        {
+            const int start = current.position() + range.start - selectionStart;
+            const int end = start + range.length;
+            if(end <= 0 or start >= endOfDocument)
+                continue;
+            tmpCursor.setPosition(qMax(start, 0));
+            tmpCursor.setPosition(qMin(end, endOfDocument), QTextCursor::KeepAnchor);
+            tmpCursor.setCharFormat(range.format);
+        }
+    }
+
+    // Reset the user states since they are not interesting
+    for(QTextBlock block = tmpDoc->begin(); block.isValid(); block = block.next())
+        block.setUserState(-1);
+
+    // Make sure the text appears pre-formatted, and set the background we want.
+    tmpCursor.select(QTextCursor::Document);
+    QTextBlockFormat blockFormat = tmpCursor.blockFormat();
+    blockFormat.setNonBreakableLines(true);
+    blockFormat.setBackground(Qt::black);
+    tmpCursor.setBlockFormat(blockFormat);
+
+    // Finally retreive the syntax higlighted and formatted html.
+    html = tmpCursor.selection().toHtml();
+    delete tmpDoc;
+}
diff --git a/Viewer/src/Highlighter.hpp b/Viewer/src/Highlighter.hpp
index 41cfe8f..fc38333 100644
--- a/Viewer/src/Highlighter.hpp
+++ b/Viewer/src/Highlighter.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -18,7 +18,8 @@ class Highlighter : public QSyntaxHighlighter
 {
 public:
 	Highlighter(QTextDocument *parent,QString id);
-	static void init(const std::string& parFile);
+    static void init(const std::string& parFile);
+    void toHtml(QString& html);
 
 protected:
 	void highlightBlock(const QString &text);
diff --git a/Viewer/src/IconProvider.hpp b/Viewer/src/IconProvider.hpp
index 1928e75..535555a 100644
--- a/Viewer/src/IconProvider.hpp
+++ b/Viewer/src/IconProvider.hpp
@@ -19,7 +19,7 @@ class IconItem
 {
 public:
   	explicit IconItem(QString);
-  	virtual ~IconItem() {};
+    virtual ~IconItem() {}
 
 	QPixmap pixmap(int);
 	int id () const {return id_;}
diff --git a/Viewer/src/InfoPanel.cpp b/Viewer/src/InfoPanel.cpp
index 52a39b9..4871b1d 100644
--- a/Viewer/src/InfoPanel.cpp
+++ b/Viewer/src/InfoPanel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -18,8 +18,9 @@
 #include "InfoPanelItem.hpp"
 #include "InfoPanelHandler.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VSettings.hpp"
+#include "WidgetNameProvider.hpp"
 
 //==============================================
 //
@@ -64,23 +65,13 @@ InfoPanel::InfoPanel(QWidget* parent) :
 
 	tab_->setIconSize(QSize(16,16));
 
-    messageLabel_->hide();
-
-	//Builds the menu for the settings tool button
-	/*QMenu *menu=new QMenu(this);
-	menu->setTearOffEnabled(true);
-
-	menu->addAction(actionBreadcrumbs_);
-	menu->addAction(actionDetached_);
-	menu->addAction(actionFrozen_);
-
-	//Sets the menu on the toolbutton
-	optionTb_->setMenu(menu);*/
+    messageLabel_->hide();	
 
 	//Initialise action state
 	actionBreadcrumbs_->setChecked(bcWidget_->active());
 	actionFrozen_->setChecked(false);
-	actionDetached_->setChecked(false);
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 InfoPanel::~InfoPanel()
@@ -97,7 +88,6 @@ QMenu* InfoPanel::buildOptionsMenu()
     menu->setTearOffEnabled(true);
 
     menu->addAction(actionBreadcrumbs_);
-    menu->addAction(actionDetached_);
     menu->addAction(actionFrozen_);
 
     return menu;
@@ -121,6 +111,9 @@ void InfoPanel::populateDialog()
 {
     QMenu *menu=buildOptionsMenu();
 
+    detachedAction_->setIcon(QIcon());
+    menu->addAction(detachedAction_);
+
     QToolButton* optionsTb=new QToolButton(this);
     optionsTb->setAutoRaise(true);
     optionsTb->setIcon(QPixmap(":/viewer/configure.svg"));
@@ -189,7 +182,7 @@ void InfoPanel::reset(VInfo_ptr info)
 {
     if(info_ && info)
     {
-        //UserMessage::debug("path: " + info_->path() + " " + info->path());
+        //UiLog().dbg() << "path: " << info_->path() << " " << info->path();
 
         if(*(info_.get()) == *(info.get()))
             return;
@@ -222,7 +215,7 @@ void InfoPanel::reset(VInfo_ptr info)
     updateTitle();
 }
 
-//This slot is called when the info object is selected
+//This slot is called when the info object is selected in another panel
 void InfoPanel::slotReload(VInfo_ptr info)
 {
     //When the mode is detached it cannot receive
@@ -240,14 +233,22 @@ void InfoPanel::slotReload(VInfo_ptr info)
     }
 }
 
-//This slot is called when the info object is selected
+
 void InfoPanel::slotReloadFromBc(VInfo_ptr info)
 {
     reset(info);
-    if(!detached() && info_)
+    if(info_)
        Q_EMIT selectionChanged(info_);
 }
 
+void InfoPanel::linkSelected(VInfo_ptr info)
+{
+    //Here info can be an attribute!
+    slotReload(info);
+    if(info_ && info)
+       Q_EMIT selectionChanged(info);
+}
+
 //Set the new VInfo object.
 //We also we need to manage the node observers. The InfoItem
 //will be the observer of the server of the object stored in
@@ -255,7 +256,7 @@ void InfoPanel::slotReloadFromBc(VInfo_ptr info)
 void InfoPanel::adjustInfo(VInfo_ptr info)
 {
   	//Check if there is data in info
-  	if(info.get())
+    if(info)
   	{
   		ServerHandler *server=info->server();
 
@@ -307,7 +308,7 @@ void InfoPanel::adjustTabs(VInfo_ptr info)
 
 	for(int i=0; i < ids.size(); i++)
 	{
-		UserMessage::message(UserMessage::DBG,false,std::string("InfoPanel --> tab: ") + ids[i]->name());
+        UiLog().dbg() << "InfoPanel --> tab: " << ids[i]->name();
 	}
 
 	int match=0;
@@ -348,14 +349,15 @@ void InfoPanel::adjustTabs(VInfo_ptr info)
 		}
 
 		//Try to set the previous current widget as current again
-		bool hasCurrent=false;
+        currentItem=0;
+        bool hasCurrent=false;
 		for(int i=0 ; i < tab_->count(); i++)
 		{
 			if(tab_->widget(i) == current)
 			{
 				tab_->setCurrentIndex(i);
-
-				hasCurrent=true;
+                currentItem=findItem(current);
+                hasCurrent=true;
 				break;
 			}
 		}
@@ -430,13 +432,15 @@ InfoPanelItemHandler* InfoPanel::findHandler(InfoPanelDef* def)
 
 InfoPanelItemHandler* InfoPanel::createHandler(InfoPanelDef* def)
 {
-	if(InfoPanelItem *iw=InfoPanelItemFactory::create(def->name()))
+    if(InfoPanelItem *iw=InfoPanelItemFactory::create(def->name()))
 	{
-		iw->setFrozen(frozen());
+        WidgetNameProvider::nameChildren(iw->realWidget());
+        iw->setOwner(this);
+        iw->setFrozen(frozen());
 		iw->setDetached(detached());
 
 		//iw will be added to the tab so the tab will be its parent. Moreover
-		//the tab will stay its parent even if iw got removed from the tab!
+        //the tab will stay its parent even if iw got removed from the tab!
 		//So when the tab is deleted all the iw-s will be correctly deleted as well.
 
 		InfoPanelItemHandler* h=new InfoPanelItemHandler(def,iw);
@@ -482,12 +486,15 @@ void InfoPanel::clearTab()
 	tabBeingCleared_=false;
 }
 
-void InfoPanel::setDetached(bool b)
+void InfoPanel::detachedChanged()
 {
-    actionDetached_->setChecked(b);
+    Q_FOREACH(InfoPanelItemHandler *item,items_)
+    {
+        item->item()->setDetached(detached());
+    }
+    updateTitle();
 }
 
-
 void InfoPanel::on_actionBreadcrumbs__toggled(bool b)
 {
 	if(b)
@@ -499,8 +506,6 @@ void InfoPanel::on_actionBreadcrumbs__toggled(bool b)
 	{
 		bcWidget_->active(false);
 	}
-
-	//bcWidget_->clear();
 }
 
 void InfoPanel::on_actionFrozen__toggled(bool b)
@@ -512,25 +517,11 @@ void InfoPanel::on_actionFrozen__toggled(bool b)
     updateTitle();
 }
 
-void InfoPanel::on_actionDetached__toggled(bool b)
-{
-	Q_FOREACH(InfoPanelItemHandler *item,items_)
-	{
-		item->item()->setDetached(b);
-	}
-	updateTitle();
-}
-
 bool InfoPanel::frozen() const
 {
 	return actionFrozen_->isChecked();
 }
 
-bool InfoPanel::detached() const
-{
-	return actionDetached_->isChecked();
-}
-
 void InfoPanel::updateTitle()
 {
 	QString baseTxt="<b>Info panel</b>";
@@ -539,15 +530,6 @@ void InfoPanel::updateTitle()
 	if(frozen())
 		txt+="frozen";
 
-	if(detached())
-	{
-		if(!txt.isEmpty())
-		{
-			txt+=",";
-		}
-		txt+="detached";
-	}
-
 	if(!txt.isEmpty())
 	{
 		txt=baseTxt + " (" + txt + ")";
@@ -723,7 +705,14 @@ void InfoPanel::writeSettings(VSettings* vs)
 	bcWidget_->writeSettings(vs);
 
 	vs->putAsBool("frozen",frozen());
-	vs->putAsBool("detached",detached());
+
+    DashboardWidget::writeSettings(vs);
+
+    Q_FOREACH(InfoPanelItemHandler *d,items_)
+    {
+        if(d->item())
+            d->item()->writeSettings(vs);
+    }
 }
 
 void InfoPanel::readSettings(VSettings* vs)
@@ -745,7 +734,13 @@ void InfoPanel::readSettings(VSettings* vs)
 	actionBreadcrumbs_->setChecked(bcWidget_->active());
 
 	actionFrozen_->setChecked(vs->getAsBool("frozen",frozen()));
-	actionDetached_->setChecked(vs->getAsBool("detached",detached()));
 
+    DashboardWidget::readSettings(vs);
+
+    Q_FOREACH(InfoPanelItemHandler *d,items_)
+    {
+        if(d->item())
+            d->item()->readSettings(vs);
+    }
 }
 
diff --git a/Viewer/src/InfoPanel.hpp b/Viewer/src/InfoPanel.hpp
index 9600af4..401af82 100644
--- a/Viewer/src/InfoPanel.hpp
+++ b/Viewer/src/InfoPanel.hpp
@@ -56,10 +56,9 @@ public:
     explicit InfoPanel(QWidget* parent=0);
 	virtual ~InfoPanel();
 	bool frozen() const;
-	bool detached() const;
 	void clear();
 	void setCurrent(const std::string& name);
-    void setDetached(bool);
+    void linkSelected(VInfo_ptr);
 
     void populateDialog();
 
@@ -67,7 +66,7 @@ public:
     void populateDockTitleBar(DashboardDockTitleWidget*);
     void reload() {}
 	void rerender();
-	void writeSettings(VSettings*);
+    void writeSettings(VSettings*);
 	void readSettings(VSettings*);
 
 	//From VInfoObserver
@@ -94,11 +93,13 @@ protected Q_SLOTS:
     void slotCurrentWidgetChanged(int);
     void on_actionBreadcrumbs__toggled(bool b);
     void on_actionFrozen__toggled(bool b);
-    void on_actionDetached__toggled(bool b);
 
 Q_SIGNALS:
 	void selectionChanged(VInfo_ptr);
 
+protected:
+    void detachedChanged();
+
 private:
 	void reset(VInfo_ptr node);
 	void adjustInfo(VInfo_ptr node);
diff --git a/Viewer/src/InfoPanel.ui b/Viewer/src/InfoPanel.ui
index 586f718..111a593 100644
--- a/Viewer/src/InfoPanel.ui
+++ b/Viewer/src/InfoPanel.ui
@@ -17,7 +17,16 @@
    <property name="spacing">
     <number>1</number>
    </property>
-   <property name="margin">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
@@ -39,14 +48,6 @@
     </widget>
    </item>
   </layout>
-  <action name="actionDetached_">
-   <property name="checkable">
-    <bool>true</bool>
-   </property>
-   <property name="text">
-    <string>Detached</string>
-   </property>
-  </action>
   <action name="actionFrozen_">
    <property name="checkable">
     <bool>true</bool>
diff --git a/Viewer/src/InfoPanelHandler.cpp b/Viewer/src/InfoPanelHandler.cpp
index f39e338..22f15dc 100644
--- a/Viewer/src/InfoPanelHandler.cpp
+++ b/Viewer/src/InfoPanelHandler.cpp
@@ -15,6 +15,7 @@
 #include <boost/foreach.hpp>
 
 #include "NodeExpression.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 InfoPanelHandler* InfoPanelHandler::instance_=0;
@@ -66,7 +67,7 @@ void InfoPanelHandler::init(const std::string &configFile)
     {
         if (itTopLevel->first == "info_panel")
         {
-            UserMessage::message(UserMessage::DBG, false, std::string("Panels:"));
+            UiLog().dbg() << "Panels:";
 
             ptree const &panelsPt = itTopLevel->second;
 
@@ -77,7 +78,7 @@ void InfoPanelHandler::init(const std::string &configFile)
 
                 std::string cname = panelPt.get("name", "");
 
-                UserMessage::message(UserMessage::DBG, false, std::string("  ") + cname);
+                UiLog().dbg() <<  "  " << cname;
 
                 InfoPanelDef* def= new InfoPanelDef(cname);
 
diff --git a/Viewer/src/InfoPanelItem.cpp b/Viewer/src/InfoPanelItem.cpp
index d1bfbba..3cd91f1 100644
--- a/Viewer/src/InfoPanelItem.cpp
+++ b/Viewer/src/InfoPanelItem.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,6 +9,7 @@
 
 #include "InfoPanelItem.hpp"
 
+#include "InfoPanel.hpp"
 #include "InfoProvider.hpp"
 #include "ServerHandler.hpp"
 #include "VNode.hpp"
@@ -35,7 +36,7 @@ InfoPanelItem* InfoPanelItemFactory::create(const std::string& name)
 {
 	std::map<std::string,InfoPanelItemFactory*>::iterator j = makers->find(name);
 	if(j != makers->end())
-		return (*j).second->make();
+        return (*j).second->make();
 
 	return 0;
 }
@@ -52,6 +53,12 @@ InfoPanelItem::~InfoPanelItem()
 	clear();
 }
 
+void InfoPanelItem::setOwner(InfoPanel* owner)
+{
+    assert(!owner_);
+    owner_=owner;
+}
+
 //Set the new VInfo object.
 //We also we need to manage the node observers. The InfoItem 
 //will be the observer of the server of the object stored in
@@ -236,7 +243,17 @@ void InfoPanelItem::setDetached(bool b)
 
     //We update the derived class
     updateState(DetachedChanged);
+}
 
+void InfoPanelItem::linkSelected(const std::string& path)
+{
+    if(!suspended_ && !detached_)
+    {
+        VInfo_ptr info=VInfo::createFromPath(info_->server(),path);
+
+        assert(owner_);
+        owner_->linkSelected(info);
+    }
 }
 
 //From NodeObserver
diff --git a/Viewer/src/InfoPanelItem.hpp b/Viewer/src/InfoPanelItem.hpp
index bf8270e..dbc9955 100644
--- a/Viewer/src/InfoPanelItem.hpp
+++ b/Viewer/src/InfoPanelItem.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -22,6 +22,7 @@
 class QWidget;
 class InfoPanel;
 class InfoProvider;
+class VSettings;
 
 //This is the (abstract) base class to represent one tab in the info panel.
 
@@ -30,7 +31,7 @@ class InfoPanelItem : public VTaskObserver, public InfoPresenter, public NodeObs
 friend class InfoPanel;
 
 public:
-    InfoPanelItem() : active_(false), selected_(false), suspended_(false),
+    InfoPanelItem() : owner_(0), active_(false), selected_(false), suspended_(false),
                       frozen_(false), detached_(false), unselectedFlags_(KeepContents),
                       useAncestors_(false) {}
 	virtual ~InfoPanelItem();
@@ -46,12 +47,16 @@ public:
 	virtual QWidget* realWidget()=0;
 	virtual void clearContents()=0;
 
+    void setOwner(InfoPanel*);
+
     virtual void setActive(bool);
     void setSelected(bool,VInfo_ptr);
     void setSuspended(bool,VInfo_ptr);
 	void setFrozen(bool);
 	void setDetached(bool);
 
+    bool isSuspended() const {return suspended_;}
+
 	//From VTaskObserver
     void taskChanged(VTask_ptr) {}
 
@@ -66,10 +71,14 @@ public:
 	void notifyBeginNodeChange(const VNode*, const std::vector<ecf::Aspect::Type>&,const VNodeChange&);
 	void notifyEndNodeChange(const VNode*, const std::vector<ecf::Aspect::Type>&,const VNodeChange&) {}
 
+    virtual void writeSettings(VSettings* vs) {}
+    virtual void readSettings(VSettings* vs) {}
+
 protected:
 	void adjust(VInfo_ptr);
     virtual void clear();
     virtual void updateState(const ChangeFlags&)=0;
+    void linkSelected(const std::string& path);
 
 	//Notifications about the server changes
 	virtual void defsChanged(const std::vector<ecf::Aspect::Type>&)=0;
@@ -80,6 +89,7 @@ protected:
 	//Notifications about the node changes
 	virtual void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&)=0;
 	
+    InfoPanel* owner_;
     bool active_;
     bool selected_;
     bool suspended_;
@@ -95,8 +105,8 @@ public:
 	explicit InfoPanelItemFactory(const std::string&);
 	virtual ~InfoPanelItemFactory();
 
-	virtual InfoPanelItem* make() = 0;
-	static InfoPanelItem* create(const std::string& name);
+    virtual InfoPanelItem* make() = 0;
+    static InfoPanelItem* create(const std::string& name);
 
 private:
 	explicit InfoPanelItemFactory(const InfoPanelItemFactory&);
@@ -107,7 +117,7 @@ private:
 template<class T>
 class InfoPanelItemMaker : public InfoPanelItemFactory
 {
-	InfoPanelItem* make() { return new T(); }
+    InfoPanelItem* make() { return new T(); }
 public:
 	explicit InfoPanelItemMaker(const std::string& name) : InfoPanelItemFactory(name) {}
 };
diff --git a/Viewer/src/InfoProvider.cpp b/Viewer/src/InfoProvider.cpp
index f9ce7a5..f6182a0 100644
--- a/Viewer/src/InfoProvider.cpp
+++ b/Viewer/src/InfoProvider.cpp
@@ -183,7 +183,7 @@ void  InfoProvider::taskChanged(VTask_ptr task)
                 f->setFetchMode(VFile::ServerFetchMode);
                 f->setLog(task_->reply()->log());
             }
-            task->reply()->status(VReply::TaskDone);
+            task->reply()->status(VReply::TaskDone);           
             owner_->infoReady(task->reply());
             task_.reset();            
             }
diff --git a/Viewer/src/InputEventLog.cpp b/Viewer/src/InputEventLog.cpp
new file mode 100644
index 0000000..ab8a510
--- /dev/null
+++ b/Viewer/src/InputEventLog.cpp
@@ -0,0 +1,222 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "InputEventLog.hpp"
+
+#include "DirectoryHandler.hpp"
+
+#include <QAction>
+#include <QApplication>
+#include <QCloseEvent>
+#include <QContextMenuEvent>
+#include <QDebug>
+#include <QEvent>
+#include <QFile>
+#include <QFileInfo>
+#include <QMenu>
+#include <QMouseEvent>
+#include <QTabBar>
+
+#include "LogTruncator.hpp"
+#include "TimeStamp.hpp"
+#include "UiLog.hpp"
+
+InputEventLog* InputEventLog::instance_=0;
+static bool firstStart=true;
+
+static QString objectPath(QObject *obj)
+{
+    QString res;
+    for(; obj; obj = obj->parent())
+    {
+        if (!res.isEmpty())
+            res.prepend("/");
+        QString s=obj->objectName();
+        //QString cn(obj->metaObject()->className());
+        if(s.isEmpty()) s="?";
+        //res.prepend("[" + cn + "]" +s);
+        res.prepend(s);
+    }
+    return res;
+}
+
+InputEventLog::InputEventLog(QObject* parent) : QObject(parent), paused_(false)
+{
+    QString path=QString::fromStdString(DirectoryHandler::uiEventLogFileName());
+    outFile_=new QFile(path);
+
+    truncator_=new LogTruncator(path,86400*1000,5*1024*1024,2000,this);
+    connect(truncator_,SIGNAL(truncateBegin()),this,SLOT(truncateLogBegin()));
+    connect(truncator_,SIGNAL(truncateEnd()),this,SLOT(truncateLogEnd()));
+}
+
+InputEventLog::~InputEventLog()
+{
+    outFile_->close();
+    delete outFile_;
+}
+
+InputEventLog* InputEventLog::instance()
+{
+    if(!instance_)
+        instance_=new InputEventLog(0);
+    return instance_;
+}
+
+void InputEventLog::start()
+{
+    Q_ASSERT(!paused_);
+
+    if(out_.device())
+        return;
+
+    QFile::OpenMode mode=(firstStart)?QFile::WriteOnly:QFile::Append;
+    if(outFile_->open(mode))
+    {
+        firstStart=false;
+        out_.setDevice(outFile_);
+        qApp->removeEventFilter(this);
+        qApp->installEventFilter(this);
+    }
+    else
+    {
+        QFileInfo info(*outFile_);
+        UiLog().err() << "InputEventLog --> cannot open log file for writing: " << info.absoluteFilePath();
+    }
+}
+
+void InputEventLog::stop()
+{
+    qApp->removeEventFilter(this);
+    outFile_->close();
+    out_.setDevice(0);
+}
+
+void InputEventLog::truncateLogBegin()
+{
+    paused_=(out_.device() != 0);
+    stop();
+}
+
+void InputEventLog::truncateLogEnd()
+{
+    if(paused_)
+    {
+        paused_=false;
+        start();
+    }
+}
+
+bool InputEventLog::eventFilter(QObject *obj, QEvent *event)
+{
+    if(out_.device())
+    {
+        //out_ << event->type() << " " << obj->objectName() << " " << obj->metaObject()->className() << "\n";
+        //out_.flush();
+
+        if(event->type() == QEvent::MouseButtonPress)
+        {
+            logMousePress(obj,static_cast<QMouseEvent*>(event));
+        }
+        else if(event->type() == QEvent::MouseButtonRelease)
+        {
+            logMouseRelease(obj,static_cast<QMouseEvent*>(event));
+        }
+        else if(event->type() == QEvent::Close)
+        {
+            logClose(obj,static_cast<QCloseEvent*>(event));
+        }
+        else if(event->type() == QEvent::ContextMenu)
+        {
+            logContextMenu(obj,static_cast<QContextMenuEvent*>(event));
+        }
+    }
+
+    return QObject::eventFilter(obj,event);
+}
+
+void InputEventLog::logMousePress(QObject* obj,QMouseEvent *event)
+{
+    QString cn(obj->metaObject()->className());
+    if(cn != "QWidgetWindow" && cn != "QMenuBar" &&
+       cn != "QToolBar" && cn != "MainWindow" && cn != "QScrollBar" )
+    {
+        std::string s;
+        ecf::TimeStamp::now_in_brief(s);
+        out_ << s.c_str() << "mp " << cn << " " << objectPath(obj);
+
+        if(cn == "QTabBar")
+        {
+            if(QTabBar* t=static_cast<QTabBar*>(obj))
+            {
+                int idx=t->tabAt(event->pos());
+                if(idx >=0)
+                {
+                    out_ << " tab=" << t->tabText(idx);
+                }
+            }
+        }
+        else if(cn == "QMenu")
+        {
+            if(QMenu* m=static_cast<QMenu*>(obj))
+            {
+                if(QAction* ac=m->actionAt(event->pos()))
+                {
+                    out_ << " ac=" << ac->objectName();
+                }
+            }
+        }
+        out_ << "\n";
+        out_.flush();
+    }
+}
+
+void InputEventLog::logMouseRelease(QObject* obj,QMouseEvent *event)
+{
+    QString cn(obj->metaObject()->className());
+    if(cn == "QMenu")
+    {
+        std::string s;
+        ecf::TimeStamp::now_in_brief(s);
+        out_ << s.c_str() << "mr " << cn << " " << objectPath(obj);
+        if(QMenu* m=static_cast<QMenu*>(obj))
+        {
+            if(QAction* ac=m->actionAt(event->pos()))
+            {
+                out_ << " ac=" << ac->objectName();
+            }
+        }
+        out_ << "\n";
+        out_.flush();
+    }
+}
+
+void InputEventLog::logClose(QObject* obj,QCloseEvent *event)
+{
+    QString cn(obj->metaObject()->className());
+    if(cn != "QWidgetWindow" && cn != "QTipLabel")
+    {
+        std::string s;
+        ecf::TimeStamp::now_in_brief(s);
+        out_ << s.c_str() << "cl " << cn << " " << objectPath(obj) << "\n";
+        out_.flush();
+    }
+}
+
+void InputEventLog::logContextMenu(QObject* obj,QContextMenuEvent *event)
+{
+    QString cn(obj->metaObject()->className());
+    if(cn != "QWidgetWindow")
+    {
+        std::string s;
+        ecf::TimeStamp::now_in_brief(s);
+        out_ << s.c_str() << "cm " << cn << " " << objectPath(obj) << "\n";
+        out_.flush();
+    }
+}
diff --git a/Viewer/src/InputEventLog.hpp b/Viewer/src/InputEventLog.hpp
new file mode 100644
index 0000000..a299a1a
--- /dev/null
+++ b/Viewer/src/InputEventLog.hpp
@@ -0,0 +1,55 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef INPUTEVENTLOG_HPP
+#define INPUTEVENTLOG_HPP
+
+#include <QObject>
+#include <QTextStream>
+
+class QCloseEvent;
+class QContextMenuEvent;
+class QFile;
+class QMouseEvent;
+class LogTruncator;
+
+class InputEventLog : public QObject
+{
+    Q_OBJECT
+public:
+    ~InputEventLog();
+
+    void start();
+    void stop();
+
+    static InputEventLog* instance();
+
+protected Q_SLOTS:
+    void truncateLogBegin();
+    void truncateLogEnd();
+
+protected:
+    InputEventLog(QObject* parent=0);
+
+    bool eventFilter(QObject *obj, QEvent *event);
+    void logMousePress(QObject* obj,QMouseEvent *e);
+    void logMouseRelease(QObject* obj,QMouseEvent *e);
+    void logClose(QObject* obj,QCloseEvent *e);
+    void logContextMenu(QObject* obj,QContextMenuEvent *e);
+
+    static InputEventLog* instance_;
+    bool paused_;
+    QFile *outFile_;
+    QTextStream out_;
+    LogTruncator* truncator_;
+};
+
+
+#endif // INPUTEVENTLOG_HPP
+
diff --git a/Viewer/src/LimitEditor.cpp b/Viewer/src/LimitEditor.cpp
index 9c07bd2..2bc2d89 100644
--- a/Viewer/src/LimitEditor.cpp
+++ b/Viewer/src/LimitEditor.cpp
@@ -45,6 +45,9 @@ LimitEditor::LimitEditor(VInfo_ptr info,QWidget* parent) : AttributeEditor(info,
     w_->valueSpin_->setValue(oriVal_);
     w_->maxSpin_->setValue(oriMax_);
 
+    w_->valueSpin_->setRange(0,10000);
+    w_->maxSpin_->setRange(1,10000);
+
     w_->valueSpin_->setFocus();
 
     if(a->data().at(2).isEmpty() || a->data().at(3).isEmpty())
diff --git a/Viewer/src/LogProvider.cpp b/Viewer/src/LogProvider.cpp
index d984f61..8793b52 100644
--- a/Viewer/src/LogProvider.cpp
+++ b/Viewer/src/LogProvider.cpp
@@ -16,8 +16,6 @@
 #include "VReply.hpp"
 #include "ServerHandler.hpp"
 
-#include <QDebug>
-
 #include <fstream>
 
 #include <boost/filesystem/operations.hpp>
@@ -187,8 +185,6 @@ void LogProvider::slotLinesAppend(QStringList lst)
 		owner_->infoFailed(reply_);
 	}
 
-    //qDebug() << "LogProvider::slotLinesAppend()" << lst;
-
 	std::vector<std::string> vec;
 	Q_FOREACH(QString s,lst)
 	{
diff --git a/Viewer/src/LogTruncator.cpp b/Viewer/src/LogTruncator.cpp
new file mode 100644
index 0000000..b5f4dfd
--- /dev/null
+++ b/Viewer/src/LogTruncator.cpp
@@ -0,0 +1,65 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "LogTruncator.hpp"
+
+#include <QFileInfo>
+#include <QTime>
+#include <QTimer>
+
+#include "DirectoryHandler.hpp"
+#include "UiLog.hpp"
+
+LogTruncator::LogTruncator(QString path, int timeout,int sizeLimit,int lineNum,QObject* parent) :
+    QObject(parent),
+    path_(path),
+    timeout_(timeout),
+    sizeLimit_(sizeLimit),
+    lineNum_(lineNum)
+{
+    timer_=new QTimer(this);
+    connect(timer_,SIGNAL(timeout()),this,SLOT(truncate()));
+    int secToM=86400-QTime::currentTime().msecsSinceStartOfDay()/1000;
+    if(secToM > 5*60)
+        timer_->start(secToM*1000);
+    else
+        timer_->start(secToM*1000+timeout_);
+
+    UiLog().dbg() << "LogTruncator --> secs to midnight=" << secToM << "s" <<
+                     " initial timeout=" << timer_->interval()/1000 << "s";
+}
+
+void LogTruncator::truncate()
+{
+    //The log file might not exist. It is not necessarily an error because
+    //the startup script decides on whether the main log goes into the stdout or into
+    //a file.
+    QFileInfo info(path_);
+    if(!info.exists())
+        return;
+
+    Q_EMIT truncateBegin();
+
+    qint64 fSize=info.size();
+    if(fSize > sizeLimit_)
+    {
+        std::string errStr;
+        DirectoryHandler::truncateFile(path_.toStdString(),
+                          lineNum_,errStr);
+
+        info.refresh();
+        UiLog().info() << "LogTruncator::truncate --> truncated from " << fSize <<
+                          " bytes to " <<  info.size() << " bytes;  log file: " << path_;
+    }
+
+    Q_EMIT truncateEnd();
+
+    if(timeout_ != timer_->interval())
+        timer_->setInterval(timeout_);
+}
diff --git a/Viewer/src/FileInfoLabel.hpp b/Viewer/src/LogTruncator.hpp
similarity index 53%
copy from Viewer/src/FileInfoLabel.hpp
copy to Viewer/src/LogTruncator.hpp
index eefde4b..183caa1 100644
--- a/Viewer/src/FileInfoLabel.hpp
+++ b/Viewer/src/LogTruncator.hpp
@@ -1,39 +1,40 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
-//
 //============================================================================
 
-#ifndef FILEINFOLABEL_HPP_
-#define FILEINFOLABEL_HPP_
+#ifndef LOGTRUNCATOR_HPP
+#define LOGTRUNCATOR_HPP
 
-#include <QLabel>
+#include <QObject>
+#include <QString>
 
-#include "VDir.hpp"
+class QTimer;
 
-class VReply;
-
-class FileInfoLabel : public QLabel
+class LogTruncator : public QObject
 {
+    Q_OBJECT
 public:
-	explicit FileInfoLabel(QWidget* parent=0);
+    LogTruncator(QString, int,int,int,QObject* parent=0);
 
-	void update(VReply*,QString str=QString());
-	QColor fileSizeColour(qint64 size) const;
+protected Q_SLOTS:
+    void truncate();
 
-};
-
-class DirInfoLabel : public FileInfoLabel
-{
-public:
-	explicit DirInfoLabel(QWidget* parent=0) : FileInfoLabel(parent) {}
-
-	void update(VDir_ptr);
+Q_SIGNALS:
+    void truncateBegin();
+    void truncateEnd();
 
+private:
+    QString path_;
+    QTimer* timer_;
+    int timeout_;
+    int sizeLimit_;
+    int lineNum_;
 };
 
-#endif
+#endif // LOGTRUNCATOR_HPP
+
diff --git a/Viewer/src/MainWindow.cpp b/Viewer/src/MainWindow.cpp
index dbda78a..d45ee8f 100644
--- a/Viewer/src/MainWindow.cpp
+++ b/Viewer/src/MainWindow.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -21,8 +21,6 @@
 #include <QToolBar>
 #include <QVBoxLayout>
 
-#include <QDebug>
-
 #include "MainWindow.hpp"
 
 #include "AboutDialog.hpp"
@@ -35,12 +33,17 @@
 #include "NodePanel.hpp"
 #include "PropertyDialog.hpp"
 #include "ServerHandler.hpp"
+#include "ServerList.hpp"
 #include "ServerListDialog.hpp"
+#include "ServerListSyncWidget.hpp"
 #include "SessionHandler.hpp"
 #include "SaveSessionAsDialog.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
+#include "VIcon.hpp"
 #include "VSettings.hpp"
+#include "Version.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <boost/lexical_cast.hpp>
 #include <boost/property_tree/json_parser.hpp>
@@ -49,25 +52,24 @@ bool MainWindow::quitStarted_=false;
 QList<MainWindow*> MainWindow::windows_;
 int MainWindow::maxWindowNum_=25;
 
-MainWindow::MainWindow(QStringList idLst,QWidget *parent) : QMainWindow(parent)
+MainWindow::MainWindow(QStringList idLst,QWidget *parent) :
+    QMainWindow(parent),
+    serverSyncNotifyTb_(0)
 {
     setupUi(this);
     
-    setAttribute(Qt::WA_DeleteOnClose);
+    //Assigns name to each object
+    setObjectName("win_" + QString::number(windows_.count()));
 
-    // add the name of the session to the title bar?
-    std::string sessionName = SessionHandler::instance()->current()->name();
-    if (sessionName == "default")
-        sessionName = "";
-    else
-        sessionName = " (session: " + sessionName + ")";
+    setAttribute(Qt::WA_DeleteOnClose);
 
-    setWindowTitle(QString::fromStdString(VConfig::instance()->appLongName()) + "  -  Preview version" + QString::fromStdString(sessionName));
+    constructWindowTitle();
 
     //Create the main layout
     QVBoxLayout* layout=new QVBoxLayout();
     layout->setContentsMargins(0,0,0,0);
     QWidget *w=new QWidget(this);
+    w->setObjectName("c");
     w->setLayout(layout);
     setCentralWidget(w);
 
@@ -88,14 +90,14 @@ MainWindow::MainWindow(QStringList idLst,QWidget *parent) : QMainWindow(parent)
     	    this,SLOT(slotContentsChanged()));
 
     //Add temporary preview label
-    QLabel *label=new QLabel(" This is a preview version and has not been verified for operational use! ",this);
+   /* QLabel *label=new QLabel(" This is a preview version and has not been verified for operational use! ",this);
     label->setAutoFillBackground(true);
     label->setProperty("previewLabel","1");
 
     QLabel *label1=new QLabel("      ",this);
 
     viewToolBar->addWidget(label1);
-    viewToolBar->addWidget(label);
+    viewToolBar->addWidget(label);*/
 
     QWidget* spacer = new QWidget();
     spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
@@ -111,18 +113,35 @@ MainWindow::MainWindow(QStringList idLst,QWidget *parent) : QMainWindow(parent)
 
     //Status bar
 
+    //Add server list sync notification
+    if(ServerList::instance()->hasSyncChange())
+    {
+        //Add server list sync notification
+        serverSyncNotifyTb_=new QToolButton(this);
+        serverSyncNotifyTb_->setAutoRaise(true);
+        serverSyncNotifyTb_->setToolButtonStyle(Qt::ToolButtonTextBesideIcon);
+        serverSyncNotifyTb_->setIcon(QPixmap(":/viewer/info.svg"));
+        serverSyncNotifyTb_->setText("Server list updated");
+        serverSyncNotifyTb_->setToolTip("Your local copy of the <b>system server list</b> was updated. Click to see the changes.");
+        statusBar()->addWidget(serverSyncNotifyTb_);
+
+        connect(serverSyncNotifyTb_,SIGNAL(clicked(bool)),
+            this,SLOT(slotServerSyncNotify(bool)));
+    }
+
     //Add notification widget
     ChangeNotifyWidget* chw=new ChangeNotifyWidget(this);
     statusBar()->addPermanentWidget(chw);
 
+    //Assigns name to each object
+    WidgetNameProvider::nameChildren(this);
 
     //actionSearch->setVisible(false);
-
 }
 
 MainWindow::~MainWindow()
 {
-	qDebug() << "exit";
+    UiLog().dbg() << "MainWindow --> desctutor";
 	serverFilterMenu_->aboutToDestroy();
 }
 
@@ -142,8 +161,9 @@ void MainWindow::addInfoPanelActions(QToolBar *toolbar)
 	   if((*it)->show().find("toolbar") != std::string::npos)
 	   {
 		   QAction *ac=toolbar->addAction(QString::fromStdString((*it)->label()));
-		   QPixmap pix(":/viewer/" + QString::fromStdString((*it)->icon()));
-		   ac->setIcon(QIcon(pix));
+           QPixmap pix(":/viewer/" + QString::fromStdString((*it)->icon()));
+           ac->setObjectName(QString::fromStdString((*it)->label()));
+           ac->setIcon(QIcon(pix));
 		   ac->setData(QString::fromStdString((*it)->name()));
 		   ac->setToolTip(QString::fromStdString((*it)->tooltip()));
 
@@ -155,6 +175,24 @@ void MainWindow::addInfoPanelActions(QToolBar *toolbar)
    }
 }
 
+
+void MainWindow::constructWindowTitle()
+{
+    char *userTitle = getenv("ECFUI_TITLE");
+    std::string mainTitle = (userTitle != NULL) ? std::string(userTitle) + " (" + ecf::Version::raw() + ")"
+                                                : VConfig::instance()->appLongName();
+
+    // add the name of the session to the title bar?
+    std::string sessionName = SessionHandler::instance()->current()->name();
+    if (sessionName == "default")
+        sessionName = "";
+    else
+        sessionName = " (session: " + sessionName + ")";
+
+    setWindowTitle(QString::fromStdString(mainTitle) + "  -  Preview version" + QString::fromStdString(sessionName));
+}
+
+
 //==============================================================
 //
 //  File menu
@@ -231,7 +269,6 @@ void MainWindow::on_actionPreferences_triggered()
 	delete d;
 }
 
-
 void MainWindow::on_actionManageSessions_triggered()
 {
 	QMessageBox::information(0, tr("Manage Sessions"),
@@ -403,6 +440,25 @@ bool MainWindow::selectInTreeView(VInfo_ptr info)
     return nodePanel_->selectInTreeView(info);
 }
 
+void MainWindow::slotServerSyncNotify(bool)
+{
+    if(serverSyncNotifyTb_)
+    {
+        serverSyncNotifyTb_->hide();
+        MainWindow::hideServerSyncNotify(this);
+
+        ServerListDialog dialog(ServerListDialog::SelectionMode,nodePanel_->serverFilter(),this);
+        dialog.showSysSyncLog();
+        dialog.exec();
+    }
+}
+
+void MainWindow::hideServerSyncNotify()
+{
+   if(serverSyncNotifyTb_)
+      serverSyncNotifyTb_->hide();
+}
+
 //==============================================================
 //
 //  Close and quit
@@ -422,10 +478,19 @@ void MainWindow::closeEvent(QCloseEvent* event)
 	}
 }
 
-//void MainWindow::slotQuit()
-//{
-//	 MainWindow::aboutToQuit(this);
-//}
+//On quitting we need to call the destructor of all the servers shown in the gui.
+//This will guarantee that the server log out is properly done.
+//Unfortunately when we quit qt does not call the destructor of the mainwindows.
+//We tried to explicitely delete the mainwindows here but it caused a crash on the
+//leap42 system. So here we only delete the nodePanel in the mainwindow. This panel
+//contains all the tabs. Each tab contains a serverfilter and when the serverfilters
+//get deleted in the end the destructors of the servers will be called.
+void MainWindow::cleanUpOnQuit()
+{
+    Q_ASSERT(quitStarted_==true);
+    serverFilterMenu_->aboutToDestroy();
+    delete nodePanel_;
+}
 
 //====================================================
 //
@@ -522,7 +587,7 @@ void MainWindow::showWindows()
 		win->show();
 }
 
-void MainWindow::configChanged(MainWindow* owner)
+void MainWindow::configChanged(MainWindow*)
 {
 	Q_FOREACH(MainWindow *win,windows_)
 			win->rerenderContents();
@@ -535,6 +600,18 @@ void MainWindow::changeNotifySelectionChanged(VInfo_ptr info)
             return;
 }
 
+void MainWindow::hideServerSyncNotify(MainWindow*)
+{
+    Q_FOREACH(MainWindow *win,windows_)
+        win->hideServerSyncNotify();
+}
+
+void MainWindow::cleanUpOnQuit(MainWindow*)
+{
+    Q_FOREACH(MainWindow *win,windows_)
+        win->cleanUpOnQuit();
+}
+
 //Return true if close is allowed, false otherwise
 bool MainWindow::aboutToClose(MainWindow* win)
 {
@@ -582,6 +659,27 @@ bool MainWindow::aboutToQuit(MainWindow* topWin)
 		//Save browser settings
 		MainWindow::save(topWin);
 
+		// handle session cleanup
+		// temporary sessions can be saved or deleted
+		SessionItem *si = SessionHandler::instance()->current();
+		if (si->temporary())
+		{
+			if (si->askToPreserveTemporarySession())
+			{
+				if(QMessageBox::question(0,tr("Delete temporary session?"),
+							tr("This was a temporary session - would you like to preserve it for future use?"),
+							QMessageBox::Yes | QMessageBox::No,QMessageBox::No) == QMessageBox::No)
+					SessionHandler::destroyInstance();
+			}
+			else  // if askToPreserveTemporarySession() is false, then we assume we want to delete
+			{
+				SessionHandler::destroyInstance();
+			}
+		}
+
+        //Ensure the ServerHandler destructors are called
+        MainWindow::cleanUpOnQuit(topWin);
+
 		//Exit ecFlowView
 		QApplication::quit();
 #if 0
@@ -598,7 +696,6 @@ void MainWindow::init()
 
 	VComboSettings vs(cs->sessionFile(),cs->windowFile());
 
-
 	//Read configuration. If it fails we create an empty window!!
 	if(!vs.read())
 	{
@@ -655,40 +752,14 @@ void MainWindow::save(MainWindow *topWin)
 {
 	MainWindow::saveContents(topWin);
 
-	/*SessionItem* cs=SessionHandler::instance()->current();
-	assert(cs);
-
-	VComboSettings vs(cs->sessionFile(),cs->windowFile());
-
-	//We have to clear it so that not to remember all the previous windows
-	vs.clear();
-
-	//Add total window number and id of active window
-	vs.put("windowCount",windows_.count());
-	vs.put("topWindowId",windows_.indexOf(topWin));
-
-	//Save info for all the windows
-	for(int i=0; i < windows_.count(); i++)
-	{
-		std::string id="window_"+boost::lexical_cast<std::string>(i);
-		vs.beginGroup(id);
-		windows_.at(i)->writeSettings(&vs);
-		vs.endGroup();
-	}
-
-	//Write to json
-	vs.write();*/
-
 	//Save global config
 	VConfig::instance()->saveSettings();
 
+    //Save server list
 	ServerHandler::saveSettings();
 
-	//Save non-global config
-	for(int i=0; i < windows_.count(); i++)
-	{
-		//windows_.at(i)->saveSettings();
-	}
+    //Save icon name list
+    VIcon::saveLastNames();
 }
 
 void MainWindow::saveContents(MainWindow *topWin)
diff --git a/Viewer/src/MainWindow.hpp b/Viewer/src/MainWindow.hpp
index 14f125d..bca1991 100644
--- a/Viewer/src/MainWindow.hpp
+++ b/Viewer/src/MainWindow.hpp
@@ -2,7 +2,7 @@
 #define MAINWINDOW_HPP_
 
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -21,6 +21,7 @@
 
 class QActionGroup;
 class QLabel;
+class QToolButton;
 class InfoPanel;
 class NodePanel;
 class ServerFilterMenu;
@@ -69,6 +70,7 @@ protected Q_SLOTS:
 	void slotOpenInfoPanel();
 	void slotConfigChanged();
 	void slotContentsChanged();
+    void slotServerSyncNotify(bool);
 
 private:
     void init(MainWindow*);
@@ -78,6 +80,9 @@ private:
     void rerenderContents();
     bool selectInTreeView(VInfo_ptr info);
     void updateRefreshActions();
+    void hideServerSyncNotify();
+    void constructWindowTitle();
+    void cleanUpOnQuit();
 
     void writeSettings(VComboSettings*);
     void readSettings(VComboSettings*);
@@ -92,11 +97,14 @@ private:
     static void saveContents(MainWindow *);
     static MainWindow* findWindow(QWidget *childW);
     static void configChanged(MainWindow *);
+    static void hideServerSyncNotify(MainWindow*);
+    static void cleanUpOnQuit(MainWindow *);
 
     ServerFilterMenu* serverFilterMenu_;
     NodePanel* nodePanel_;
     QList<QAction*> infoPanelActions_;
     VInfo_ptr selection_;
+    QToolButton* serverSyncNotifyTb_;
 
     static bool quitStarted_;
     static QList<MainWindow*> windows_;
diff --git a/Viewer/src/MainWindow.ui b/Viewer/src/MainWindow.ui
index 82c2d53..e14e630 100644
--- a/Viewer/src/MainWindow.ui
+++ b/Viewer/src/MainWindow.ui
@@ -37,13 +37,13 @@
      <x>0</x>
      <y>0</y>
      <width>852</width>
-     <height>19</height>
+     <height>24</height>
     </rect>
    </property>
    <property name="nativeMenuBar">
     <bool>false</bool>
    </property>
-   <widget class="QMenu" name="menuLl">
+   <widget class="QMenu" name="menuFile">
     <property name="tearOffEnabled">
      <bool>true</bool>
     </property>
@@ -70,7 +70,7 @@
     <addaction name="actionPreferences"/>
     <addaction name="actionConfigureNodeMenu"/>
    </widget>
-   <widget class="QMenu" name="menu_Help">
+   <widget class="QMenu" name="menuHelp">
     <property name="tearOffEnabled">
      <bool>true</bool>
     </property>
@@ -91,14 +91,14 @@
    </widget>
    <widget class="QMenu" name="menuView">
     <property name="title">
-     <string>View</string>
+     <string>&View</string>
     </property>
     <addaction name="actionAddTreeWidget"/>
     <addaction name="actionAddTableWidget"/>
     <addaction name="actionAddInfoPanel"/>
     <addaction name="actionAddLogPanel"/>
    </widget>
-   <widget class="QMenu" name="menu_Tools">
+   <widget class="QMenu" name="menuTools">
     <property name="title">
      <string>&Tools</string>
     </property>
@@ -114,13 +114,13 @@
     <addaction name="actionRefresh"/>
     <addaction name="actionRefreshSelected"/>
    </widget>
-   <addaction name="menuLl"/>
+   <addaction name="menuFile"/>
    <addaction name="menuEdit"/>
    <addaction name="menuView"/>
    <addaction name="menuRefresh"/>
    <addaction name="menuServer"/>
-   <addaction name="menu_Tools"/>
-   <addaction name="menu_Help"/>
+   <addaction name="menuTools"/>
+   <addaction name="menuHelp"/>
   </widget>
   <widget class="QStatusBar" name="statusbar"/>
   <widget class="QToolBar" name="viewToolBar">
@@ -145,8 +145,8 @@
   </widget>
   <action name="actionClose">
    <property name="icon">
-    <iconset>
-     <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
+    <iconset resource="viewer.qrc">
+     <normaloff>:/viewer/close.svg</normaloff>:/viewer/close.svg</iconset>
    </property>
    <property name="text">
     <string>&Close</string>
@@ -160,7 +160,7 @@
   </action>
   <action name="actionQuit">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/exit.svg</normaloff>:/viewer/images/exit.svg</iconset>
    </property>
    <property name="text">
@@ -172,7 +172,7 @@
   </action>
   <action name="actionPreferences">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/configure.svg</normaloff>:/viewer/images/configure.svg</iconset>
    </property>
    <property name="text">
@@ -194,11 +194,11 @@
   </action>
   <action name="actionRefresh">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/reload.svg</normaloff>:/viewer/reload.svg</iconset>
    </property>
    <property name="text">
-    <string>Refresh all servers  in tab</string>
+    <string>Refresh all servers  &in tab</string>
    </property>
    <property name="toolTip">
     <string>Refresh <b>all servers</b> in current tab</string>
@@ -209,11 +209,11 @@
   </action>
   <action name="actionReset">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/reset.svg</normaloff>:/viewer/reset.svg</iconset>
    </property>
    <property name="text">
-    <string>Reset all servers in tab</string>
+    <string>&Reset all servers in tab</string>
    </property>
    <property name="toolTip">
     <string>Reset</string>
@@ -237,7 +237,7 @@
   </action>
   <action name="actionManageServers">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/manage_server.svg</normaloff>:/viewer/manage_server.svg</iconset>
    </property>
    <property name="text">
@@ -252,20 +252,20 @@
   </action>
   <action name="actionAddInfoPanel">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/add_info.svg</normaloff>:/viewer/images/add_info.svg</iconset>
    </property>
    <property name="text">
-    <string>Add info panel</string>
+    <string>Add &info panel</string>
    </property>
   </action>
   <action name="actionAddTreeWidget">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/add_tree.svg</normaloff>:/viewer/images/add_tree.svg</iconset>
    </property>
    <property name="text">
-    <string>Add tree view</string>
+    <string>&Add tree view</string>
    </property>
    <property name="toolTip">
     <string>Add tree widget</string>
@@ -273,11 +273,11 @@
   </action>
   <action name="actionAddTableWidget">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/add_table.svg</normaloff>:/viewer/images/add_table.svg</iconset>
    </property>
    <property name="text">
-    <string>Add table view</string>
+    <string>Add table &view</string>
    </property>
    <property name="toolTip">
     <string>Add table widget</string>
@@ -285,7 +285,7 @@
   </action>
   <action name="actionAbout">
    <property name="text">
-    <string>About EcflowUI ...</string>
+    <string>&About EcflowUI ...</string>
    </property>
   </action>
   <action name="actionAddLogPanel">
@@ -293,7 +293,7 @@
     <bool>false</bool>
    </property>
    <property name="text">
-    <string>Add log panel</string>
+    <string>Add &log panel</string>
    </property>
   </action>
   <action name="actionManageSessions">
@@ -301,7 +301,7 @@
     <bool>true</bool>
    </property>
    <property name="text">
-    <string>Manage sessions ...</string>
+    <string>&Manage sessions ...</string>
    </property>
    <property name="visible">
     <bool>true</bool>
@@ -309,20 +309,20 @@
   </action>
   <action name="actionSearch">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/search.svg</normaloff>:/viewer/search.svg</iconset>
    </property>
    <property name="text">
-    <string>Search ...</string>
+    <string>&Search ...</string>
    </property>
   </action>
   <action name="actionRefreshSelected">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/reload_one.svg</normaloff>:/viewer/reload_one.svg</iconset>
    </property>
    <property name="text">
-    <string>Refresh selected server</string>
+    <string>R&efresh selected server</string>
    </property>
    <property name="shortcut">
     <string>F5</string>
@@ -330,7 +330,7 @@
   </action>
   <action name="actionResetSelected">
    <property name="text">
-    <string>Reset selected server</string>
+    <string>Reset &selected server</string>
    </property>
    <property name="toolTip">
     <string>Reset <b>selected</b> server in current tab</string>
@@ -345,6 +345,8 @@
    </property>
   </action>
  </widget>
- <resources/>
+ <resources>
+  <include location="viewer.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Viewer/src/MenuHandler.cpp b/Viewer/src/MenuHandler.cpp
index 87e1f31..a0e4f63 100644
--- a/Viewer/src/MenuHandler.cpp
+++ b/Viewer/src/MenuHandler.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -28,6 +28,7 @@
 #include "Str.hpp"
 #include "MenuHandler.hpp"
 #include "ServerHandler.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 #include "NodeExpression.hpp"
 #include "VConfig.hpp"
@@ -37,7 +38,7 @@
 int MenuItem::idCnt_=0;
 
 std::vector<Menu *> MenuHandler::menus_;
-
+MenuHandler::ConfirmationMap MenuHandler::commandsWhichRequireConfirmation_;
 
 MenuHandler::MenuHandler()
 {
@@ -79,7 +80,7 @@ bool MenuHandler::readMenuConfigFile(const std::string &configFile)
 
         if (itTopLevel->first == "menus")
         {
-            UserMessage::message(UserMessage::DBG, false, std::string("Menus:"));
+            UiLog().dbg() << "Menus:";
 
             ptree const &menusDef = itTopLevel->second;
 
@@ -90,7 +91,7 @@ bool MenuHandler::readMenuConfigFile(const std::string &configFile)
                 ptree const &menuDef = itMenus->second;
 
                 std::string cname = menuDef.get("name", "NoName");
-                UserMessage::message(UserMessage::DBG, false, std::string("  ") + cname);
+                UiLog().dbg() << "  " << cname;
                 Menu *menu = new Menu(cname);
 
                 //ptree const &menuModesDef = menuDef.get_child("modes");
@@ -115,7 +116,7 @@ bool MenuHandler::readMenuConfigFile(const std::string &configFile)
 
         else if (itTopLevel->first == "menu_items")
         {
-            UserMessage::message(UserMessage::DBG, false, std::string("Menu items:"));
+            UiLog().dbg() << "Menu items:";
 
             ptree const &itemsDef = itTopLevel->second;
 
@@ -141,7 +142,7 @@ bool MenuHandler::readMenuConfigFile(const std::string &configFile)
 
                 //std::cout << "  " << name << " :" << menuName << std::endl;
 
-                UserMessage::message(UserMessage::DBG, false, std::string("  " + name));
+                UiLog().dbg() << "  " << name;
                 MenuItem *item = new MenuItem(name);
                 item->setCommand(command);
 
@@ -262,8 +263,8 @@ void MenuHandler::refreshCustomMenuCommands()
 {
     BaseNodeCondition *trueCond  = new TrueNodeCondition();
     BaseNodeCondition *falseCond = new FalseNodeCondition();
-	CustomCommandHistoryHandler *customRecentCmds = CustomCommandHistoryHandler::instance();
-	CustomSavedCommandHandler   *customSavedCmds  = CustomSavedCommandHandler::instance();
+    CustomCommandHistoryHandler *customRecentCmds = CustomCommandHistoryHandler::instance();
+    CustomSavedCommandHandler   *customSavedCmds  = CustomSavedCommandHandler::instance();
 
     Menu *menu = findMenu("Custom");
     if (menu)
@@ -279,47 +280,48 @@ void MenuHandler::refreshCustomMenuCommands()
         item1->setQuestionCondition(falseCond);
         item1->setIcon("configure.svg");
 
-		// Saved commands
-		MenuItem *item2 = new MenuItem("-");
-		addItemToMenu(item2, "Custom");
-		item2->setEnabledCondition(trueCond);
-		item2->setVisibleCondition(trueCond);
-		item2->setQuestionCondition(falseCond);
+        // Saved commands
+        MenuItem *item2 = new MenuItem("-");
+        addItemToMenu(item2, "Custom");
+        item2->setEnabledCondition(trueCond);
+        item2->setVisibleCondition(trueCond);
+        item2->setQuestionCondition(falseCond);
 
-		int numSavedCommands = customSavedCmds->numCommands();
+        int numSavedCommands = customSavedCmds->numCommands();
 
-		for (int i = 0; i < numSavedCommands; i++)
-		{
-			CustomCommand *cmd = customSavedCmds->commandFromIndex(i);
-			if (cmd->inContextMenu())
-			{
-				MenuItem *item = new MenuItem(cmd->name());
-				item->setCommand(cmd->command());
-				item->setEnabledCondition(trueCond);
-				item->setVisibleCondition(trueCond);
-				item->setQuestionCondition(trueCond);
-				item->setStatustip("__cmd__");
-				addItemToMenu(item, "Custom");
-			}
-		}
+        for (int i = 0; i < numSavedCommands; i++)
+        {
+            CustomCommand *cmd = customSavedCmds->commandFromIndex(i);
+            if (cmd->inContextMenu())
+            {
+                MenuItem *item = new MenuItem(cmd->name());
+                item->setCommand(cmd->command());
+                item->setEnabledCondition(trueCond);
+                item->setVisibleCondition(trueCond);
+                item->setQuestionCondition(trueCond);
+                item->setCustom(true);
+                item->setStatustip("__cmd__");
+                addItemToMenu(item, "Custom");
+            }
+        }
 
 
-		// Recently executed commands
-		MenuItem *item3 = new MenuItem("-");
-		addItemToMenu(item3, "Custom");
-		item3->setEnabledCondition(trueCond);
-		item3->setVisibleCondition(trueCond);
-		item3->setQuestionCondition(falseCond);
+        // Recently executed commands
+        MenuItem *item3 = new MenuItem("-");
+        addItemToMenu(item3, "Custom");
+        item3->setEnabledCondition(trueCond);
+        item3->setVisibleCondition(trueCond);
+        item3->setQuestionCondition(falseCond);
 
-		MenuItem *item4 = new MenuItem("Recent");
-		addItemToMenu(item4, "Custom");
-		item4->setEnabledCondition(falseCond);
-		item4->setVisibleCondition(trueCond);
-		item4->setQuestionCondition(falseCond);
+        MenuItem *item4 = new MenuItem("Recent");
+        addItemToMenu(item4, "Custom");
+        item4->setEnabledCondition(falseCond);
+        item4->setVisibleCondition(trueCond);
+        item4->setQuestionCondition(falseCond);
 
-		int numRecentCommands = customRecentCmds->numCommands();
+        int numRecentCommands = customRecentCmds->numCommands();
 
-		for (int i = 0; i < numRecentCommands; i++)
+        for (int i = 0; i < numRecentCommands; i++)
         {
             CustomCommand *cmd = customRecentCmds->commandFromIndex(i);
 
@@ -328,6 +330,7 @@ void MenuHandler::refreshCustomMenuCommands()
             item->setEnabledCondition(trueCond);
             item->setVisibleCondition(trueCond);
             item->setQuestionCondition(trueCond);
+            item->setCustom(true);
             item->setStatustip("__cmd__");
             addItemToMenu(item, "Custom");
         }
@@ -385,8 +388,8 @@ bool MenuHandler::addItemToMenu(MenuItem *item, const std::string &menuName)
     }
     else
     {
-        UserMessage::message(UserMessage::ERROR, false, std::string("Could not find menu called " + 
-                             menuName + " to add item " + item->name() + " to."));
+        UiLog().err() << "Could not find menu called " <<
+                             menuName << " to add item " << item->name() << " to.";
         return false;
     }
 
@@ -426,6 +429,66 @@ MenuItem *MenuHandler::invokeMenu(const std::string &menuName, std::vector<VInfo
     return selectedItem;
 }
 
+MenuHandler::ConfirmationMap &MenuHandler::getCommandsThatRequireConfirmation()
+{
+    // populate the list only the first time this function is called
+    if (commandsWhichRequireConfirmation_.empty())
+    {
+        // list the commands which require a prompt:
+        commandsWhichRequireConfirmation_["delete"]    = "Do you really want to delete <full_name> ?";
+        commandsWhichRequireConfirmation_["terminate"] = "Do you really want to terminate <full_name> ?";
+        commandsWhichRequireConfirmation_["halt"]      = "Do you really want to halt <full_name> ?";
+    }
+    return commandsWhichRequireConfirmation_;
+}
+
+
+
+// some commands, such as --delete, prompt the user for confirmation on the command line, which
+// causes the application to hang. The way we get around this is to intercept these commands and,
+// where possible, add a "yes" argument, which will bypass the prompt.
+void MenuHandler::interceptCommandsThatNeedConfirmation(MenuItem *item)
+{
+	std::string command = item->command();
+	QString wholeCmd = QString::fromStdString(command);
+
+	// find the verb in the command
+	//QRegExp rx("ecflow_client\\s+--(\\S+).*");  //  \s=whitespace, \S=non-whitespace
+	QRegExp rx("ecflow_client\\s+--([a-zA-Z]+).*");  //  \s=whitespace, \S=non-whitespace
+	int i = rx.indexIn(wholeCmd);
+	if (i != -1) // a command was found
+	{
+		QString commandName = rx.cap(1);
+		std::string cmdName = commandName.toStdString();
+
+		// is this command one of the ones that requires a prompt?
+		MenuHandler::ConfirmationMap &list = getCommandsThatRequireConfirmation();
+		MenuHandler::ConfirmationMap::iterator it=list.find(cmdName);
+		if(it != list.end())
+		{
+			// does the command already have a 'yes'?
+			QRegExp rx2(".*\\byes\\b.*");  // \b=word boundary
+			int j = rx2.indexIn(wholeCmd);
+			if (j == -1)  // no
+			{
+				item->setQuestion((*it).second); // note that we need to ask the user
+
+				// fix the command so that it has "yes" in it
+				std::string minusCmd     = std::string("--") + cmdName;
+				std::string cmdEquals    = minusCmd + "=";
+				std::string cmdEqualsYes = cmdEquals + "yes ";
+				std::string cmdYes       = minusCmd + " yes ";
+				if (!ecf::Str::replace(command, cmdEquals, cmdEqualsYes))  // --command=foo -> --command=yes foo
+				{
+					ecf::Str::replace(command, minusCmd, cmdYes);  // --command foo -> --command yes foo
+				}
+				item->setCommand(command);
+			}
+		}
+	}
+}
+
+
 // -----------------------------------------------------------------
 
 
@@ -462,6 +525,7 @@ QMenu *Menu::generateMenu(std::vector<VInfo_ptr> nodes, QWidget *parent,QMenu* p
 	else
 	{
 		qmenu=new QMenu(parent);
+        qmenu->setObjectName("cm");
 		qmenu->setTitle(QString::fromStdString(name()));
 	}
 
@@ -530,8 +594,8 @@ QMenu *Menu::generateMenu(std::vector<VInfo_ptr> nodes, QWidget *parent,QMenu* p
                 if (menu)
                 {
                     //The submenu will be added to qmenu and it will take ownership of it.
-					QMenu *subMenu = menu->generateMenu(nodes, parent, qmenu, view, acLst);
-					subMenu->setEnabled(enabled);
+					QMenu *subMenu = menu->generateMenu(nodes, parent, qmenu, view, acLst);					
+                    subMenu->setEnabled(enabled);
                 }
             }
             else if  ((*itItems)->isDivider())
@@ -540,7 +604,7 @@ QMenu *Menu::generateMenu(std::vector<VInfo_ptr> nodes, QWidget *parent,QMenu* p
             }
             else
             {
-                //When we add the action to the menu its parent (NULL a.i. the QApplication) does not change.
+                //When we add the action to the menu its parent (NULL e.i. the QApplication) does not change.
             	//So when the menu is deleted the action is not deleted.
             	//At least this is the behaviour with Qt 4.8. and 5.5.
             	//QAction *action = (*itItems)->action();
@@ -652,10 +716,11 @@ void Menu::buildMenuTitle(std::vector<VInfo_ptr> nodes, QMenu* qmenu)
 	nodeLabel->setParent(titleW);
 
 	QWidgetAction *wAction = new QWidgetAction(qmenu);
+    wAction->setObjectName("title");
 	//Qt doc says: the ownership of the widget is passed to the widgetaction.
 	//So when the action is deleted it will be deleted as well.
 	wAction->setDefaultWidget(titleW);
-	//wAction->setEnabled(false);
+	wAction->setEnabled(false);
 	qmenu->addAction(wAction);
 }
 
@@ -672,7 +737,8 @@ MenuItem::MenuItem(const std::string &name) :
    enabledCondition_(NULL),
    questionCondition_(NULL),
    isSubMenu_(false),
-   isDivider_(false)
+   isDivider_(false),
+   isCustom_(false)
 {
     if (name == "-")
     {
@@ -729,7 +795,8 @@ bool MenuItem::isValidView(const std::string& view) const
 QAction* MenuItem::createAction(QWidget* parent)
 {
 	QAction *ac=new QAction(parent);
-	ac->setText(QString::fromStdString(name_));
+    ac->setObjectName(QString::fromStdString(name_));
+    ac->setText(QString::fromStdString(name_));
 	ac->setIcon(icon_);
 
 	if(!statustip_.empty())
diff --git a/Viewer/src/MenuHandler.hpp b/Viewer/src/MenuHandler.hpp
index e9bc405..bb05824 100644
--- a/Viewer/src/MenuHandler.hpp
+++ b/Viewer/src/MenuHandler.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -11,6 +11,7 @@
 #define MENUHANDLER_HPP_
 
 #include <vector>
+#include <map>
 #include <QString>
 #include <QIcon>
 #include <QList>
@@ -51,12 +52,14 @@ public:
     void setVisibleCondition(BaseNodeCondition *cond)  {visibleCondition_  = cond;};
     void setEnabledCondition(BaseNodeCondition *cond)  {enabledCondition_  = cond;};
     void setQuestionCondition(BaseNodeCondition *cond) {questionCondition_ = cond;};
+    void setCustom(bool b) {isCustom_ = b;};
     BaseNodeCondition *visibleCondition()  {return visibleCondition_;};
     BaseNodeCondition *enabledCondition()  {return enabledCondition_;};
     BaseNodeCondition *questionCondition() {return questionCondition_;};
     bool shouldAskQuestion(std::vector<VInfo_ptr> &nodes);
     bool isSubMenu()      {return isSubMenu_;};
     bool isDivider()      {return isDivider_;};
+    bool isCustom()       {return isCustom_;};
     std::string &name()   {return name_;};
     const std::string handler() const {return handler_;}
     bool isValidView(const std::string&) const;
@@ -94,6 +97,7 @@ private:
 
     bool isSubMenu_;
     bool isDivider_;
+    bool isCustom_;
 
     QIcon icon_;
 
@@ -152,12 +156,16 @@ public:
     static Menu *findMenu(const std::string &name);    
     static MenuItem* newItem(const std::string &name);
     static void addMenu(Menu *menu) {menus_.push_back(menu);};
+    static void interceptCommandsThatNeedConfirmation(MenuItem *item);
     static void refreshCustomMenuCommands();
 
 private:
+    typedef std::map<std::string, std::string> ConfirmationMap;
     static MenuItem* findItem(QAction*);
+    static ConfirmationMap &getCommandsThatRequireConfirmation();
 
     static std::vector<Menu *> menus_;
+    static ConfirmationMap commandsWhichRequireConfirmation_;
     //static std::vector<MenuItem> items_;
 
 };
diff --git a/Viewer/src/MessageLabel.cpp b/Viewer/src/MessageLabel.cpp
index 9ccac6e..873361a 100644
--- a/Viewer/src/MessageLabel.cpp
+++ b/Viewer/src/MessageLabel.cpp
@@ -1,4 +1,12 @@
-// Copyright 2014 ECMWF.
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
 
 #include "MessageLabel.hpp"
 
@@ -10,7 +18,7 @@
 #include <QVBoxLayout>
 
 #include "IconProvider.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <map>
 #include <assert.h>
@@ -55,11 +63,15 @@ MessageLabel::MessageLabel(QWidget *parent) :
 
 		bg=QColor(234,215,150);
 		bgLight=bg.lighter(112);
-		typeData[WarningType]=MessageLabelData(":/viewer/warning.svg","Warning",bg,bgLight,QColor(226,195,110)); //255,198,63
+        typeData[WarningType]=MessageLabelData(":/viewer/warning.svg","Warning",bg,bgLight,QColor(226,170,91)); //QColor(226,195,110)); //226,170,91
 
 		bg=QColor(255,231,231);
 		bgLight=bg.lighter(105);
 		typeData[ErrorType]=MessageLabelData(":/viewer/error.svg","Error",bg,bgLight,QColor(223,152,152));
+
+        bg=QColor(232,249,236);
+        bgLight=bg.lighter(105);
+        typeData[TipType]=MessageLabelData(":/viewer/tip.svg","Tip",bg,bgLight,QColor(190,220,190));
 	}
 
 	pixLabel_=new QLabel(this);
@@ -128,6 +140,11 @@ void MessageLabel::showError(QString msg)
 	showMessage(ErrorType,msg);
 }
 
+void MessageLabel::showTip(QString msg)
+{
+    showMessage(TipType,msg);
+}
+
 void MessageLabel::showMessage(const Type& type,QString msg)
 {
 	std::map<Type,MessageLabelData>::const_iterator it=typeData.find(type);
@@ -203,7 +220,7 @@ void MessageLabel::progress(QString text,int value)
     progBar_->setValue(value);
     progLabel_->setText(text);
 
-    //UserMessage::debug("MessageLabel::progress --> " + QString::number(value).toStdString() + "%");
+    //UiLog().dbg() << "MessageLabel::progress --> " << value << "%";
 }
 
 void MessageLabel::setShowTypeTitle(bool b)
diff --git a/Viewer/src/MessageLabel.hpp b/Viewer/src/MessageLabel.hpp
index 4f83e0b..878eabf 100644
--- a/Viewer/src/MessageLabel.hpp
+++ b/Viewer/src/MessageLabel.hpp
@@ -1,4 +1,12 @@
-// Copyright 2014 ECMWF.
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
 
 #ifndef MESSAGELABEL_HPP_
 #define MESSAGELABEL_HPP_
@@ -14,11 +22,12 @@ class MessageLabel : public QWidget
 public:
 	explicit MessageLabel(QWidget *parent=0);
 
-	enum Type {NoType,InfoType,WarningType,ErrorType};
+    enum Type {NoType,InfoType,WarningType,ErrorType,TipType};
 
 	void showInfo(QString);
 	void showWarning(QString);
-	void showError(QString);
+    void showError(QString);
+    void showTip(QString);
 	void startLoadLabel();
 	void stopLoadLabel();
     void startProgress(int max=0);
diff --git a/Viewer/src/NodeExpression.cpp b/Viewer/src/NodeExpression.cpp
index d632d57..a547f64 100644
--- a/Viewer/src/NodeExpression.cpp
+++ b/Viewer/src/NodeExpression.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -18,16 +18,13 @@
 
 #include "NodeExpression.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "VNode.hpp"
 
-#include <QDebug>
-
 //#define _UI_NODEXPRESSIONPARSEER_DEBUG
 
-
 // -------------------------
 // Expression parser classes
 // -------------------------
@@ -35,16 +32,6 @@
 NodeExpressionParser* NodeExpressionParser::instance_=NULL;
 
 
-#if 0
-std::vector<std::string> NodeExpressionParser::tokens_;
-std::vector<std::string>::const_iterator NodeExpressionParser::i_;
-
-std::map<std::string,NodeExpressionParser::NodeType>  NodeExpressionParser::nameToNodeType_;
-std::map<NodeExpressionParser::NodeType,std::string>  NodeExpressionParser::nodeTypeToName_;
-std::map<std::string,NodeExpressionParser::AttributeType> NodeExpressionParser::nameToAttrType_;
-std::map<NodeExpressionParser::AttributeType,std::string> NodeExpressionParser::attrTypeToName_;
-#endif
-
 NodeExpressionParser* NodeExpressionParser::instance()
 {
     if(!instance_)
@@ -67,23 +54,14 @@ NodeExpressionParser::NodeExpressionParser()
         nodeTypeToName_[it->second]=it->first;
     }
 
-    nameToAttrType_["attribute"]=ATTRIBUTE;
-    nameToAttrType_["meter"]=METER;
-    nameToAttrType_["event"]=EVENT;
-    nameToAttrType_["repeat"]=REPEAT;
-    nameToAttrType_["trigger"]=TRIGGER;
-    nameToAttrType_["label"]=LABEL;
-    nameToAttrType_["time"]=TIME;
-    nameToAttrType_["date"]=DATE;
-    nameToAttrType_["late"]=LATE;
-    nameToAttrType_["limit"]=LIMIT;
-    nameToAttrType_["limiter"]=LIMITER;
-    nameToAttrType_["var"]=VAR;
-    nameToAttrType_["genvar"]=GENVAR;
-
-    for(std::map<std::string,AttributeType>::const_iterator it=nameToAttrType_.begin();  it != nameToAttrType_.end(); ++it)
+    QStringList attrNames;
+    attrNames << "meter" << "event" << "repeat" << "trigger" << "label" << "time" << "date" << "late" << "limit" <<
+                 "limit" << "limiter" << "var" << "genvar";
+    Q_FOREACH(QString s,attrNames)
     {
-            attrTypeToName_[it->second]=it->first;
+        VAttributeType *t=VAttributeType::find(s.toStdString());
+        Q_ASSERT(t);
+        nameToAttrType_[s.toStdString()]=t;
     }
 
     badTypeStr_="BAD";
@@ -108,22 +86,13 @@ const std::string& NodeExpressionParser::typeName(const NodeType& type) const
     return badTypeStr_;
 }
 
-NodeExpressionParser::AttributeType NodeExpressionParser::toAttrType(const std::string &name) const
+VAttributeType* NodeExpressionParser::toAttrType(const std::string &name) const
 {
-    std::map<std::string,AttributeType>::const_iterator it=nameToAttrType_.find(name);
+    std::map<std::string,VAttributeType*>::const_iterator it=nameToAttrType_.find(name);
     if(it != nameToAttrType_.end())
         return it->second;
 
-    return BADATTRIBUTE;
-}
-
-const std::string& NodeExpressionParser::toAttrName(const AttributeType& type) const
-{
-    std::map<AttributeType,std::string>::const_iterator it=attrTypeToName_.find(type);
-    if(it != attrTypeToName_.end())
-        return it->second;
-
-    return badAttributeStr_;
+    return NULL;
 }
 
 bool NodeExpressionParser::isUserLevel(const std::string &str) const
@@ -145,7 +114,7 @@ bool NodeExpressionParser::isNodeHasAttribute(const std::string &str) const
 bool NodeExpressionParser::isNodeFlag(const std::string &str) const
 {
     if (str == "is_late" || str == "has_message" ||
-    	str == "is_rerun" || str == "is_waiting" || str == "is_zombie")
+        str == "is_rerun" || str == "is_waiting" || str == "is_zombie" || str == "is_migrated")
         return true;
 
     return false;
@@ -162,7 +131,15 @@ bool NodeExpressionParser::isWhatToSearchIn(const std::string &str, bool &isAttr
     }
 
     // list of attributes that we can search in
-    else if (str == "label_name" || str == "label_value")
+    else if (str == "var_name" || str =="var_value" || str =="var_type" ||
+        str == "label_name" || str == "label_value" ||
+        str == "meter_name" ||  str == "meter_value" ||
+        str == "event_name" || str == "event_value" ||
+        str == "date_name" || str == "time_name" ||
+        str == "limit_name" || str == "limit_value" || str == "limit_max" ||
+        str == "limiter_name" ||
+        str == "repeat_name" || str == "repeat_value" ||
+        str == "trigger_expression" )
     {
         isAttr = true;
         return true;
@@ -171,10 +148,6 @@ bool NodeExpressionParser::isWhatToSearchIn(const std::string &str, bool &isAttr
     return false;
 }
 
-bool NodeExpressionParser::isAttribute(const std::string &str) const
-{
-    return (nameToAttrType_.find(str) != nameToAttrType_.end());
-}
 
 bool NodeExpressionParser::isAttributeState(const std::string &str) const
 {
@@ -201,15 +174,16 @@ std::vector<BaseNodeCondition *> NodeExpressionParser::popLastNOperands(std::vec
 
 
 
-BaseNodeCondition *NodeExpressionParser::parseWholeExpression(std::string expr, bool caseSensitiveStringMatch)
-{
+BaseNodeCondition *NodeExpressionParser::parseWholeExpression(const std::string& exprIn, bool caseSensitiveStringMatch)
+{       
+    std::string expr=exprIn;
+
     std::vector<std::string> tokens;
     char delimiter = ' ';
     char insideQuote = '\0';  // \0 if not inside a quote, \' if we are inside a quote
                               // will not handle the case of nested quotes!
 
-    UserMessage::message(UserMessage::DBG, false, std::string("parseWholeExpression:    ") + expr);
-
+    UiLog().dbg() << "parseWholeExpression:    " << expr;
 
     ecf::Str::replace_all(expr, std::string("("), std::string(" ( "));
     ecf::Str::replace_all(expr, std::string(")"), std::string(" ) "));
@@ -220,7 +194,6 @@ BaseNodeCondition *NodeExpressionParser::parseWholeExpression(std::string expr,
     int    length = expr.length();
     std::string token  = "";
 
-
     // loop through each character in the string
 
     while (index < length)
@@ -293,7 +266,8 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
             else
             {
                 bool attr = false;
-                NodeExpressionParser::AttributeType attrType=NodeExpressionParser::BADATTRIBUTE;
+                VAttributeType* attrType=NULL;
+                //NodeExpressionParser::AttributeType attrType=NodeExpressionParser::BADATTRIBUTE;
 
                 // node types
                 NodeExpressionParser::NodeType type = nodeType(*i_);
@@ -323,7 +297,7 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
                     updatedOperands = true;
                 }
 
-                // node attribute
+                // node has attribute
                 else if (isNodeHasAttribute(*i_))
                 {
                     NodeAttributeCondition *attrCond = new NodeAttributeCondition(QString::fromStdString(*i_));
@@ -340,8 +314,9 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
                     updatedOperands = true;
                 }
 
-                // node attribute
-                else if ((attrType = toAttrType(*i_)) != NodeExpressionParser::BADATTRIBUTE)
+                // node attribute type
+                //else if ((attrType = toAttrType(*i_)) != NodeExpressionParser::BADATTRIBUTE)
+                else if ((attrType = toAttrType(*i_)) != NULL)
                 {
                     AttributeCondition *attrCond = new AttributeCondition(attrType);
                     operandStack.push_back(attrCond);
@@ -366,6 +341,14 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
                     updatedOperands = true;
                 }
 
+                else if (*i_ == "marked")
+                {
+                    UIStateCondition *uiCond = new UIStateCondition(*i_);
+                    operandStack.push_back(uiCond);
+                    result = uiCond;
+                    updatedOperands = true;
+                }
+
                 // logical operators
                 else if (*i_ == "and")
                 {
@@ -441,7 +424,7 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
         }
         else
         {
-            UserMessage::message(UserMessage::ERROR, false, std::string("Error parsing expression " + *i_));
+            UiLog().err() << "Error parsing expression " << *i_;
             result = new FalseNodeCondition();
             return result;
         }
@@ -466,7 +449,7 @@ BaseNodeCondition *NodeExpressionParser::parseExpression(bool caseSensitiveStrin
     }
 
 
-    UserMessage::message(UserMessage::DBG, false, std::string("    ") + result->print());
+    UiLog().dbg() << "    " <<  result->print();
 
     return result;
 }
@@ -525,8 +508,8 @@ bool AndNodeCondition::execute(VItem* node)
 bool OrNodeCondition::execute(VItem* node)
 {
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-    UserMessage::debug("OrNodeCondition::execute --->");
-    qDebug() <<  operands_[0]->execute(node) << operands_[1]->execute(node);
+    UiLog().dbg() << "OrNodeCondition::execute --->";
+    UiLog().dbg() <<  operands_[0]->execute(node) << " "  << operands_[1]->execute(node);
 #endif
     return operands_[0]->execute(node) || operands_[1]->execute(node);
 }
@@ -559,39 +542,39 @@ bool TypeNodeCondition::execute(VItem* item)
     else if(item->isNode())
     {
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-        UserMessage::debug("TypeNodeCondition::execute --> " + NodeExpressionParser::instance()->typeName(type_));
+        UiLog().dbg() << "TypeNodeCondition::execute --> " << NodeExpressionParser::instance()->typeName(type_);
+        UiLog().dbg() << item->isNode() << " " << item->isSuite() << " " << item->isFamily() <<
+                         " " << item->isTask() << " " << item->isAlias();
 #endif
-        //qDebug() << item->isNode() << item->isSuite() << item->isFamily() << item->isTask() << item->isAlias();
-
         switch(type_)
         {
         case NodeExpressionParser::NODE:
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-            UserMessage::debug("   NODE");
+            UiLog().dbg() << "   NODE";
 #endif
             return true;
             break;
         case NodeExpressionParser::SUITE:
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-            UserMessage::debug("   SUITE");
+            UiLog().dbg() << "   SUITE";
 #endif
             return (item->isSuite() != NULL);
             break;
         case NodeExpressionParser::TASK:
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-            UserMessage::debug("   TASK");
+            UiLog().dbg() << "   TASK";
 #endif
             return (item->isTask() != NULL);
             break;
         case NodeExpressionParser::FAMILY:
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-            UserMessage::debug("   FAMILY");
+            UiLog().dbg() << "   FAMILY";
 #endif
             return (item->isFamily() != NULL);
             break;
         case NodeExpressionParser::ALIAS:
 #ifdef _UI_NODEXPRESSIONPARSEER_DEBUG
-            UserMessage::debug("   ALIAS");
+            UiLog().dbg() << "   ALIAS";
 #endif
             return (item->isAlias() != NULL);
             break;
@@ -643,6 +626,23 @@ bool UserLevelCondition::execute(VItem*)
 
 //=========================================================================
 //
+//  UIStateCondition
+//
+//=========================================================================
+
+bool UIStateCondition::execute(VItem*)
+{
+    if (uiStateName_ == "marked")
+    {
+        return !(VNode::nodeMarkedForMoveServerAlias().empty());
+    }
+
+    return false;
+}
+
+
+//=========================================================================
+//
 //  String match utility functions
 //
 //=========================================================================
@@ -695,14 +695,12 @@ StringMatchCondition::StringMatchCondition(StringMatchMode::Mode matchMode, bool
             matcher_ = new StringMatchRegexp(caseSensitive);
             break;
         default:
-            UserMessage::message(UserMessage::ERROR, false, "StringMatchCondition: bad matchMode");
+            UiLog().dbg() << "StringMatchCondition: bad matchMode";
             matcher_ = new StringMatchExact(caseSensitive);
             break;
     }
 }
 
-
-
 bool StringMatchCondition::execute(VItem *item)
 {
     WhatToSearchForOperand *searchForOperand = static_cast<WhatToSearchForOperand*> (operands_[0]);
@@ -724,6 +722,14 @@ bool StringMatchCondition::execute(VItem *item)
             return matcher_->match(searchForOperand->what(), n->absNodePath());
         }
     }
+    else if(VAttribute* a=item->isAttribute())
+    {
+        std::string str;
+        if(a->value(searchIn,str))
+            return matcher_->match(searchForOperand->what(),str);
+        else
+            return false;
+    }
 
     return false;
 }
@@ -798,7 +804,10 @@ bool NodeFlagCondition::execute(VItem* item)
 			return false;
 		}
 		else if(nodeFlagName_ == "is_waiting")
-			return vnode->isFlagSet(ecf::Flag::WAIT);
+            return vnode->isFlagSet(ecf::Flag::WAIT);
+
+        else if(nodeFlagName_ == "is_migrated")
+            return vnode->isFlagSet(ecf::Flag::MIGRATED);
 
 	}
 
@@ -830,27 +839,9 @@ bool AttributeCondition::execute(VItem* item)
     if(!a)
         return false;
 
-    assert(a->type());
-
-    switch(type_)
-    {
-        case NodeExpressionParser::ATTRIBUTE:
-            return true;
-        case NodeExpressionParser::LABEL:
-            return a->type()->name() == "label";
-        case NodeExpressionParser::METER:
-            return a->type()->name() == "meter";
-        case NodeExpressionParser::EVENT:
-            return a->type()->name() == "event";
-        case NodeExpressionParser::LIMIT:
-            return a->type()->name() == "limit";
-        case NodeExpressionParser::REPEAT:
-            return a->type()->name() == "repeat";
-        default:
-            break;
-    }
+    Q_ASSERT(a->type());
 
-    return false;
+    return a->type() == type_;
 }
 
 //====================================================
diff --git a/Viewer/src/NodeExpression.hpp b/Viewer/src/NodeExpression.hpp
index 5379d87..b866af2 100644
--- a/Viewer/src/NodeExpression.hpp
+++ b/Viewer/src/NodeExpression.hpp
@@ -17,8 +17,10 @@
 #include "VNState.hpp"
 #include "VSState.hpp"
 #include "StringMatchMode.hpp"
+#include "VAttribute.hpp"
 
 class VItem;
+class VAttributeType;
 
 // ----------------------
 // Node condition classes
@@ -36,12 +38,13 @@ public:
 
     static NodeExpressionParser* instance();
 
-    BaseNodeCondition *parseWholeExpression(std::string, bool caseSensitiveStringMatch=true);
+    BaseNodeCondition *parseWholeExpression(const std::string&, bool caseSensitiveStringMatch=true);
 
     NodeType  nodeType(const std::string &name) const;
     const std::string& typeName(const NodeType&) const;
-    AttributeType toAttrType(const std::string &name) const;
-    const std::string& toAttrName(const AttributeType&) const;
+    VAttributeType* toAttrType(const std::string &name) const;
+    //AttributeType toAttrType(const std::string &name) const;
+    //const std::string& toAttrName(const AttributeType&) const;
 
 protected:
     NodeExpressionParser();
@@ -50,7 +53,9 @@ protected:
     bool isNodeHasAttribute(const std::string &str) const;
     bool isNodeFlag(const std::string &str) const;
     bool isWhatToSearchIn(const std::string &str, bool &isAttribute) const;
+#if 0
     bool isAttribute(const std::string &str) const;
+#endif
     bool isAttributeState(const std::string &str) const;
 
     BaseNodeCondition *parseExpression(bool caseSensitiveStringMatch);
@@ -62,14 +67,15 @@ protected:
     std::vector<std::string>::const_iterator i_;
     std::map<std::string,NodeType> nameToNodeType_;
     std::map<NodeType,std::string> nodeTypeToName_;
-    std::map<std::string,AttributeType> nameToAttrType_;
-    std::map<AttributeType,std::string> attrTypeToName_;
+
+    std::map<std::string,VAttributeType*> nameToAttrType_;
+
+    //std::map<std::string,AttributeType> nameToAttrType_;
+    //std::map<AttributeType,std::string> attrTypeToName_;
     std::string badTypeStr_;
     std::string badAttributeStr_;
 };
 
-
-
 // -----------------------------------------------------------------
 // BaseNodeCondition
 // The parent class for all node conditions.
@@ -305,6 +311,26 @@ private:
 
 // -----------------------------------------------------------------
 
+// --------------------
+// UI state condition
+// --------------------
+
+class UIStateCondition : public BaseNodeCondition
+{
+public:
+    explicit UIStateCondition(std::string uiStateName) {uiStateName_ = uiStateName;}
+    ~UIStateCondition() {}
+
+    bool execute(VItem*);
+    std::string print() {return uiStateName_;}
+
+private:
+    std::string uiStateName_;
+};
+
+
+// -----------------------------------------------------------------
+
 // ------------------------
 // Node attribute condition
 // ------------------------
@@ -389,14 +415,17 @@ private:
 class AttributeCondition : public BaseNodeCondition
 {
 public:
-    explicit AttributeCondition(NodeExpressionParser::AttributeType type) {type_ = type;}
+    //explicit AttributeCondition(NodeExpressionParser::AttributeType type) {type_ = type;}
+    explicit AttributeCondition(VAttributeType* type) : type_(type) {}
     ~AttributeCondition() {}
 
     bool execute(VItem*);
-    std::string print() {return NodeExpressionParser::instance()->toAttrName(type_);}
+    //std::string print() {return NodeExpressionParser::instance()->toAttrName(type_);}
+    std::string print() {return ""; /*type_->strName();*/}
 
 private:
-    NodeExpressionParser::AttributeType type_;
+    //NodeExpressionParser::AttributeType type_;
+    VAttributeType *type_;
 };
 
 //---------------------------------
diff --git a/Viewer/src/NodeFilterDialog.cpp b/Viewer/src/NodeFilterDialog.cpp
index 74029d4..9813a85 100644
--- a/Viewer/src/NodeFilterDialog.cpp
+++ b/Viewer/src/NodeFilterDialog.cpp
@@ -22,6 +22,7 @@ NodeFilterDialog::NodeFilterDialog(QWidget *parent) :
     setupUi(this);
 
     //setAttribute(Qt::WA_DeleteOnClose);
+    editor_->setFilterMode(true);
 
 	QString wt=windowTitle();
 	wt+="  -  " + QString::fromStdString(VConfig::instance()->appLongName());
@@ -33,8 +34,7 @@ NodeFilterDialog::NodeFilterDialog(QWidget *parent) :
     connect(cancelPb_,SIGNAL(clicked()),
     		this,SLOT(reject()));
 
-    editor_->setQueryTeCanExpand(true);
-
+    leftVb_->addStretch(1);
 
     //Read the qt settings
     readSettings();
@@ -94,7 +94,6 @@ void NodeFilterDialog::writeSettings()
 
 	settings.beginGroup("main");
 	settings.setValue("size",size());
-	//settings.setValue("current",list_->currentRow());
 	settings.endGroup();
 }
 
@@ -112,15 +111,9 @@ void NodeFilterDialog::readSettings()
 	}
 	else
 	{
-	  	resize(QSize(550,540));
+        resize(QSize(590,460));
 	}
 
-	/*if(settings.contains("current"))
-	{
-		int current=settings.value("current").toInt();
-		if(current >=0)
-			list_->setCurrentRow(current);
-	}*/
 	settings.endGroup();
 }
 
diff --git a/Viewer/src/NodeFilterDialog.ui b/Viewer/src/NodeFilterDialog.ui
index 220fa8e..e4381bd 100644
--- a/Viewer/src/NodeFilterDialog.ui
+++ b/Viewer/src/NodeFilterDialog.ui
@@ -15,7 +15,11 @@
   </property>
   <layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0">
    <item>
-    <widget class="NodeQueryEditor" name="editor_" native="true"/>
+    <layout class="QVBoxLayout" name="leftVb_">
+     <item>
+      <widget class="NodeQueryEditor" name="editor_" native="true"/>
+     </item>
+    </layout>
    </item>
    <item>
     <layout class="QVBoxLayout" name="verticalLayout">
@@ -25,7 +29,7 @@
         <string>Apply</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/submit.svg</normaloff>:/viewer/submit.svg</iconset>
        </property>
       </widget>
@@ -62,8 +66,6 @@
    <container>1</container>
   </customwidget>
  </customwidgets>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/NodePanel.cpp b/Viewer/src/NodePanel.cpp
index d631686..b7ff8e0 100644
--- a/Viewer/src/NodePanel.cpp
+++ b/Viewer/src/NodePanel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,20 +10,29 @@
 #include "NodePanel.hpp"
 
 #include "Dashboard.hpp"
+#include "DashboardTitle.hpp"
 #include "InfoPanel.hpp"
 #include "ServerHandler.hpp"
 #include "VSettings.hpp"
 
+#include <QDebug>
+#include <QResizeEvent>
+
 NodePanel::NodePanel(QWidget* parent) :
   TabWidget(parent)
 
 {
-	connect(this,SIGNAL(currentIndexChanged(int)),
+    setObjectName("p");
+
+    connect(this,SIGNAL(currentIndexChanged(int)),
 		    this,SLOT(slotCurrentWidgetChanged(int)));
 
 	connect(this,SIGNAL(newTabRequested()),
 		    this,SLOT(slotNewTab()));
 
+    connect(this,SIGNAL(tabRemoved()),
+            this,SLOT(slotTabRemoved()));
+
 }
 
 NodePanel::~NodePanel()
@@ -40,22 +49,26 @@ Dashboard *NodePanel::addWidget(QString id)
 {
   	Dashboard  *nw=new Dashboard("",this);
 
-  	QString name("node");
+    QString name("");
   	QPixmap pix;
 
 	addTab(nw,pix,name);
 
-
 	connect(nw,SIGNAL(selectionChanged(VInfo_ptr)),
 			this,SIGNAL(selectionChanged(VInfo_ptr)));
 
-	connect(nw,SIGNAL(titleChanged(QWidget*,QString,QPixmap)),
-				this,SLOT(slotTabTitle(QWidget*,QString,QPixmap)));
+    connect(nw->titleHandler(),SIGNAL(changed(DashboardTitle*)),
+                this,SLOT(slotTabTitle(DashboardTitle*)));
 
 	connect(nw,SIGNAL(contentsChanged()),
 			this,SIGNAL(contentsChanged()));
 
-	return nw;
+    adjustTabTitle();
+
+    //init the title
+    slotTabTitle(nw->titleHandler());
+
+    return nw;
 }
 
 
@@ -104,7 +117,16 @@ Dashboard *NodePanel::currentDashboard()
 
 void NodePanel::slotCurrentWidgetChanged(int /*index*/)
 {
-  	Q_EMIT currentWidgetChanged();
+    for(int i=0; i < count(); i++)
+    {
+        if(QWidget *w=widget(i))
+        {
+            if(Dashboard* nw=static_cast<Dashboard*>(w))
+                nw->titleHandler()->setCurrent(i==currentIndex());
+        }
+     }
+
+    Q_EMIT currentWidgetChanged();
   	//setDefaults(this);
 }
 
@@ -188,16 +210,53 @@ void NodePanel::addSearchDialog()
 }
 
 
-void NodePanel::slotTabTitle(QWidget* w,QString text,QPixmap pix)
+void NodePanel::slotTabTitle(DashboardTitle* t)
 {
-	int index=indexOfWidget(w);
-	if(index != -1)
+    int index=indexOfWidget(t->dashboard());
+    if(index != -1)
 	{
-		setTabText(index,text);
-		setTabIcon(index,pix);
+        setTabText(index,t->title());
+        setTabIcon(index,t->pix());
+        setTabToolTip(index,t->tooltip());
+        setTabWht(index,t->desc());
+        setTabData(index,t->descPix());
 	}
 }
 
+void NodePanel::slotTabRemoved()
+{
+   adjustTabTitle();
+}
+
+int NodePanel::tabAreaWidth() const
+{
+    return width()-80;
+}
+
+void NodePanel::adjustTabTitle()
+{
+    if(count() > 1)
+    {       
+        int tabWidth=tabAreaWidth()/count();
+        if(tabWidth < 30)
+            tabWidth=30;
+
+        for(int i=0; i < count(); i++)
+        {
+            if(QWidget *w=widget(i))
+            {
+                if(Dashboard* nw=static_cast<Dashboard*>(w))
+                    nw->titleHandler()->setMaxPixWidth(tabWidth);
+            }
+        }
+    }
+}
+
+void NodePanel::resizeEvent(QResizeEvent *e)
+{
+    if(abs(e->oldSize().width()-width()) > 5)
+        adjustTabTitle();
+}
 
 /*void NodePanel::slotNewWindow(bool)
 {
diff --git a/Viewer/src/NodePanel.hpp b/Viewer/src/NodePanel.hpp
index 613ba24..a686af5 100644
--- a/Viewer/src/NodePanel.hpp
+++ b/Viewer/src/NodePanel.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -19,6 +19,7 @@
 #include <boost/property_tree/ptree.hpp>
 
 class Dashboard;
+class DashboardTitle;
 class ServerFilter;
 class VComboSettings;
 
@@ -54,13 +55,12 @@ public:
 
 public Q_SLOTS:
 	void slotCurrentWidgetChanged(int);
-	void slotSelection(VInfo_ptr);
+    void slotSelection(VInfo_ptr);
+    void slotNewTab();
 
-	//void slotIconCommand(QString,IconObjectH);
-	//void slotDesktopCommand(QString,QPoint);
-	void slotNewTab();
-	//void slotNewWindow(bool);
-	void slotTabTitle(QWidget* w,QString text,QPixmap pix);
+protected Q_SLOTS:
+    void slotTabRemoved();
+    void slotTabTitle(DashboardTitle* w);
 
 Q_SIGNALS:
 	void itemInfoChanged(QString);
@@ -69,7 +69,11 @@ Q_SIGNALS:
 	void contentsChanged();
 
 protected:
-	Dashboard* addWidget(QString);
+    void resizeEvent(QResizeEvent *e);
+    void adjustTabTitle();
+    int tabAreaWidth() const;
+
+    Dashboard* addWidget(QString);
 	void tabBarCommand(QString, int);
 	Dashboard* nodeWidget(int index);
 	static std::string tabSettingsId(int i);
diff --git a/Viewer/src/NodePathWidget.cpp b/Viewer/src/NodePathWidget.cpp
index c4bf5a8..34f12e4 100644
--- a/Viewer/src/NodePathWidget.cpp
+++ b/Viewer/src/NodePathWidget.cpp
@@ -24,7 +24,7 @@
 #include "VProperty.hpp"
 #include "PropertyMapper.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VNState.hpp"
 #include "VSState.hpp"
 #include "VSettings.hpp"
@@ -34,28 +34,31 @@ static std::vector<std::string> propVec;
 QColor NodePathItem::disabledBgCol_;
 QColor NodePathItem::disabledBorderCol_;
 QColor NodePathItem::disabledFontCol_;
+int NodePathItem::triLen_=10;
+int NodePathItem::height_=0;
+int NodePathItem::hPadding_=2;
+int NodePathItem::vPadding_=1;
 
 //#define _UI_NODEPATHWIDGET_DEBUG
 
 BcWidget::BcWidget(QWidget* parent) : 
     QWidget(parent),
-    hPadding_(2),
-    vPadding_(1),
 	hMargin_(1),
-	vMargin_(1),
-    triLen_(10),
+	vMargin_(1),    
 	gap_(5),
     width_(0),
+    maxWidth_(0),
     itemHeight_(0),
     emptyText_("No selection"),
     useGrad_(true),
     gradLighter_(150),
-    hovered_(-1)
+    hovered_(-1),
+    elided_(false)
 {
     font_=QFont();
     QFontMetrics fm(font_);
 
-    itemHeight_=fm.height()+2*vPadding_;
+    itemHeight_=NodePathItem::height();
     height_=itemHeight_+2*vMargin_;
     
     setMouseTracking(true);
@@ -74,12 +77,16 @@ BcWidget::BcWidget(QWidget* parent) :
     setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Minimum);
     setMinimumSize(width_,height_);
 
-    reset(items_);
+    ellipsisItem_ = new NodePathEllipsisItem();
+    ellipsisItem_->visible_=false;
+
+    reset(items_,100);
 }
 
 BcWidget::~BcWidget()
 {
     delete prop_;
+    delete ellipsisItem_;
 }    
 
 
@@ -90,28 +97,26 @@ void BcWidget::notifyChange(VProperty *p)
     
 void BcWidget::updateSettings()
 {
-    //if(VProperty *p=prop_->find("view.common.node_style"))
-    //    node_style=p->value().toString()';
     if(VProperty *p=prop_->find("view.common.node_gradient"))
         useGrad_=p->value().toBool();
 }    
 
+bool BcWidget::isFull() const
+{
+    return !elided_ && !ellipsisItem_->visible_;
+}
+
 void BcWidget::clear()
 {
     items_.clear();
-    reset(items_);
+    reset(items_,100);
 }
 
 void BcWidget::resetBorder(int idx)
 {
     if(idx >=0 && idx < items_.count())
     {
-        QColor bgCol=items_.at(idx)->bgCol_;
-        if(idx != hovered_)
-            items_.at(idx)->borderCol_=bgCol.darker(125);
-        else
-            items_.at(idx)->borderCol_=bgCol.darker(240);
-
+        items_.at(idx)->resetBorder(idx == hovered_);
         updatePixmap(idx);
         update();
     }
@@ -120,22 +125,12 @@ void BcWidget::resetBorder(int idx)
 void BcWidget::reset(int idx,QString text,QColor bgCol,QColor fontCol)
 {
     if(idx >=0 && idx < items_.count())
-    {
+    {                
         bool newText=(text != items_.at(idx)->text_);
-        
-        if(newText)
-            items_.at(idx)->text_=text;
-        
-        items_.at(idx)->bgCol_=bgCol;
-        items_.at(idx)->fontCol_=fontCol;
-
-        if(idx != hovered_)
-            items_.at(idx)->borderCol_=bgCol.darker(125);
-        else
-            items_.at(idx)->borderCol_=bgCol.darker(240);
+        items_[idx]->reset(text,bgCol,fontCol,idx == hovered_);
 
         if(newText)
-           reset(items_);
+           reset(items_,maxWidth_);
         else
         {
             updatePixmap(idx); 
@@ -144,67 +139,223 @@ void BcWidget::reset(int idx,QString text,QColor bgCol,QColor fontCol)
     }
 }    
     
-void BcWidget::reset(QList<NodePathItem*> items)
+void BcWidget::reset(QList<NodePathItem*> items, int maxWidth)
 {
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+    UiLog().dbg() << "BcWidget::reset -->";
+    qDebug()  << "   maxWidth" << maxWidth;
+#endif
+
+    maxWidth_=maxWidth;
     items_=items;
     hovered_=-1;
+    ellipsisItem_->visible_=false;
+    elided_=false;
 
     QFontMetrics fm(font_);
     int xp=hMargin_;
     int yp=vMargin_;
 
-    for(int i=0; i < items_.count(); i++)
+    if(items_.count() ==0)
     {
-        int len=fm.width(items_.at(i)->text_);
-        
-        QRect textRect;
-        items_.at(i)->borderCol_=items_.at(i)->bgCol_.darker(125);
-                
-        QVector<QPoint> vec;
-        QVector<QPoint> menuVec;
-        if(i ==0)
+        int len=fm.width(emptyText_);
+        emptyRect_=QRect(xp,yp,len,itemHeight_);
+        width_=xp+len+4;
+    }
+    else
+    {
+        //
+        // xp is the top right corner of the shape (so it is not the rightmost edge)
+        //
+        // server shape:
+        //
+        //  ********
+        //  *        *
+        //  ********
+        //
+        // other shape:
+        //
+        //  ********
+        //    *      *
+        //  ********
+        //
+
+        NodePathItem *lastItem=items_[items_.count()-1];
+        Q_ASSERT(lastItem);
+        int maxRedTextLen=0;
+
+        //Defines the shapes and positions for all the items
+        for(int i=0; i < items_.count(); i++)
         {
-            textRect=QRect(xp+hPadding_,yp,len,itemHeight_);
-            
-            vec << QPoint(xp,yp);            
-            vec << QPoint(xp+len,yp);
-            vec << QPoint(xp+len+triLen_,yp+itemHeight_/2);
-            vec << QPoint(xp+len,yp+itemHeight_);
-            vec << QPoint(xp,yp+itemHeight_);
-            
-            xp+=len+triLen_+gap_;
+            xp=items_[i]->adjust(xp,yp);
+           
+            if(i != items_.count()-1)
+            {
+                xp+=gap_;
+                int tl=items_[i]->textLen();
+                if(tl > maxRedTextLen)
+                    maxRedTextLen=tl;
+            }
         }
-        else
+
+        //The total width
+        width_=xp+NodePathItem::triLen_+hMargin_;
+
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+        qDebug() << "   full width" << width_;
+#endif
+
+        //maxWidth-=2*hMargin_;
+
+        //If the total width is too big we try to use elidedtext in the items
+        //(with the execption of the last item)
+        int redTextLen=0;
+        if(width_ > maxWidth)
         {
-            textRect=QRect(xp+hPadding_,yp,len,itemHeight_);
-            
-            vec << QPoint(xp-triLen_,yp);            
-            vec << QPoint(xp+len,yp);
-            vec << QPoint(xp+len+triLen_,yp+itemHeight_/2);
-            vec << QPoint(xp+len,yp+itemHeight_);
-            vec << QPoint(xp-triLen_,yp+itemHeight_);
-            vec << QPoint(xp,yp+itemHeight_/2);
-            
-            xp+=len+triLen_+gap_;
-        } 
-        
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+            qDebug() << "   try elided text";
+#endif
+            //Try different elided text lenghts
+            for(int i=20; i >= 3; i--)
+            {
+                QString t;
+                for(int j=0; j < i; j++)
+                {
+                    t+="A";
+                }
+                t+="...";
+
+                //We only check the elided texts that are shorter then the max text len
+                redTextLen=fm.width(t);
+                if(redTextLen < maxRedTextLen)
+                {
+                    //Estimate the total size with the elided text items
+                    xp=hMargin_;
+                    int estWidth=estimateWidth(0,xp,redTextLen);
+
+                    //if the size fits into maxWidth we adjust all the items
+                    if(estWidth < maxWidth)
+                    {
+                        int xp=hMargin_;
+                        width_ = adjustItems(0,xp,yp,redTextLen);
+                        elided_=true;
+
+                        Q_ASSERT(width_== estWidth);
+                        Q_ASSERT(width_ <  maxWidth);
+                        break; //This breaks the whole for loop
+                    }
+                }
+            }
+        }
 
-       // if(i < items_.count()-1)
-       // 	xp+=1;
+        //If the total width is still too big we start hiding items from the left
+        //and insert an ellipsis item to the front.
+        int xpAfterEllipsis=0;
+        if(width_ > maxWidth)
+        {
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+            qDebug() << "   insert ellipsis to front + remove items";
+            qDebug() << "     redTextLen=" << redTextLen;
+#endif
+            Q_ASSERT(elided_==false);
+
+            //width_=maxWidth;
+
+            xp=hMargin_;
+            ellipsisItem_->visible_=true;
+            ellipsisItem_->adjust(xp,yp);
+            xp=ellipsisItem_->estimateRightPos(xp);
+            xpAfterEllipsis=xp+gap_;
+            bool fitOk=false;
+            int estWidth=0;
+            for(int i=0; i < items_.count()-1; i++)
+            {
+                xp=xpAfterEllipsis;
+                items_[i]->visible_=false;
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+                qDebug() << "     omit item" << i;          
+#endif
+                estWidth=estimateWidth(i+1,xp,redTextLen);
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+                qDebug() << "     estWidth" << estWidth;          
+#endif                
+                if(estWidth  < maxWidth)
+                {
+                    fitOk=true;
+                    break;
+                }
+            }
 
-        items_.at(i)->shape_=QPolygon(vec);
-        items_.at(i)->textRect_=textRect;
+            if(fitOk)
+            {                
+                xp=xpAfterEllipsis;
+                width_=adjustVisibleItems(0,xp,yp,redTextLen);
+                Q_ASSERT(width_ == estWidth);
+                Q_ASSERT(width_ < maxWidth);
+            }
+            else
+            {
+                xp=xpAfterEllipsis;           
+                xp=lastItem->estimateRightPos(xp);
+                estWidth=xp+NodePathItem::triLen_+hMargin_;
+                if(estWidth < maxWidth)
+                {
+                    xp=xpAfterEllipsis;
+                    xp=lastItem->adjust(xp,yp);
+                    width_=xp+NodePathItem::triLen_+hMargin_;
+                    Q_ASSERT(width_ == estWidth);
+                    Q_ASSERT(width_ < maxWidth);
+                }
+
+            }
+        }
+
+        //If the total width is still too big we try to use elidedtext in the last item
+        //(at this point all the other items are hidden)
+        if(width_ > maxWidth)
+        {
+            int len=lastItem->textLen();
+
+            //Try different elided text lenghts
+            for(int i=30; i >= 3; i--)
+            {
+                QString t;
+                for(int j=0; j < i; j++)
+                {
+                    t+="A";
+                }
+                t+="...";
+
+                //We only check the elided texts that are shorter then the max text len
+                redTextLen=fm.width(t);
+                if(redTextLen < len)
+                {
+                    //Estimate the total size with the elided text item
+                    xp=xpAfterEllipsis;
+                    xp=lastItem->estimateRightPos(xp,redTextLen);
+                    int estWidth=xp+NodePathItem::triLen_+hMargin_;
+                    if(estWidth < maxWidth)
+                    {
+                        xp=xpAfterEllipsis;
+                        xp=lastItem->adjust(xp,yp,redTextLen);
+                        width_=xp+NodePathItem::triLen_+hMargin_;
+                        Q_ASSERT(width_ == estWidth);
+                        Q_ASSERT(width_ < maxWidth);
+                        break;
+                    }
+                }
+            }
+        }
+
+        //If the total width is still too big we also hide the last item and
+        //only show the ellipsis item
+        if(width_ > maxWidth)
+        {
+            lastItem->visible_=false;
+            width_=maxWidth;
+        }
     }
 
-    width_=xp+hMargin_;
-    
-    if(items_.count() ==0)
-    {
-        int len=fm.width(emptyText_);
-        emptyRect_=QRect(xp+hPadding_,yp,len,itemHeight_);
-        width_=xp+len+4;
-    }    
-    
     crePixmap();
     
     resize(width_,height_);
@@ -212,18 +363,81 @@ void BcWidget::reset(QList<NodePathItem*> items)
     update();
 }  
 
+int BcWidget::estimateWidth(int startIndex,int xp,int redTextLen)
+{
+    for(int i=startIndex; i < items_.count(); i++)
+    {
+        if(i != items_.count()-1)
+        {
+            xp=items_[i]->estimateRightPos(xp,redTextLen);
+            xp+=gap_;
+        }
+        else
+            xp=items_[i]->estimateRightPos(xp);
+    }
+
+    return xp+NodePathItem::triLen_+hMargin_;
+}
+
+int BcWidget::adjustItems(int startIndex,int xp,int yp,int redTextLen)
+{
+    for(int i=startIndex; i < items_.count(); i++)
+    {
+        if(i != items_.count()-1)
+        {
+            xp=items_[i]->adjust(xp,yp,redTextLen);
+            xp+=gap_;
+        }
+        else
+            xp=items_[i]->adjust(xp,yp);
+    }
+
+    return xp+NodePathItem::triLen_+hMargin_;
+}
+
+int BcWidget::adjustVisibleItems(int startIndex,int xp,int yp,int redTextLen)
+{
+    for(int i=startIndex; i < items_.count(); i++)
+    {
+        if(items_[i]->visible_)
+        {
+            if(i != items_.count()-1)
+            {
+                xp=items_[i]->adjust(xp,yp,redTextLen);
+                xp+=gap_;
+            }
+            else
+                xp=items_[i]->adjust(xp,yp);
+        }
+    }
+    return xp+NodePathItem::triLen_+hMargin_;
+}
+
+void BcWidget::adjustSize(int maxWidth)
+{
+    if(isFull())
+    {
+        if(width_ > maxWidth)
+           reset(items_,maxWidth);
+    }
+    else
+    {
+        reset(items_,maxWidth);
+    }
+}
 
 void BcWidget::crePixmap()
 {        
     pix_=QPixmap(width_,height_);
     pix_.fill(Qt::transparent);
-    
+
     QPainter painter(&pix_);
     painter.setRenderHints(QPainter::Antialiasing,true);
     
     if(items_.count() == 0)
     {
         painter.setPen(Qt::black);
+        //qDebug() << "crePixmap" << emptyRect_ << emptyText_;
         painter.drawText(emptyRect_,Qt::AlignHCenter | Qt::AlignVCenter, emptyText_);
     }
     else
@@ -233,6 +447,12 @@ void BcWidget::crePixmap()
             items_.at(i)->enabled_=isEnabled();
             items_.at(i)->draw(&painter,useGrad_,gradLighter_);
         }
+    } 
+    
+    if(ellipsisItem_->visible_)
+    {
+        ellipsisItem_->enabled_=isEnabled();
+        ellipsisItem_->draw(&painter,false,gradLighter_);
     }    
 }  
 
@@ -291,7 +511,8 @@ void BcWidget::mousePressEvent(QMouseEvent *event)
 
 	for(int i=0; i < items_.count(); i++)
     {
-		if(items_.at(i)->shape_.containsPoint(event->pos(),Qt::OddEvenFill))
+        if(items_[i]->visible_ &&
+           items_[i]->shape_.containsPoint(event->pos(),Qt::OddEvenFill))
 		{
 			if(event->button() == Qt::RightButton)
 			{
@@ -318,6 +539,12 @@ void BcWidget::changeEvent(QEvent* event)
     QWidget::changeEvent(event);
 }
 
+//=====================================================
+//
+// NodePathItem
+//
+//=====================================================
+
 NodePathItem::NodePathItem(int index,QString text,QColor bgCol,QColor fontCol,bool hasMenu,bool current) :
     index_(index),
     text_(text),
@@ -325,8 +552,11 @@ NodePathItem::NodePathItem(int index,QString text,QColor bgCol,QColor fontCol,bo
     fontCol_(fontCol),
     current_(current),
     hasMenu_(hasMenu),
+    visible_(false),
     enabled_(true)
 {
+    height();
+
     if(!disabledBgCol_.isValid())
     {
         disabledBgCol_=QColor(200,200,200);
@@ -339,20 +569,115 @@ NodePathItem::NodePathItem(int index,QString text,QColor bgCol,QColor fontCol,bo
     grad_.setFinalStop(0,1);
 }    
 
+int NodePathItem::height()
+{
+    if(height_==0)
+    {
+        QFont f;
+        QFontMetrics fm(f);
+        height_=fm.height()+2*vPadding_;
+    }
+    return height_;
+}
+
 void NodePathItem::setCurrent(bool)
 {
 }
 
-void NodePathItem::draw(QPainter  *painter,bool useGrad,int lighter)
-{    
-   /* if(current_)
+int NodePathItem::textLen() const
+{
+    QFont f;
+    QFontMetrics fm(f);
+    return fm.width(text_);
+}
+
+void NodePathItem::makeShape(int xp,int yp,int len)
+{
+    QVector<QPoint> vec;
+    vec << QPoint(0,0);
+    vec << QPoint(len+triLen_,0);
+    vec << QPoint(len+2*triLen_,height_/2);
+    vec << QPoint(len+triLen_,height_);
+    vec << QPoint(0,height_);
+    vec << QPoint(triLen_,height_/2);
+
+    shape_=QPolygon(vec).translated(xp,yp);
+
+    textRect_=QRect(xp+triLen_+hPadding_,yp,len,height_);
+}
+
+int NodePathItem::adjust(int xp,int yp,int elidedLen)
+{
+    visible_=true;
+
+    QFont f;
+    QFontMetrics fm(f);
+    int len;
+    if(elidedLen == 0)
     {
-    	painter->setPen(QPen(Qt::black,2));
+        elidedText_=QString();
+        len=fm.width(text_);
     }
     else
     {
-    	painter->setPen(QPen(borderCol_,0));
-    }*/
+        elidedText_=fm.elidedText(text_,Qt::ElideRight,elidedLen);
+        len=fm.width(elidedText_);
+    }
+
+    borderCol_=bgCol_.darker(125);
+
+    makeShape(xp,yp,len);
+
+    return rightPos(xp,len);
+}
+
+
+//It returns the x position of the top right corner!
+int NodePathItem::rightPos(int xp,int len) const
+{
+    return xp+len+triLen_;
+}
+
+
+//It returns the x position of the top right corner!
+int NodePathItem::estimateRightPos(int xp,int elidedLen)
+{
+    QFont f;
+    QFontMetrics fm(f);
+    int len;
+
+    if(elidedLen==0)
+        len=fm.width(text_);
+    else
+        len=fm.width(fm.elidedText(text_,Qt::ElideRight,elidedLen));
+
+    return rightPos(xp,len);
+}
+
+void NodePathItem::resetBorder(bool hovered)
+{
+    if(!hovered)
+        borderCol_=bgCol_.darker(125);
+    else
+        borderCol_=bgCol_.darker(240);
+}
+
+void NodePathItem::reset(QString text,QColor bgCol,QColor fontCol,bool hovered)
+{
+    text_=text;
+    bgCol_=bgCol;
+    fontCol_=fontCol;
+
+    if(!hovered)
+        borderCol_=bgCol_.darker(125);
+    else
+        borderCol_=bgCol_.darker(240);
+}
+
+void NodePathItem::draw(QPainter  *painter,bool useGrad,int lighter)
+{    
+    if(!visible_)
+        return;
 
     QColor border, bg, fontCol;
     if(enabled_)
@@ -391,10 +716,47 @@ void NodePathItem::draw(QPainter  *painter,bool useGrad,int lighter)
     }*/
 
     painter->setPen(fontCol);
-    painter->drawText(textRect_,Qt::AlignVCenter | Qt::AlignHCenter,text_);  
+    painter->drawText(textRect_,Qt::AlignVCenter | Qt::AlignHCenter,(elidedText_.isEmpty())?text_:elidedText_);
     
 }
 
+//=====================================================
+//
+// NodePathServerItem
+//
+//=====================================================
+
+//It returns the x position of the top right corner!
+int NodePathServerItem::rightPos(int xp,int len) const
+{
+    return xp+len;
+}
+
+void NodePathServerItem::makeShape(int xp,int yp,int len)
+{
+    QVector<QPoint> vec;
+    vec << QPoint(0,0);
+    vec << QPoint(len,0);
+    vec << QPoint(len+triLen_,height_/2);
+    vec << QPoint(len,height_);
+    vec << QPoint(0,height_);
+
+    shape_=QPolygon(vec).translated(xp,yp);
+
+    textRect_=QRect(xp+hPadding_,yp,len,height_);
+}
+
+//=====================================================
+//
+// NodePathEllipsisItem
+//
+//=====================================================
+
+NodePathEllipsisItem::NodePathEllipsisItem() :
+    NodePathItem(-1,QString(0x2026),QColor(240,240,240),QColor(Qt::black),false,false)
+{
+    borderCol_=QColor(190,190,190);
+}
 
 //=============================================================
 //
@@ -404,7 +766,9 @@ void NodePathItem::draw(QPainter  *painter,bool useGrad,int lighter)
 
 NodePathWidget::NodePathWidget(QWidget *parent) :
   QWidget(parent),
+#if 0
   reloadTb_(0),
+#endif
   active_(true)
 {
 	setProperty("breadcrumbs","1");
@@ -421,7 +785,8 @@ NodePathWidget::NodePathWidget(QWidget *parent) :
              this,SLOT(slotNodeSelected(int)));
     connect(bc_,SIGNAL(menuSelected(int,QPoint)),
              this,SLOT(slotMenuSelected(int,QPoint)));
-    
+
+#if 0
     reloadTb_=new QToolButton(this);
     //reloadTb_->setDefaultAction(actionReload_);
     reloadTb_->setIcon(QPixmap(":/viewer/reload_one.svg"));
@@ -434,6 +799,7 @@ NodePathWidget::NodePathWidget(QWidget *parent) :
             this,SLOT(slotRefreshServer()));
 
     layout_->addWidget(reloadTb_);
+#endif
 }
 
 NodePathWidget::~NodePathWidget()
@@ -465,8 +831,10 @@ void NodePathWidget::clear(bool detachObservers)
 
     setEnabled(true);
 
+#if 0
     reloadTb_->setEnabled(false);
     reloadTb_->setToolTip("");
+#endif
 }
 
 void NodePathWidget::clearItems()
@@ -526,6 +894,7 @@ void NodePathWidget::adjust(VInfo_ptr info,ServerHandler** serverOut,bool &sameS
   			info->server()->addServerObserver(this);
   			info->server()->addNodeObserver(this);
 
+#if 0
   			if(server)
   			{
   				if(reloadTb_)
@@ -539,7 +908,7 @@ void NodePathWidget::adjust(VInfo_ptr info,ServerHandler** serverOut,bool &sameS
                 reloadTb_->setToolTip("");
                 reloadTb_->setEnabled(false);
   			}
-
+#endif
   		}
   	}
   	//If the there is no data we clean everything and return
@@ -550,9 +919,10 @@ void NodePathWidget::adjust(VInfo_ptr info,ServerHandler** serverOut,bool &sameS
   	  		info_->server()->removeServerObserver(this);
   	  		info_->server()->removeNodeObserver(this);
   	  	}
-
+#if 0
         reloadTb_->setToolTip("");
         reloadTb_->setEnabled(false);
+#endif
   	}
 
     //Set the info
@@ -586,7 +956,7 @@ void NodePathWidget::setPath(QString)
 void NodePathWidget::setPath(VInfo_ptr info)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::setPath -->");
+    UiLog().dbg() << "NodePathWidget::setPath -->";
 #endif
 
     setEnabled(true);
@@ -635,23 +1005,36 @@ void NodePathWidget::setPath(VInfo_ptr info)
 		VNode *n=lst.at(i);
 		col=n->stateColour(); 
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-        UserMessage::debug("   state=" + n->stateName().toStdString());
+        UiLog().dbg() << "   state=" << n->stateName();
 #endif
 		QColor fontCol=n->stateFontColour();
 		name=n->name();
 		bool hasChildren=hasChildren=(n->numOfChildren() >0);
 
-	    nodeItem=new NodePathItem(i,name,col,fontCol,hasChildren,(i == lst.size()-1)?true:false);
-		nodeItems_ << nodeItem;           
+        if(i==0)
+        {
+            nodeItem=new NodePathServerItem(i,name,col,fontCol,hasChildren,(i == lst.size()-1)?true:false);
+        }
+        else
+        {
+            nodeItem=new NodePathItem(i,name,col,fontCol,hasChildren,(i == lst.size()-1)?true:false);
+        }
+        nodeItems_ << nodeItem;
 	}
 
-	bc_->reset(nodeItems_);
+    bc_->reset(nodeItems_,bcWidth());
 
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("<-- NodePathWidget::setPath");
+    UiLog().dbg() << "<-- setPath";
 #endif
 }
 
+int NodePathWidget::bcWidth()
+{
+    //return width()-reloadTb_->width()-5;
+    return width()-5;
+}
+
 void  NodePathWidget::slotNodeSelected(int idx)
 {
 	if(idx != -1)
@@ -679,7 +1062,7 @@ void  NodePathWidget::slotMenuSelected(int idx,QPoint bcPos)
 VInfo_ptr NodePathWidget::nodeAt(int idx)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::nodeAt idx=" + boost::lexical_cast<std::string>(idx));
+    UiLog().dbg() << "NodePathWidget::nodeAt idx=" << idx;
 #endif
 	ServerHandler* server=info_->server();
 
@@ -716,7 +1099,7 @@ void NodePathWidget::loadMenu(const QPoint& pos,VInfo_ptr p)
 		if(acLst.count() > 0)
 		{
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-            UserMessage::message(UserMessage::DBG,false,"NodePathWidget::loadMenu");
+            UiLog().info() << "NodePathWidget::loadMenu";
 #endif
             
             if(QAction *ac=QMenu::exec(acLst,pos,acLst.front(),this))
@@ -784,35 +1167,45 @@ void NodePathWidget::notifyBeginNodeChange(const VNode* node, const std::vector<
 void NodePathWidget::notifyDefsChanged(ServerHandler* server,const std::vector<ecf::Aspect::Type>& aspect)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::notifyDefsChanged -->");
+    UiLog().dbg() << "NodePathWidget::notifyDefsChanged -->";
 #endif
 
     if(!active_)
 		return;
 
-	//Check if there is data in inf0
+    //Check if there is data in info
     if(info_ && info_->server()  && info_->server() == server)
 	{
-		//State changed
-		if(std::find(aspect.begin(),aspect.end(),ecf::Aspect::SERVER_STATE) != aspect.end())
-		{
-			if(nodeItems_.count() > 0)
-			{
-				bc_->reset(0,server->vRoot()->name(),
+        qDebug() << "Server change";
+
+        //State changed
+        for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
+        {
+            if(*it == ecf::Aspect::STATE || *it == ecf::Aspect::SERVER_STATE)
+            {
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+                UiLog().dbg() << "   update server item";
+#endif
+                if(nodeItems_.count() > 0)
+                {
+                    bc_->reset(0,server->vRoot()->name(),
 						                server->vRoot()->stateColour(),
 										server->vRoot()->stateFontColour());
-			}
+                }
 
-		}
+            }
+        }
 	}
-
+#ifdef _UI_NODEPATHWIDGET_DEBUG
+    UiLog().dbg() << "<-- notifyDefsChanged";
+#endif
 }
 
 //This must be called at the beginning of a reset
 void NodePathWidget::notifyBeginServerClear(ServerHandler* server)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::notifyBeginServerClear -->");
+    UiLog().dbg() << "NodePathWidget::notifyBeginServerClear -->";
 #endif
     if(info_)
     {
@@ -822,7 +1215,7 @@ void NodePathWidget::notifyBeginServerClear(ServerHandler* server)
         }
     }
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("<-- NodePathWidget::notifyBeginServerClear");
+    UiLog().dbg() << "<-- notifyBeginServerClear";
 #endif
 }
 
@@ -830,7 +1223,7 @@ void NodePathWidget::notifyBeginServerClear(ServerHandler* server)
 void NodePathWidget::notifyEndServerScan(ServerHandler* server)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::notifyEndServerScan -->");
+    UiLog().dbg() << "NodePathWidget::notifyEndServerScan -->";
 #endif
 
     if(info_)
@@ -838,16 +1231,16 @@ void NodePathWidget::notifyEndServerScan(ServerHandler* server)
         if(info_->server() && info_->server() == server)
         {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-            UserMessage::debug("   setEnabled(true)");
+            UiLog().dbg() << "   setEnabled(true)";
 #endif
 
             setEnabled(true);
 
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-            UserMessage::debug("   regainData");
+            UiLog().dbg() << "   regainData";
 #endif
-            //We try to ressurect the info. We have to do it explicitly because it is not guaranteed
-            //the notifyEndServerScan() will be first called on the VInfo then on the breadcrumbs. So it
+            //We try to ressurect the info. We have to do it explicitly because it is not guaranteed that
+            //notifyEndServerScan() will be first called on the VInfo then on the breadcrumbs. So it
             //is possible that the node still exists but it is still set to NULL in VInfo.
             info_->regainData();
 
@@ -859,14 +1252,14 @@ void NodePathWidget::notifyEndServerScan(ServerHandler* server)
             Q_ASSERT(info_->server() && info_->node());
 
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-            UserMessage::debug("   reset");
+            UiLog().dbg() << "   reset";
 #endif
             reset();
         }
     }
 
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("<-- NodePathWidget::notifyEndServerScan");
+    UiLog().dbg() << "<-- notifyEndServerScan";
 #endif
 }
 
@@ -897,17 +1290,17 @@ void NodePathWidget::notifyServerActivityChanged(ServerHandler* /*server*/)
 void NodePathWidget::notifyDataLost(VInfo* info)
 {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("NodePathWidget::notifyDataLost -->");
+    UiLog().dbg() << "NodePathWidget::notifyDataLost -->";
 #endif
     if(info_ && info_.get() == info)
     {
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-        UserMessage::debug("   clear(true)");
+        UiLog().dbg() << "   clear(true)";
 #endif
         clear(true);
     }
 #ifdef _UI_NODEPATHWIDGET_DEBUG
-    UserMessage::debug("<-- NodePathWidget::notifyDataLost");
+    UiLog().dbg() << "<-- notifyDataLost";
 #endif
 }
 
@@ -925,13 +1318,17 @@ void NodePathWidget::rerender()
 }
 
 void NodePathWidget::paintEvent(QPaintEvent *)
- {
+{
      QStyleOption opt;
      opt.init(this);
      QPainter p(this);
      style()->drawPrimitive(QStyle::PE_Widget, &opt, &p, this);
- }
+}
 
+void NodePathWidget::resizeEvent(QResizeEvent *)
+{
+    bc_->adjustSize(bcWidth());
+}
 
 void NodePathWidget::writeSettings(VSettings *vs)
 {
@@ -952,7 +1349,3 @@ void NodePathWidget::readSettings(VSettings* vs)
 }
 
 
-
-
-
-
diff --git a/Viewer/src/NodePathWidget.hpp b/Viewer/src/NodePathWidget.hpp
index 3c604e2..6094965 100644
--- a/Viewer/src/NodePathWidget.hpp
+++ b/Viewer/src/NodePathWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -32,6 +32,7 @@ class VProperty;
 class VSettings;
 
 class NodePathItem;
+class NodePathEllipsisItem;
 
 class BcWidget : public QWidget, public VPropertyObserver
 {
@@ -42,9 +43,10 @@ public:
     explicit BcWidget(QWidget *parent=0);
     ~BcWidget();
     
-    void reset(QList<NodePathItem*>);
+    void reset(QList<NodePathItem*>,int);
     void reset(int idx,QString text,QColor bgCol,QColor fontCol);
     void clear();
+    void adjustSize(int);
     
     void notifyChange(VProperty*);
 
@@ -63,29 +65,32 @@ protected:
     void resetBorder(int);
     void crePixmap();
     void updatePixmap(int);
-    
+    bool isFull() const;
+    int estimateWidth(int,int,int);
+    int adjustItems(int,int,int,int);
+    int adjustVisibleItems(int,int,int,int);
+
     QFont font_;
-    QPixmap pix_;
-    int hPadding_;
-    int vPadding_;
+    QPixmap pix_;   
     int hMargin_;
-    int vMargin_;
-    int triLen_;
+    int vMargin_;   
     int gap_;
     int width_;
+    int maxWidth_;
     int height_;
     int itemHeight_;
     QString emptyText_;
     QRect emptyRect_;
-    QList<NodePathItem*> items_; 
+    QList<NodePathItem*> items_;
+    NodePathEllipsisItem* ellipsisItem_;
     
     PropertyMapper* prop_;
     bool useGrad_;
     int gradLighter_;
     int hovered_;
+    bool elided_;
 };
 
-
 class NodePathItem 
 {
 
@@ -94,26 +99,67 @@ friend class BcWidget;
 public:
     NodePathItem(int index,QString text,QColor bgCol,QColor fontCol,bool hasMenu,bool current);
     void setCurrent(bool);
-    void draw(QPainter*,bool,int);
-    
+    virtual void draw(QPainter*,bool,int);
+    int adjust(int xp,int yp, int elidedLen=0);
+    int estimateRightPos(int xp,int elidedLen=0);
+    void resetBorder(bool hovered);
+    void reset(QString text,QColor bgCol,QColor fontCol,bool hovered);
+    int textLen() const;
+    static int height();
+
 protected:
+    virtual void makeShape(int xp,int yp,int len);
+    virtual int rightPos(int xp,int len) const;
+
     int index_;
     QString text_;
+    QString elidedText_;
     QColor bgCol_;
     QColor borderCol_;
     QColor fontCol_;
     QPolygon shape_;
     QRect textRect_;
+
     bool current_;
     bool hasMenu_;
+    bool visible_;
     QLinearGradient grad_;
     bool enabled_;
     static QColor disabledBgCol_;
     static QColor disabledBorderCol_;
     static QColor disabledFontCol_;
+
+    static int triLen_;
+    static int height_;
+    static int hPadding_;
+    static int vPadding_;
+};
+
+class NodePathServerItem : public NodePathItem
+{
+
+friend class BcWidget;
+
+public:
+    NodePathServerItem(int index,QString text,QColor bgCol,QColor fontCol,bool hasMenu,bool current) :
+         NodePathItem(index,text,bgCol,fontCol,hasMenu,current) {}
+protected:
+    void makeShape(int xp,int yp,int len);
+    int rightPos(int xp,int len) const;
+};
+
+
+class NodePathEllipsisItem : public NodePathItem
+{
+
+friend class BcWidget;
+
+public:
+    NodePathEllipsisItem();
 };
 
 
+
 class NodePathWidget : public QWidget, public NodeObserver, public ServerObserver, public VInfoObserver
 {
 Q_OBJECT
@@ -168,16 +214,20 @@ protected:
 	void loadMenu(const QPoint& pos,VInfo_ptr p);
 	VInfo_ptr nodeAt(int);
 	void infoIndex(int idx);
-	void paintEvent(QPaintEvent *);
+    void paintEvent(QPaintEvent *);
+    void resizeEvent(QResizeEvent *);
 	void reset();
     void updateSettings();
+    int bcWidth();
 
 	QList<NodePathItem*> nodeItems_;
 	
 	QHBoxLayout* layout_;
 	VInfo_ptr info_;
 	VInfo_ptr infoFull_;
-	QToolButton* reloadTb_;
+#if 0
+    QToolButton* reloadTb_;
+#endif
     BcWidget* bc_;
    
    
diff --git a/Viewer/src/NodeQuery.cpp b/Viewer/src/NodeQuery.cpp
index 70688d9..9eeb177 100644
--- a/Viewer/src/NodeQuery.cpp
+++ b/Viewer/src/NodeQuery.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,164 +12,94 @@
 
 #include <QDebug>
 
+#include "NodeQueryOption.hpp"
+#include "UiLog.hpp"
+#include "VAttributeType.hpp"
 #include "VSettings.hpp"
 
-StringMatchMode::Mode NodeQueryStringOption::defaultMatchMode_=StringMatchMode::WildcardMatch;
-bool NodeQueryStringOption::defaultCaseSensitive_=false;
-//QMap<NodeQueryStringOption::MatchMode,QString> NodeQueryStringOption::matchOper_;
-
-QStringList NodeQuery::nodeTerms_;
-QStringList NodeQuery::typeTerms_;
-QStringList NodeQuery::stateTerms_;
-QStringList NodeQuery::flagTerms_;
-QStringList NodeQuery::attrGroupTerms_;
-QMap<QString,QStringList> NodeQuery::attrTerms_;
 int NodeQuery::defaultMaxNum_=50000;
 
-NodeQueryStringOption::NodeQueryStringOption(QString name) :
-  name_(name),
-  matchMode_(defaultMatchMode_),
-  caseSensitive_(defaultCaseSensitive_)
-{
-	/*if(matchOper_.isEmpty())
-	{
-		matchOper_[ContainsMatch]="~";
-		matchOper_[WildcardMatch]="=";
-		matchOper_[RegexpMatch]="=~";
-	}*/
-}
-
-void NodeQueryStringOption::swap(const NodeQueryStringOption* op)
-{
-	value_=op->value();
-	matchMode_=op->matchMode();
-	caseSensitive_=op->caseSensitive();
-}
-
-
-/*QString NodeQueryStringOption::matchOperator() const
-{
-	return matchOper_.value(matchMode_);
-}*/
-
-void NodeQueryStringOption::save(VSettings* vs)
+//#define _UI_NODEQUERY_DEBUG
+ 
+QString NodeQueryAttrGroup::query() const
 {
-    if(value_.isEmpty() && matchMode_.mode() == defaultMatchMode_ &&
-       caseSensitive_ == defaultCaseSensitive_)
-        return;
-        
-    vs->beginGroup(name_.toStdString());
-    vs->put("value",value_.toStdString());
-    vs->put("matchMode",matchMode_.toInt());
-    vs->putAsBool("caseSensistive",caseSensitive_);
-    vs->endGroup();   
-}
-
+    QStringList lst;
+    Q_FOREACH(NodeQueryOption* op,options_)
+    {
+        QString s=op->query().simplified();
+        if(!s.isEmpty())
+            lst << op->query();
+    }
 
-void NodeQueryStringOption::load(VSettings* vs)
-{
-    if(!vs->contains(name_.toStdString()))
-        return;
-    
-    vs->beginGroup(name_.toStdString());
-    value_=QString::fromStdString(vs->get("value",value_.toStdString())); 
-    matchMode_.setMode(static_cast<StringMatchMode::Mode>(vs->get<int>("matchMode",matchMode_.toInt())));
-    caseSensitive_=vs->getAsBool("caseSensistive",caseSensitive_);
-    vs->endGroup();   
-}
+    if(lst.count() == 0)
+        return name_;
+    else if(lst.count() == 1)
+    {
+        return lst[0];
+    }
+    else
+    {
+        return "(" + lst.join(" and ") + ")";
+    }
 
-void NodeQuerySelectOption::swap(const NodeQuerySelectOption* op)
-{
-	selection_=op->selection();
+    return QString();
 }
 
-void NodeQuerySelectOption::save(VSettings* vs)
+bool NodeQueryVarAttrGroup::hasType(VAttributeType* t) const 
 {
-    if(selection_.isEmpty())
-        return;
-
-    std::vector<std::string> v;
-    Q_FOREACH(QString s, selection_)
-        v.push_back(s.toStdString());
+    if(types_.contains(t))
+    {
+        Q_FOREACH(NodeQueryOption* op,options_)
+        {
+            if(op->name() == "var_type")
+            {
+                QString v=op->valueAsString();
+#ifdef _UI_NODEQUERY_DEBUG
+                UiLog().dbg() << "NodeQueryVarAttrGroup::hasType  var_type=" << v.toStdString();
+#endif
+                if(v == "any")
+                    return true;
+                else
+                    return (v == t->name());
+            }
+        }
         
-    vs->put(name_.toStdString(),v);
-}
-
-void NodeQuerySelectOption::load(VSettings* vs)
-{
-    if(!vs->contains(name_.toStdString()))
-        return;
-
-    std::vector<std::string> v;
-    vs->get(name_.toStdString(),v);
+        Q_ASSERT(false);
+    }
     
-    selection_.clear();
-    for(std::vector<std::string>::const_iterator it=v.begin(); it != v.end(); ++it)
-        selection_ << QString::fromStdString(*it);
+    return false;
 }
 
-
 NodeQuery::NodeQuery(const std::string& name,bool ignoreMaxNum) :
   name_(name),
   advanced_(false),
-  //allServers_(true),
   caseSensitive_(false),
   maxNum_(defaultMaxNum_),
   ignoreMaxNum_(ignoreMaxNum)
 {
-	if(nodeTerms_.isEmpty())
-	{
-		nodeTerms_ << "node_name" << "node_path";
-		typeTerms_ << "server" << "suite" << "family" << "task" << "alias";
-		stateTerms_ << "aborted" << "active" << "complete" << "queued" << "submitted" << "suspended" << "unknown";
-		flagTerms_ << "is_late" << "has_date" << "has_message" << "has_time" << "is_rerun" << "is_waiting" << "is_zombie";
-		attrGroupTerms_ << "date" << "event" << "label" << "late" << "limit" << "limiter" << "meter"
-			    	   << "repeat" << "time" << "trigger" << "variable";
-
-		attrTerms_["date"] << "date_name";
-		attrTerms_["event"] << "event_name";
-		attrTerms_["label"] << "label_name" << "label_value";
-		attrTerms_["limit"] << "limit_name" << "limit_value" << "limit_max";
-		attrTerms_["limiter"] << "limiter_name";
-		attrTerms_["meter"] << "meter_name";
-		attrTerms_["repeat"] << "repeat_name" << "repeat_value";
-		attrTerms_["time"] << "time_name";
-		attrTerms_["trigger"] << "trigger_expression";
-		attrTerms_["variable"] << "var_name" << "var_value";
 
-	}
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "NodeQuery::NodeQuery -->";
+#endif
 
-	Q_FOREACH(QString s,nodeTerms_)
-	{
-		stringOptions_[s]=new NodeQueryStringOption(s);
-	}
+    //Build options from defs. Options store the actual query settings. They are
+    //editable through the gui.
+    NodeQueryOption::build(this);
 
-	Q_FOREACH(QString gr,attrGroupTerms_)
-	{
-		Q_FOREACH(QString s,attrTerms_[gr])
-			stringOptions_[s]=new NodeQueryStringOption(s);
-	}
+#ifdef _UI_NODEQUERY_DEBUG
+    qDebug() << options_;
+#endif
 
-	selectOptions_["type"]=new NodeQuerySelectOption("type");
-	selectOptions_["state"]=new NodeQuerySelectOption("state");
-	selectOptions_["flag"]=new NodeQuerySelectOption("flag");
-	selectOptions_["attr"]=new NodeQuerySelectOption("attr");
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "<-- NodeQuery";
+#endif
 }
 
 NodeQuery::~NodeQuery()
 {
-    Q_FOREACH(QString s,stringOptions_.keys())
-    {
-        delete stringOptions_[s];
-    }
-
-    Q_FOREACH(QString s,selectOptions_.keys())
-    {
-        delete selectOptions_[s];
-    }
+    qDeleteAll(options_);
 }
 
-
 NodeQuery* NodeQuery::clone()
 {
 	return clone(name_);
@@ -186,7 +116,7 @@ NodeQuery* NodeQuery::clone(const std::string& name)
 void NodeQuery::swap(const NodeQuery* q)
 {
 	advanced_=q->advanced_;
-	query_=q->query_;
+	//query_=q->query_;
 	extQuery_=q->extQuery_;
 	rootNode_=q->rootNode_;
 	servers_=q->servers_;
@@ -195,15 +125,8 @@ void NodeQuery::swap(const NodeQuery* q)
 	maxNum_=q->maxNum_;
 	ignoreMaxNum_=q->ignoreMaxNum_;
 
-	Q_FOREACH(QString s,stringOptions_.keys())
-	{
-		stringOptions_[s]->swap(q->stringOptions_.value(s));
-	}
-
-	Q_FOREACH(QString s,selectOptions_.keys())
-	{
-		selectOptions_[s]->swap(q->selectOptions_.value(s));
-	}
+    for(QMap<QString,NodeQueryOption*>::const_iterator it = options_.constBegin(); it != options_.constEnd(); ++it)
+        it.value()->swap(q->option(it.key()));
 
 	buildQueryString();
 }
@@ -213,14 +136,12 @@ void  NodeQuery::setName(const std::string& name)
 	name_=name;
 }
 
-void NodeQuery::setQuery(QString query)
-{
-	query_=query;
-}
-
 bool NodeQuery::hasServer(const std::string& name) const
 {
-	qDebug() << "servers" << servers_;
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "NodeQuery::hasServer -->";
+    qDebug() << "   servers=" << servers_;
+#endif
 
 	if(servers_.empty())
 		return true;
@@ -228,228 +149,164 @@ bool NodeQuery::hasServer(const std::string& name) const
 	return servers_.contains(QString::fromStdString(name));
 }
 
-void NodeQuery::adjustServers(const std::vector<std::string>& all)
-{
-	QStringList allLst=vecToLst(all);
-
-	/*if(allServers_)
-	{
-		servers_=allLst;
-		buildQueryString();
-	}*/
-}
-
-QStringList NodeQuery::typeSelection() const
-{
-	return selectOptions_.value("type")->selection_;
-}
-
-std::vector<std::string> NodeQuery::typeSelectionVec() const
-{
-	return lstToVec(selectOptions_.value("type")->selection_);
-}
-
-QStringList NodeQuery::stateSelection() const
-{
-	return selectOptions_.value("state")->selection_;
-}
-
-std::vector<std::string> NodeQuery::stateSelectionVec() const
-{
-	return lstToVec(selectOptions_.value("state")->selection_);
-}
-
-QStringList NodeQuery::flagSelection() const
-{
-	return selectOptions_["flag"]->selection_;
-}
-
-std::vector<std::string> NodeQuery::flagSelectionVec() const
-{
-	return lstToVec(selectOptions_["flag"]->selection_);
-}
-
-NodeQueryStringOption*  NodeQuery::stringOption(QString name) const
-{
-	QMap<QString,NodeQueryStringOption*>::const_iterator it = stringOptions_.find(name);
-	if(it != stringOptions_.constEnd())
-		return it.value();
-	return NULL;
-}
-
-QStringList NodeQuery::attrGroupSelection() const
-{
-	return selectOptions_["attr"]->selection_;
-}
-
-std::vector<std::string> NodeQuery::attrGroupSelectionVec() const
+NodeQueryOption* NodeQuery::option(QString name) const
 {
-	return lstToVec(selectOptions_["attr"]->selection_);
+    QMap<QString,NodeQueryOption*>::const_iterator it = options_.find(name);
+    if(it != options_.constEnd())
+        return it.value();
+    return NULL;
 }
 
-void NodeQuery::setTypeSelection(QStringList lst)
+QString NodeQuery::query() const
 {
-	selectOptions_["type"]->selection_=lst;
+    QString s1=nodeQueryPart();   
+    QString s2=attrQueryPart();
+    if(!s1.isEmpty())       
+        if(!s2.isEmpty())
+            return s1+ " and " + s2;
+        else
+            return s1;
+    else
+        return s2;
+           
+    return QString();
 }
 
-void NodeQuery::setTypeSelection(const std::vector<std::string>& vec)
-{
-	selectOptions_["type"]->selection_=vecToLst(vec);
-}
-
-
-void NodeQuery::setStateSelection(QStringList lst)
-{
-	selectOptions_["state"]->selection_=lst;
-}
+QString NodeQuery::nodeQueryPart() const
+{   
+    QStringList lst;
+    QStringList keys;
+    keys << "node" << "type" << "state" << "flag";
+    Q_FOREACH(QString s,keys)
+    {
+        if(!extQuery_.value(s).isEmpty())
+            lst << extQuery_.value(s);
+    }
+    
+    //TODO : handle all   
+    return lst.join(" and ");
+}    
 
-void NodeQuery::setStateSelection(const std::vector<std::string>& vec)
+QString NodeQuery::attrQueryPart() const
 {
-	selectOptions_["state"]->selection_=vecToLst(vec);
+    return extQuery_["attr"];
 }
 
-void NodeQuery::setFlagSelection(QStringList lst)
-{
-	selectOptions_["flag"]->selection_=lst;
+QString NodeQuery::attrQueryPart(VAttributeType* t) const
+{        
+    //TODO
+    QStringList attrSel=attrSelection();
+    QString q;
+    Q_FOREACH(NodeQueryAttrGroup* tm,attrGroup_.values())
+    {
+        if(tm->hasType(t) &&
+           attrSel.contains(tm->name()))
+        {
+            QStringList qLst;
+
+            Q_FOREACH(NodeQueryOption* op,tm->options())
+            {               
+                Q_ASSERT(op);
+                QString s=op->query();
+                if(!s.isEmpty())
+                {
+                    qLst << s;
+                }
+            }
+
+            if(qLst.isEmpty())
+               q=t->name();
+            else
+               q=qLst.join(" and ");
+
+            break;
+         }
+    }
+    return q;
 }
 
-void NodeQuery::setFlagSelection(const std::vector<std::string>& vec)
+bool NodeQuery::hasAttribute(VAttributeType *t) const
 {
-	selectOptions_["flag"]->selection_=vecToLst(vec);
+    Q_FOREACH(NodeQueryAttrGroup* d,attrGroup_.values())
+    {
+        if(d->hasType(t))
+        {
+            return attrSelection().contains(d->name());
+        }
+    }
+    return false;
 }
 
-void NodeQuery::setAttrGroupSelection(QStringList lst)
+QStringList NodeQuery::attrSelection() const
 {
-	selectOptions_["attr"]->selection_=lst;
+    NodeQueryOption *a=options_["attribute"];
+    Q_ASSERT(a);
+    NodeQueryListOption* op=static_cast<NodeQueryListOption*>(a);
+    Q_ASSERT(op);
+    return op->selection();
 }
 
-void NodeQuery::setAttrGroupSelection(const std::vector<std::string>& vec)
+NodeQueryListOption* NodeQuery::stateOption() const
 {
-	selectOptions_["attr"]->selection_=vecToLst(vec);
+    NodeQueryOption* op=option("state");
+    Q_ASSERT(op);
+    return op->isList();
 }
 
 void NodeQuery::buildQueryString()
 {
-	//Scope
-	QString nodePart;
-	QString name=stringOptions_["node_name"]->value().simplified();
-	QString path=stringOptions_["node_path"]->value().simplified();
-	if(!name.isEmpty())
-	{
-		nodePart="node_name " + stringOptions_["node_name"]->matchOperator() + " \'" +  name + "\'";
-	}
-	if(!path.isEmpty())
-	{
-		if(!nodePart.isEmpty())
-			nodePart+=" and ";
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "NodeQuery::buildQueryString -->";
+#endif
 
-		nodePart+="node_path " + stringOptions_["node_path"]->matchOperator() + " \'" +  path + "\'";
-	}
-	if(!nodePart.isEmpty())
-	{
-		nodePart="(" + nodePart + ")";
-	}
+    extQuery_.clear();
+
+    //Node
+    QStringList nodePart;
+    QString name=options_["node_name"]->query();
+    QString path=options_["node_path"]->query();
+    if(!name.isEmpty()) nodePart << name;
+    if(!path.isEmpty()) nodePart << path;
+    if(nodePart.count() > 0)
+        extQuery_["node"]="(" +nodePart.join(" and ") + ")";
 
 	//Type
-	QString typePart;
-	if(typeSelection().count() >0)
-	{
-		typePart="(" + typeSelection().join(" or ") + ")";
-	}
+    QString typePart=options_["type"]->query(" or ");
+    if(!typePart.isEmpty())
+        extQuery_["type"]="(" + typePart + ")";
 
-	//State
-	QString statePart;
-	if(stateSelection().count() >0)
-	{
-		statePart="(" + stateSelection().join(" or ") + ")";
-	}
+    //State
+    QString statePart=options_["state"]->query(" or ");
+    if(!statePart.isEmpty())
+        extQuery_["state"]="(" + statePart + ")";
 
 	//Flag
-	QString flagPart;
-	if(flagSelection().count() >0)
-	{
-		flagPart="(" + flagSelection().join(" or ") + ")";
-	}
+    QString flagPart=options_["flag"]->query(" or ");
+    if(!flagPart.isEmpty())
+        extQuery_["flag"]="(" + flagPart + ")";;
 
 	//Attributes
 	QString attrPart;
-	Q_FOREACH(QString gr,attrGroupSelection())
-	{
-		QString grPart;
-		Q_FOREACH(QString opName,attrTerms_[gr])
-		{
-			NodeQueryStringOption* op=stringOption(opName);
-			assert(op);
-			QString s=op->value();
-			if(!s.isEmpty())
-			{
-				if(!grPart.isEmpty())
-					grPart+=" or ";
-				grPart+=opName + " " + op->matchOperator() + " \'" + s + "\'";
-			}
-		}
-
-		if(grPart.isEmpty())
-			grPart=gr;
 
+    Q_FOREACH(QString attrName,attrSelection())
+	{
+        NodeQueryAttrGroup* grp=attrGroup_.value(attrName);
+        Q_ASSERT(grp);
+        QString grpPart=grp->query();
 
 		if(!attrPart.isEmpty())
 			attrPart+=" or ";
-		attrPart+=grPart;
+		
+        attrPart+=grpPart;
 	}
 
 	if(!attrPart.isEmpty())
-	{
-		attrPart="(" + attrPart + ")";
-	}
+        //extQuery_["attr"]="(" + attrPart + ")";
+        extQuery_["attr"]=attrPart;
 
-	//Put everything together
-	query_.clear();
-	extQuery_.clear();
+    bool hasEq=QStringList(extQuery_.values()).join("").contains("=");
 
-	if(!nodePart.isEmpty())
-	{
-		query_+=nodePart;
-		extQuery_["node"]=nodePart;
-	}
-
-	if(!typePart.isEmpty())
-	{
-		if(!query_.isEmpty())
-			query_+=" and ";
-
-		query_+=typePart;
-		extQuery_["type"]=typePart;
-	}
-
-	if(!statePart.isEmpty())
-	{
-		if(!query_.isEmpty())
-			query_+=" and ";
-
-		query_+=statePart;
-		extQuery_["state"]=statePart;
-	}
-
-	if(!flagPart.isEmpty())
-	{
-		if(!query_.isEmpty())
-			query_+=" and ";
-
-		query_+=flagPart;
-		extQuery_["flag"]=flagPart;
-	}
-
-	if(!attrPart.isEmpty())
-	{
-		if(!query_.isEmpty())
-			query_+=" and ";
-
-		query_+=attrPart;
-		extQuery_["attr"]=attrPart;
-	}
-
-	//Extended query
+    //Scope
 	QString scopePart;
 	if(!servers_.isEmpty())
 		scopePart="servers = \'" + servers_.join(", ") + "\'";
@@ -464,16 +321,14 @@ void NodeQuery::buildQueryString()
 	if(!scopePart.isEmpty())
 		extQuery_["scope"]=scopePart;
 
-	if(query_.isEmpty())
-		extQuery_["node"] = "ALL";
-
+    //Other options
 	QString opPart;
 	if(!ignoreMaxNum_)
 	{
 		opPart="max_results = " + QString::number(maxNum_);
 	}
 
-	if(query_.contains("="))
+	if(hasEq)
 	{
 		if(!opPart.isEmpty())
 			opPart+=" and ";
@@ -485,100 +340,70 @@ void NodeQuery::buildQueryString()
 
 	if(!opPart.isEmpty())
 		extQuery_["options"]=opPart;
-}
 
-QString NodeQuery::extQueryHtml(bool multi,QColor bgCol,int firstColWidth) const
-{
-	QString str;
-	QString bg=bgCol.name();
+#ifdef _UI_NODEQUERY_DEBUG
+    qDebug() << extQuery_;
+#endif
+
+    //SQL-like query
+    sqlQuery_.clear();
+    QStringList selectPart;
+    QStringList fromPart;
+    QStringList wherePart;
+    sqlQuery_="SELECT";
+    QStringList nodeParts;
+    nodeParts << "node" << "type" << "state" << "flag";
+    Q_FOREACH(QString s,nodeParts)
+    {
+        QString vs=extQuery_.value(s);
+        if(!vs.isEmpty())
+            wherePart << vs;
+    }
+    selectPart << "node";
 
-	if(multi)
-	{
-			str="<table width=\"100%\" cellPadding=\"2\">";
-			if(!extQuery_.value("scope").isEmpty())
-				str+="<tr><td width=\"" + QString::number(firstColWidth) + "\" bgcolor=\"" + bg +
-				       "\">scope</td><td bgcolor=\"" + bg + "\">" + extQuery_.value("scope") + "</tr></td>";
-
-			QStringList nodeParts;
-			nodeParts << "node" << "type" << "state" << "flag";
-			Q_FOREACH(QString s,nodeParts)
-			{
-				if(!extQuery_.value(s).isEmpty())
-				{
-					//if(!str.isEmpty() && !str.contains("<td>nodes"))
-					//	str+="<br>";
-
-					if(!str.contains("nodes</td>"))
-						str+="<tr><td bgcolor=\"" + bg + "\">nodes</td><td bgcolor=\"" + bg + "\">"+ extQuery_.value(s);
-					else
-						str+=" and<br> " + extQuery_.value(s);
-				}
-			}
-
-			if(str.contains("nodes</td>"))
-				str+="</td></tr>";
-
-			if(!extQuery_.value("options").isEmpty())
-			{
-				//if(!str.isEmpty())
-				//	str+="\n";
-				str+="<tr><td bgcolor=\"" + bg + "\">options</td><td bgcolor=\"" + bg + "\">" + extQuery_.value("options") +"</td></tr>";
-			}
-
-			str+="</table>";
-		}
-
-	else
-	{
-		QString css;
-		css = "<style type=\"text/css\">";
-		css += "table.tbl {border-width: 1px;border-style: solid;border-color: \"#AAAAAA\";margin-top: 0px;margin-bottom: 0px;color: black;}";
-		//css += "table.tbl td {padding: 3px;}";
-		//css += "table.tbl th {padding: 3px;}";
-		css+="</style>";
-
-		QString bgDark=bgCol.darker(108).name();
-		str="<table cellSpacing=\"0\" class=\"tbl\">";
-
-		if(!extQuery_.value("scope").isEmpty())
-			str+="<tr><td bgcolor=\"" + bg + "\"> scope: </td>" +
-			"<td bgcolor=\"" + bgDark + "\"> " + extQuery_.value("scope") + " </td><td>  </td>";
-
-		QStringList nodeParts;
-		nodeParts << "node" << "type" << "state" << "flag";
-		Q_FOREACH(QString s,nodeParts)
-		{
-			if(!extQuery_.value(s).isEmpty())
-			{
-				//if(!str.isEmpty() && !str.contains("nodes: "))
-				//	str+=" | ";
-
-				if(!str.contains("nodes"))
-					str+=" <td  bgcolor=\"" + bg + "\"> nodes: </td><td bgcolor=\"" + bgDark + "\"> "+ extQuery_.value(s);
-				else
-					str+=" and " + extQuery_.value(s);
-			}
-		}
-
-		if(str.contains("nodes:"))
-			str+=" </td></td><td>  </td>";
-
-		if(!extQuery_.value("options").isEmpty())
-		{
-			//if(!str.isEmpty())
-			//	str+=" | ";
-			str+=" <td bgcolor=\"" + bg + "\">  options: </td><td bgcolor=\"" + bgDark + "\"> " + extQuery_.value("options") + " </td>";
-		}
-
-		if(str.contains("<tr>"))
-			str+="</tr>";
-
-		str+="</table>";
-
-		//str=css+str;
-	}
+    //Attribute
+    Q_FOREACH(QString attrName,attrSelection())
+    {
+        NodeQueryAttrGroup* grp=attrGroup_.value(attrName);
+        Q_ASSERT(grp);
+        selectPart << grp->name();
+        selectPart.removeOne("node");
+        QString grpPart=grp->query();
+        if(grpPart != grp->name())
+            wherePart << grpPart;
+    }
+
+    sqlQuery_+=" " + selectPart.join(", ");
+
+    //FROM
+    if(!servers_.isEmpty())
+    {
+        if(servers_.size() ==1 && !rootNode_.empty())
+        {
+            fromPart << servers_[0] + ":/" + QString::fromStdString(rootNode_);
+        }
+        else
+            fromPart=servers_;
+
+        sqlQuery_+=" FROM " + fromPart.join(", ");
+    }
+    else
+    {
+        //sqlQuery_+=" FROM *";
+    }
 
-	return str;
+    if(wherePart.count() > 0)
+        sqlQuery_+=" WHERE " + wherePart.join(" and ");
+
+    if(!ignoreMaxNum_)
+    {
+        sqlQuery_+=" LIMIT " + QString::number(maxNum_);
+    }
+
+
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "<-- buildQueryString";
+#endif
 }
 
 void NodeQuery::load(VSettings* vs)
@@ -600,21 +425,22 @@ void NodeQuery::load(VSettings* vs)
 
 	rootNode_=vs->get("rootNode",rootNode_);
     
-    Q_FOREACH(QString s,stringOptions_.keys())
+    Q_FOREACH(QString s,options_.keys())
     {
-        stringOptions_[s]->load(vs);
+        options_[s]->load(vs);
     }
-
+#if 0
     Q_FOREACH(QString s,selectOptions_.keys())
     {
         selectOptions_[s]->load(vs);
     }
-
+#endif
     buildQueryString();
 
 	//query_=QString::fromStdString(vs->get("query",query_.toStdString()));
 }
 
+
 void NodeQuery::save(VSettings* vs)
 {
     if(advanced_)
@@ -639,33 +465,15 @@ void NodeQuery::save(VSettings* vs)
     if(!rootNode_.empty())
 		vs->put("rootNode",rootNode_);
     
-	Q_FOREACH(QString s,stringOptions_.keys())
+    Q_FOREACH(QString s,options_.keys())
     {
-        stringOptions_[s]->save(vs);
+        options_[s]->save(vs);
     }
-
+#if 0
     Q_FOREACH(QString s,selectOptions_.keys())
     {
         selectOptions_[s]->save(vs);
     }
-        
+ #endif
     //vs->put("query",query_.toStdString());
 }
-
-std::vector<std::string> NodeQuery::lstToVec(QStringList lst) const
-{
-	std::vector<std::string> vec;
-	Q_FOREACH(QString s,lst)
-		vec.push_back(s.toStdString());
-	return vec;
-}
-
-QStringList NodeQuery::vecToLst(const std::vector<std::string>& vec) const
-{
-	QStringList lst;
-	for(std::vector<std::string>::const_iterator it=vec.begin(); it != vec.end(); ++it)
-		lst << QString::fromStdString(*it);
-	return lst;
-}
-
-
diff --git a/Viewer/src/NodeQuery.hpp b/Viewer/src/NodeQuery.hpp
index 94fc93d..9f9c997 100644
--- a/Viewer/src/NodeQuery.hpp
+++ b/Viewer/src/NodeQuery.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -14,7 +14,6 @@
 #include <string>
 #include <vector>
 
-#include <QColor>
 #include <QStringList>
 #include <QMap>
 
@@ -22,68 +21,45 @@
 #include "VSettings.hpp"
 
 class NodeQuery;
+class NodeQueryOption;
+class NodeQueryListOption;
+class VAttributeType;
 
-
-class NodeQueryStringOption
+class NodeQueryAttrGroup
 {
-    friend class NodeQuery;
+//friend class NodeQuery;
 
 public:
-	NodeQueryStringOption(QString name);
-	void swap(const NodeQueryStringOption*);
-
-	//enum MatchMode {ContainsMatch=0,WildcardMatch=1,RegexpMatch=2};
-
-	QString name() const {return name_;}
-	QString value() const {return value_;}
-	const StringMatchMode&  matchMode() const {return matchMode_;}
-	QString matchOperator() const {return QString::fromStdString(matchMode_.matchOperator());}
-	bool caseSensitive() const {return caseSensitive_;}
+    NodeQueryAttrGroup(QString name,QList<VAttributeType*> types,QList<NodeQueryOption*> options) :
+        name_(name), types_(types), options_(options) {}
 
-	void setValue(QString s) {value_=s;}
-	void setMatchMode(StringMatchMode::Mode m) {matchMode_.setMode(m);}
-	void setMatchMode(const StringMatchMode& m) {matchMode_=m;}
-	void setCaseSensitive(bool b) {caseSensitive_=b;}
-
-	void load(VSettings*);
-	void save(VSettings*);
+    QString name() const {return name_;}
+    virtual bool hasType(VAttributeType* t) const {return types_.contains(t);}
+    QList<NodeQueryOption*> options() const {return options_;}
+    QString query() const;
 
 protected:
-	QString name_;
-	QString value_;
-	StringMatchMode matchMode_;
-	bool caseSensitive_;
-    
-    static StringMatchMode::Mode defaultMatchMode_;
-    static bool defaultCaseSensitive_;
-	//static QMap<MatchMode,QString> matchOper_;
+    QString name_;
+    QList<VAttributeType*> types_;
+    QList<NodeQueryOption*> options_;
 };
 
-class NodeQuerySelectOption
+class NodeQueryVarAttrGroup : public  NodeQueryAttrGroup
 {
-	friend class NodeQuery;
-
 public:
-	NodeQuerySelectOption(QString name) : name_(name) {}
-	void swap(const NodeQuerySelectOption*);
-
-	void load(VSettings*);
-	void save(VSettings*);
-
-	QString name() const {return name_;}
-	QStringList selection() const {return selection_;}
-
-protected:
-	QString name_;
-	QStringList selection_;
+    NodeQueryVarAttrGroup(QString name,QList<VAttributeType*> types,QList<NodeQueryOption*> options) :
+      NodeQueryAttrGroup(name,types,options) {}
+    
+    bool hasType(VAttributeType*) const;
 };
 
-
 class NodeQuery
 {
+friend class  NodeQueryOption;
+
 public:
 	NodeQuery(const std::string& name,bool ignoreMaxNum=false);
-	~NodeQuery();
+    ~NodeQuery();
     NodeQuery* clone();
 	NodeQuery* clone(const std::string& name);
 
@@ -92,20 +68,21 @@ public:
 	void  setName(const std::string& name);
 	const std::string& name() const {return name_;}
 
-	void  setQuery(QString);
-	const QString query() const {return query_;}
+	QString query() const;
+    QString sqlQuery() const {return sqlQuery_;}
+    QString nodeQueryPart() const;
+    QString attrQueryPart() const;
+    QString attrQueryPart(VAttributeType*) const;
+    bool hasAttribute(VAttributeType*) const;
+    QStringList attrSelection() const;
+    NodeQueryListOption* stateOption() const;
 
 	void setRootNode(const std::string& rootNode) {rootNode_=rootNode;}
 	const std::string& rootNode() const {return rootNode_;}
-
-	//void setServers(QStringList servers,bool all=false) {servers_=servers; allServers_=all;}
-	void setServers(QStringList servers) {servers_=servers;}
-	//const std::vector<std::string>& servers() const {return servers_;}
+	void setServers(QStringList servers) {servers_=servers;}	
 	QStringList servers() const {return servers_;}
 	bool hasServer(const std::string& name) const;
-	void adjustServers(const std::vector<std::string>& servers);
 
-	QString extQueryHtml(bool multi,QColor bgCol,int firstColWidth) const;
 	void buildQueryString();
 
 	int maxNum() const {return maxNum_;}
@@ -115,63 +92,27 @@ public:
 	void setCaseSensitive(bool b) {caseSensitive_=b;}
 	bool caseSensitive() const {return caseSensitive_;}
 
-	NodeQueryStringOption* stringOption(QString name) const;
-
-	QStringList typeSelection() const;
-	QStringList stateSelection() const;
-	QStringList flagSelection() const;
-	QStringList attrGroupSelection() const;
-
-	std::vector<std::string> typeSelectionVec() const;
-	std::vector<std::string>stateSelectionVec() const;
-	std::vector<std::string>flagSelectionVec() const;
-	std::vector<std::string>attrGroupSelectionVec() const;
-
-	void setTypeSelection(QStringList);
-	void setStateSelection(QStringList);
-	void setFlagSelection(QStringList);
-	void setAttrGroupSelection(QStringList);
-
-	void setTypeSelection(const std::vector<std::string>&);
-	void setStateSelection(const std::vector<std::string>&);
-	void setFlagSelection(const std::vector<std::string>&);
-	void setAttrGroupSelection(const std::vector<std::string>&);
-
-	static QStringList typeTerms() {return typeTerms_;}
-	static QStringList stateTerms() {return stateTerms_;}
-	static QStringList flagTerms() {return flagTerms_;}
-	static QStringList attrGroupTerms() {return attrGroupTerms_;}
-	static QStringList attrTerms(QString group) {return attrTerms_.value(group);}
+    NodeQueryOption* option(QString name) const;
+    QMap<QString,NodeQueryAttrGroup*> attrGroup() {return attrGroup_;}
 
 	void load(VSettings*);
 	void save(VSettings*);
 
 protected:
 	void checkDir();
-	std::vector<std::string> lstToVec(QStringList) const;
-	QStringList vecToLst(const std::vector<std::string>&) const;
 
 	std::string name_;
 	bool advanced_;	
 	std::string rootNode_;
 	QStringList servers_;
 	bool allServers_;
-    QString query_;
     QMap<QString,QString> extQuery_;
+    QString sqlQuery_;
     bool caseSensitive_;
     int maxNum_;
     bool ignoreMaxNum_;
-
-	QMap<QString,NodeQueryStringOption*> stringOptions_;
-	QMap<QString,NodeQuerySelectOption*> selectOptions_;
-
-	static QStringList nodeTerms_;
-	static QStringList typeTerms_;
-	static QStringList stateTerms_;
-	static QStringList flagTerms_;
-	static QStringList attrGroupTerms_;
-	static QMap<QString,QStringList> attrTerms_;
-
+    QMap<QString,NodeQueryOption*> options_;
+    QMap<QString,NodeQueryAttrGroup*> attrGroup_;
 	static bool defaultCaseSensitive_;
 	static int defaultMaxNum_;
 };
diff --git a/Viewer/src/NodeQueryEditor.cpp b/Viewer/src/NodeQueryEditor.cpp
index a28cba2..e50b75a 100644
--- a/Viewer/src/NodeQueryEditor.cpp
+++ b/Viewer/src/NodeQueryEditor.cpp
@@ -8,7 +8,6 @@
 //
 //============================================================================
 
-
 #include "NodeQueryEditor.hpp"
 
 #include "ComboMulti.hpp"
@@ -16,6 +15,8 @@
 #include "Highlighter.hpp"
 #include "NodeQuery.hpp"
 #include "NodeQueryHandler.hpp"
+#include "NodeQueryOption.hpp"
+#include "NodeQueryOptionEdit.hpp"
 #include "ServerFilter.hpp"
 #include "ServerHandler.hpp"
 #include "VNode.hpp"
@@ -78,25 +79,23 @@ NodeQueryEditor::NodeQueryEditor(QWidget *parent) :
 	serverFilter_(NULL),
 	queryTeCanExpand_(false),
 	initIsOn_(false),
-	canBeRun_(false)
+    canBeRun_(false),
+    filterMode_(false)
 {
     setupUi(this);
 
     query_=new NodeQuery("tmp");
-    attrPanel_->setQuery(query_);
+    //attrPanel_->setQuery(query_);
 
 #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
-    nameLe_->setClearButtonEnabled(true);
-    pathLe_->setClearButtonEnabled(true);
     rootLe_->setClearButtonEnabled(true);
 #endif
 
-#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
-	nameLe_->setPlaceholderText(tr("ANY"));
-	pathLe_->setPlaceholderText(tr("ANY"));
-#endif
+    Q_ASSERT(tab_->count() == 2);
+    nodeTabText_=tab_->tabText(0);
+    attrTabText_=tab_->tabText(1);
 
-	//-------------------------
+    //-------------------------
     // Query display
 	//-------------------------
 
@@ -114,7 +113,7 @@ NodeQueryEditor::NodeQueryEditor(QWidget *parent) :
 
 	queryTe_->setFixedHeight((fm.height()+2)*3+6);
 	queryTe_->setReadOnly(true);
-	queryTe_->setWordWrapMode(QTextOption::NoWrap);
+    queryTe_->setWordWrapMode(QTextOption::WordWrap);
 
     Highlighter* ih=new Highlighter(queryTe_->document(),"query");
 
@@ -154,93 +153,65 @@ NodeQueryEditor::NodeQueryEditor(QWidget *parent) :
     connect(rootLe_,SIGNAL(textChanged(QString)),
            this,SLOT(slotRootNodeEdited(QString)));
 
-    //Name
-    connect(nameLe_,SIGNAL(textChanged(QString)),
-           this,SLOT(slotNameEdited(QString)));
-
-    connect(nameMatchCb_,SIGNAL(currentIndexChanged(int)),
-           this,SLOT(slotNameMatchChanged(int)));
-
-    /*connect(nameCaseTb_,SIGNAL(changed(bool)),
-           this,SLOT(slotNameCaseChanged(bool)));*/
-
-    //Path
-    connect(pathLe_,SIGNAL(textChanged(QString)),
-           this,SLOT(slotPathEdited(QString)));
+    //nodePathGrid_
 
-    connect(pathMatchCb_,SIGNAL(currentIndexChanged(int)),
-           this,SLOT(slotPathMatchChanged(int)));
-
-    /*connect(pathCaseTb_,SIGNAL(changed(bool)),
-           this,SLOT(slotPathCaseChanged(bool)));*/
+    //Name
+    nameEdit_=new NodeQueryStringOptionEdit(query_->option("node_name"),nodeGrid_,this,false);
+    pathEdit_=new NodeQueryStringOptionEdit(query_->option("node_path"),nodeGrid_,this,false);
 
     //-------------------------
     // Filter
     //-------------------------
 
     //Node type
-    typeList_->addItems(NodeQuery::typeTerms(),false);
+    typeEdit_=new NodeQueryListOptionEdit(query_->option("type"),typeList_,typeResetTb_,this);
+    stateEdit_=new NodeQueryListOptionEdit(query_->option("state"),stateList_,stateResetTb_,this);
+    flagEdit_=new NodeQueryListOptionEdit(query_->option("flag"),flagList_,flagResetTb_,this);
 
-    connect(typeList_,SIGNAL(selectionChanged()),
-            this,SLOT(slotTypeListChanged()));
+    attrEdit_=new NodeQueryListOptionEdit(query_->option("attribute"),attrList_,attrResetTb_,this);
 
-    connect(typeResetTb_,SIGNAL(clicked()),
-          	typeList_,SLOT(clearSelection()));
-
-    //Node state
-    stateList_->addItems(NodeQuery::stateTerms(),false); //,stateColLst);
-
-    connect(stateList_,SIGNAL(selectionChanged()),
-           this,SLOT(slotStateListChanged()));
-
-    connect(stateResetTb_,SIGNAL(clicked()),
-          	stateList_,SLOT(clearSelection()));
-
-    /*QStringList stateLst;
-    stateLst << "aborted" << "active" << "complete" << "queued" << "submitted" << "suspended" << "unknown";
-    QList<QColor> stateColLst;
-    Q_FOREACH(QString s,stateLst)
-    {
-    	if(VNState* vn=VNState::find(s.toStdString()))
-    	{
-    		stateColLst << vn->colour();
-    	}
-    	else
-    	{
-    		stateColLst << QColor();
-    	}
-    }
-
-    stateList_->addItems(stateLst,false); //,stateColLst);*/
+    int listHeight=(fm.height()+2)*6+6;
+    typeList_->setFixedHeight(listHeight);
+    stateList_->setFixedHeight(listHeight);
+    flagList_->setFixedHeight(listHeight);
 
-    //Node flags
-    flagList_->addItems(NodeQuery::flagTerms(),false);
+    listHeight=(fm.height()+2)*10+6;
+    int listWidth=fm.width("variable")+60;
+    attrList_->setFixedHeight(listHeight);
+    attrList_->setFixedWidth(listWidth);
 
-    connect(flagList_,SIGNAL(selectionChanged()),
-           this,SLOT(slotFlagListChanged()));
+    //Attr panel
+    //connect(attrPanel_,SIGNAL(queryChanged()),
+    //        this,SLOT(slotAttrPanelChanged()));
 
-    connect(flagResetTb_,SIGNAL(clicked()),
-            flagList_,SLOT(clearSelection()));
 
     //Attributes
-    attrList_->addItems(NodeQuery::attrGroupTerms(),false);
 
-    connect(attrList_,SIGNAL(selectionChanged()),
-           this,SLOT(slotAttrListChanged()));
+    attrPanel_->setProperty("attrArea","1");
+    Q_FOREACH(NodeQueryAttrGroup* aGrp,query_->attrGroup().values())
+    {
+        Q_ASSERT(aGrp);
+        QString grName=aGrp->name();
+
+        Q_FOREACH(NodeQueryOption* op,aGrp->options())
+        {
+            NodeQueryOptionEdit *e=0;
+            //TODO: use factory here
+            if(op->type() == "string")
+                e=new NodeQueryStringOptionEdit(op,attrGrid_,this,false);
+            else if(op->type() == "combo")
+                e=new NodeQueryComboOptionEdit(op,attrGrid_,this);
+
+            Q_ASSERT(e);
+            attr_[grName] << e;
+            e->setVisible(false);
+        }
+    }
 
-    connect(attrResetTb_,SIGNAL(clicked()),
-            attrList_,SLOT(clearSelection()));
+    attrPanelLayout_->addStretch(1);
+    //attrPanel_->hide();
 
-    int listHeight=(fm.height()+2)*6+6;
-    typeList_->setFixedHeight(listHeight);
-    stateList_->setFixedHeight(listHeight);
-    flagList_->setFixedHeight(listHeight);
-    attrList_->setFixedHeight(listHeight);
-
-    typeResetTb_->setEnabled(typeList_->hasSelection());
-    stateResetTb_->setEnabled(stateList_->hasSelection());
-    flagResetTb_->setEnabled(flagList_->hasSelection());
-    attrResetTb_->setEnabled(attrList_->hasSelection());
+    tab_->setCurrentIndex(0);
 
     //--------------------------------
     // Query management
@@ -249,7 +220,6 @@ NodeQueryEditor::NodeQueryEditor(QWidget *parent) :
     connect(saveAsTb_,SIGNAL(clicked()),
     		this,SLOT(slotSaveQueryAs()));
 
-
     connect(advModeTb_,SIGNAL(clicked(bool)),
        		this,SLOT(slotAdvMode(bool)));
 
@@ -261,9 +231,11 @@ NodeQueryEditor::NodeQueryEditor(QWidget *parent) :
     saveAsTb_->hide();
     saveTb_->hide();*/
 
-    attrList_->hide();
-    attrLabel_->hide();
-    attrResetTb_->hide();
+    //attrList_->hide();
+    //attrLabel_->hide();
+    //attrResetTb_->hide();
+
+    init();
 
     checkGuiState();
 }
@@ -276,6 +248,15 @@ NodeQueryEditor::~NodeQueryEditor()
 		serverFilter_->removeObserver(this);
 }
 
+void NodeQueryEditor::setFilterMode(bool b)
+{
+    if(filterMode_ != b)
+    {
+        filterMode_=b;
+        tab_->setTabEnabled(1,!filterMode_);
+    }
+}
+
 void NodeQueryEditor::init()
 {
 	initIsOn_=true;
@@ -294,26 +275,16 @@ void NodeQueryEditor::init()
 		serverCb_->setSelection(servers);
 
 	//Node name
-	NodeQueryStringOption* op=query_->stringOption("node_name");
-	assert(op);
-	nameLe_->setText(op->value());
-	nameMatchCb_->setMatchMode(op->matchMode());
-	//nameCaseTb_->setChecked(op->caseSensitive());
-
-	//Node path
-	op=query_->stringOption("node_path");
-	assert(op);
-	pathLe_->setText(op->value());
-	pathMatchCb_->setMatchMode(op->matchMode());
-	//pathCaseTb_->setChecked(op->caseSensitive());
+    nameEdit_->init(query_);
+    pathEdit_->init(query_);
 
 	//Lists
-	typeList_->setSelection(query_->typeSelection());
-	stateList_->setSelection(query_->stateSelection());
-	flagList_->setSelection(query_->flagSelection());
-	attrList_->setSelection(query_->attrGroupSelection());
+    typeEdit_->init(query_);
+    stateEdit_->init(query_);
+    flagEdit_->init(query_);
+    attrEdit_->init(query_);
 
-	attrPanel_->init();
+    //attrPanel_->init();
 
 	initIsOn_=false;
 
@@ -321,9 +292,12 @@ void NodeQueryEditor::init()
 	checkGuiState();
 }
 
+#if 0
 void NodeQueryEditor::setQueryTeCanExpand(bool b)
 {
-	queryTeCanExpand_=b;
+    return;
+
+    queryTeCanExpand_=b;
 	if(queryTeCanExpand_)
 	{
 		queryTe_->setFixedHeight(QWIDGETSIZE_MAX);
@@ -333,13 +307,13 @@ void NodeQueryEditor::setQueryTeCanExpand(bool b)
 		adjustQueryTe();
 	}
 }
+#endif
 
-void NodeQueryEditor::toggleDefPanelVisible()
+void NodeQueryEditor::showDefPanel(bool b)
 {
-	bool b=isDefPanelVisible();
-	scopeBox_->setVisible(!b);
-	filterBox_->setVisible(!b);
-	optionBox_->setVisible(!b);
+    scopeBox_->setVisible(b);
+    optionBox_->setVisible(b);
+    tab_->setVisible(b);
 }
 
 bool NodeQueryEditor::isDefPanelVisible() const
@@ -347,19 +321,23 @@ bool NodeQueryEditor::isDefPanelVisible() const
 	return scopeBox_->isVisible();
 }
 
+void NodeQueryEditor::showQueryPanel(bool b)
+{
+    queryLabel_->setVisible(b);
+    queryTe_->setVisible(b);
+}
+
+bool NodeQueryEditor::isQueryPanelVisible() const
+{
+    return queryTe_->isVisible();
+}
+
 void NodeQueryEditor::slotAdvMode(bool b)
 {
-	filterBox_->setVisible(!b);
+#if 0
+    //	filterBox_->setVisible(!b);
 	queryTe_->setReadOnly(!b);
-
-	if(b)
-	{
-		adjustQueryTe(6);
-	}
-	else
-	{
-		adjustQueryTe();
-	}
+#endif
 }
 
 void NodeQueryEditor::slotMaxNum(int v)
@@ -402,112 +380,42 @@ void NodeQueryEditor::slotRootNodeEdited(QString s)
 	}
 }
 
-void NodeQueryEditor::slotNameEdited(QString val)
-{
-	if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_name");
-		assert(op);
-		op->setValue(val);
-		updateQueryTe();
-		checkGuiState();
-	}
-}
-
-void NodeQueryEditor::slotNameMatchChanged(int val)
-{
-	if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_name");
-		assert(op);
-		op->setMatchMode(nameMatchCb_->matchMode(val));
-		updateQueryTe();
-		checkGuiState();
-	}
-}
-
-
-void NodeQueryEditor::slotNameCaseChanged(bool val)
-{
-	/*if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_name");
-		assert(op);
-		op->setCaseSensitive(val);
-		updateQueryTe();
-		checkGuiState();
-	}*/
-}
-
-void NodeQueryEditor::slotPathEdited(QString val)
-{
-	if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_path");
-		assert(op);
-		op->setValue(val);
-		updateQueryTe();
-		checkGuiState();
-	}
-}
-
-void NodeQueryEditor::slotPathMatchChanged(int val)
+void NodeQueryEditor::slotOptionEditChanged()
 {
-	if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_path");
-		assert(op);
-		op->setMatchMode(pathMatchCb_->matchMode(val));
-		updateQueryTe();
-		checkGuiState();
-	}
-}
+    if(!initIsOn_)
+    {      
+        NodeQueryOptionEdit *e=static_cast<NodeQueryOptionEdit*>(sender());
+        Q_ASSERT(e);
+        if(e->optionId() == "attribute")
+           setAttributePanel(attrList_->selection());
 
-void NodeQueryEditor::slotPathCaseChanged(bool val)
-{
-	/*if(!initIsOn_)
-	{
-		NodeQueryStringOption* op=query_->stringOption("node_path");
-		assert(op);
-		op->setCaseSensitive(val);
-		updateQueryTe();
-		checkGuiState();
-	}*/
+        updateQueryTe();
+        checkGuiState();
+    }
 }
 
-void NodeQueryEditor::slotTypeListChanged()
+void NodeQueryEditor::setAttributePanel(QStringList lst)
 {
-	typeResetTb_->setEnabled(typeList_->hasSelection());
-	if(!initIsOn_)
-	{
-		query_->setTypeSelection(typeList_->selection());
-		updateQueryTe();
-		checkGuiState();
-	}
+    QMapIterator<QString,QList<NodeQueryOptionEdit*> > it(attr_);
+    while (it.hasNext())
+    {
+        it.next();
+        bool st=lst.contains(it.key());
+        Q_FOREACH(NodeQueryOptionEdit* e,it.value())
+        {
+            e->setVisible(st);
+        }
+    }
+#if 0
+    if(lst.isEmpty())
+        attrPanel_->hide();
+    else
+        attrPanel_->show();
+#endif
 }
 
-void NodeQueryEditor::slotStateListChanged()
-{
-	stateResetTb_->setEnabled(stateList_->hasSelection());
-	if(!initIsOn_)
-	{
-		query_->setStateSelection(stateList_->selection());
-		updateQueryTe();
-		checkGuiState();
-	}
-}
-
-void NodeQueryEditor::slotFlagListChanged()
-{
-	flagResetTb_->setEnabled(flagList_->hasSelection());
-	if(!initIsOn_)
-	{
-		query_->setFlagSelection(flagList_->selection());
-		updateQueryTe();
-		checkGuiState();
-	}
-}
 
+#if 0
 void NodeQueryEditor::slotAttrListChanged()
 {
 	if(!initIsOn_)
@@ -519,6 +427,17 @@ void NodeQueryEditor::slotAttrListChanged()
 		checkGuiState();
 	}
 }
+#endif
+
+
+void NodeQueryEditor::slotAttrPanelChanged()
+{
+    if(!initIsOn_)
+    {
+        updateQueryTe();
+        checkGuiState();
+    }
+}
 
 void NodeQueryEditor::checkGuiState()
 {
@@ -528,6 +447,19 @@ void NodeQueryEditor::checkGuiState()
 
 	rootLabel_->setEnabled(oneServer);
 	rootLe_->setEnabled(oneServer);
+
+    QString t=nodeTabText_;
+    if(!query_->nodeQueryPart().isEmpty())
+      t+="*";
+    tab_->setTabText(0,t);
+
+    if(!filterMode_)
+    {
+        t=attrTabText_;
+        if(!query_->attrQueryPart().isEmpty())
+            t+="*";
+        tab_->setTabText(1,t);
+    }
 }
 
 void NodeQueryEditor::updateQueryTe()
@@ -535,54 +467,17 @@ void NodeQueryEditor::updateQueryTe()
 	query_->buildQueryString();
 
 	QColor bg(241,241,241);
-	setQueryTe(query_->extQueryHtml(true,bg,65));
+    queryTe_->setHtml(query_->sqlQuery());
 }
 
-void NodeQueryEditor::setQueryTe(QString s)
+void NodeQueryEditor::slotClear()
 {
-	int rowNum=s.count("<tr>")+s.count("<br>")+1;
-	if(rowNum==0 && !s.isEmpty())
-		rowNum=1;
-
-	int oldRowNum=queryTe_->toPlainText().count("\n")+1;
-	if(oldRowNum==0 && !queryTe_->toPlainText().isEmpty())
-		oldRowNum=1;
-
-	queryTe_->setHtml(s);
-
-	if(!queryTeCanExpand_)
-	{
-        if(oldRowNum != rowNum && (oldRowNum > 3 || rowNum > 3))
-		{
-			QFont f;
-			QFontMetrics fm(f);
-
-			queryTe_->setFixedHeight((fm.height()+2)*rowNum+6);
-		}
-	}
-}
-
-void NodeQueryEditor::adjustQueryTe(int rn)
-{
-	int rowNum=0;
-	if(rn <= 0)
-	{
-		rowNum=queryTe_->toPlainText().count("\n")+1;
-	}
-	else
-	{
-		rowNum=rn;
-	}
-
-	if(rowNum < 3)
-		rowNum=3;
-
-	if(!queryTeCanExpand_)
-	{
-		QFontMetrics fm(queryTe_->font());
-
-		queryTe_->setFixedHeight((fm.height()+2)*rowNum+6);
-	}
+    nameEdit_->clear();
+    pathEdit_->clear();
+    typeEdit_->clear();
+    stateEdit_->clear();
+    flagEdit_->clear();
+    attrEdit_->clear();
 }
 
 //------------------------------------------
diff --git a/Viewer/src/NodeQueryEditor.hpp b/Viewer/src/NodeQueryEditor.hpp
index d0a2c1d..490c317 100644
--- a/Viewer/src/NodeQueryEditor.hpp
+++ b/Viewer/src/NodeQueryEditor.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -14,7 +14,6 @@
 #include "ui_NodeQueryEditor.h"
 #include "ui_NodeQuerySaveDialog.h"
 
-
 #include <QAbstractItemModel>
 #include <QDialog>
 #include <QWidget>
@@ -23,7 +22,9 @@
 #include "VInfo.hpp"
 
 class NodeQuery;
+class NodeQueryDef;
 class NodeQueryListModel;
+class NodeQueryOptionEdit;
 
 class NodeQuerySaveDialog : public QDialog, protected Ui::NodeQuerySaveDialog
 {
@@ -38,7 +39,6 @@ public Q_SLOTS:
 	void accept();
 };
 
-
 class NodeQueryEditor : public QWidget, protected Ui::NodeQueryEditor, public ServerFilterObserver
 {
     Q_OBJECT
@@ -52,29 +52,27 @@ public:
     void setQuery(NodeQuery*);
     NodeQuery* query() const;
     void setQueryTeCanExpand(bool);
-    void toggleDefPanelVisible();
     bool isDefPanelVisible() const;
+    void showDefPanel(bool);
+    bool isQueryPanelVisible() const;
+    void showQueryPanel(bool);
     int maxNum() const;
     QStringList allServers() const;
+    void setFilterMode(bool);
 
     void notifyServerFilterAdded(ServerItem*);
     void notifyServerFilterRemoved(ServerItem*);
     void notifyServerFilterChanged(ServerItem*);
     void notifyServerFilterDelete();
 
+public Q_SLOTS:
+    void slotClear();
+
 protected Q_SLOTS:
-	void slotServerCbChanged();
+    void slotOptionEditChanged();
+    void slotServerCbChanged();
 	void slotRootNodeEdited(QString);
-	void slotNameEdited(QString);
-	void slotNameMatchChanged(int);
-	void slotNameCaseChanged(bool);
-	void slotPathEdited(QString);
-	void slotPathMatchChanged(int);
-	void slotPathCaseChanged(bool);
-	void slotTypeListChanged();
-	void slotStateListChanged();
-	void slotFlagListChanged();
-	void slotAttrListChanged();
+    void slotAttrPanelChanged();
 	void slotSaveQueryAs();
 	void slotAdvMode(bool b);
 	void slotMaxNum(int);
@@ -88,15 +86,25 @@ private:
 	void init();
 	void initAttr();
 	void updateQueryTe();
-	void adjustQueryTe(int rowNum=0);
-	void setQueryTe(QString);
 	void checkGuiState();
+    void setAttributePanel(QStringList lst);
 
 	NodeQuery* query_;
 	ServerFilter* serverFilter_;
 	bool queryTeCanExpand_;
 	bool initIsOn_;
 	bool canBeRun_;
+    bool filterMode_;
+
+    NodeQueryOptionEdit* nameEdit_;
+    NodeQueryOptionEdit* pathEdit_;
+    NodeQueryOptionEdit* typeEdit_;
+    NodeQueryOptionEdit* stateEdit_;
+    NodeQueryOptionEdit* flagEdit_;
+    NodeQueryOptionEdit* attrEdit_;
+    QMap<QString,QList<NodeQueryOptionEdit*> > attr_;
+    QString nodeTabText_;
+    QString attrTabText_;
 };
 
 #endif
diff --git a/Viewer/src/NodeQueryEditor.ui b/Viewer/src/NodeQueryEditor.ui
index e0a12bc..e0fd15c 100644
--- a/Viewer/src/NodeQueryEditor.ui
+++ b/Viewer/src/NodeQueryEditor.ui
@@ -10,11 +10,26 @@
     <height>1113</height>
    </rect>
   </property>
+  <property name="sizePolicy">
+   <sizepolicy hsizetype="Preferred" vsizetype="Minimum">
+    <horstretch>0</horstretch>
+    <verstretch>0</verstretch>
+   </sizepolicy>
+  </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
   <layout class="QVBoxLayout" name="verticalLayout_4">
-   <property name="margin">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
     <number>0</number>
    </property>
    <item>
@@ -90,7 +105,7 @@
            <string>...</string>
           </property>
           <property name="icon">
-           <iconset resource="viewer.qrc">
+           <iconset>
             <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
           </property>
           <property name="autoRaise">
@@ -121,7 +136,7 @@
      <item>
       <widget class="QGroupBox" name="optionBox_">
        <property name="title">
-        <string>Options</string>
+        <string>Global options</string>
        </property>
        <layout class="QVBoxLayout" name="verticalLayout">
         <item>
@@ -158,163 +173,176 @@
     </layout>
    </item>
    <item>
-    <widget class="QGroupBox" name="filterBox_">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Preferred">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="title">
-      <string>Nodes</string>
+    <widget class="QTabWidget" name="tab_">
+     <property name="currentIndex">
+      <number>1</number>
      </property>
-     <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,1">
-      <property name="sizeConstraint">
-       <enum>QLayout::SetMinAndMaxSize</enum>
-      </property>
-      <item>
-       <layout class="QGridLayout" name="gridLayout_3">
-        <item row="0" column="0">
-         <widget class="QLabel" name="label_7">
-          <property name="text">
-           <string>Name:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0">
-         <widget class="QLabel" name="label_9">
-          <property name="text">
-           <string>Path:</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="1">
-         <widget class="StringMatchCombo" name="nameMatchCb_"/>
-        </item>
-        <item row="0" column="2">
-         <widget class="QLineEdit" name="nameLe_"/>
-        </item>
-        <item row="1" column="1">
-         <widget class="StringMatchCombo" name="pathMatchCb_"/>
-        </item>
-        <item row="1" column="2">
-         <widget class="QLineEdit" name="pathLe_"/>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <layout class="QGridLayout" name="gridLayout">
-        <item row="0" column="4">
-         <widget class="QLabel" name="label_8">
-          <property name="text">
-           <string>Flag</string>
+     <widget class="QWidget" name="nodeTab_">
+      <attribute name="title">
+       <string>Nodes</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="nodeLayout_" stretch="0,1">
+       <item>
+        <layout class="QGridLayout" name="nodeGrid_"/>
+       </item>
+       <item>
+        <layout class="QGridLayout" name="gridLayout">
+         <item row="0" column="4">
+          <widget class="QLabel" name="label_8">
+           <property name="text">
+            <string>Flag</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="0">
+          <widget class="QLabel" name="label">
+           <property name="text">
+            <string>Type</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="3">
+          <widget class="QToolButton" name="stateResetTb_">
+           <property name="toolTip">
+            <string>Clear status filter</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="1">
+          <widget class="QToolButton" name="typeResetTb_">
+           <property name="toolTip">
+            <string>Clear type filter</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="2">
+          <widget class="QLabel" name="label_5">
+           <property name="text">
+            <string>Status</string>
+           </property>
+          </widget>
+         </item>
+         <item row="0" column="5">
+          <widget class="QToolButton" name="flagResetTb_">
+           <property name="toolTip">
+            <string>Clear flag filter</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item row="1" column="0" colspan="2">
+          <widget class="CustomListWidget" name="typeList_"/>
+         </item>
+         <item row="1" column="2" colspan="2">
+          <widget class="CustomListWidget" name="stateList_"/>
+         </item>
+         <item row="1" column="4" colspan="2">
+          <widget class="CustomListWidget" name="flagList_"/>
+         </item>
+        </layout>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="attrTab_">
+      <attribute name="title">
+       <string>Attributes</string>
+      </attribute>
+      <layout class="QGridLayout" name="gridLayout_4">
+       <item row="0" column="0">
+        <layout class="QHBoxLayout" name="horizontalLayout_4">
+         <item>
+          <widget class="QLabel" name="label_3">
+           <property name="text">
+            <string>Types</string>
+           </property>
+          </widget>
+         </item>
+         <item>
+          <widget class="QToolButton" name="attrResetTb_">
+           <property name="text">
+            <string>.a..</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+        </layout>
+       </item>
+       <item row="1" column="0">
+        <widget class="CustomListWidget" name="attrList_">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="3">
+        <widget class="QScrollArea" name="scrollArea">
+         <property name="widgetResizable">
+          <bool>true</bool>
+         </property>
+         <widget class="QWidget" name="attrPanel_">
+          <property name="geometry">
+           <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>1281</width>
+            <height>683</height>
+           </rect>
           </property>
+          <layout class="QVBoxLayout" name="attrPanelLayout_">
+           <item>
+            <layout class="QGridLayout" name="attrGrid_"/>
+           </item>
+          </layout>
          </widget>
-        </item>
-        <item row="0" column="6">
-         <widget class="QLabel" name="attrLabel_">
-          <property name="text">
-           <string>Attributes</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="0">
-         <widget class="QLabel" name="label">
-          <property name="text">
-           <string>Type</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="3">
-         <widget class="QToolButton" name="stateResetTb_">
-          <property name="toolTip">
-           <string>Clear status filter</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="viewer.qrc">
-            <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="7">
-         <widget class="QToolButton" name="attrResetTb_">
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="viewer.qrc">
-            <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="6" colspan="2">
-         <widget class="CustomListWidget" name="attrList_"/>
-        </item>
-        <item row="0" column="1">
-         <widget class="QToolButton" name="typeResetTb_">
-          <property name="toolTip">
-           <string>Clear type filter</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="viewer.qrc">
-            <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="2">
-         <widget class="QLabel" name="label_5">
-          <property name="text">
-           <string>Status</string>
-          </property>
-         </widget>
-        </item>
-        <item row="0" column="5">
-         <widget class="QToolButton" name="flagResetTb_">
-          <property name="toolTip">
-           <string>Clear flag filter</string>
-          </property>
-          <property name="text">
-           <string>...</string>
-          </property>
-          <property name="icon">
-           <iconset resource="viewer.qrc">
-            <normaloff>:/viewer/reset_to_default.svg</normaloff>:/viewer/reset_to_default.svg</iconset>
-          </property>
-          <property name="autoRaise">
-           <bool>true</bool>
-          </property>
-         </widget>
-        </item>
-        <item row="1" column="0" colspan="2">
-         <widget class="CustomListWidget" name="typeList_"/>
-        </item>
-        <item row="1" column="2" colspan="2">
-         <widget class="CustomListWidget" name="stateList_"/>
-        </item>
-        <item row="1" column="4" colspan="2">
-         <widget class="CustomListWidget" name="flagList_"/>
-        </item>
-       </layout>
-      </item>
-      <item>
-       <widget class="AttributeSearchPanel" name="attrPanel_" native="true"/>
-      </item>
-     </layout>
+        </widget>
+       </item>
+       <item row="0" column="3">
+        <widget class="QLabel" name="label_4">
+         <property name="text">
+          <string>Attribute-specific options</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </widget>
     </widget>
    </item>
    <item>
@@ -323,14 +351,27 @@
       <number>4</number>
      </property>
      <item>
-      <widget class="QLabel" name="label_2">
+      <widget class="QLabel" name="queryLabel_">
        <property name="text">
         <string>Query</string>
        </property>
       </widget>
      </item>
      <item>
-      <widget class="QTextEdit" name="queryTe_"/>
+      <widget class="QTextEdit" name="queryTe_">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Expanding" vsizetype="Preferred">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="toolTip">
+        <string>This is the query presented in a MySQL-like syntax.</string>
+       </property>
+       <property name="readOnly">
+        <bool>true</bool>
+       </property>
+      </widget>
      </item>
     </layout>
    </item>
@@ -343,29 +384,16 @@
    <header location="global">ComboMulti.hpp</header>
   </customwidget>
   <customwidget>
-   <class>AttributeSearchPanel</class>
-   <extends>QWidget</extends>
-   <header>AttributeSearchPanel.hpp</header>
-   <container>1</container>
-  </customwidget>
-  <customwidget>
    <class>CustomListWidget</class>
    <extends>QListWidget</extends>
    <header>CustomListWidget.hpp</header>
   </customwidget>
   <customwidget>
-   <class>StringMatchCombo</class>
-   <extends>QComboBox</extends>
-   <header>StringMatchCombo.hpp</header>
-  </customwidget>
-  <customwidget>
    <class>NodeQueryCombo</class>
    <extends>QComboBox</extends>
    <header>NodeQueryCombo.hpp</header>
   </customwidget>
  </customwidgets>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/NodeQueryEngine.cpp b/Viewer/src/NodeQueryEngine.cpp
index 7caff9c..47d4632 100644
--- a/Viewer/src/NodeQueryEngine.cpp
+++ b/Viewer/src/NodeQueryEngine.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,214 +10,317 @@
 
 #include "NodeQueryEngine.hpp"
 
+#include <QtAlgorithms>
 #include <QStandardItemModel>
 
 #include "NodeExpression.hpp"
 #include "NodeQuery.hpp"
 #include "ServerDefsAccess.hpp"
 #include "ServerHandler.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
+#include "VAttributeType.hpp"
 #include "VFilter.hpp"
 #include "VNode.hpp"
 
 static bool metaRegistered=false;
 
 NodeQueryEngine::NodeQueryEngine(QObject* parent) :
-	QThread(parent),
-	query_(new NodeQuery("tmp")),
-	parser_(NULL),
-	stopIt_(false),
-	cnt_(0),
-	scanCnt_(0),
-	maxNum_(250000),
-	chunkSize_(100),
-	rootNode_(0)
+    QThread(parent),
+    query_(new NodeQuery("tmp")),
+    parser_(NULL),
+    stopIt_(false),
+    maxReached_(false),
+    cnt_(0),
+    scanCnt_(0),
+    maxNum_(250000),
+    chunkSize_(100),
+    rootNode_(0)
 {
-	//We will need to pass various non-Qt types via signals and slots
-	//So we need to register these types.
-	if(!metaRegistered)
-	{
-		qRegisterMetaType<NodeQueryResultTmp_ptr>("NodeQueryResultTmp_ptr");
-		qRegisterMetaType<QList<NodeQueryResultTmp_ptr> >("QList<NodeQueryResultTmp_ptr>");
-		metaRegistered=true;
-	}
-
-	connect(this,SIGNAL(finished()),
-			this,SLOT(slotFinished()));
+    //We will need to pass various non-Qt types via signals and slots
+    //So we need to register these types.
+    if(!metaRegistered)
+    {
+        qRegisterMetaType<NodeQueryResultTmp_ptr>("NodeQueryResultTmp_ptr");
+        qRegisterMetaType<QList<NodeQueryResultTmp_ptr> >("QList<NodeQueryResultTmp_ptr>");
+        metaRegistered=true;
+    }
+
+    connect(this,SIGNAL(finished()),
+            this,SLOT(slotFinished()));
 }
 
 NodeQueryEngine::~NodeQueryEngine()
 {
-	delete query_;
+    delete query_;
 
-	if(parser_)
-		delete parser_;
+    if(parser_)
+        delete parser_;
 }
 
 bool NodeQueryEngine::runQuery(NodeQuery* query,QStringList allServers)
 {
-	if(isRunning())
-		wait();
+    UiLog().dbg() << "NodeQueryEngine::runQuery -->";
 
-	stopIt_=false;
-	res_.clear();
-	cnt_=0;
-	scanCnt_=0;
-	rootNode_=0;
+    if(isRunning())
+        wait();
 
-	query_->swap(query);
+    stopIt_=false;
+    maxReached_=false;
+    res_.clear();
+    cnt_=0;
+    scanCnt_=0;
+    rootNode_=0;
 
-	maxNum_=query_->maxNum();
+    query_->swap(query);
 
-	servers_.clear();
+    maxNum_=query_->maxNum();
 
-	if(parser_)
-		delete parser_;
+    servers_.clear();
 
-	UserMessage::message(UserMessage::DBG,false, std::string("Query: " + query_->query().toStdString()));
+    //Init the parsers
+    if(parser_)
+    {
+        delete parser_;
+        parser_=NULL;
+    }
 
-    parser_=NodeExpressionParser::instance()->parseWholeExpression(query_->query().toStdString(), query->caseSensitive());
-	if(parser_ == NULL)
-	{
-		UserMessage::message(UserMessage::ERROR,true, std::string("Error, unable to parse enabled condition: " + query_->query().toStdString()));
-        return false;
-	}
-
-	QStringList serverNames=query_->servers();
-	if(query_->servers().isEmpty())
-		serverNames=allServers;
-
-	Q_FOREACH(QString s,serverNames)
-	{
-		if(ServerHandler* server=ServerHandler::find(s.toStdString()))
-		{
-			servers_.push_back(server);
-		}
-	}
-
-	if(!query_->rootNode().empty())
-	{
-		if(servers_.size() != 1)
-            return false;
+    qDeleteAll(attrParser_);
+    attrParser_.clear();
 
-		rootNode_=servers_.at(0)->vRoot()->find(query_->rootNode());
-	}
+    //The nodequery parser
+    UiLog().dbg() << " node part: " << query_->nodeQueryPart().toStdString();
 
-	//Notify the servers that the search began
-	Q_FOREACH(ServerHandler* s,servers_)
-	{
-		s->searchBegan();
-	}
+    parser_=NodeExpressionParser::instance()->parseWholeExpression(query_->nodeQueryPart().toStdString(), query->caseSensitive());
+    if(parser_ == NULL)
+    {
+        UiLog().err() << " unable to parse node query: " << query_->nodeQueryPart().toStdString();
+        UserMessage::message(UserMessage::ERROR,true,"Error, unable to parse node query: " + query_->nodeQueryPart().toStdString());
+        return false;
+    }
+
+    QStringList serverNames=query_->servers();
+    if(query_->servers().isEmpty())
+        serverNames=allServers;
+
+    Q_FOREACH(QString s,serverNames)
+    {
+        if(ServerHandler* server=ServerHandler::find(s.toStdString()))
+        {
+            servers_.push_back(server);
+        }
+    }
+
+    if(!query_->rootNode().empty())
+    {
+        if(servers_.size() != 1)
+            return false;
 
-	//Start thread execution
-	start();
+        rootNode_=servers_.at(0)->vRoot()->find(query_->rootNode());
+        if(!rootNode_)
+        {
+            UiLog().err() << " the specified root node does not exist: " << query_->rootNode();
+            UserMessage::message(UserMessage::ERROR,true,
+                         "Error, the specified root node <u>does not</u> exist: " + query_->rootNode());
+            return false;
+        }
+    }
+
+    //The attribute parser
+    UiLog().dbg() << " full attr part: " << query_->attrQueryPart().toStdString();
+
+    for(std::vector<VAttributeType*>::const_iterator it=VAttributeType::types().begin();
+        it != VAttributeType::types().end(); ++it)
+    {
+        if(query_->hasAttribute(*it))
+        {
+            QString attrPart=(query_->attrQueryPart(*it));
+            UiLog().dbg() << "  " << (*it)->strName() << ": " << attrPart.toStdString();
+            BaseNodeCondition* ac=NodeExpressionParser::instance()->parseWholeExpression(attrPart.toStdString(), query->caseSensitive());
+            if(!ac)
+            {
+                UiLog().err() << "  unable to parse attribute query: " << attrPart.toStdString();
+                UserMessage::message(UserMessage::ERROR,true, "Error, unable to parse attribute query: " + attrPart.toStdString());
+                return false;
+            }
+            attrParser_[*it]=ac;
+         }
+    }
+
+    //Notify the servers that the search began
+    Q_FOREACH(ServerHandler* s,servers_)
+    {
+        s->searchBegan();
+    }
+
+    //Start thread execution
+    start();
+
+    UiLog().dbg() << "<-- runQuery";
 
     return true;
 }
 
 void NodeQueryEngine::stopQuery()
 {
-	stopIt_=true;
+    stopIt_=true;
     wait();
 }
 
 void NodeQueryEngine::run()
 {
-	if(rootNode_)
-	{
-		run(servers_.at(0),rootNode_);
-	}
-	else
-	{
-		for(std::vector<ServerHandler*>::const_iterator it=servers_.begin(); it != servers_.end(); ++it)
-		{
-			ServerHandler *server=*it;
-
-			run(server,server->vRoot());
-
-			if(stopIt_)
-			{
-				broadcastChunk(true);
-				return;
-			}
-		}
-	}
-
-	broadcastChunk(true);
+    if(rootNode_)
+    {
+        run(servers_.at(0),rootNode_);
+    }
+    else
+    {
+        for(std::vector<ServerHandler*>::const_iterator it=servers_.begin(); it != servers_.end(); ++it)
+        {
+            ServerHandler *server=*it;
+
+            run(server,server->vRoot());
+
+            if(stopIt_)
+            {
+                broadcastChunk(true);
+                return;
+            }
+        }
+    }
+
+    broadcastChunk(true);
 }
 
 void NodeQueryEngine::run(ServerHandler *server,VNode* root)
 {
-	runRecursively(root);
+    runRecursively(root);
 }
 
+
 void NodeQueryEngine::runRecursively(VNode *node)
 {
-	if(stopIt_)
-		return;
-
-	if(parser_->execute(node))
-	{
-		broadcastFind(node);
-	}
-
-	scanCnt_++;
-
-	for(int i=0; i < node->numOfChildren(); i++)
-	{
-		runRecursively(node->childAt(i));
-		if(stopIt_)
-			return;
-	}
+    if(stopIt_)
+        return;
+
+    //Execute the node part
+    if(parser_->execute(node))
+    {
+        if(!attrParser_.isEmpty())
+        {
+            QMap<VAttributeType*,BaseNodeCondition*>::const_iterator it = attrParser_.constBegin();
+            while (it != attrParser_.constEnd())
+            {        
+                QList<VItemTmp_ptr> aLst;
+                it.key()->items(node,aLst);
+
+                Q_FOREACH(VItemTmp_ptr aItem,aLst)
+                {
+                    VAttribute* a=aItem->attribute();
+                    Q_ASSERT(a);
+                    if(it.value()->execute(a))
+                    {
+                        broadcastFind(node,a->data());
+                        scanCnt_++;
+                    }
+                }
+                ++it;
+            }
+
+
+        }
+        else
+        {
+            broadcastFind(node);
+            scanCnt_++;
+        }
+    }
+
+    for(int i=0; i < node->numOfChildren(); i++)
+    {
+        runRecursively(node->childAt(i));
+        if(stopIt_)
+            return;
+    }
+}
+
+void NodeQueryEngine::broadcastFind(VNode* node,QStringList attr)
+{
+    Q_ASSERT(node);
+
+    if(!attr.isEmpty())
+    {
+        NodeQueryResultTmp_ptr d(new NodeQueryResultTmp(node,attr));
+        res_ << d;
+        //qDebug() << "RES" << attr;
+    }
+    else
+    {
+        NodeQueryResultTmp_ptr d(new NodeQueryResultTmp(node));
+        res_ << d;
+    }
+
+    broadcastChunk(false);
+
+    cnt_++;
+
+    if(cnt_ >= maxNum_)
+    {
+        broadcastChunk(true);
+        stopIt_=true;
+        maxReached_=true;
+    }
 }
 
 void NodeQueryEngine::broadcastFind(VNode* node)
 {
-	NodeQueryResultTmp_ptr d(new NodeQueryResultTmp(node));
+    Q_ASSERT(node);
 
-	//Add to res vector
-	res_ << d;
+    NodeQueryResultTmp_ptr d(new NodeQueryResultTmp(node));
+    res_ << d;
 
-	broadcastChunk(false);
+    broadcastChunk(false);
 
-	cnt_++;
+    cnt_++;
 
-	if(cnt_ >= maxNum_)
-	{
-		broadcastChunk(true);
-		stopIt_=true;
-	}
+    if(cnt_ >= maxNum_)
+    {
+        broadcastChunk(true);
+        stopIt_=true;
+        maxReached_=true;
+    }
 }
 
+
 void NodeQueryEngine::broadcastChunk(bool force)
 {
-	bool doIt=false;
-	if(!force)
-	{
-		if(res_.count() >= chunkSize_)
-		{
-			doIt=true;
-		}
-	}
-	else if(!res_.isEmpty())
-	{
-		doIt=true;
-	}
-
-	if(doIt)
-	{
-		Q_EMIT found(res_);
-		res_.clear();
-	}
+    bool doIt=false;
+    if(!force)
+    {
+        if(res_.count() >= chunkSize_)
+        {
+            doIt=true;
+        }
+    }
+    else if(!res_.isEmpty())
+    {
+        doIt=true;
+    }
+
+    if(doIt)
+    {
+        Q_EMIT found(res_);
+        res_.clear();
+    }
 }
 
 void NodeQueryEngine::slotFinished()
 {
-	//Notify the servers that the search finished
-	Q_FOREACH(ServerHandler* s,servers_)
-	{
-		s->searchFinished();
-	}
+    //Notify the servers that the search finished
+    Q_FOREACH(ServerHandler* s,servers_)
+    {
+        s->searchFinished();
+    }
 }
 
 void NodeQueryEngine::slotFailed()
@@ -226,77 +329,64 @@ void NodeQueryEngine::slotFailed()
 }
 
 NodeFilterEngine::NodeFilterEngine(NodeFilter* owner) :
-	query_(new NodeQuery("tmp")),
-	parser_(NULL),
-	server_(NULL),
-	owner_(owner)
+    query_(new NodeQuery("tmp")),
+    parser_(NULL),
+    server_(NULL),
+    owner_(owner)
 {
 }
 
 NodeFilterEngine::~NodeFilterEngine()
 {
-	delete query_;
+    delete query_;
 
-	if(parser_)
-		delete parser_;
+    if(parser_)
+        delete parser_;
 }
 
 void NodeFilterEngine::setQuery(NodeQuery* query)
 {
-	query_->swap(query);
+    query_->swap(query);
 
-	if(parser_)
-		delete parser_;
+    if(parser_)
+        delete parser_;
 
     parser_=NodeExpressionParser::instance()->parseWholeExpression(query_->query().toStdString());
-	if(parser_ == NULL)
-	{
-		UserMessage::message(UserMessage::ERROR, true, std::string("Error, unable to parse enabled condition: " + query_->query().toStdString()));
-	}
+    if(parser_ == NULL)
+    {
+        UiLog().err() << "Error, unable to parse enabled condition: " << query_->query().toStdString();
+        UserMessage::message(UserMessage::ERROR, true,"Error, unable to parse enabled condition: " + query_->query().toStdString());
+    }
 }
 
 
 void NodeFilterEngine::runQuery(ServerHandler* server)
 {
-	if(!query_)
-		return;
+    if(!query_)
+        return;
 
-	server_=server;
-	if(!server_)
-		return;
+    server_=server;
+    if(!server_)
+        return;
 
-	if(!parser_)
-		return;
+    if(!parser_)
+        return;
 
-	runRecursively(server_->vRoot());
+    runRecursively(server_->vRoot());
 }
 
 void NodeFilterEngine::runRecursively(VNode *node)
 {
-	if(!node->isServer() && parser_->execute(node))
-	{
-		//UserMessage::message(UserMessage::DBG,false,"FOUND: " + node->absNodePath());
+    if(!node->isServer() &&
+       (node == owner_->forceShowNode() ||  parser_->execute(node)))
+    {
+        //UserMessage::message(UserMessage::DBG,false,"FOUND: " + node->absNodePath());
         //owner_->res_[node->index()]=node;
         owner_->match_.push_back(node);
-	}
+    }
 
-	for(int i=0; i < node->numOfChildren(); i++)
-	{
-		runRecursively(node->childAt(i));
-	}
+    for(int i=0; i < node->numOfChildren(); i++)
+    {
+        runRecursively(node->childAt(i));
+    }
 }
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Viewer/src/NodeQueryEngine.hpp b/Viewer/src/NodeQueryEngine.hpp
index 1fd5b6e..632987b 100644
--- a/Viewer/src/NodeQueryEngine.hpp
+++ b/Viewer/src/NodeQueryEngine.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -14,6 +14,7 @@
 #include <string>
 #include <vector>
 
+#include <QMap>
 #include <QStringList>
 #include <QThread>
 
@@ -25,6 +26,8 @@ class VNode;
 class NodeFilter;
 class NodeQuery;
 class NodeQueryOptions;
+class VAttribute;
+class VAttributeType;
 
 class NodeQueryEngine : public QThread
 {
@@ -38,6 +41,8 @@ public:
     bool runQuery(NodeQuery* query,QStringList allServers);
 	void stopQuery();
 	int scannedCount() const {return scanCnt_;}
+    bool wasStopped() const {return stopIt_;}
+    bool wasMaxReached() const {return maxReached_;}
 
 protected Q_SLOTS:
 	void slotFinished();
@@ -53,20 +58,22 @@ protected:
 private:
 	void run(ServerHandler*,VNode*);
 	void runRecursively(VNode *node);
-	void broadcastFind(VNode*);
+    void broadcastFind(VNode*);
+    void broadcastFind(VNode*,QStringList);
 	void broadcastChunk(bool);
 
 	NodeQuery* query_;
-	BaseNodeCondition* parser_;
-	std::vector<ServerHandler*> servers_;
+    BaseNodeCondition* parser_;
+    QMap<VAttributeType*,BaseNodeCondition*> attrParser_;
+    std::vector<ServerHandler*> servers_;
 	int cnt_;
 	int scanCnt_;
 	int maxNum_;
 	int chunkSize_;
 	QList<NodeQueryResultTmp_ptr> res_;
 	bool stopIt_;
+    bool maxReached_;
 	VNode* rootNode_;
-
 };
 
 class NodeFilterEngine
@@ -75,7 +82,7 @@ public:
 	explicit NodeFilterEngine(NodeFilter*);
 	~NodeFilterEngine();
 
-	void runQuery(ServerHandler*);
+    void runQuery(ServerHandler*);
 	void setQuery(NodeQuery*);
 
 private:
diff --git a/Viewer/src/NodeQueryOption.cpp b/Viewer/src/NodeQueryOption.cpp
new file mode 100644
index 0000000..34c273f
--- /dev/null
+++ b/Viewer/src/NodeQueryOption.cpp
@@ -0,0 +1,362 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "NodeQueryOption.hpp"
+
+#include <map>
+#include <string>
+
+#include <QDebug>
+
+#include "NodeQuery.hpp"
+#include "UiLog.hpp"
+#include "VAttributeType.hpp"
+#include "VConfig.hpp"
+#include "VProperty.hpp"
+#include "VSettings.hpp"
+
+StringMatchMode::Mode NodeQueryStringOption::defaultMatchMode_=StringMatchMode::ContainsMatch;
+bool NodeQueryStringOption::defaultCaseSensitive_=false;
+
+#define _UI_NODEQUERY_DEBUG
+
+class NodeQueryOptionFactory;
+static std::map<std::string,NodeQueryOptionFactory*>* makers = 0;
+
+//=========================================
+// Factory
+//=========================================
+
+class NodeQueryOptionFactory
+{
+public:
+    explicit NodeQueryOptionFactory(const std::string& t);
+    virtual ~NodeQueryOptionFactory() {}
+
+    virtual NodeQueryOption* make(VProperty* p) = 0;
+    static NodeQueryOption* create(VProperty* p);
+
+private:
+    explicit NodeQueryOptionFactory(const NodeQueryOptionFactory&);
+    NodeQueryOptionFactory& operator=(const NodeQueryOptionFactory&);
+};
+
+template<class T>
+class NodeQueryOptionMaker : public NodeQueryOptionFactory
+{
+    NodeQueryOption* make(VProperty* p) { return new T(p); }
+public:
+    explicit NodeQueryOptionMaker(const std::string& t) : NodeQueryOptionFactory(t) {}
+};
+
+NodeQueryOptionFactory::NodeQueryOptionFactory(const std::string& type)
+{
+    if(makers == 0)
+        makers = new std::map<std::string,NodeQueryOptionFactory*>;
+
+    (*makers)[type] = this;
+}
+
+NodeQueryOption* NodeQueryOptionFactory::create(VProperty *p)
+{
+    if(!p)
+        return 0;
+
+    std::string type=p->param("type").toStdString();
+    std::map<std::string,NodeQueryOptionFactory*>::iterator j = makers->find(type);
+    if(j != makers->end())
+        return (*j).second->make(p);
+
+    return 0;
+}
+
+//===============================================
+//
+// NodeQueryOption
+//
+//===============================================
+
+NodeQueryOption::NodeQueryOption(VProperty* p) : ignoreIfAny_(false)
+{
+    type_=p->param("type");
+    name_=p->name();
+    label_=p->param("label");
+    if(label_.isEmpty())
+        label_=name_;
+
+    ignoreIfAny_=(p->param("ignoreIfAny") == "true")?true:false;
+}
+
+void NodeQueryOption::build(NodeQuery* query)
+{
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "NodeQueryOption::build -->";
+#endif
+
+    //Node query part
+    VProperty* prop=VConfig::instance()->find("node_query");
+    Q_ASSERT(prop);
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << " load node_query";
+#endif
+    for(int i=0; i < prop->children().size(); i++)
+    {
+        VProperty *p=prop->children().at(i);
+        QString type=p->param("type");
+#ifdef _UI_NODEQUERY_DEBUG
+        UiLog().dbg() << "  name=" << p->strName() << " type=" << type.toStdString();
+#endif
+        NodeQueryOption* op=NodeQueryOptionFactory::create(p);
+        Q_ASSERT(op);
+        query->options_[op->name()]=op;
+     }
+
+    //Attr query part
+    prop=VConfig::instance()->find("attribute_query");
+    Q_ASSERT(prop);
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << " load attribute_query";
+#endif
+    for(int i=0; i < prop->children().size(); i++)
+    {
+        VProperty *p=prop->children().at(i);
+        if(p->name() == "attribute")
+        {
+             query->options_[p->name()]=NodeQueryOptionFactory::create(p);
+        }
+        else
+        {
+#ifdef _UI_NODEQUERY_DEBUG
+            UiLog().dbg() << "  name=" << p->strName();
+#endif
+            //Q_ASSERT(def_["attribute"]->values().contains(p->name()));
+
+            QList<VAttributeType*> typeLst;
+            QList<NodeQueryOption*> opLst;
+
+            QString types=p->param("types");
+            if(types.isEmpty())
+            {
+                 VAttributeType *t=VAttributeType::find(p->name().toStdString());
+                 Q_ASSERT(t);
+                     typeLst << t;
+            }
+            else
+            {
+                Q_FOREACH(QString s,types.split("|"))
+                {
+                    VAttributeType *t=VAttributeType::find(s.toStdString());
+                    Q_ASSERT(t);
+                    typeLst << t;
+                }
+            }
+
+            Q_ASSERT(!typeLst.empty());
+
+            Q_FOREACH(VProperty* ch,p->children())
+            {
+#ifdef _UI_NODEQUERY_DEBUG
+                UiLog().dbg() << "  option: name=" << ch->strName() << " type=" << ch->param("type").toStdString();
+#endif
+                NodeQueryOption *op=NodeQueryOptionFactory::create(ch);
+                query->options_[ch->name()]=op;
+                opLst << op;
+                Q_ASSERT(op);
+            }
+            if(p->name() == "variable")    
+                query->attrGroup_[p->name()] = new NodeQueryVarAttrGroup(p->name(),typeLst,opLst);
+            else
+                query->attrGroup_[p->name()] = new NodeQueryAttrGroup(p->name(),typeLst,opLst);
+       }
+   }
+
+
+#ifdef _UI_NODEQUERY_DEBUG
+    UiLog().dbg() << "<-- build";
+#endif
+}
+
+//===============================================
+//
+// NodeQueryStringOption
+//
+//===============================================
+
+NodeQueryStringOption::NodeQueryStringOption(VProperty* p) :
+  NodeQueryOption(p),
+  matchMode_(defaultMatchMode_),
+  caseSensitive_(defaultCaseSensitive_)
+{
+}
+
+QString NodeQueryStringOption::query() const
+{
+    QString s;
+    if(!value_.isEmpty())
+    {
+        s= name_ + " " + matchOperator() + " \'" + value_ + "\'";
+    }
+    return s;
+}
+
+void NodeQueryStringOption::swap(const NodeQueryOption* option)
+{
+    const NodeQueryStringOption* op=static_cast<const NodeQueryStringOption*>(option);
+    Q_ASSERT(op);
+
+    value_=op->value();
+    matchMode_=op->matchMode();
+    caseSensitive_=op->caseSensitive();
+}
+
+void NodeQueryStringOption::save(VSettings* vs)
+{
+    if(value_.isEmpty() && matchMode_.mode() == defaultMatchMode_ &&
+       caseSensitive_ == defaultCaseSensitive_)
+        return;
+
+    vs->beginGroup(name_.toStdString());
+    vs->put("value",value_.toStdString());
+    vs->put("matchMode",matchMode_.toInt());
+    vs->putAsBool("caseSensistive",caseSensitive_);
+    vs->endGroup();
+}
+
+void NodeQueryStringOption::load(VSettings* vs)
+{
+    if(!vs->contains(name().toStdString()))
+        return;
+
+    vs->beginGroup(name_.toStdString());
+    value_=QString::fromStdString(vs->get("value",value_.toStdString()));
+    matchMode_.setMode(static_cast<StringMatchMode::Mode>(vs->get<int>("matchMode",matchMode_.toInt())));
+    caseSensitive_=vs->getAsBool("caseSensistive",caseSensitive_);
+    vs->endGroup();
+}
+
+//===============================================
+//
+// NodeQueryListOption
+//
+//===============================================
+
+NodeQueryListOption::NodeQueryListOption(VProperty* p) :
+  NodeQueryOption(p)
+{
+    values_=p->param("values").split("|");
+    valueLabels_=p->param("labels").split("|");
+    if(valueLabels_.count() == 1 && valueLabels_[0].isEmpty())
+        valueLabels_=values_;
+
+    Q_ASSERT(valueLabels_.count() == values_.count());
+}
+
+QString NodeQueryListOption::query(QString op) const
+{
+    QString s;
+    if(!selection_.isEmpty())
+    {
+        s=selection_.join(op);
+    }
+    return s;
+}
+
+void NodeQueryListOption::swap(const NodeQueryOption* option)
+{
+    const NodeQueryListOption* op=static_cast<const NodeQueryListOption*>(option);
+    Q_ASSERT(op);
+    selection_=op->selection();
+}
+
+void NodeQueryListOption::save(VSettings* vs)
+{
+    if(selection_.isEmpty())
+        return;
+
+    std::vector<std::string> v;
+    Q_FOREACH(QString s, selection_)
+        v.push_back(s.toStdString());
+
+    vs->put(name_.toStdString(),v);
+}
+
+void NodeQueryListOption::load(VSettings* vs)
+{
+    if(!vs->contains(name_.toStdString()))
+        return;
+
+    std::vector<std::string> v;
+    vs->get(name_.toStdString(),v);
+
+    selection_.clear();
+    for(std::vector<std::string>::const_iterator it=v.begin(); it != v.end(); ++it)
+        selection_ << QString::fromStdString(*it);
+}
+
+//===============================================
+//
+// NodeQueryComboOption
+//
+//===============================================
+
+NodeQueryComboOption::NodeQueryComboOption(VProperty* p) :
+  NodeQueryOption(p)
+{
+    values_=p->param("values").split("|");
+    valueLabels_=p->param("labels").split("|");
+    if(valueLabels_.count() == 1 && valueLabels_[0].isEmpty())
+        valueLabels_=values_;
+
+    Q_ASSERT(values_.count() >0);
+    Q_ASSERT(valueLabels_.count() == values_.count());
+    
+    value_=p->defaultValue().toString();
+    if(!values_.contains(value_))
+        value_=values_[0];
+}
+
+QString NodeQueryComboOption::query() const
+{
+    QString s;
+    if(ignoreIfAny_ && value_ == "any")
+        return s;
+
+    if(!value_.isEmpty())
+    {
+        s= name_ + " = " + " \'" + value_ + "\'";
+    }
+    return s;
+}
+
+void NodeQueryComboOption::setValue(QString val)
+{
+    value_=val;
+}
+
+void NodeQueryComboOption::swap(const NodeQueryOption* option)
+{
+    const NodeQueryComboOption* op=static_cast<const NodeQueryComboOption*>(option);
+    Q_ASSERT(op);
+    value_=op->value();
+}
+
+void NodeQueryComboOption::save(VSettings* vs)
+{
+    vs->put(name_.toStdString(),value().toStdString());
+}
+
+void NodeQueryComboOption::load(VSettings* vs)
+{
+
+}
+
+static NodeQueryOptionMaker<NodeQueryStringOption> maker1("string");
+static NodeQueryOptionMaker<NodeQueryListOption> maker2("list");
+static NodeQueryOptionMaker<NodeQueryComboOption> maker3("combo");
diff --git a/Viewer/src/NodeQueryOption.hpp b/Viewer/src/NodeQueryOption.hpp
new file mode 100644
index 0000000..ea2304d
--- /dev/null
+++ b/Viewer/src/NodeQueryOption.hpp
@@ -0,0 +1,144 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef NODEQUERYOPTION_HPP
+#define NODEQUERYOPTION_HPP
+
+#include <QStringList>
+
+#include "StringMatchMode.hpp"
+
+class NodeQuery;
+class NodeQueryAttributeTerm;
+class VAttributeType;
+class VProperty;
+class VSettings;
+class NodeQueryStringOption;
+class NodeQueryListOption;
+class NodeQueryComboOption;
+
+class NodeQueryOption
+{
+public:
+    NodeQueryOption(VProperty*);
+    virtual ~NodeQueryOption() {}
+
+    QString type() const {return type_;}
+    QString name() const {return name_;}
+    QString label() const {return label_;}
+    virtual QString valueAsString() const=0;
+
+    virtual void swap(const NodeQueryOption*)=0;
+    virtual QString query() const {return QString();}
+    virtual QString query(QString op) const {return QString();}
+    virtual void load(VSettings*)=0;
+    virtual void save(VSettings*)=0;
+
+    virtual NodeQueryStringOption* isString() const {return NULL;}
+    virtual NodeQueryListOption* isList() const {return NULL;}
+    virtual NodeQueryComboOption* isCombo() const {return NULL;}
+
+    static void build(NodeQuery*);
+
+protected:
+    QString type_;
+    QString name_;
+    QString label_;
+    bool ignoreIfAny_;
+
+    //QStringList values_;
+    //QStringList valueLabels_;
+};
+
+class NodeQueryStringOption : public NodeQueryOption
+{
+public:
+    NodeQueryStringOption(VProperty*);
+
+    void swap(const NodeQueryOption*);
+
+    QString value() const {return value_;}
+    QString valueAsString() const {return value();}
+    const StringMatchMode&  matchMode() const {return matchMode_;}
+    QString matchOperator() const {return QString::fromStdString(matchMode_.matchOperator());}
+    bool caseSensitive() const {return caseSensitive_;}
+
+    void setValue(QString s) {value_=s;}
+    void setMatchMode(StringMatchMode::Mode m) {matchMode_.setMode(m);}
+    void setMatchMode(const StringMatchMode& m) {matchMode_=m;}
+    void setCaseSensitive(bool b) {caseSensitive_=b;}
+
+    QString query() const;
+    void load(VSettings*);
+    void save(VSettings*);
+
+    NodeQueryStringOption* isString() const {return const_cast<NodeQueryStringOption*>(this);}
+
+protected:
+    QString value_;
+    StringMatchMode matchMode_;
+    bool caseSensitive_;
+
+    static StringMatchMode::Mode defaultMatchMode_;
+    static bool defaultCaseSensitive_;
+};
+
+class NodeQueryListOption : public NodeQueryOption
+{
+public:
+    NodeQueryListOption(VProperty*);
+
+    void swap(const NodeQueryOption*);
+
+    QString query(QString op) const;
+    void load(VSettings*);
+    void save(VSettings*);
+
+    QString valueAsString() const {return QString();}
+    QStringList values() const {return values_;}
+    QStringList valueLabels() const {return valueLabels_;}
+    void setSelection(QStringList lst) {selection_=lst;}
+    QStringList selection() const {return selection_;}
+
+    NodeQueryListOption* isList() const {return const_cast<NodeQueryListOption*>(this);}
+
+protected:
+    QStringList selection_;
+    QStringList values_;
+    QStringList valueLabels_;
+};
+
+class NodeQueryComboOption : public NodeQueryOption
+{
+public:
+    NodeQueryComboOption(VProperty*);
+
+    void swap(const NodeQueryOption*);
+
+    QString query() const;
+    void load(VSettings*);
+    void save(VSettings*);
+
+    QStringList values() const {return values_;}
+    QStringList valueLabels() const {return valueLabels_;}
+    void setValue(QString);
+    QString value() const {return value_;}
+    QString valueAsString() const {return value();}
+    
+    NodeQueryComboOption* isCombo() const {return const_cast<NodeQueryComboOption*>(this);}
+
+protected:
+    QString value_;
+    QStringList values_;
+    QStringList valueLabels_;
+};
+
+#endif // NODEQUERYOPTION_HPP
+
diff --git a/Viewer/src/NodeQueryOptionEdit.cpp b/Viewer/src/NodeQueryOptionEdit.cpp
new file mode 100644
index 0000000..621050e
--- /dev/null
+++ b/Viewer/src/NodeQueryOptionEdit.cpp
@@ -0,0 +1,263 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "NodeQueryOptionEdit.hpp"
+
+#include "ComboMulti.hpp"
+#include "CustomListWidget.hpp"
+#include "NodeQuery.hpp"
+#include "NodeQueryOption.hpp"
+#include "StringMatchCombo.hpp"
+
+#include <QtGlobal>
+#include <QDebug>
+#include <QGridLayout>
+#include <QLabel>
+#include <QLineEdit>
+#include <QToolButton>
+#include <QWidgetAction>
+
+NodeQueryOptionEdit::NodeQueryOptionEdit(QString optionId,QGridLayout* grid,QWidget* parent) :
+    QObject(parent),
+    optionId_(optionId),
+    initIsOn_(false),
+    parent_(parent),
+    grid_(grid)
+{
+    connect(this,SIGNAL(changed()),
+            parent_,SLOT(slotOptionEditChanged()));
+}
+
+void NodeQueryOptionEdit::init(NodeQuery* query)
+{
+    init(query->option(optionId_));
+}
+
+
+NodeQueryStringOptionEdit::NodeQueryStringOptionEdit(NodeQueryOption* option,QGridLayout* grid,
+                                                     QWidget* parent,bool sameRow) :
+    NodeQueryOptionEdit(option->name(),grid,parent),
+    label_(0),
+    matchCb_(0),
+    le_(0),
+    option_(0)
+{
+    label_=new QLabel(option->label() + ":",parent_);
+    matchCb_=new StringMatchCombo(parent_);
+    le_=new QLineEdit(parent_);
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
+    le_->setClearButtonEnabled(true);
+    //QWidgetAction *wa=new QWidgetAction(this);
+    //StringMatchTb* tb=new StringMatchTb(parent_);
+    //wa->setDefaultWidget(tb);
+    //le_->addAction(wa,QLineEdit::LeadingPosition);
+#endif
+#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0)
+    le_->setPlaceholderText(tr("ANY"));
+#endif
+
+    int row=grid_->rowCount();
+    if(!sameRow)
+    {
+        grid_->addWidget(label_,row,0);
+        grid_->addWidget(matchCb_,row,1);
+        grid_->addWidget(le_,row,2,1,1);
+    }
+    else
+    {
+        row=row-1;
+        Q_ASSERT(row >= 0);
+        grid_->addWidget(label_,row,3);
+        grid_->addWidget(matchCb_,row,4);
+        grid_->addWidget(le_,row,5,1,-1);
+    }
+
+    connect(le_,SIGNAL(textChanged(QString)),
+           this,SLOT(slotEdited(QString)));
+
+    connect(matchCb_,SIGNAL(currentIndexChanged(int)),
+           this,SLOT(slotMatchChanged(int)));
+
+    init(option);
+    Q_ASSERT(option_);
+}
+
+void NodeQueryStringOptionEdit::init(NodeQueryOption* option)
+{
+    initIsOn_=true;
+    option_=static_cast<NodeQueryStringOption*>(option);
+    Q_ASSERT(option_);
+    Q_ASSERT(optionId_ == option_->name());
+    le_->setText(option_->value());
+    matchCb_->setMatchMode(option_->matchMode());
+    initIsOn_=false;
+}
+
+void NodeQueryStringOptionEdit::slotEdited(QString val)
+{
+    if(initIsOn_)
+        return;
+
+    if(option_)
+    {
+        option_->setValue(val);
+        Q_EMIT changed();
+    }
+}
+
+void NodeQueryStringOptionEdit::slotMatchChanged(int val)
+{
+    if(initIsOn_)
+        return;
+
+    if(option_)
+    {
+        option_->setMatchMode(matchCb_->matchMode(val));
+        Q_EMIT changed();
+    }
+}
+
+void NodeQueryStringOptionEdit::clear()
+{
+    le_->clear();
+}
+
+void NodeQueryStringOptionEdit::setVisible(bool st)
+{
+    label_->setVisible(st);
+    matchCb_->setVisible(st);
+    le_->setVisible(st);
+}
+
+//===================================================================
+//
+//
+//==================================================================
+
+NodeQueryListOptionEdit::NodeQueryListOptionEdit(NodeQueryOption *option,CustomListWidget* list,
+                                                 QToolButton* tb,QWidget* parent) :
+     NodeQueryOptionEdit(option->name(),0,parent),
+     list_(list),
+     resetTb_(tb),
+     option_(0)
+{
+    option_=static_cast<NodeQueryListOption*>(option);
+    Q_ASSERT(option_);
+
+    connect(list_,SIGNAL(selectionChanged()),
+            this,SLOT(slotListChanged()));
+
+    connect(resetTb_,SIGNAL(clicked()),
+            list_,SLOT(clearSelection()));
+
+    list_->addItems(option_->values(),false);
+    resetTb_->setEnabled(list_->hasSelection());
+
+    init(option_);
+}
+
+void NodeQueryListOptionEdit::init(NodeQueryOption* option)
+{
+    initIsOn_=true;
+    option_=static_cast<NodeQueryListOption*>(option);
+    Q_ASSERT(option_);
+    Q_ASSERT(option_->name() == optionId_);
+    list_->setSelection(option_->selection());
+    initIsOn_=false;
+}
+
+void NodeQueryListOptionEdit::clear()
+{
+    list_->clearSelection();
+}
+
+void NodeQueryListOptionEdit::slotListChanged()
+{
+    resetTb_->setEnabled(list_->hasSelection());
+    if(initIsOn_)
+        return;
+
+    if(option_)
+    {
+        option_->setSelection(list_->selection());
+        Q_EMIT changed();
+    }
+}
+
+//===================================================================
+//
+//
+//==================================================================
+
+NodeQueryComboOptionEdit::NodeQueryComboOptionEdit(NodeQueryOption *option,QGridLayout* grid, QWidget* parent) :
+     NodeQueryOptionEdit(option->name(),grid,parent),
+     cb_(0),
+     option_(0)
+{
+    option_=static_cast<NodeQueryComboOption*>(option);
+    Q_ASSERT(option_);
+
+    label_=new QLabel(option->label() + ":",parent_);
+    cb_=new QComboBox(parent_);
+
+    int row=grid_->rowCount();
+    grid_->addWidget(label_,row,0);
+    grid_->addWidget(cb_,row,1,1,-1);
+
+    connect(cb_,SIGNAL(currentIndexChanged(int)),
+            this,SLOT(slotCbChanged(int)));
+
+    QStringList vals=option_->values();
+    QStringList labels=option_->valueLabels();
+    for(int i=0; i < vals.count(); i++)
+    {
+        cb_->addItem(labels[i],vals[i]);
+    }
+
+    init(option_);
+}
+
+void NodeQueryComboOptionEdit::init(NodeQueryOption* option)
+{
+    initIsOn_=true;
+    option_=static_cast<NodeQueryComboOption*>(option);
+    Q_ASSERT(option_);
+    Q_ASSERT(option_->name() == optionId_);
+
+    for(int i=0; i < cb_->count(); i++)
+    {
+        if(cb_->itemData(i).toString() == option_->value())
+        {
+            cb_->setCurrentIndex(i);
+            break;
+        }
+    }
+    initIsOn_=false;
+}
+
+void NodeQueryComboOptionEdit::slotCbChanged(int idx)
+{
+    if(initIsOn_)
+        return;
+
+    if(option_)
+    {
+        option_->setValue(cb_->itemData(idx).toString());
+        Q_EMIT changed();
+    }
+}
+
+void NodeQueryComboOptionEdit::setVisible(bool st)
+{
+    label_->setVisible(st);
+    cb_->setVisible(st);
+}
+
diff --git a/Viewer/src/NodeQueryOptionEdit.hpp b/Viewer/src/NodeQueryOptionEdit.hpp
new file mode 100644
index 0000000..2ea47db
--- /dev/null
+++ b/Viewer/src/NodeQueryOptionEdit.hpp
@@ -0,0 +1,116 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef NODEQUERYOPTIONEDIT_HPP
+#define NODEQUERYOPTIONEDIT_HPP
+
+#include <QObject>
+
+class CustomListWidget;
+class NodeQuery;
+class NodeQueryDef;
+class NodeQueryListModel;
+class NodeQueryOption;
+class NodeQueryStringOption;
+class NodeQueryListOption;
+class NodeQueryComboOption;
+class StringMatchCombo;
+
+class QComboBox;
+class QLabel;
+class QGridLayout;
+class QLineEdit;
+class QToolButton;
+class QWidget;
+
+class NodeQueryOptionEdit : public QObject
+{
+Q_OBJECT
+public:
+    NodeQueryOptionEdit(QString optionId,QGridLayout* grid,QWidget *parent);
+
+    void init(NodeQuery*);
+    QString optionId() const {return optionId_;}
+    virtual void setVisible(bool)=0;
+    virtual void clear() {}
+
+Q_SIGNALS:
+    void changed();
+
+protected:
+    virtual void init(NodeQueryOption*)=0;
+
+    QString optionId_;
+    bool initIsOn_;
+    QWidget* parent_;
+    QGridLayout* grid_;
+};
+
+class NodeQueryStringOptionEdit : public  NodeQueryOptionEdit
+{
+Q_OBJECT
+public:
+    NodeQueryStringOptionEdit(NodeQueryOption* option,QGridLayout* grid,QWidget* parent, bool sameRow);
+    void setVisible(bool);
+    void clear();
+
+protected Q_SLOTS:
+    void slotEdited(QString val);
+    void slotMatchChanged(int val);
+
+protected:
+    void init(NodeQueryOption*);
+
+    QLabel* label_;
+    StringMatchCombo* matchCb_;
+    QLineEdit *le_;
+    NodeQueryStringOption* option_;
+};
+
+class NodeQueryListOptionEdit : public  NodeQueryOptionEdit
+{
+Q_OBJECT
+public:
+    NodeQueryListOptionEdit(NodeQueryOption* option,CustomListWidget* cl,QToolButton*,QWidget*);
+    void setVisible(bool) {}
+    void clear();
+
+protected Q_SLOTS:
+    void slotListChanged();
+
+protected:
+    void init(NodeQueryOption*);
+
+    CustomListWidget* list_;
+    QToolButton *resetTb_;
+    NodeQueryListOption* option_;
+};
+
+class NodeQueryComboOptionEdit : public  NodeQueryOptionEdit
+{
+Q_OBJECT
+public:
+    NodeQueryComboOptionEdit(NodeQueryOption* option,QGridLayout* grid,QWidget*);
+    void setVisible(bool);
+
+protected Q_SLOTS:
+    void slotCbChanged(int);
+
+protected:
+    void init(NodeQueryOption*);
+
+    QLabel* label_;
+    QComboBox* cb_;
+    NodeQueryComboOption* option_;
+};
+
+
+#endif // NODEQUERYOPTIONEDIT_HPP
+
diff --git a/Viewer/src/NodeQueryResult.cpp b/Viewer/src/NodeQueryResult.cpp
index 0c641fe..f9f95a0 100644
--- a/Viewer/src/NodeQueryResult.cpp
+++ b/Viewer/src/NodeQueryResult.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,6 +10,8 @@
 
 #include "NodeQueryResult.hpp"
 
+#include <QDebug>
+
 #include "ServerHandler.hpp"
 #include "VNode.hpp"
 
@@ -93,6 +95,11 @@ QColor NodeQueryResultItem::stateColour() const
 	return QColor(Qt::transparent);
 }
 
+QStringList NodeQueryResultItem::attr() const
+{
+    return attr_;
+}
+
 void NodeQueryResultBlock::add(VNode* node,int pos)
 {
 	if(pos_==-1)
@@ -161,7 +168,7 @@ void NodeQueryResult::add(NodeQueryResultTmp_ptr item)
 
 	Q_EMIT beginAppendRow();
 
-	data_.push_back(new NodeQueryResultItem(item->node_));
+    data_.push_back(new NodeQueryResultItem(item));
 	blocks_[s].add(item->node_,data_.size()-1);
 
 	Q_EMIT endAppendRow();
@@ -176,10 +183,10 @@ void NodeQueryResult::add(QList<NodeQueryResultTmp_ptr> items)
 
 	for(int i=0; i < items.count(); i++)
 	{
-		VNode *node=items.at(i)->node_;
+        VNode *node=items[i]->node_;
 		ServerHandler *s=node->server();
 		attach(s);
-		data_.push_back(new NodeQueryResultItem(node));
+        data_.push_back(new NodeQueryResultItem(items[i]));
 		blocks_[s].add(node,data_.size()-1);
 	}
 
@@ -191,29 +198,29 @@ void NodeQueryResult::add(std::vector<VInfo_ptr> items)
 	if(items.size() == 0)
 		return;
 
-        //Count the needed items
-        int num=0;
-        for(unsigned int i=0; i < items.size(); i++)
+    //Count the needed items
+    int num=0;
+    for(unsigned int i=0; i < items.size(); i++)
 	{   
-            assert(items.at(i) && items.at(i).get());
-            if(items.at(i)->isServer() || items.at(i)->isNode())
-            {
-                num++;
-            }    
+        assert(items.at(i) && items.at(i).get());
+        if(items.at(i)->isServer() || items.at(i)->isNode())
+        {
+            num++;
         }
+    }
         
 	Q_EMIT beginAppendRows(items.size());
 
 	for(unsigned int i=0; i < items.size(); i++)
 	{           
-            if(items.at(i)->isServer() || items.at(i)->isNode())
-            {
-                VNode *node=items.at(i)->node();
-		ServerHandler *s=items.at(i)->server();
-		attach(s);
-		data_.push_back(new NodeQueryResultItem(node));
-		blocks_[s].add(node,data_.size()-1);
-            }    
+        if(items.at(i)->isServer() || items.at(i)->isNode())
+        {
+            VNode *node=items.at(i)->node();
+            ServerHandler *s=items.at(i)->server();
+            attach(s);
+            data_.push_back(new NodeQueryResultItem(node));
+            blocks_[s].add(node,data_.size()-1);
+        }
 	}
 
 	Q_EMIT endAppendRows(items.size());
diff --git a/Viewer/src/NodeQueryResult.hpp b/Viewer/src/NodeQueryResult.hpp
index e3fd540..065a4d8 100644
--- a/Viewer/src/NodeQueryResult.hpp
+++ b/Viewer/src/NodeQueryResult.hpp
@@ -43,6 +43,8 @@ public:
 	QString typeStr() const;
 	QString stateStr() const;
 	QColor stateColour() const;
+    QStringList attr() const;
+    bool hasAttribute() const {return attr_.count() > 0;}
 
 protected:
 	VNode* node_;
@@ -83,7 +85,7 @@ public:
  	void clear();
 
     //From ServerObserver
- 	void notifyDefsChanged(ServerHandler* server, const std::vector<ecf::Aspect::Type>& a) {};
+    void notifyDefsChanged(ServerHandler* server, const std::vector<ecf::Aspect::Type>& a) {}
  	void notifyServerDelete(ServerHandler* server);
     void notifyBeginServerClear(ServerHandler* server);
  	void notifyEndServerClear(ServerHandler* server);
diff --git a/Viewer/src/NodeQueryResultModel.cpp b/Viewer/src/NodeQueryResultModel.cpp
index d3dfae4..91ab66c 100644
--- a/Viewer/src/NodeQueryResultModel.cpp
+++ b/Viewer/src/NodeQueryResultModel.cpp
@@ -13,6 +13,8 @@
 #include "ModelColumn.hpp"
 #include "NodeQueryResult.hpp"
 #include "ServerHandler.hpp"
+#include "VAttribute.hpp"
+#include "VAttributeType.hpp"
 #include "VNode.hpp"
 
 #include <QDebug>
@@ -126,8 +128,11 @@ QVariant NodeQueryResultModel::data( const QModelIndex& index, int role ) const
 		else if(id == "type")
 			return d->typeStr();
 		else if(id == "status")
-			return d->stateStr();
-		return QVariant();
+            return d->stateStr();
+        else if(id == "attribute")
+            return d->attr();
+
+        return QVariant();
 	}
 	else if(role == Qt::BackgroundRole)
 	{
@@ -208,14 +213,24 @@ VInfo_ptr NodeQueryResultModel::nodeInfo(const QModelIndex& index)
 		{
 			if(d->node_)
 			{
+                //server
 				if(d->node_->isServer())
 				{
 					return VInfoServer::create(s);
 				}
-				else
+                //node
+                else if(!d->hasAttribute())
 				{
 					return VInfoNode::create(d->node_);
 				}
+                //attribute
+                else
+                {
+                    if(VAttribute* a=VAttribute::make(d->node_,d->attr_))
+                        return VInfoAttribute::create(a);
+                    else
+                        return VInfoNode::create(d->node_);
+                }
 			}
 		}
 	}
diff --git a/Viewer/src/NodeQueryResultTmp.hpp b/Viewer/src/NodeQueryResultTmp.hpp
index 6bb2e00..b195826 100644
--- a/Viewer/src/NodeQueryResultTmp.hpp
+++ b/Viewer/src/NodeQueryResultTmp.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -22,7 +22,8 @@ typedef boost::shared_ptr<NodeQueryResultTmp> NodeQueryResultTmp_ptr;
 struct  NodeQueryResultTmp
 {
 	NodeQueryResultTmp() : node_(NULL) {}
-	NodeQueryResultTmp(VNode *node) : node_(node) {}
+    NodeQueryResultTmp(VNode *node) : node_(node) {}
+    NodeQueryResultTmp(VNode *node,QStringList attr) : node_(node), attr_(attr) {}
 
 	VNode* node_;
 	QStringList attr_;
diff --git a/Viewer/src/NodeQueryResultView.cpp b/Viewer/src/NodeQueryResultView.cpp
index 9380ce5..7643f60 100644
--- a/Viewer/src/NodeQueryResultView.cpp
+++ b/Viewer/src/NodeQueryResultView.cpp
@@ -28,7 +28,6 @@ NodeQueryResultView::NodeQueryResultView(QWidget* parent) :
 	model_(NULL),
 	sortModel_(NULL),
     needItemsLayout_(false)
-
 {
 	//setProperty("style","nodeView");
 	setProperty("view","query");
@@ -135,7 +134,7 @@ void NodeQueryResultView::slotSelectItem(const QModelIndex&)
 		VInfo_ptr info=model_->nodeInfo(sortModel_->mapToSource(lst.front()));
 		if(info)
 		{
-			Q_EMIT selectionChanged(info);
+			Q_EMIT selectionChanged(info);            
 		}
 	}
 }
diff --git a/Viewer/src/NodeQueryViewDelegate.cpp b/Viewer/src/NodeQueryViewDelegate.cpp
index 9680419..4e2d6e7 100644
--- a/Viewer/src/NodeQueryViewDelegate.cpp
+++ b/Viewer/src/NodeQueryViewDelegate.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -31,18 +31,16 @@ NodeQueryViewDelegate::NodeQueryViewDelegate(QWidget *parent)
 
 	columns_=ModelColumn::def("query_columns");
 
-	/*adjustIconSize();
-
     //Property
     if(propVec.empty())
     {
-        propVec.push_back("view.tree.font");
-        propVec.push_back("view.tree.displayChildCount");
+        //Base settings
+        addBaseSettings(propVec);
     }
 
     prop_=new PropertyMapper(propVec,this);
 
-    updateSettings();*/
+    updateSettings();
 }
 
 NodeQueryViewDelegate::~NodeQueryViewDelegate()
@@ -51,7 +49,8 @@ NodeQueryViewDelegate::~NodeQueryViewDelegate()
 
 void NodeQueryViewDelegate::updateSettings()
 {
-
+    //Update the settings handled by the base class
+    updateBaseSettings();
 }
 
 QSize NodeQueryViewDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index ) const
diff --git a/Viewer/src/NodeSearchDialog.cpp b/Viewer/src/NodeSearchDialog.cpp
index 308eabb..e8cfbfc 100644
--- a/Viewer/src/NodeSearchDialog.cpp
+++ b/Viewer/src/NodeSearchDialog.cpp
@@ -15,6 +15,7 @@
 #include "NodeSearchDialog.hpp"
 #include "SessionHandler.hpp"
 #include "VConfig.hpp"
+#include "WidgetNameProvider.hpp"
 
 NodeSearchDialog::NodeSearchDialog(QWidget *parent) :
     QDialog(parent)
@@ -32,6 +33,8 @@ NodeSearchDialog::NodeSearchDialog(QWidget *parent) :
 
     //Read the qt settings
     readSettings();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 NodeSearchDialog::~NodeSearchDialog()
@@ -83,7 +86,7 @@ void NodeSearchDialog::writeSettings()
 
 	settings.beginGroup("main");
 	settings.setValue("size",size());
-	//settings.setValue("current",list_->currentRow());
+    queryWidget_->writeSettings(settings);
 	settings.endGroup();
 }
 
@@ -104,6 +107,8 @@ void NodeSearchDialog::readSettings()
 	  	resize(QSize(550,540));
 	}
 
+    queryWidget_->readSettings(settings);
+
 	/*if(settings.contains("current"))
 	{
 		int current=settings.value("current").toInt();
diff --git a/Viewer/src/NodeSearchWidget.cpp b/Viewer/src/NodeSearchWidget.cpp
index 662836a..f63e1b0 100644
--- a/Viewer/src/NodeSearchWidget.cpp
+++ b/Viewer/src/NodeSearchWidget.cpp
@@ -8,6 +8,8 @@
 //
 //============================================================================
 
+#include "NodeSearchWidget.hpp"
+
 #include "ComboMulti.hpp"
 #include "CustomListWidget.hpp"
 #include "Highlighter.hpp"
@@ -18,7 +20,7 @@
 #include "NodeQueryResult.hpp"
 #include "NodeQueryResultModel.hpp"
 #include "ServerFilter.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VNState.hpp"
 
 #include <QtGlobal>
@@ -27,7 +29,8 @@
 #include <QMessageBox>
 #include <QPalette>
 #include <QVBoxLayout>
-#include "NodeSearchWidget.hpp"
+
+#define _UI_NODESEARCHWIDGET_DEBUG
 
 //======================================================
 //
@@ -42,19 +45,28 @@ NodeSearchWidget::NodeSearchWidget(QWidget *parent) :
 {
     setupUi(this);
 
-	//Query
-	QFont f;
-	QFontMetrics fm(f);
+    //--------------------
+    // Show/hide
+    //--------------------
 
     //Show hide def panel
-    defPanelTb_->setText("Editor <<");
-    connect(defPanelTb_,SIGNAL(clicked(bool)),
+    connect(defPanelTb_,SIGNAL(toggled(bool)),
            this,SLOT(slotShowDefPanel(bool)));
 
 	editor_->show();
 
-	connect(editor_,SIGNAL(queryEnabledChanged(bool)),
-			this,SLOT(slotQueryEnabledChanged(bool)));
+    //connect(editor_,SIGNAL(queryEnabledChanged(bool)),
+    //		this,SLOT(slotQueryEnabledChanged(bool)));
+
+    //Show hide query
+    connect(queryPanelTb_,SIGNAL(toggled(bool)),
+           this,SLOT(slotShowQueryPanel(bool)));
+
+    QFont showf;
+    showf.setBold(true);
+    showf.setPointSize(showf.pointSize()-1);
+    showLabel_->setFont(showf);
+    showLabel_->setText("<font color=\'#565656\'>Show:</font>");
 
     //Find button
     findPb_->setProperty("startSearch","1");
@@ -69,6 +81,9 @@ NodeSearchWidget::NodeSearchWidget(QWidget *parent) :
     connect(stopPb_,SIGNAL(clicked()),
         	this,SLOT(slotStop()));
 
+    //Clear
+    connect(clearPb_,SIGNAL(clicked()),
+            editor_,SLOT(slotClear()));
 
     //Close button
     connect(closePb_,SIGNAL(clicked()),
@@ -117,11 +132,7 @@ NodeSearchWidget::NodeSearchWidget(QWidget *parent) :
 
     queryProgress_->hide();
 
-	resW_->hide();
-	editor_->setQueryTeCanExpand(true);
     stopPb_->setEnabled(false);
-	//mainLayout_->setStretch(1,0);
-	//mainLayout_->setStretch(0,1);
 }
 
 NodeSearchWidget::~NodeSearchWidget()
@@ -139,18 +150,14 @@ void NodeSearchWidget::setRootNode(VInfo_ptr info)
 	editor_->setRootNode(info);
 }
 
-void NodeSearchWidget::slotShowDefPanel(bool)
+void NodeSearchWidget::slotShowDefPanel(bool b)
 {
-	editor_->toggleDefPanelVisible();
+    editor_->showDefPanel(b);
+}
 
-	if(editor_->isDefPanelVisible())
-	{
-		defPanelTb_->setText("Editor <<");
-	}
-	else
-	{
-		defPanelTb_->setText("Editor >>");
-	}
+void NodeSearchWidget::slotShowQueryPanel(bool b)
+{
+    editor_->showQueryPanel(b);
 }
 
 void NodeSearchWidget::slotQueryEnabledChanged(bool queryEnabled)
@@ -158,7 +165,7 @@ void NodeSearchWidget::slotQueryEnabledChanged(bool queryEnabled)
 	//if(!engine_->isRunning())
 	//{
 #if 0
-    UserMessage::debug("NodeSearchWidget::slotQueryEnabledChanged -->" + std::string((queryEnabled?"true":"false")));
+    UiLog().dbg() << "NodeSearchWidget::slotQueryEnabledChanged -->" <<  std::string((queryEnabled?"true":"false"));
     findPb_->setEnabled(queryEnabled);
 #endif
 	//}
@@ -166,22 +173,20 @@ void NodeSearchWidget::slotQueryEnabledChanged(bool queryEnabled)
 
 void NodeSearchWidget::slotFind()
 {
-    UserMessage::debug("NodeSearchWidget::slotFind -->");
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
+    UiLog().dbg() << "NodeSearchWidget::slotFind -->";
+#endif
 
     //Avoid double clicking
     if(!findPb_->isEnabled())
     {
-         UserMessage::debug("<-- NodeSearchWidget::slotFind - search is already running");
+         UiLog().dbg() << "<-- NodeSearchWidget::slotFind - search is already running";
          return;
     }
 
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
     qDebug() << engine_->isRunning();
-
-    if(!resW_->isVisible())
-	{
-		resW_->show();
-		editor_->setQueryTeCanExpand(false);
-	}
+#endif
 
 	adjustColumns();
 
@@ -195,13 +200,17 @@ void NodeSearchWidget::slotFind()
     //We set the button state in advance as if the engine were running
     adjustButtonState(true);
 
+    elapsed_.start();
     if(!engine_->runQuery(editor_->query(),editor_->allServers()))
     {
+        elapsed_=QTime();
+
         //if we are here we could not start the query and we need to reset the button state
         adjustButtonState();
     }
-
-    UserMessage::debug("<-- NodeSearchWidget::slotFind");
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
+    UiLog().dbg() << "<-- NodeSearchWidget::slotFind";
+#endif
 }
 
 void NodeSearchWidget::slotStop()
@@ -209,7 +218,6 @@ void NodeSearchWidget::slotStop()
     //It is a blocking call!
     engine_->stopQuery();
     assert(!engine_->isRunning());
-
     adjustButtonState();
 }
 
@@ -221,22 +229,26 @@ void NodeSearchWidget::slotClose()
 
 void NodeSearchWidget::slotQueryStarted()
 {
-    UserMessage::debug("NodeSearchWidget::slotQueryStarted -->");
-
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
+    UiLog().dbg() << "NodeSearchWidget::slotQueryStarted -->";
+#endif
     adjustButtonState();
 
     queryProgress_->setRange(0,0);
 	queryProgress_->show();
 
 	progressLabel_->setText("Search in progress ...");
-
-    UserMessage::debug("<-- NodeSearchWidget::slotQueryStarted");
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
+    UiLog().dbg() << "<-- slotQueryStarted";
+#endif
 }
 
 void NodeSearchWidget::slotQueryFinished()
 {
-    UserMessage::debug("NodeSearchWidget::slotQueryFinished -->");
-    UserMessage::debug("  Search finished. Total node scanned: " + boost::lexical_cast<std::string>(engine_->scannedCount()));
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
+    UiLog().dbg() << "NodeSearchWidget::slotQueryFinished -->";
+    UiLog().dbg() << "  Search finished. Total node scanned: " << engine_->scannedCount();
+#endif
 
     adjustButtonState();
 
@@ -244,15 +256,28 @@ void NodeSearchWidget::slotQueryFinished()
 	queryProgress_->setRange(0,1);
 	queryProgress_->setValue(1);
 
-	progressLabel_->setText(QString::number(model_->rowCount()) + " items found");
+    QString s="<b>" + QString::number(model_->rowCount()) + "</b> items found in " +
+             QString::number(elapsed_.elapsed()*0.001,'f',1)  + " s";
 
-	adjustColumns();
+    QColor col(90,92,92);
+    if(engine_->wasMaxReached())
+    {
+        s+=" (stopped due to <b><u><font color=\'" + col.name() + "\'>maxnum reached!</font></u></b>)";
+    }
+    else if(engine_->wasStopped())
+    {
+        s+=" (query was <b><u><font color=\'" + col.name() + "\'>interrupted!</font></u></b>)";
+    }
+    progressLabel_->setText(s);
+    elapsed_=QTime();
 
+#ifdef _UI_NODESEARCHWIDGET_DEBUG
     qDebug() << engine_->isRunning();
-
-    UserMessage::debug("<-- NodeSearchWidget::slotQueryFinished");
+    UiLog().dbg() << "<-- NodeSearchWidget::slotQueryFinished";
+#endif
 }
 
+
 void NodeSearchWidget::adjustButtonState()
 {
     adjustButtonState(engine_->isRunning());
@@ -273,9 +298,9 @@ void NodeSearchWidget::adjustButtonState(bool engineRunning)
         editor_->setEnabled(true);
     }
 
-    UserMessage::debug("NodeSearchWidget::adjustButtonState -->");
-    UserMessage::debug(" findTb_: " + boost::lexical_cast<std::string>(findPb_->isEnabled()));
-    UserMessage::debug("<-- NodeSearchWidget::adjustButtonState");
+    UiLog().dbg() << "NodeSearchWidget::adjustButtonState -->";
+    UiLog().dbg() << " findTb_: " <<  findPb_->isEnabled();
+    UiLog().dbg() << "<-- adjustButtonState";
 }
 
 void NodeSearchWidget::adjustColumns()
@@ -284,21 +309,48 @@ void NodeSearchWidget::adjustColumns()
 	{
 		columnsAdjusted_=true;
 
-    //We preset the column width. Setting it dynamically can be expensive
-	//for a large number of rows (> 1M)
-	QFont f;
-	QFontMetrics fm(f);
-	resTree_->setColumnWidth(0,fm.width("serverserverser"));
-	resTree_->setColumnWidth(1,fm.width("/suite/family1/family2/longtaskname1"));
-	resTree_->setColumnWidth(2,fm.width("suspended"));
-	resTree_->setColumnWidth(3,fm.width("family"));
-
-	//for(int i=0; i < model_->columnCount()-1; i++)
-	//	resTree_->resizeColumnToContents(i);
+        //We preset the column width. Setting it dynamically can be expensive
+        //for a large number of rows (> 1M)
+        QFont f;
+        QFontMetrics fm(f);
+        resTree_->setColumnWidth(0,fm.width("serverserverserse"));
+        resTree_->setColumnWidth(1,fm.width("/suite/family1/family2/longtaskname1"));
+        resTree_->setColumnWidth(2,fm.width("suspended"));
+        resTree_->setColumnWidth(3,fm.width("family"));
 	}
+}
+
+void NodeSearchWidget::writeSettings(QSettings &settings)
+{
+    settings.setValue("defPanel",editor_->isDefPanelVisible());
+    settings.setValue("queryPanel",editor_->isQueryPanelVisible());
+    QStringList colW;
+    for(int i=0; i < resTree_->model()->columnCount()-1; i++)
+        colW << QString::number(resTree_->columnWidth(i));
 
+    settings.setValue("resColumnWidth",colW);
 }
 
+void NodeSearchWidget::readSettings(const QSettings &settings)
+{
+    if(settings.contains("defPanel"))
+    {
+        defPanelTb_->setChecked(settings.value("defPanel").toBool());
+    }
+    if(settings.contains("queryPanel"))
+    {
+        queryPanelTb_->setChecked(settings.value("queryPanel").toBool());
+    }
+    if(settings.contains("resColumnWidth"))
+    {
+        QStringList lst=settings.value("resColumnWidth").toStringList();
+        for(int i=0; i < lst.count(); i++)
+            resTree_->setColumnWidth(i,lst[i].toInt());
+
+        if(lst.count() >= 3)
+            columnsAdjusted_=true;
+    }
+}
 
 
 
diff --git a/Viewer/src/NodeSearchWidget.hpp b/Viewer/src/NodeSearchWidget.hpp
index 95bc2ec..ac4d71d 100644
--- a/Viewer/src/NodeSearchWidget.hpp
+++ b/Viewer/src/NodeSearchWidget.hpp
@@ -12,6 +12,8 @@
 
 #include <QAbstractItemModel>
 #include <QDialog>
+#include <QSettings>
+#include <QTime>
 #include <QWidget>
 
 #include "ServerFilter.hpp"
@@ -34,11 +36,15 @@ public:
     void setServerFilter(ServerFilter*);
     void setRootNode(VInfo_ptr);
 
+    void writeSettings(QSettings &settings);
+    void readSettings(const QSettings &settings);
+
 public Q_SLOTS:
 	void slotStop();
 
 protected Q_SLOTS:
-	void slotShowDefPanel(bool);
+    void slotShowDefPanel(bool);
+    void slotShowQueryPanel(bool);
 	void slotFind();
 	void slotClose();
 	void slotQueryStarted();
@@ -59,6 +65,7 @@ private:
 	NodeQueryEngine* engine_;
 	NodeQueryResultModel* model_;
 	bool columnsAdjusted_;
+    QTime elapsed_;
 };
 
 #endif /* VIEWER_SRC_NODESEARCHWIDGET_HPP_ */
diff --git a/Viewer/src/NodeSearchWidget.ui b/Viewer/src/NodeSearchWidget.ui
index 0dc06d4..c07a7ea 100644
--- a/Viewer/src/NodeSearchWidget.ui
+++ b/Viewer/src/NodeSearchWidget.ui
@@ -25,7 +25,16 @@
         <property name="spacing">
          <number>4</number>
         </property>
-        <property name="margin">
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
          <number>0</number>
         </property>
         <item>
@@ -68,14 +77,14 @@
     </layout>
    </item>
    <item>
-    <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0,0">
+    <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,0,0,0,0,0,0,0,0">
      <item>
       <widget class="QPushButton" name="findPb_">
        <property name="text">
         <string>Search</string>
        </property>
        <property name="icon">
-        <iconset resource="viewer.qrc">
+        <iconset>
          <normaloff>:/viewer/search_decor.svg</normaloff>:/viewer/search_decor.svg</iconset>
        </property>
       </widget>
@@ -88,13 +97,46 @@
       </widget>
      </item>
      <item>
-      <widget class="Line" name="line">
+      <widget class="Line" name="line_2">
        <property name="orientation">
         <enum>Qt::Horizontal</enum>
        </property>
       </widget>
      </item>
      <item>
+      <widget class="QPushButton" name="clearPb_">
+       <property name="toolTip">
+        <string>Clear the node and attribute query options</string>
+       </property>
+       <property name="text">
+        <string>Clear options</string>
+       </property>
+      </widget>
+     </item>
+     <item>
+      <spacer name="verticalSpacer_2">
+       <property name="orientation">
+        <enum>Qt::Vertical</enum>
+       </property>
+       <property name="sizeType">
+        <enum>QSizePolicy::Fixed</enum>
+       </property>
+       <property name="sizeHint" stdset="0">
+        <size>
+         <width>20</width>
+         <height>10</height>
+        </size>
+       </property>
+      </spacer>
+     </item>
+     <item>
+      <widget class="QLabel" name="showLabel_">
+       <property name="text">
+        <string>Show:</string>
+       </property>
+      </widget>
+     </item>
+     <item>
       <widget class="QToolButton" name="defPanelTb_">
        <property name="sizePolicy">
         <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -103,10 +145,10 @@
         </sizepolicy>
        </property>
        <property name="text">
-        <string>...</string>
+        <string>Editor</string>
        </property>
        <property name="checkable">
-        <bool>false</bool>
+        <bool>true</bool>
        </property>
        <property name="checked">
         <bool>false</bool>
@@ -114,6 +156,22 @@
       </widget>
      </item>
      <item>
+      <widget class="QToolButton" name="queryPanelTb_">
+       <property name="sizePolicy">
+        <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
+       <property name="text">
+        <string>Query</string>
+       </property>
+       <property name="checkable">
+        <bool>true</bool>
+       </property>
+      </widget>
+     </item>
+     <item>
       <spacer name="verticalSpacer">
        <property name="orientation">
         <enum>Qt::Vertical</enum>
@@ -150,8 +208,6 @@
    <container>1</container>
   </customwidget>
  </customwidgets>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/NodeViewBase.cpp b/Viewer/src/NodeViewBase.cpp
index b755188..18a356b 100644
--- a/Viewer/src/NodeViewBase.cpp
+++ b/Viewer/src/NodeViewBase.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
diff --git a/Viewer/src/NodeViewBase.hpp b/Viewer/src/NodeViewBase.hpp
index ff58575..c29f69a 100644
--- a/Viewer/src/NodeViewBase.hpp
+++ b/Viewer/src/NodeViewBase.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -22,17 +22,18 @@ class VSettings;
 class NodeViewBase
 {
 public:
-        explicit NodeViewBase(NodeFilterDef*filterDef);
+        explicit NodeViewBase(NodeFilterDef*);
         virtual ~NodeViewBase(){}
 
 		virtual void reload()=0;
 		virtual void rerender()=0;
 		virtual QWidget* realWidget()=0;
-		virtual VInfo_ptr currentSelection()=0;
+        virtual VInfo_ptr currentSelection()=0;
 		virtual void selectFirstServer()=0;
-		virtual void currentSelection(VInfo_ptr n)=0;
+        virtual void setCurrentSelection(VInfo_ptr n)=0;
 
-		virtual void readSettings(VSettings* vs)=0;
+        virtual void readSettings(VSettings* vs)=0;
+        virtual void writeSettings(VSettings* vs)=0;
 
 protected:
 		NodeFilterDef* filterDef_;
diff --git a/Viewer/src/NodeViewDelegate.cpp b/Viewer/src/NodeViewDelegate.cpp
index e586aae..e5d172d 100644
--- a/Viewer/src/NodeViewDelegate.cpp
+++ b/Viewer/src/NodeViewDelegate.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -26,7 +26,8 @@ NodeViewDelegate::NodeViewDelegate(QWidget *parent) :
     prop_(0),
 	iconSize_(16),
 	iconGap_(3),
-	useStateGrad_(true)
+    useStateGrad_(true),
+    drawAttrSelectionRect_(false)
 {
     /*//Property
 	if(propVec.empty())
@@ -69,6 +70,7 @@ NodeViewDelegate::NodeViewDelegate(QWidget *parent) :
     meterFillBrush_=QBrush(QColor(0,0,255));
     meterThresholdBrush_=QBrush(QColor(0,0,255));
     limitFillBrush_=QBrush(QColor(0,255,0));
+    limitExtraFillBrush_=QBrush(QColor(0,0,255));
 
 	attrRenderers_["meter"]=&NodeViewDelegate::renderMeter;
 	attrRenderers_["label"]=&NodeViewDelegate::renderLabel;
@@ -97,14 +99,20 @@ void NodeViewDelegate::notifyChange(VProperty* p)
 
 void NodeViewDelegate::addBaseSettings(std::vector<std::string>& propVec)
 {
+    propVec.push_back("view.common.node_gradient");
     propVec.push_back("view.attribute.eventFillColour");
     propVec.push_back("view.attribute.meterFillColour");
     propVec.push_back("view.attribute.meterThresholdColour");
     propVec.push_back("view.attribute.limitFillColour");
+    propVec.push_back("view.attribute.limitExtraFillColour");
 }
 
 void NodeViewDelegate::updateBaseSettings()
 {
+    if(VProperty* p=prop_->find("view.common.node_gradient"))
+    {
+        useStateGrad_=p->value().toBool();
+    }
     if(VProperty* p=prop_->find("view.attribute.eventFillColour"))
     {
         eventFillBrush_=QBrush(p->value().value<QColor>());
@@ -134,6 +142,10 @@ void NodeViewDelegate::updateBaseSettings()
     if(VProperty* p=prop_->find("view.attribute.limitFillColour"))
     {
         limitFillBrush_=QBrush(p->value().value<QColor>());
+    }   
+    if(VProperty* p=prop_->find("view.attribute.limitExtraFillColour"))
+    {
+        limitExtraFillBrush_=QBrush(p->value().value<QColor>());
     }
 
     //limit pixmaps
@@ -148,10 +160,16 @@ void NodeViewDelegate::updateBaseSettings()
     painter.setBrush(limitFillBrush_);
     painter.drawEllipse(1,1,itemSize-2,itemSize-2);
     limitFillPix_=QPixmap::fromImage(img);
+
     painter.fillRect(QRect(QPoint(0,0),img.size()),Qt::transparent);
     painter.setBrush(QColor(240,240,240));
     painter.drawEllipse(1,1,itemSize-2,itemSize-2);
     limitEmptyPix_=QPixmap::fromImage(img);
+
+    painter.fillRect(QRect(QPoint(0,0),img.size()),Qt::transparent);
+    painter.setBrush(limitExtraFillBrush_);
+    painter.drawEllipse(1,1,itemSize-2,itemSize-2);
+    limitExtraFillPix_=QPixmap::fromImage(img);
 }
 
 QSize NodeViewDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index ) const
@@ -188,6 +206,12 @@ void NodeViewDelegate::adjustIconSize()
 	else if ()*/
 }
 
+void NodeViewDelegate::renderSelectionRect(QPainter* painter,QRect r) const
+{
+    painter->setPen(nodeSelectPen_);
+    painter->setBrush(Qt::NoBrush);
+    painter->drawRect(r);
+}
 
 void NodeViewDelegate::renderStatus(QPainter *painter,const QModelIndex& index,
                                     const QStyleOptionViewItemV4& option) const
@@ -265,6 +289,8 @@ void NodeViewDelegate::renderMeter(QPainter *painter,QStringList data,const QSty
 	int	max=data.at(4).toInt();
     int threshold=data.at(5).toInt();
 
+    bool selected=option.state & QStyle::State_Selected;
+
     //float percent=static_cast<float>(val-min)/static_cast<float>(max-min);
     //float thresholdPercent=static_cast<float>(threshold-min)/static_cast<float>(max-min);
 
@@ -277,8 +303,8 @@ void NodeViewDelegate::renderMeter(QPainter *painter,QStringList data,const QSty
 
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
     QFontMetrics fm(attrFont_);
 
@@ -364,7 +390,6 @@ void NodeViewDelegate::renderMeter(QPainter *painter,QStringList data,const QSty
     painter->setBrush(Qt::NoBrush);
     painter->drawRect(stRect);
 
-
     //Draw name
 	painter->setPen(Qt::black);
 	painter->setFont(nameFont);
@@ -375,6 +400,13 @@ void NodeViewDelegate::renderMeter(QPainter *painter,QStringList data,const QSty
 	painter->setFont(valFont);
 	painter->drawText(valRect,Qt::AlignLeft | Qt::AlignVCenter,valStr);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=stRect;
+        sr.setRight(valRect.right());
+        renderSelectionRect(painter,sr.adjusted(-3,-2,2,3));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -399,11 +431,12 @@ void NodeViewDelegate::renderLabel(QPainter *painter,QStringList data,const QSty
     int frontOffset=8;
     int offset=2;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
-
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	int multiCnt=val.count('\n');
 
@@ -489,7 +522,20 @@ void NodeViewDelegate::renderLabel(QPainter *painter,QStringList data,const QSty
 		painter->drawText(multiValRect,Qt::AlignLeft | Qt::AlignTop,multiVal);
 	}
 
-	if(setClipRect)
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        sr.setRight(valRect.right());
+        if(multiCnt > 0)
+        {
+            sr.setRight(multiValRect.right());
+            sr.setBottom(multiValRect.bottom());
+        }
+
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
+    if(setClipRect)
 	{
 		painter->restore();
 	}
@@ -513,10 +559,12 @@ void NodeViewDelegate::renderEvent(QPainter *painter,QStringList data,const QSty
     int frontOffset=8;
     int offset=2;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The control rect
 	int ch=(fillRect.height()-4 < 10)?(fillRect.height()-4):8;
@@ -554,6 +602,13 @@ void NodeViewDelegate::renderEvent(QPainter *painter,QStringList data,const QSty
 	painter->setFont(font);
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=cRect;
+        sr.setRight(nameRect.right());
+        renderSelectionRect(painter,sr.adjusted(-3,-3,2,4));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -572,10 +627,12 @@ void NodeViewDelegate::renderVar(QPainter *painter,QStringList data,const QStyle
 	int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-				fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
 	QFont font=attrFont_;
@@ -602,6 +659,12 @@ void NodeViewDelegate::renderVar(QPainter *painter,QStringList data,const QStyle
 	painter->setFont(font);
 	painter->drawText(textRect,Qt::AlignLeft | Qt::AlignVCenter,text);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=textRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -620,10 +683,12 @@ void NodeViewDelegate::renderGenvar(QPainter *painter,QStringList data,const QSt
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-				fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
 	QFont font=attrFont_;
@@ -650,6 +715,12 @@ void NodeViewDelegate::renderGenvar(QPainter *painter,QStringList data,const QSt
 	painter->setFont(font);
 	painter->drawText(textRect,Qt::AlignLeft | Qt::AlignVCenter,text);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=textRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -659,14 +730,14 @@ void NodeViewDelegate::renderGenvar(QPainter *painter,QStringList data,const QSt
 void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
 	if(data.count() != 4)
-			return;
+        return;
 
 	//The data
 	int	val=data.at(2).toInt();
-	int	max=data.at(3).toInt();
+    int	maxVal=data.at(3).toInt();
 	QString name=data.at(1) + ":";
-	QString valStr=QString::number(val) + "/" + QString::number(max);
-	bool drawItem=(max < 21);
+    QString valStr=QString::number(val) + "/" + QString::number(maxVal);
+    bool drawItem=(maxVal < 51);
 
 	QFontMetrics fm(attrFont_);
 	int offset=2;
@@ -676,10 +747,12 @@ void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QSty
 	int gap=fm.width('A');
     int itemSize=limitFillPix_.width();
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
 	QFont nameFont=attrFont_;
@@ -702,7 +775,7 @@ void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QSty
 	if(drawItem)
 	{
 		xItem=valRect.right()+gap;
-		fillRect.setRight(xItem+max*(itemSize+itemOffset)+itemOffset);
+        fillRect.setRight(xItem+maxVal*(itemSize+itemOffset)+itemOffset);
 	}
 	else
 	{
@@ -725,15 +798,19 @@ void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QSty
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
 	//Draw value
-	painter->setPen(Qt::black);
-	painter->setFont(valFont);
+    if(val < maxVal)
+        painter->setPen(Qt::black);
+    else
+        painter->setPen(Qt::red);
+
+    painter->setFont(valFont);
 	painter->drawText(valRect,Qt::AlignLeft | Qt::AlignVCenter,valStr);
 
 	//Draw items
 	if(drawItem)
 	{	
 		int yItem=option.rect.y()+(option.rect.height()-itemSize)/2;
-		for(int i=0; i < max; i++)
+        for(int i=0; i < maxVal; i++)
 		{	 
             if(i >= val)
 			{
@@ -741,15 +818,26 @@ void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QSty
                 painter->drawPixmap(xItem,yItem,itemSize,itemSize,limitEmptyPix_);
 			}
             else
-            {
+            {              
                 painter->drawPixmap(xItem,yItem,itemSize,itemSize,limitFillPix_);
             }
 
-
 			xItem+=itemOffset+itemSize;
-		}		
+        }
+        for(int i=maxVal; i < val; i++)
+        {
+            painter->drawPixmap(xItem,yItem,itemSize,itemSize,limitExtraFillPix_);
+            xItem+=itemOffset+itemSize;
+        }
 	}
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        sr.setRight(valRect.right());
+        renderSelectionRect(painter,sr.adjusted(-3,-1,3,1));
+    }
+
 	if(setClipRect || drawItem)
 	{
 		painter->restore();
@@ -759,16 +847,18 @@ void NodeViewDelegate::renderLimit(QPainter *painter,QStringList data,const QSty
 void NodeViewDelegate::renderLimiter(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
 	if(data.count() != 3)
-			return;
+        return;
 
 	QString name="inlimit " + data.at(2) +":" +data.at(1);
 
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
+    if(selected)
 			fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
@@ -796,6 +886,12 @@ void NodeViewDelegate::renderLimiter(QPainter *painter,QStringList data,const QS
 	painter->setFont(nameFont);
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -805,7 +901,7 @@ void NodeViewDelegate::renderLimiter(QPainter *painter,QStringList data,const QS
 void NodeViewDelegate::renderTrigger(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
 	if(data.count() !=3)
-			return;
+        return;
 
     int triggerType=data[1].toInt();
 
@@ -814,9 +910,11 @@ void NodeViewDelegate::renderTrigger(QPainter *painter,QStringList data,const QS
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,2,0,-2);
-	if(option.state & QStyle::State_Selected)
+    if(selected)
 		fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
@@ -848,9 +946,16 @@ void NodeViewDelegate::renderTrigger(QPainter *painter,QStringList data,const QS
         painter->setPen(Qt::black);
     else
         painter->setPen(Qt::blue);
+
     painter->setFont(font);
 	painter->drawText(textRect,Qt::AlignLeft | Qt::AlignVCenter,text);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=textRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -860,17 +965,19 @@ void NodeViewDelegate::renderTrigger(QPainter *painter,QStringList data,const QS
 void NodeViewDelegate::renderTime(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
 	if(data.count() != 2)
-			return;
+        return;
 
 	QString name=data.at(1);
 
     int offset=2;
-    int frontOffset=2;
+    int frontOffset=8;
+
+    bool selected=option.state & QStyle::State_Selected;
 
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
 	QFont nameFont=attrFont_;
@@ -897,6 +1004,12 @@ void NodeViewDelegate::renderTime(QPainter *painter,QStringList data,const QStyl
 	painter->setFont(nameFont);
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -906,13 +1019,15 @@ void NodeViewDelegate::renderTime(QPainter *painter,QStringList data,const QStyl
 void NodeViewDelegate::renderDate(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
 	if(data.count() != 2)
-			return;
+        return;
 
 	QString name=data.at(1);
 
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
 	if(option.state & QStyle::State_Selected)
@@ -943,6 +1058,12 @@ void NodeViewDelegate::renderDate(QPainter *painter,QStringList data,const QStyl
 	painter->setFont(nameFont);
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
@@ -957,7 +1078,7 @@ void NodeViewDelegate::renderDate(QPainter *painter,QStringList data,const QStyl
 void NodeViewDelegate::renderRepeat(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
     if(data.count() !=  7)
-			return;
+        return;
 
     QString type=data.at(1);
     QString name=data.at(2);
@@ -969,10 +1090,12 @@ void NodeViewDelegate::renderRepeat(QPainter *painter,QStringList data,const QSt
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
     if(type == "day")
     {
@@ -997,6 +1120,12 @@ void NodeViewDelegate::renderRepeat(QPainter *painter,QStringList data,const QSt
         painter->setFont(nameFont);
         painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+        if(selected && drawAttrSelectionRect_)
+        {
+            QRect sr=nameRect;
+            renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+        }
+
         if(setClipRect)
         {
             painter->restore();
@@ -1085,6 +1214,16 @@ void NodeViewDelegate::renderRepeat(QPainter *painter,QStringList data,const QSt
             painter->drawText(dotRect,Qt::AlignLeft | Qt::AlignVCenter,"...");
         }
 
+        if(selected && drawAttrSelectionRect_)
+        {
+            QRect sr=nameRect;
+            sr.setRight(valRect.right());
+            if(!endDot.isEmpty())
+                sr.setRight(dotRect.right());
+
+            renderSelectionRect(painter,sr.adjusted(-2,0,2,0));
+        }
+
         if(setClipRect)
         {
             painter->restore();
@@ -1094,19 +1233,20 @@ void NodeViewDelegate::renderRepeat(QPainter *painter,QStringList data,const QSt
 
 void NodeViewDelegate::renderLate(QPainter *painter,QStringList data,const QStyleOptionViewItemV4& option) const
 {
-
 	if(data.count() != 2)
-			return;
+        return;
 
 	QString name="late: " + data.at(1);
 
     int offset=2;
     int frontOffset=8;
 
+    bool selected=option.state & QStyle::State_Selected;
+
 	//The border rect (we will adjust its  width)
     QRect fillRect=option.rect.adjusted(frontOffset,1,0,-1);
-	if(option.state & QStyle::State_Selected)
-			fillRect.adjust(0,1,0,-1);
+    if(selected)
+        fillRect.adjust(0,1,0,-1);
 
 	//The text rectangle
 	QFont nameFont=attrFont_;
@@ -1132,14 +1272,14 @@ void NodeViewDelegate::renderLate(QPainter *painter,QStringList data,const QStyl
 	painter->setFont(nameFont);
 	painter->drawText(nameRect,Qt::AlignLeft | Qt::AlignVCenter,name);
 
+    if(selected && drawAttrSelectionRect_)
+    {
+        QRect sr=nameRect;
+        renderSelectionRect(painter,sr.adjusted(-3,0,2,0));
+    }
+
 	if(setClipRect)
 	{
 		painter->restore();
 	}
 }
-
-
-
-
-
-
diff --git a/Viewer/src/NodeViewDelegate.hpp b/Viewer/src/NodeViewDelegate.hpp
index 8ca9b8e..6271404 100644
--- a/Viewer/src/NodeViewDelegate.hpp
+++ b/Viewer/src/NodeViewDelegate.hpp
@@ -39,6 +39,8 @@ protected:
     void addBaseSettings(std::vector<std::string>&);
     void updateBaseSettings();
 
+    void renderSelectionRect(QPainter* painter,QRect r) const;
+
 	virtual void renderStatus(QPainter *painter,const QModelIndex& index,
 	                          const QStyleOptionViewItemV4& option) const;
 
@@ -79,13 +81,16 @@ protected:
 	bool useStateGrad_;
 	mutable QLinearGradient grad_;
 	static int lighter_;
+    bool drawAttrSelectionRect_;
     QBrush eventFillBrush_;
     QBrush eventBgBrush_;
     QBrush meterFillBrush_;
     QBrush meterThresholdBrush_;
     QBrush limitFillBrush_;
+    QBrush limitExtraFillBrush_;
     QPixmap limitFillPix_;
     QPixmap limitEmptyPix_;
+    QPixmap limitExtraFillPix_;
 };
 
 #endif
diff --git a/Viewer/src/NodeWidget.cpp b/Viewer/src/NodeWidget.cpp
index 87a165d..cc6deb2 100644
--- a/Viewer/src/NodeWidget.cpp
+++ b/Viewer/src/NodeWidget.cpp
@@ -26,7 +26,8 @@ NodeWidget::NodeWidget(const std::string& type,ServerFilter* serverFilter,QWidge
    icons_(0),
    atts_(0),
    filterDef_(0),
-   states_(0)
+   states_(0),
+   broadcastSelection_(true)
 {
 	//Define the icon filter for the model. It controls what icons
 	//are displayed next to the nodes. This is exposed via a menu.
@@ -56,7 +57,7 @@ QWidget* NodeWidget::widget()
 
 VInfo_ptr NodeWidget::currentSelection()
 {
-	return view_->currentSelection();
+    return view_->currentSelection();
 }
 
 /*void NodeWidget::currentSelection(VInfo_ptr info)
@@ -66,7 +67,17 @@ VInfo_ptr NodeWidget::currentSelection()
 
 void NodeWidget::setCurrentSelection(VInfo_ptr info)
 {
-	view_->currentSelection(info);
+    if(!detached())
+    {
+        broadcastSelection_=false;
+        view_->setCurrentSelection(info);
+        broadcastSelection_=true;
+    }
+}
+
+void NodeWidget::slotSelectionChangedInBc(VInfo_ptr info)
+{
+    view_->setCurrentSelection(info);
 }
 
 void NodeWidget::reload()
diff --git a/Viewer/src/NodeWidget.hpp b/Viewer/src/NodeWidget.hpp
index dcd8ce5..b5303b0 100644
--- a/Viewer/src/NodeWidget.hpp
+++ b/Viewer/src/NodeWidget.hpp
@@ -50,9 +50,10 @@ public Q_SLOTS:
 
 protected Q_SLOTS:
 	void slotInfoPanelAction();
+    void slotSelectionChangedInBc(VInfo_ptr info);
 
 Q_SIGNALS:
-	void selectionChanged(VInfo_ptr);
+    //void selectionChanged(VInfo_ptr);
 	void popInfoPanel(VInfo_ptr,QString);
 	void dashboardCommand(VInfo_ptr,QString);
 
@@ -61,6 +62,7 @@ protected:
 	virtual ~NodeWidget();
 
 	void updateActionState(VInfo_ptr);
+    bool broadcastSelection() const {return broadcastSelection_;}
 
 	ServerFilter* serverFilter_;
 
@@ -78,6 +80,7 @@ private:
 	QList<QAction*> dockActions_;
 	QMap<QString,QAction*> dockActionMap_;
 	QList<QAction*> infoPanelActions_;
+    bool broadcastSelection_;
 };
 
 #endif
diff --git a/Viewer/src/OutputBrowser.cpp b/Viewer/src/OutputBrowser.cpp
index 244bd5c..ef5b54b 100644
--- a/Viewer/src/OutputBrowser.cpp
+++ b/Viewer/src/OutputBrowser.cpp
@@ -19,6 +19,9 @@
 #include "TextEditSearchLine.hpp"
 #include "TextPager/TextPagerSearchInterface.hpp"
 #include "TextPagerWidget.hpp"
+#include "DirectoryHandler.hpp"
+#include "UserMessage.hpp"
+
 
 int OutputBrowser::minPagerTextSize_=1*1024*1024;
 int OutputBrowser::minPagerSparseSize_=30*1024*1024;
@@ -173,8 +176,10 @@ void OutputBrowser::loadFile(QString fileName)
 
 void OutputBrowser::loadText(QString txt,QString fileName,bool resetFile)
 {
-    if(resetFile)
-       file_.reset();
+    // prior to the ability to save local copies of files, we reset the file_ member here;
+    // but now we need to keep it so that we can save a copy of it
+    //if(resetFile)
+       //file_.reset();
 
     //We estimate the size in bytes
 	qint64 txtSize=txt.size()*2;
@@ -195,6 +200,44 @@ void OutputBrowser::loadText(QString txt,QString fileName,bool resetFile)
     updateCursorFromCache(fileName.toStdString());
 }
 
+void OutputBrowser::saveCurrentFile(QString &fileNameToSaveTo)
+{
+    assert(file_);
+
+    if (file_->storageMode() == VFile::DiskStorage)
+    {
+        // if we have the file on disk, then just copy it to the new location
+        std::string to = fileNameToSaveTo.toStdString();
+        std::string errorMessage;
+        bool ok = DirectoryHandler::copyFile(file_->path(), to, errorMessage);
+        if (!ok)
+        {
+            UserMessage::message(UserMessage::ERROR,true,"Failed to copy file. Reason:\n " + errorMessage);
+        }
+    }
+    else
+    {
+        // file in memory - just dump it to file
+        QFile file(fileNameToSaveTo);
+        if (file.open(QFile::WriteOnly | QFile::Text))
+        {
+            QTextStream out(&file);
+            QString s(file_->data());
+            out << s;
+        }
+        else
+        {
+            UserMessage::message(UserMessage::ERROR,true,"Failed to save file to  " + fileNameToSaveTo.toStdString());
+        }
+    }
+}
+
+bool OutputBrowser::isFileLoaded()
+{
+    return (file_ != 0);
+}
+
+
 void OutputBrowser::updateCursorFromCache(const std::string& sourcePath)
 {
 #if 0
diff --git a/Viewer/src/OutputBrowser.hpp b/Viewer/src/OutputBrowser.hpp
index fb5612d..29ba013 100644
--- a/Viewer/src/OutputBrowser.hpp
+++ b/Viewer/src/OutputBrowser.hpp
@@ -49,6 +49,8 @@ public:
     void clear();
     void loadFile(VFile_ptr file);
     void loadText(QString text,QString fileName,bool resetFile=true);
+    bool isFileLoaded();
+    void saveCurrentFile(QString &fileNameToSaveTo);
 	void adjustHighlighter(QString fileName);
 	void setFontProperty(VProperty* p);
 	void updateFont();
diff --git a/Viewer/src/OutputCache.cpp b/Viewer/src/OutputCache.cpp
index b6abbdd..1f2a0e9 100644
--- a/Viewer/src/OutputCache.cpp
+++ b/Viewer/src/OutputCache.cpp
@@ -10,7 +10,7 @@
 
 #include "OutputCache.hpp"
 
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 OutputCache* OutputCache::instance_=NULL;
 
@@ -81,7 +81,7 @@ OutputCacheItem* OutputCache::add(VInfo_ptr info,const std::string& sourcePath,V
         return NULL;
 
 #ifdef _UI_OUTPUTCACHE_DEBUG
-    UserMessage::debug("OutputCache::add --> file");
+    UiLog().dbg() << "OutputCache::add --> file";
     file->print();
     print();
 #endif
@@ -104,15 +104,15 @@ OutputCacheItem* OutputCache::add(VInfo_ptr info,const std::string& sourcePath,V
             
             items_[id]=item;
 #ifdef _UI_OUTPUTCACHE_DEBUG
-            UserMessage::debug("  add item:" + id);
+            UiLog().dbg() << "  add item:" << id;
             print();
-            UserMessage::debug("<-- OutputCache::add");
+            UiLog().dbg() << "<-- OutputCache::add";
 #endif
             return item;
         }
     }
 #ifdef _UI_OUTPUTCACHE_DEBUG
-    UserMessage::debug("<-- OutputCache::add");
+    UiLog().dbg() << "<-- OutputCache::add";
 #endif
 
     return NULL;
@@ -123,12 +123,12 @@ void OutputCache::detach(OutputCacheItem* item)
     if(item)
     {
 #ifdef _UI_OUTPUTCACHE_DEBUG
-        UserMessage::debug("OutputCache::detach -->");
+        UiLog().dbg() << "OutputCache::detach -->";
         print();
-        UserMessage::debug("  detach item: " + item->id_);
+        UiLog().dbg() << "  detach item: " << item->id_;
         item->detach();
         print();
-        UserMessage::debug("<-- OutputCache::detach");
+        UiLog().dbg() << "<-- detach";
 #endif
     }
 }
@@ -138,7 +138,7 @@ void OutputCache::removeItem()
     if(OutputCacheItem* item=static_cast<OutputCacheItem*>(sender()))
     {
 #ifdef _UI_OUTPUTCACHE_DEBUG
-        UserMessage::debug("OutputCache::removeItem --> file");
+        UiLog().dbg() << "OutputCache::removeItem --> file";
         item->file_->print();
         print();
 #endif
@@ -148,9 +148,9 @@ void OutputCache::removeItem()
             if(it.value() == item)
             {            
 #ifdef _UI_OUTPUTCACHE_DEBUG
-                UserMessage::debug("  remove item --> ref_count:" +
-                                     QString::number(it.value()->file_.use_count()).toStdString() +
-                                     " item:" + it.key());
+                UiLog().dbg() << "  remove item --> ref_count:" <<
+                                     it.value()->file_.use_count() <<
+                                     " item:" << it.key();
 #endif
                 //assert(item->file_.use_count() == 1);
                 //The ref count is not necessarily 1 here
@@ -158,7 +158,7 @@ void OutputCache::removeItem()
                 item->deleteLater();
 #ifdef _UI_OUTPUTCACHE_DEBUG
                 print();
-                UserMessage::debug("<-- OutputCache::removeItem");
+                UiLog().dbg() << "<-- OutputCache::removeItem";
 #endif
                 return;
             }
@@ -187,14 +187,14 @@ OutputCacheItem* OutputCache::use(VInfo_ptr info,const std::string& sourcePath)
 
 void OutputCache::print()
 {
-    UserMessage::debug("  OutputCache contents -->");
+    UiLog().dbg() << "  OutputCache contents -->";
     QMap<std::string, OutputCacheItem*>::iterator it = items_.begin();
     while (it != items_.end() )
     {
-        UserMessage::debug("  item:" + it.key() + " tmp:" +
-                             it.value()->file_->path() + " countdown:" +
-                             ((it.value()->isActive())?"on":"off"));
+        UiLog().dbg() << "  item:" + it.key() << " tmp:" <<
+                             it.value()->file_->path() << " countdown:" <<
+                             ((it.value()->isActive())?"on":"off");
         ++it;
     }
-    UserMessage::debug("  <-- OutputCache contents");
+    UiLog().dbg() << "  <-- OutputCache contents";
 }
diff --git a/Viewer/src/OutputClient.cpp b/Viewer/src/OutputClient.cpp
index b9672fc..a31af76 100644
--- a/Viewer/src/OutputClient.cpp
+++ b/Viewer/src/OutputClient.cpp
@@ -48,7 +48,7 @@ void OutputClient::connectToHost(std::string host,int port)
 	soc_->abort();
 	soc_->connectToHost(QString::fromStdString(host),port);
 
-	//We cannot change the temout through the qt api so we need this hack.
+    //We cannot change the timeout through the qt api so we need this hack.
 	QTimer::singleShot(timeout_, this, SLOT(slotCheckTimeout()));
 }
 
diff --git a/Viewer/src/OutputDirClient.cpp b/Viewer/src/OutputDirClient.cpp
index dddfd57..91f83e7 100644
--- a/Viewer/src/OutputDirClient.cpp
+++ b/Viewer/src/OutputDirClient.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,7 +12,7 @@
 
 #include <QDebug>
 
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/path.hpp>
@@ -44,8 +44,8 @@ void OutputDirClient::slotCheckTimeout()
 
 void OutputDirClient::slotConnected()
 {
-    UserMessage::message(UserMessage::DBG,false,"OutputDirClient::slotConnected() connected to " +
-                         soc_->peerName().toStdString());
+    UiLog().dbg() << "OutputDirClient::slotConnected() connected to " <<
+                         soc_->peerName();
 
 	soc_->write("list ",5);
 	soc_->write(remoteFile_.c_str(),remoteFile_.size());
@@ -55,7 +55,7 @@ void OutputDirClient::slotConnected()
 void OutputDirClient::slotError(QAbstractSocket::SocketError err)
 {
 #ifdef _UI_OUTPUTDIRCLIENT_DEBUG
-    UserMessage::debug("OutputDirClient::slotError --> " + soc_->errorString().toStdString());
+    UiLog().dbg() << "OutputDirClient::slotError --> " << soc_->errorString();
 #endif
 	switch(err)
 	{
@@ -63,14 +63,14 @@ void OutputDirClient::slotError(QAbstractSocket::SocketError err)
     case QAbstractSocket::RemoteHostClosedError:
 
 #ifdef _UI_OUTPUTDIRCLIENT_DEBUG
-        UserMessage::debug("   RemoteHostClosedError ");
+        UiLog().dbg() << "   RemoteHostClosedError ";
 #endif
         //qDebug() << "remote host closed";
         //If no data was transferred we think it is a real error.
         if(data_.isEmpty())
         {
 #ifdef _UI_OUTPUTDIRCLIENT_DEBUG
-            UserMessage::debug("   --> data is empty: file transfer failed");
+            UiLog().dbg() << "   --> data is empty: file transfer failed";
 #endif
             break;
         }
@@ -78,7 +78,7 @@ void OutputDirClient::slotError(QAbstractSocket::SocketError err)
         else
         {
 #ifdef _UI_OUTPUTDIRCLIENT_DEBUG
-            UserMessage::debug("   --> has data: file transfer succeeded");
+            UiLog().dbg() << "   --> has data: file transfer succeeded";
 #endif
             if(dir_)
             {
diff --git a/Viewer/src/OutputDirProvider.cpp b/Viewer/src/OutputDirProvider.cpp
index 28c899a..4208e30 100644
--- a/Viewer/src/OutputDirProvider.cpp
+++ b/Viewer/src/OutputDirProvider.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -15,7 +15,7 @@
 #include "VNode.hpp"
 #include "VReply.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/path.hpp>
@@ -84,28 +84,6 @@ void OutputDirProvider::fetchDir(ServerHandler* server,VNode* n)
 		return;
 	}
 
-    //----------------------------------
-    // The host is the localhost
-    //----------------------------------
-#if 0
-    //if(server->isLocalHost())
-    //{
-        if(server->readFromDisk())
-        {
-            dir=fetchLocalDir(fileName,tynozero);
-            if(dir)
-            {
-                reply_->setDirectory(dir);
-                owner_->infoReady(reply_);
-                return;
-            }
-        }
-   // }
-#endif
-    //----------------------------------------------------
-    // Not the localhost or we could not read dir
-    //----------------------------------------------------
-
     //We try the output client, its asynchronous!
     if(fetchDirViaOutputClient(n,fileName))
     {
@@ -115,20 +93,18 @@ void OutputDirProvider::fetchDir(ServerHandler* server,VNode* n)
       	return;
     }
 
-    //If there is no output client and it is not the localhost we try
-    //to read it again from the disk!!!
-
+    //If there is no output client we try to read it from disk
     dir=fetchLocalDir(fileName);
     if(dir)
     {
         reply_->setDirectory(dir);
         owner_->infoReady(reply_);
         return;
-     }
+    }
 
-     //If we are we coud not get the file
-     reply_->setDirectory(dir);
-     owner_->infoFailed(reply_);
+    //If we are here the error or warning is already set in reply
+    reply_->setDirectory(dir);
+    owner_->infoFailed(reply_);
 }
 
 bool OutputDirProvider::fetchDirViaOutputClient(VNode *n,const std::string& fileName)
@@ -136,14 +112,8 @@ bool OutputDirProvider::fetchDirViaOutputClient(VNode *n,const std::string& file
 	std::string host, port;
 	if(n->logServer(host,port))
 	{
-		//host=host + "baaad";
-
-		//reply_->setInfoText("Getting file through log server: " + host + "@" + port);
-		//owner_->infoProgress(reply_);
-
 		outClient_=makeOutputClient(host,port);
 		outClient_->getDir(fileName);
-
 		return true;
 	}
 
@@ -156,12 +126,12 @@ void OutputDirProvider::slotOutputClientFinished()
 
 	if(dir && dir.get())
 	{
-		reply_->setInfoText("");
-		//reply_->fileReadMode(VReply::LogServerReadMode);
-
-		//std::string method="served by " + outClient_->host() + "@" + outClient_->portStr();
-		//reply_->fileReadMethod(method);
+        dir->setFetchMode(VDir::LogServerFetchMode);
+        std::string method="served by " + outClient_->host() + "@" + outClient_->portStr();
+        dir->setFetchModeStr(method);
+        dir->setFetchDate(QDateTime::currentDateTime());
 
+        reply_->setInfoText("");
 		reply_->setDirectory(dir);
 		owner_->infoReady(reply_);
 	}
@@ -169,37 +139,44 @@ void OutputDirProvider::slotOutputClientFinished()
 
 void OutputDirProvider::slotOutputClientProgress(QString,int)
 {
-	/*reply_->setInfoText(msg.toStdString());
-	owner_->infoProgress(reply_);
-	reply_->setInfoText("");*/
 }
 
 void OutputDirProvider::slotOutputClientError(QString msg)
 {
-	if(info_ && info_.get())
+    if(info_)
 	{
-		if(ServerHandler* server=info_->server())
-		{
-			if(outClient_)
-		    {
-				//Check if it is tryno 0
-                //bool tynozero=(boost::algorithm::ends_with(outClient_->remoteFile(),".0"));
-                VDir_ptr dir=fetchLocalDir(outClient_->remoteFile()); //,tynozero);
-				if(dir)
-				{
-					reply_->setDirectory(dir);
-					owner_->infoReady(reply_);
-					return;
-				}
-		    }
+        std::string sDesc;
+        if(outClient_)
+        {
+            sDesc="Failed to fetch from " + outClient_->host() + "@" + outClient_->portStr();
+            if(!msg.isEmpty())
+                sDesc+=" error: " + msg.toStdString();
+            reply_->setErrorText(sDesc);
+
+            VDir_ptr dir=fetchLocalDir(outClient_->remoteFile());
+            if(dir)
+            {
+                dir->setFetchDate(QDateTime::currentDateTime());
+                dir->setFetchMode(VDir::LocalFetchMode);
+                reply_->setErrorText("");
+                reply_->setDirectory(dir);
+                owner_->infoReady(reply_);
+                return;
+            }
 		}
+        else
+        {
+            sDesc="Failed to fetch from logserver";
+            if(!msg.isEmpty())
+                sDesc+=": " + msg.toStdString();
+            reply_->setErrorText(sDesc);
+        }
 
-		reply_->setErrorText(msg.toStdString());
 		owner_->infoFailed(reply_);
 	}
 }
 
-VDir_ptr OutputDirProvider::fetchLocalDir(const std::string& path)  //,bool trynozero)
+VDir_ptr OutputDirProvider::fetchLocalDir(const std::string& path)
 {
 	VDir_ptr res;
 
@@ -208,33 +185,35 @@ VDir_ptr OutputDirProvider::fetchLocalDir(const std::string& path)  //,bool tryn
 	try {
 		//Is it a directory?
 		if(boost::filesystem::is_directory(p))
-		{
-			return res;
+		{			
+            return res;
 		}
-		//It must be a file
-        //if((trynozero || boost::filesystem::exists(p)) &&
+
         if(boost::filesystem::exists(p.parent_path()))
 		{
-			std::string dirName=p.parent_path().string();
-            //std::string fileName=p.leaf().string();
-
+			std::string dirName=p.parent_path().string();           
             if(info_ && info_->isNode() && info_->node())
             {
                 std::string nodeName=info_->node()->strName();
                 std::string pattern=nodeName+".";
 				res=VDir_ptr(new VDir(dirName,pattern));
-				return res;          
+                res->setFetchDate(QDateTime::currentDateTime());
+                res->setFetchMode(VDir::LocalFetchMode);
+                return res;
             }
-		}
+        }
 
+        std::string msg("No access to path on disk!");
+        reply_->appendErrorText(msg);
 	}
 	catch (const boost::filesystem::filesystem_error& e)
 	{
-		UserMessage::message(UserMessage::WARN,false,"fetchLocalDir failed:" + std::string(e.what()));
-		return res;
+        std::string msg;
+        msg+="No access to path on disk! error: " + std::string(e.what());
+        reply_->appendErrorText(msg);
+        UiLog().warn() << "fetchLocalDir failed:" << std::string(e.what());
 	}
 
-
 	return res;
 }
 
@@ -264,10 +243,4 @@ OutputDirClient* OutputDirProvider::makeOutputClient(const std::string& host,con
 	}
 
 	return outClient_;
-
-
 }
-
-
-
-
diff --git a/Viewer/src/OutputFileClient.cpp b/Viewer/src/OutputFileClient.cpp
index 9f51735..b2f768a 100644
--- a/Viewer/src/OutputFileClient.cpp
+++ b/Viewer/src/OutputFileClient.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,9 +10,9 @@
 
 #include "OutputFileClient.hpp"
 
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
-//#define _UI_OUTPUTFILECLIENT_DEBUG
+#define _UI_OUTPUTFILECLIENT_DEBUG
 
 OutputFileClient::OutputFileClient(const std::string& host,const std::string& portStr,QObject* parent) :
 	OutputClient(host,portStr,parent),
@@ -35,8 +35,6 @@ void OutputFileClient::clearResult()
 
 void OutputFileClient::slotConnected()
 {
-    //Q_EMIT progress("",0);
-
 	soc_->write("get ",4);
 	soc_->write(remoteFile_.c_str(),remoteFile_.size());
 	soc_->write("\n",1);
@@ -48,16 +46,17 @@ void OutputFileClient::slotError(QAbstractSocket::SocketError err)
 	{
 	case QAbstractSocket::RemoteHostClosedError:
 
-		soc_->abort();
-
 		if(total_ == 0)
 		{
-			out_.reset();
-			Q_EMIT error(soc_->errorString());
+            break;
 		}
-		else
+        //Probably there was no error and the connection was closed because all
+        //the data was transferred. Unfortunately the logserver does not send anything
+        //at the end of the data transfer.
+        else
 		{
-			if(out_)
+            soc_->abort();
+            if(out_)
 			{
 				out_->setTransferDuration(stopper_.elapsed());
 				out_->setFetchDate(QDateTime::currentDateTime());
@@ -72,6 +71,7 @@ void OutputFileClient::slotError(QAbstractSocket::SocketError err)
             return;
 
 		}
+
 		break;
     case QAbstractSocket::UnknownSocketError:
         if(soc_->state() != QAbstractSocket::ConnectedState)
@@ -174,18 +174,18 @@ void OutputFileClient::estimateExpectedSize()
     }
 
 #ifdef _UI_OUTPUTFILECLIENT_DEBUG
-    UserMessage::debug("OutputFileClient::estimateExpectedSize -->");
+    UiLog().dbg() << "OutputFileClient::estimateExpectedSize -->";
 #endif
     for(unsigned int i=0; i < dir_->count(); i++)
     {
 #ifdef _UI_OUTPUTFILECLIENT_DEBUG
-        UserMessage::debug("file: " + dir_->fullName(i));
+        UiLog().dbg() << "file: " << dir_->fullName(i);
 #endif
         if(dir_->fullName(i) == remoteFile_)
         {
             expected_=dir_->items().at(i)->size_;
 #ifdef _UI_OUTPUTFILECLIENT_DEBUG
-            UserMessage::debug("  expected size=" + QString::number(expected_).toStdString());
+            UiLog().dbg() << "  expected size=" << expected_;
 #endif
             return;
         }
@@ -193,6 +193,6 @@ void OutputFileClient::estimateExpectedSize()
 
     expected_=0;
 #ifdef _UI_OUTPUTFILECLIENT_DEBUG
-    UserMessage::debug("  expected size=" + QString::number(expected_).toStdString());
+    UiLog().dbg() << "  expected size=" << QString::number(expected_);
 #endif
 }
diff --git a/Viewer/src/OutputFileProvider.cpp b/Viewer/src/OutputFileProvider.cpp
index 7bc4b95..002cd31 100644
--- a/Viewer/src/OutputFileProvider.cpp
+++ b/Viewer/src/OutputFileProvider.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -14,7 +14,7 @@
 #include "VNode.hpp"
 #include "VReply.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <QDateTime>
 
@@ -158,20 +158,18 @@ void OutputFileProvider::fetchFile(ServerHandler *server,VNode *n,const std::str
     	return;
     }
 
-    if(isJobout && n->isSubmitted())
-    {
-        reply_->setInfoText("Current job output does not exist yet (node status is <b>submitted</b>!)");
-        reply_->addLog("MSG>Current job output does not exist yet (node status is <b>submitted</b>!)");
-        owner_->infoReady(reply_);
-        return;
-    }
-
     //----------------------------------
     // The host is the localhost
     //----------------------------------
 
     if(isJobout)
-       reply_->addLog("REMARK>This file is the <b>current</b> job output (defined by variable <b>ECF_JOBOUT</b>).");
+    {
+        if(n->isSubmitted())
+            reply_->addLog("REMARK>This file is the <b>current</b> job output (defined by variable <b>ECF_JOBOUT</b>), but \
+                  beacuse the node status is <b>submitted</b> it may contain the ouput from a previous run!");
+        else
+            reply_->addLog("REMARK>This file is the <b>current</b> job output (defined by variable <b>ECF_JOBOUT</b>).");
+    }
     else
        reply_->addLog("REMARK>This file is <b>not</b> the <b>current</b> job output (defined by <b>ECF_JOBOUT</b>).");
 
@@ -243,7 +241,7 @@ bool OutputFileProvider::fetchFileViaOutputClient(VNode *n,const std::string& fi
     std::string host, port;
     assert(n);
 
-    UserMessage::debug("OutputFileProvider::fetchFileViaOutputClient <-- file: " + fileName);
+    UiLog().dbg() << "OutputFileProvider::fetchFileViaOutputClient <-- file: " << fileName;
 
     //If it is not the jobout file or it is the joubout but it is not the current item in the cache
     //(i.e. we do not want to referesh it) we try to use the cache
@@ -257,7 +255,7 @@ bool OutputFileProvider::fetchFileViaOutputClient(VNode *n,const std::string& fi
             assert(f);
             f->setCached(true);
 
-            UserMessage::debug("  File found in cache");
+            UiLog().dbg() << "  File found in cache";
 
             reply_->setInfoText("");
             reply_->fileReadMode(VReply::LogServerReadMode);
@@ -279,8 +277,8 @@ bool OutputFileProvider::fetchFileViaOutputClient(VNode *n,const std::string& fi
 	{
 		//host=host + "baaad";
 
-        UserMessage::debug("OutputFileProvider::fetchFileViaOutputClient --> host:" + host +
-                             " port:" + port + " file: " + fileName);
+        UiLog().dbg() << "OutputFileProvider::fetchFileViaOutputClient --> host:" << host <<
+                             " port:" << port << " file: " << fileName;
 
         //reply_->setInfoText("Getting file through log server: " + host + "@" + port);
         //owner_->infoProgress(reply_);
@@ -334,22 +332,18 @@ void OutputFileProvider::slotOutputClientFinished()
 
 void OutputFileProvider::slotOutputClientProgress(QString msg,int value)
 {
-    //UserMessage::debug("OutputFileProvider::slotOutputClientProgress " + msg.toStdString());
+    //UiLog().dbg() << "OutputFileProvider::slotOutputClientProgress " << msg;
 
     owner_->infoProgress(msg.toStdString(),value);
 
     //reply_->setInfoText(msg.toStdString());
     //owner_->infoProgress(reply_);
     //reply_->setInfoText("");
-
-    //qDebug() << "prog: " << msg;
 }
 
-
-
 void OutputFileProvider::slotOutputClientError(QString msg)
 {
-    UserMessage::message(UserMessage::DBG,false,"OutputFileProvider::slotOutputClientError error:" + msg.toStdString());
+    UiLog().dbg() << "OutputFileProvider::slotOutputClientError error:" << msg;
     reply_->addLog("TRY> fetch file from logserver: " + outClient_->host() + "@" + outClient_->portStr() + " FAILED");
 
     if(info_)
@@ -436,6 +430,11 @@ std::string OutputFileProvider::joboutFileName() const
 	return std::string();
 }
 
+bool OutputFileProvider::isTryNoZero(const std::string& filename) const
+{
+    return boost::algorithm::ends_with(filename,".0");
+}
+
 void OutputFileProvider::setDir(VDir_ptr dir)
 {
     if(outClient_)
diff --git a/Viewer/src/OutputFileProvider.hpp b/Viewer/src/OutputFileProvider.hpp
index 1cdac93..efcd45d 100644
--- a/Viewer/src/OutputFileProvider.hpp
+++ b/Viewer/src/OutputFileProvider.hpp
@@ -36,6 +36,7 @@ public:
      void setDir(VDir_ptr);
 
      std::string joboutFileName() const;
+     bool isTryNoZero(const std::string& fileName) const;
 
 private Q_SLOTS:
 	void slotOutputClientError(QString);
diff --git a/Viewer/src/OutputItemWidget.cpp b/Viewer/src/OutputItemWidget.cpp
index c431a3e..ab73bcd 100644
--- a/Viewer/src/OutputItemWidget.cpp
+++ b/Viewer/src/OutputItemWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -17,7 +17,9 @@
 #include "ServerHandler.hpp"
 #include "TextPagerEdit.hpp"
 #include "VConfig.hpp"
+#include "VNode.hpp"
 #include "VReply.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 #include <QApplication>
@@ -29,35 +31,40 @@
 #include <QTime>
 #include <QTimer>
 #include <QWidgetAction>
+#include <QFileDialog>
 
 int OutputItemWidget::updateDirTimeout_=1000*60;
 
 OutputItemWidget::OutputItemWidget(QWidget *parent) :
 	QWidget(parent),
 	userClickedReload_(false),
-	ignoreOutputSelection_(false)
+    ignoreOutputSelection_(false),
+    dirColumnsAdjusted_(false),
+    submittedWarning_(false)
 {
     //We try to keep the contents when clicking away
     //tryToKeepContents_=true;
 
     setupUi(this);
 
-	messageLabel_->hide();
-    warnLabel_->hide();
-	dirLabel_->hide();
-
-	fileLabel_->setProperty("fileInfo","1");
-
 	//--------------------------------
 	// The file contents
 	//--------------------------------
 
+    messageLabel_->hide();
+    warnLabel_->hide();
+    fileLabel_->setProperty("fileInfo","1");
+
 	infoProvider_=new OutputFileProvider(this);
 
 	//--------------------------------
 	// The dir contents
 	//--------------------------------
 
+    dirMessageLabel_->hide();
+    dirMessageLabel_->setShowTypeTitle(false);
+    dirLabel_->setProperty("fileInfo","1");
+
 	dirProvider_=new OutputDirProvider(this);
 
 	//The view
@@ -124,8 +131,9 @@ void OutputItemWidget::reload(VInfo_ptr info)
 
     clearContents();
 
-    //enabled_=true;
-	info_=info;
+    //set the info
+    adjust(info);
+
     userClickedReload_ = false;
 
     //info must be a node
@@ -166,6 +174,8 @@ void OutputItemWidget::getLatestFile()
     messageLabel_->stopProgress();
     fileLabel_->clear();
     browser_->clear();
+    dirLabel_->clear();
+    dirMessageLabel_->hide();
     fetchInfo_->clearInfo();
 
     //Get the latest file contents
@@ -186,7 +196,7 @@ void OutputItemWidget::getCurrentFile()
     if(info_)
 	{
 		std::string fullName=currentFullName();
-        UserMessage::message(UserMessage::DBG,false,"output selected: " + fullName);
+        UiLog().dbg()  << "output selected: " << fullName;
 		OutputFileProvider* op=static_cast<OutputFileProvider*>(infoProvider_);
 		op->file(fullName);
 	}
@@ -199,12 +209,14 @@ void OutputItemWidget::clearContents()
     enableDir(false);
     messageLabel_->hide();
     messageLabel_->stopProgress();
-    fileLabel_->clear();
+    fileLabel_->clear();      
+    dirLabel_->clear();
     browser_->clearCursorCache();
     browser_->clear();
     reloadTb_->setEnabled(true);
     userClickedReload_ = false;
     fetchInfo_->clearInfo();
+    submittedWarning_=false;
 }
 
 void OutputItemWidget::updateState(const FlagSet<ChangeFlag>& flags)
@@ -267,16 +279,30 @@ void OutputItemWidget::infoReady(VReply* reply)
         //is reset to default when we first call infoready. So we need to set it again!!
         browser_->updateFont();
 
+        //TODO: make it possible to show warning and info at the same time
         bool hasMessage=false;
-        if(reply->hasWarning())
+        submittedWarning_=false;
+        OutputFileProvider* op=static_cast<OutputFileProvider*>(infoProvider_);
+        if(reply->fileName() == op->joboutFileName() && !op->isTryNoZero(reply->fileName()) &&
+           info_ && info_->isNode() && info_->node() && info_->node()->isSubmitted())
         {
-            messageLabel_->showWarning(QString::fromStdString(reply->warningText()));
             hasMessage=true;
+            submittedWarning_=true;
+            messageLabel_->showWarning("This is the current job output (as defined by variable ECF_JOBOUT), but \
+                   beacuse the node status is <b>submitted</b> it may contain the ouput from a previous run!");
         }
-        else if(reply->hasInfo())
+        else
         {
-            messageLabel_->showInfo(QString::fromStdString(reply->infoText()));
-            hasMessage=true;
+            if(reply->hasWarning())
+            {
+                messageLabel_->showWarning(QString::fromStdString(reply->warningText()));
+                hasMessage=true;
+            }
+            else if(reply->hasInfo())
+            {
+                messageLabel_->showInfo(QString::fromStdString(reply->infoText()));
+                hasMessage=true;
+            }
         }
 
         browser_->adjustHighlighter(QString::fromStdString(reply->fileName()));
@@ -363,9 +389,17 @@ void OutputItemWidget::infoReady(VReply* reply)
     // From output dir provider
     //------------------------
     else
-    {
+    {    
+        //We do not display info/warning here! The dirMessageLabel_ is not part of the dirWidget_ and
+        //is only supposed to display error messages!
+
+        enableDir(true);
+
         //Update the dir widget and select the proper file in the list
         updateDir(reply->directory(),true);
+
+        //Update the dir label
+        dirLabel_->update(reply);
     }
 }
 
@@ -392,17 +426,15 @@ void OutputItemWidget::infoFailed(VReply* reply)
     if(reply->sender() == infoProvider_)
 	{
 		QString s=QString::fromStdString(reply->errorText());
-
-		messageLabel_->showError(s);
-        //messageLabel_->stopLoadLabel();
+		messageLabel_->showError(s);       
         messageLabel_->stopProgress();
+        submittedWarning_=false;
 
 		//Update the file label
 		fileLabel_->update(reply);
 
         userClickedReload_ = false;
-        reloadTb_->setEnabled(true);
-        //updateDir(true);
+        reloadTb_->setEnabled(true);       
 
         fetchInfo_->setInfo(reply,info_);
 	}
@@ -410,6 +442,21 @@ void OutputItemWidget::infoFailed(VReply* reply)
     {
         //We do not have directories
         enableDir(false);
+
+        QColor col(70,71,72);
+        QString s="<b><font color=\'" + col.name() +  "\'>Output directory</font></b>: ";
+        const std::vector<std::string> et=reply->errorTextVec();
+        if(et.size() > 1)
+        {
+            for(size_t i=0; i < et.size(); i++)
+                s+="<b><font color=\'" + col.name() +  "\'>[" + QString::number(i+1) + "]</font></b> " +
+                        QString::fromStdString(et[i]) + ".   ";
+        }
+        else if(et.size() == 1)
+            s+=QString::fromStdString(et[0]);
+
+        dirMessageLabel_->showError(s);
+
         //the timer is stopped. It will be restarted again if we get a local file or
         //a file via the logserver
         updateDirTimer_->stop();
@@ -441,7 +488,7 @@ void OutputItemWidget::setCurrentInDir(const std::string& fullName)
 
 void OutputItemWidget::updateDir(VDir_ptr dir,bool restartTimer)
 {
-    UserMessage::debug("OutputItemWidget::updateDir -->");
+    UiLog().dbg() << "OutputItemWidget::updateDir -->";
 
     if(restartTimer)
 		updateDirTimer_->stop();
@@ -457,9 +504,17 @@ void OutputItemWidget::updateDir(VDir_ptr dir,bool restartTimer)
 
 		dirView_->selectionModel()->clearSelection();
         dirModel_->setData(dir,op->joboutFileName());
-        dirWidget_->show();
+        //dirWidget_->show();
+
+        if(!dirColumnsAdjusted_)
+        {
+            dirColumnsAdjusted_=true;
+            for(int i=0; i< dirModel_->columnCount()-1; i++)
+                dirView_->resizeColumnToContents(i);
+
+        }
 
-        UserMessage::qdebug("  dir item count=" + QString::number(dirModel_->rowCount()));
+        UiLog().dbg() << " dir item count=" << dirModel_->rowCount();
 
 		//Try to preserve the selection
 		ignoreOutputSelection_=true;
@@ -468,7 +523,7 @@ void OutputItemWidget::updateDir(VDir_ptr dir,bool restartTimer)
 	}
 	else
 	{
-		dirWidget_->hide();
+        //dirWidget_->hide();
 		dirModel_->clearData();
 	}
 
@@ -485,37 +540,6 @@ void OutputItemWidget::updateDir(bool restartTimer)
 	//updateDir(restartTimer,fullName);
 }
 
-void OutputItemWidget::updateDir(bool restartTimer,const std::string& selectFullName)
-{
-	/*if(restartTimer)
-		updateDirTimer_->stop();
-
-	OutputProvider* op=static_cast<OutputProvider*>(infoProvider_);
-	VDir_ptr dir=op->directory();
-
-	bool status=(dir && dir.get());
-
-	if(status)
-	{
-		dirView_->selectionModel()->clearSelection();
-		dirModel_->setData(dir);
-		dirWidget_->show();
-
-		//Try to preserve the selection
-		ignoreOutputSelection_=true;
-		dirView_->setCurrentIndex(dirSortModel_->fullNameToIndex(selectFullName));
-		ignoreOutputSelection_=false;
-	}
-	else
-	{
-		dirWidget_->hide();
-		dirModel_->clearData();
-	}
-
-	if(restartTimer)
-		updateDirTimer_->start(updateDirTimeout_);*/
-}
-
 void OutputItemWidget::slotUpdateDir()
 {
 	updateDir(false);
@@ -524,13 +548,15 @@ void OutputItemWidget::slotUpdateDir()
 void OutputItemWidget::enableDir(bool status)
 {
 	if(status)
-	{
-		dirWidget_->show();
+	{       
+        dirWidget_->show();
+        dirMessageLabel_->hide();
 	}
 	else
 	{
-		dirWidget_->hide();
-		dirModel_->clearData();
+        dirWidget_->hide();
+        dirModel_->clearData();
+        dirMessageLabel_->show();
 	}
 }
 
@@ -583,4 +609,48 @@ void OutputItemWidget::on_fontSizeDownTb__clicked()
 	browser_->zoomOut();
 }
 
+//-----------------------------------------
+// Save local copy of file
+//-----------------------------------------
+
+void OutputItemWidget::on_saveFileAsTb__clicked()
+{
+	if (browser_->isFileLoaded())
+	{
+		QString fileName = QFileDialog::getSaveFileName(this);
+		if (fileName.isEmpty())
+			return;
+
+		browser_->saveCurrentFile(fileName);
+	}
+	else
+	{
+        UserMessage::message(UserMessage::INFO,true,"No file loaded!");
+	}
+}
+
+
+//-------------------------
+// Update
+//-------------------------
+
+void OutputItemWidget::nodeChanged(const VNode* n, const std::vector<ecf::Aspect::Type>& aspect)
+{
+    //Changes in the nodes
+    for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
+    {
+        if(*it == ecf::Aspect::STATE || *it == ecf::Aspect::DEFSTATUS ||
+            *it == ecf::Aspect::SUSPENDED)
+        {
+            if(submittedWarning_)
+               getLatestFile();
+            else if(info_ && info_->node() == n && info_->node()->isSubmitted())
+               getLatestFile();
+
+
+            return;
+        }
+    }
+}
+
 static InfoPanelItemMaker<OutputItemWidget> maker1("output");
diff --git a/Viewer/src/OutputItemWidget.hpp b/Viewer/src/OutputItemWidget.hpp
index a23aaa7..7179161 100644
--- a/Viewer/src/OutputItemWidget.hpp
+++ b/Viewer/src/OutputItemWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -42,7 +42,7 @@ public:
     void infoProgressStart(const std::string& text,int max);
     void infoProgress(const std::string& text,int value);
 
-    void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&) {}
+    void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&);
     void defsChanged(const std::vector<ecf::Aspect::Type>&) {}
 
 protected Q_SLOTS:
@@ -53,12 +53,12 @@ protected Q_SLOTS:
 	void on_reloadTb__clicked();
 	void on_fontSizeUpTb__clicked();
 	void on_fontSizeDownTb__clicked();
+	void on_saveFileAsTb__clicked();
 
 protected:
     void setCurrentInDir(const std::string&);
     void updateDir(bool);
 	void updateDir(VDir_ptr,bool);
-	void updateDir(bool,const std::string&);
 	void enableDir(bool);
     void updateState(const FlagSet<ChangeFlag>&);
 	void searchOnReload();
@@ -76,6 +76,8 @@ protected:
 	QTimer* updateDirTimer_;
 	static int updateDirTimeout_;
     OutputFetchInfo* fetchInfo_;
+    bool dirColumnsAdjusted_;
+    bool submittedWarning_;
 };
 
 #endif
diff --git a/Viewer/src/OutputItemWidget.ui b/Viewer/src/OutputItemWidget.ui
index 54c36d0..f591232 100644
--- a/Viewer/src/OutputItemWidget.ui
+++ b/Viewer/src/OutputItemWidget.ui
@@ -13,9 +13,9 @@
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout_3">
+  <layout class="QVBoxLayout" name="verticalLayout_3" stretch="1,0">
    <property name="spacing">
-    <number>1</number>
+    <number>0</number>
    </property>
    <property name="leftMargin">
     <number>0</number>
@@ -40,6 +40,9 @@
         <number>1</number>
        </property>
        <item>
+        <widget class="MessageLabel" name="messageLabel_" native="true"/>
+       </item>
+       <item>
         <layout class="QHBoxLayout" name="horizontalLayout" stretch="1,0,0,0,0,0,0">
          <property name="spacing">
           <number>1</number>
@@ -52,6 +55,23 @@
           </widget>
          </item>
          <item>
+          <widget class="QToolButton" name="saveFileAsTb_">
+           <property name="toolTip">
+            <string>Save a local copy of the current file to disk</string>
+           </property>
+           <property name="text">
+            <string>...</string>
+           </property>
+           <property name="icon">
+            <iconset>
+             <normaloff>:/viewer/filesaveas.svg</normaloff>:/viewer/filesaveas_up.svg</iconset>
+           </property>
+           <property name="autoRaise">
+            <bool>true</bool>
+           </property>
+          </widget>
+         </item>
+         <item>
           <widget class="QToolButton" name="fetchInfoTb_">
            <property name="toolTip">
             <string>Additional information about the fetched output file</string>
@@ -177,9 +197,6 @@
         </layout>
        </item>
        <item>
-        <widget class="MessageLabel" name="messageLabel_" native="true"/>
-       </item>
-       <item>
         <widget class="MessageLabel" name="warnLabel_" native="true"/>
        </item>
        <item>
@@ -218,6 +235,9 @@
      </widget>
     </widget>
    </item>
+   <item>
+    <widget class="MessageLabel" name="dirMessageLabel_" native="true"/>
+   </item>
   </layout>
  </widget>
  <customwidgets>
diff --git a/Viewer/src/OverviewProvider.cpp b/Viewer/src/OverviewProvider.cpp
index 45287f9..faa887f 100644
--- a/Viewer/src/OverviewProvider.cpp
+++ b/Viewer/src/OverviewProvider.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -205,6 +205,16 @@ void OverviewProvider::nodeInfo(VInfoNode* info,std::stringstream& f)
 
 	f << "----------\n";
 
+    if(node->isAborted())
+    {
+        const std::string& abTxt=node->abortedReason();
+        if(!abTxt.empty())
+        {
+            f << "aborted reason : " + abTxt + "\n";
+            f << "----------\n";
+        }
+    }
+
 	//Start block: Type, name
 	f << typeName << " " << nodeName << "\n";
 
diff --git a/Viewer/src/PlainTextEdit.cpp b/Viewer/src/PlainTextEdit.cpp
index a65ea53..a10281a 100644
--- a/Viewer/src/PlainTextEdit.cpp
+++ b/Viewer/src/PlainTextEdit.cpp
@@ -19,12 +19,14 @@
 #include <QWheelEvent>
 
 #include "VConfig.hpp"
+#include "UiLog.hpp"
 
 PlainTextEdit::PlainTextEdit(QWidget * parent) :
     QPlainTextEdit(parent),
     showLineNum_(true),
     rightMargin_(2),
     gotoLineDialog_(0),
+    hyperlinkEnabled_(false),
     fontProp_(NULL),
     numAreaBgCol_(232,231,230),
     numAreaFontCol_(102,102,102),
@@ -57,12 +59,12 @@ PlainTextEdit::PlainTextEdit(QWidget * parent) :
 
     updateLineNumberAreaWidth(0);
 
-    //QFont f("Courier");
-    QFont f("Monospace");
-    f.setStyleHint(QFont::TypeWriter);
+    QFont f("Courier");
+    //QFont f("Monospace");
+    //f.setStyleHint(QFont::TypeWriter);
     f.setFixedPitch(true);
     f.setPointSize(10);
-    f.setStyleStrategy(QFont::PreferAntialias);
+    //f.setStyleStrategy(QFont::PreferAntialias);
     setFont(f);
 }
 
@@ -75,6 +77,13 @@ PlainTextEdit::~PlainTextEdit()
     	fontProp_->removeObserver(this);
 }
 
+bool PlainTextEdit::setHyperlinkEnabled(bool h)
+{
+    hyperlinkEnabled_ = h;
+    setMouseTracking(h);
+    return true;
+}
+
 void PlainTextEdit::setShowLineNumbers(bool b)
 {
 	showLineNum_ = b;
@@ -525,5 +534,60 @@ void PlainTextEdit::notifyChange(VProperty* p)
 }
 
 
+void PlainTextEdit::mousePressEvent(QMouseEvent *e)
+{
+    if (hyperlinkEnabled_)
+    {
+        // left button only - if pressed, we just store the link that was clicked on
+        // - we don't want to do anything until the mouse button has been released and
+        // we know it hasd not been moved away from the hyperlinked text
+
+        if (e->button() & Qt::LeftButton)
+            currentLink_ = anchorAt(e->pos());
+        else
+            currentLink_ = QString();
+    }
+
+    QPlainTextEdit::mousePressEvent(e);
+}
+
+void PlainTextEdit::mouseReleaseEvent(QMouseEvent *e)
+{
+    if (hyperlinkEnabled_)
+    {
+        // only activate the hyperlink if the user releases the left mouse button on the
+        // same link they were on when they pressed the button
+
+        if ((e->button() & Qt::LeftButton) && !currentLink_.isEmpty())
+        {
+            if (currentLink_ == anchorAt(e->pos()))
+            {
+                Q_EMIT hyperlinkActivated(currentLink_);
+                UiLog().dbg() << "clicked:" << currentLink_;
+            }
+        }
+    }
+
+    QPlainTextEdit::mouseReleaseEvent(e);
+}
+
+
+void PlainTextEdit::mouseMoveEvent(QMouseEvent *e)
+{
+    if (hyperlinkEnabled_)
+    {
+        QString thisAnchor = anchorAt(e->pos());
 
+        if (!thisAnchor.isEmpty())
+        {
+            viewport()->setCursor(Qt::PointingHandCursor);
+        }
+        else
+        {
+            viewport()->unsetCursor();
+        }
+    }
+
+    QPlainTextEdit::mouseMoveEvent(e);
+}
 
diff --git a/Viewer/src/PlainTextEdit.hpp b/Viewer/src/PlainTextEdit.hpp
index 37b337f..84526f7 100644
--- a/Viewer/src/PlainTextEdit.hpp
+++ b/Viewer/src/PlainTextEdit.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -40,6 +40,8 @@ public:
     void setFontProperty(VProperty* p);
     void updateFont();
     void notifyChange(VProperty* p);
+    bool isHyperlinkEnabled() {return hyperlinkEnabled_;}
+    bool setHyperlinkEnabled(bool h);
 
 public Q_SLOTS:
      void gotoLine();
@@ -55,12 +57,16 @@ Q_SIGNALS:
     void focusRegained ();
     void focusLost();
     void fontSizeChangedByWheel();
+    void hyperlinkActivated(QString link);
 
 protected:
     void resizeEvent(QResizeEvent *event);
     void focusInEvent(QFocusEvent *event);
     void focusOutEvent(QFocusEvent *event);
     void wheelEvent(QWheelEvent *event);
+    void mousePressEvent(QMouseEvent *e);
+    void mouseReleaseEvent(QMouseEvent *e);
+    void mouseMoveEvent(QMouseEvent *e);
 
 private:
     void fontSizeChangedByZoom();
@@ -68,7 +74,9 @@ private:
     bool showLineNum_;
     QWidget *lineNumArea_;
     int rightMargin_;
-    QString  lastFindString_;
+    bool hyperlinkEnabled_;
+    QString lastFindString_;
+    QString currentLink_;
     QTextDocument::FindFlags lastFindFlags_;
     GotoLineDialog *gotoLineDialog_;
     static QString emptyString_;
diff --git a/Viewer/src/PlainTextSearchInterface.cpp b/Viewer/src/PlainTextSearchInterface.cpp
index c7b02ff..5e98492 100644
--- a/Viewer/src/PlainTextSearchInterface.cpp
+++ b/Viewer/src/PlainTextSearchInterface.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -13,8 +13,13 @@
 #include <QPlainTextEdit>
 
 
+PlainTextSearchInterface::PlainTextSearchInterface() : editor_(NULL)
+{
+}
+
+
 bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QTextDocument::FindFlags flags,
-		                                bool gotoStartOfWord, int iteration,StringMatchMode::Mode matchMode)
+										   QTextCursor::MoveOperation move, int iteration,StringMatchMode::Mode matchMode)
 {
 	if(!editor_)
 		return false;
@@ -27,8 +32,8 @@ bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QText
 	if (highlightAll)  // if highlighting all matches, start from the start of the document
 		cursor.movePosition(QTextCursor::Start);
 
-	else if (gotoStartOfWord)	// go to start of word?
-		cursor.movePosition(QTextCursor::StartOfWord);
+	else // move the cursor?
+		cursor.movePosition(move);
 
 
 	QList<QTextEdit::ExtraSelection> extraSelections;
@@ -46,7 +51,6 @@ bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QText
 			{
 				cursor = editor_->document()->find(str, cursor, flags);  // perform the search
 				found = (!cursor.isNull());
-
 				break;
 			}
 			case StringMatchMode::WildcardMatch:
@@ -57,7 +61,6 @@ bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QText
 
 				cursor = editor_->document()->find(regexp, cursor, flags);  // perform the search
 				found = (!cursor.isNull());
-
 				break;
 			}
 			case StringMatchMode::RegexpMatch:
@@ -67,7 +70,6 @@ bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QText
 
 				cursor = editor_->document()->find(regexp, cursor, flags);  // perform the search
 				found = (!cursor.isNull());
-
 				break;
 			}
 
@@ -116,7 +118,6 @@ bool PlainTextSearchInterface::findString (QString str, bool highlightAll, QText
 					cursor.movePosition(QTextCursor::End);
 				else
 					cursor.movePosition(QTextCursor::Start);
-				editor_->setTextCursor(cursor);
 				iteration = 1;  // iteration=1 to avoid infinite wraparound!
 			}
 		}
@@ -140,47 +141,55 @@ void PlainTextSearchInterface::automaticSearchForKeywords(bool userClickedReload
     if(editor_->document()->isEmpty())
         return;
 
-    bool found = false;
-
-	QTextDocument::FindFlags findFlags = QTextDocument::FindBackward;
-	QTextCursor cursor(editor_->textCursor());
-	cursor.movePosition(QTextCursor::End);
+    bool performSearch = vpPerformAutomaticSearch_->value().toBool();
 
-	QRegExp regexp("--(abort|complete)");
-	QTextCursor findCursor = editor_->document()->find(regexp, cursor, findFlags);  // perform the search
-	found = (!findCursor.isNull());
-	if(found)
+	if (performSearch)
 	{
-		editor_->setTextCursor(findCursor);
-	}
+		// search direction
+		QTextDocument::FindFlags findFlags;
+		QTextCursor cursor(editor_->textCursor());
+		std::string searchFrom = vpAutomaticSearchFrom_->valueAsString();
+		QTextCursor::MoveOperation move;
+		if (searchFrom == "bottom")
+		{
+			findFlags = QTextDocument::FindBackward;
+			move = QTextCursor::End;
+		}
+		else
+		{
+			move = QTextCursor::Start;
+		}
 
-#if 0
-	QStringList keywords;
-	keywords << "--abort" << "--complete";// << "xabort" << "xcomplete"
-	         << "System Billing Units";
+		// case sensitivity
+		bool caseSensitive = vpAutomaticSearchCase_->value().toBool();
+		if (caseSensitive)
+			findFlags = findFlags | QTextDocument::FindCaseSensitively;
 
-	// find any of the keywords and stop at the first one
-	int i = 0;
-	while (!found && i < keywords.size())
-	{
-		cursor.movePosition(QTextCursor::End);
-		textEdit_->setTextCursor(cursor);
-		found = textEdit_->findString(keywords.at(i), findFlags);
-		i++;
-	}
-#endif
+		// string match mode
+		std::string matchMode(vpAutomaticSearchMode_->valueAsString());
+		StringMatchMode::Mode mode = StringMatchMode::operToMode(matchMode);
 
-	else
-	{
-		if(userClickedReload)
+		// the term to be searched for
+		std::string searchTerm_s(vpAutomaticSearchText_->valueAsString());
+		QString searchTerm = QString::fromStdString(searchTerm_s);
+
+		// perform the search
+		bool found = findString (searchTerm, false, findFlags, move, 1, mode);
+
+		if(!found)
 		{
-			// move the cursor to the start of the last line
-			QTextCursor cursor = editor_->textCursor();
-			cursor.movePosition(QTextCursor::End);
-			cursor.movePosition(QTextCursor::StartOfLine);
-			editor_->setTextCursor(cursor);
+			if(userClickedReload)
+			{
+				// move the cursor to the start of the last line
+				gotoLastLine();
+			}
 		}
 	}
+	else
+	{
+		// move the cursor to the start of the last line
+		gotoLastLine();
+	}
 }
 
 void PlainTextSearchInterface::refreshSearch()
@@ -210,3 +219,14 @@ void PlainTextSearchInterface::disableHighlights()
 {
     clearHighlights();
 }
+
+
+void PlainTextSearchInterface::gotoLastLine()
+{
+	// move the cursor to the start of the last line
+	QTextCursor cursor = editor_->textCursor();
+	cursor.movePosition(QTextCursor::End);
+	cursor.movePosition(QTextCursor::StartOfLine);
+	editor_->setTextCursor(cursor);
+	editor_->ensureCursorVisible();
+}
diff --git a/Viewer/src/PlainTextSearchInterface.hpp b/Viewer/src/PlainTextSearchInterface.hpp
index b77c259..35eee7e 100644
--- a/Viewer/src/PlainTextSearchInterface.hpp
+++ b/Viewer/src/PlainTextSearchInterface.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -18,11 +18,11 @@ class QPlainTextEdit;
 class PlainTextSearchInterface : public AbstractTextEditSearchInterface
 {
 public:
-	PlainTextSearchInterface() : editor_(NULL) {}
+	PlainTextSearchInterface();
 	void setEditor(QPlainTextEdit* e) {editor_=e;}
 
 	bool findString (QString str, bool highlightAll, QTextDocument::FindFlags findFlags,
-			         bool gotoStartOfWord, int iteration,StringMatchMode::Mode matchMode);
+					 QTextCursor::MoveOperation move, int iteration,StringMatchMode::Mode matchMode);
 
 	void automaticSearchForKeywords(bool);
 	void refreshSearch();
@@ -30,6 +30,7 @@ public:
     void disableHighlights();
     void enableHighlights() {}
 	bool highlightsNeedSearch() {return true;}
+	void gotoLastLine();
 
 protected:
 
diff --git a/Viewer/src/PropertyDialog.cpp b/Viewer/src/PropertyDialog.cpp
index df448a1..38e6297 100644
--- a/Viewer/src/PropertyDialog.cpp
+++ b/Viewer/src/PropertyDialog.cpp
@@ -20,6 +20,7 @@
 #include "VConfig.hpp"
 #include "VConfigLoader.hpp"
 #include "VProperty.hpp"
+#include "WidgetNameProvider.hpp"
 
 VProperty* PropertyDialog::prop_=0;
 
@@ -54,6 +55,9 @@ PropertyDialog::PropertyDialog(QWidget* parent) :
 
 	if(list_->count() >0 && list_->currentRow() == -1)
 		list_->setCurrentRow(0);
+
+    //Assign name to each object
+    WidgetNameProvider::nameChildren(this);
 }
 
 void PropertyDialog::closeEvent(QCloseEvent * event)
@@ -84,6 +88,7 @@ void PropertyDialog::build()
               }    
 
               PropertyEditor* ed=new PropertyEditor(this);
+              ed->setObjectName(vPage->param("label"));
               ed->edit(vPage,edPix);
 
               addPage(ed,pix,vPage->param("label"));
diff --git a/Viewer/src/PropertyEditor.cpp b/Viewer/src/PropertyEditor.cpp
index 57c6ce9..4c73067 100644
--- a/Viewer/src/PropertyEditor.cpp
+++ b/Viewer/src/PropertyEditor.cpp
@@ -92,6 +92,7 @@ void PropertyEditor::build()
 	assert(holder_==NULL);
 
 	holder_=new QWidget(scAreaContents_);
+    holder_->setObjectName("h");
 	QVBoxLayout *vb=new QVBoxLayout(holder_);
 	vb->setContentsMargins(0,0,0,0);
 	vBox_->addWidget(holder_);
@@ -484,6 +485,7 @@ void PropertyEditor::addTabs(VProperty* vProp,QVBoxLayout *layout,QWidget* paren
         return;
     
     QTabWidget *t=new QTabWidget(parent);
+    t->setObjectName("tab");
     layout->addWidget(t);
    
     int col=1;
diff --git a/Viewer/src/PropertyLine.cpp b/Viewer/src/PropertyLine.cpp
index 4df6a9d..505f56e 100644
--- a/Viewer/src/PropertyLine.cpp
+++ b/Viewer/src/PropertyLine.cpp
@@ -105,6 +105,8 @@ PropertyLine::PropertyLine(VProperty* guiProp,bool addLabel,QWidget * parent) :
 	prop_=guiProp_->link();
 	assert(prop_);
 
+    setObjectName(guiProp->name());
+
 	oriVal_=prop_->value();
 
 	if(addLabel)
@@ -120,7 +122,8 @@ PropertyLine::PropertyLine(VProperty* guiProp,bool addLabel,QWidget * parent) :
 	}
 
 	defaultTb_= new QToolButton(parent);
-	defaultTb_->setToolTip(tr("Reset to default value"));
+    defaultTb_->setObjectName("default_" + prop_->name());
+    defaultTb_->setToolTip(tr("Reset to default value"));
     defaultTb_->setIcon(QPixmap(":/viewer/reset_to_default.svg"));
     defaultTb_->setAutoRaise(true);
 
@@ -130,7 +133,8 @@ PropertyLine::PropertyLine(VProperty* guiProp,bool addLabel,QWidget * parent) :
     if(prop_->master())
     {
     	masterTb_=new QToolButton(parent);
-    	masterTb_->setCheckable(true);
+        masterTb_->setObjectName("master_" + prop_->name());
+        masterTb_->setCheckable(true);
     	masterTb_->setText("Use global");
     	masterTb_->setToolTip(tr("Use global server settings"));
     	masterTb_->setIcon(QPixmap(":/viewer/chain.svg"));
@@ -278,6 +282,7 @@ StringPropertyLine::StringPropertyLine(VProperty* guiProp,bool addLabel,QWidget
         label_->setText(label_->text() + ":");
 
 	le_=new QLineEdit(parent);
+    le_->setObjectName(prop_->name());
 
 	connect(le_,SIGNAL(textEdited(QString)),
 			this,SLOT(slotEdited(QString)));
@@ -347,6 +352,7 @@ ColourPropertyLine::ColourPropertyLine(VProperty* guiProp,bool addLabel,QWidget
 	int width=fm.width("AAAAAAA");
 
 	cb_=new QToolButton(parent);
+    cb_->setObjectName(prop_->name());
     cb_->setFixedWidth(width);
     cb_->setFixedHeight(height+2);
     cb_->setToolTip(tr("Click to select a colour"));
@@ -441,7 +447,9 @@ FontPropertyLine::FontPropertyLine(VProperty* guiProp,bool addLabel,QWidget * pa
 	QFontDatabase db;
 
 	familyCb_=new QComboBox(parent);
-	hb->addWidget(familyCb_);
+    familyCb_->setObjectName(prop_->name());
+
+    hb->addWidget(familyCb_);
 	Q_FOREACH(QString s,db.families(QFontDatabase::Latin))
 		familyCb_->addItem(s);
 
@@ -566,7 +574,9 @@ IntPropertyLine::IntPropertyLine(VProperty* guiProp,bool addLabel,QWidget * pare
         label_->setText(label_->text() + ":");
 
 	le_=new QLineEdit(parent);
-	QIntValidator* validator=new QIntValidator(le_);
+    le_->setObjectName(prop_->name());
+
+    QIntValidator* validator=new QIntValidator(le_);
 
 	QString s=guiProp->param("max");
 	if(!s.isEmpty())
@@ -642,6 +652,7 @@ void IntPropertyLine::setEnabledEditable(bool b)
 BoolPropertyLine::BoolPropertyLine(VProperty* guiProp,bool addLabel,QWidget * parent) : PropertyLine(guiProp,false,parent)
 {
 	cb_=new QCheckBox(prop_->param("label"),parent);
+    cb_->setObjectName(prop_->name());
 
 	connect(cb_,SIGNAL(stateChanged(int)),
 			   this,SLOT(slotStateChanged(int)));
@@ -713,6 +724,7 @@ ComboPropertyLine::ComboPropertyLine(VProperty* guiProp,bool addLabel,QWidget *
 	    label_->setText(label_->text() + ":");
 
 	cb_=new QComboBox(parent);//(vProp->param("label"));
+    cb_->setObjectName(prop_->name());
 
 	connect(cb_,SIGNAL(currentIndexChanged(int)),
 			   this,SLOT(slotCurrentChanged(int)));
@@ -803,6 +815,7 @@ ComboMultiPropertyLine::ComboMultiPropertyLine(VProperty* guiProp,bool addLabel,
 	    label_->setText(label_->text() + ":");
 
 	cb_=new ComboMulti(parent);//(vProp->param("label"));
+    cb_->setObjectName(prop_->name());
 
 	cb_->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed);
 
@@ -887,7 +900,9 @@ SoundComboPropertyLine::SoundComboPropertyLine(VProperty* guiProp,bool addLabel,
 	playTb_(NULL)
 {
 	playTb_=new QToolButton(parent);
-	playTb_->setText("play");
+    playTb_->setObjectName(prop_->name());
+
+    playTb_->setText("play");
 	playTb_->setToolTip(tr("Play sound"));
 
 	connect(playTb_,SIGNAL(clicked(bool)),
diff --git a/Viewer/src/PropertyLine.hpp b/Viewer/src/PropertyLine.hpp
index 6c0fe1a..1ce3f38 100644
--- a/Viewer/src/PropertyLine.hpp
+++ b/Viewer/src/PropertyLine.hpp
@@ -147,7 +147,8 @@ public:
 	QWidget* item();
 	QWidget* button();
 	bool applyChange();
-	QVariant currentValue();
+    QVariant currentValue();
+    bool canExpand() const {return true;}
 
 public Q_SLOTS:
 	void slotEdited(QString);
diff --git a/Viewer/src/SearchLineWidget.ui b/Viewer/src/SearchLineWidget.ui
index b2eb7ce..db5f14b 100644
--- a/Viewer/src/SearchLineWidget.ui
+++ b/Viewer/src/SearchLineWidget.ui
@@ -111,7 +111,7 @@
      </property>
      <property name="icon">
       <iconset resource="viewer.qrc">
-       <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
+       <normaloff>:/viewer/close.svg</normaloff>:/viewer/close.svg</iconset>
      </property>
      <property name="autoRaise">
       <bool>true</bool>
diff --git a/Viewer/src/ServerComQueue.cpp b/Viewer/src/ServerComQueue.cpp
index 1c02d87..4296bd1 100644
--- a/Viewer/src/ServerComQueue.cpp
+++ b/Viewer/src/ServerComQueue.cpp
@@ -12,7 +12,11 @@
 #include "ClientInvoker.hpp"
 #include "ServerComThread.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
+
+#include "Log.hpp"
+
+//#define _UI_SERVERCOMQUEUE_DEBUG
 
 // This class manages the tasks to be sent to the ServerComThread, which controls
 // the communication with the ClientInvoker. The ClientInvoker is hidden from the
@@ -25,9 +29,11 @@ ServerComQueue::ServerComQueue(ServerHandler *server,ClientInvoker *client, Serv
 	server_(server),
 	client_(client),
 	comThread_(comThread),
-	timeout_(500),
+	timeout_(5),
+    taskTimeout_(500),
 	state_(NoState), //the queue is enabled but not running
-	taskIsBeingFinished_(false),
+    taskStarted_(false),
+    taskIsBeingFinished_(false),
 	taskIsBeingFailed_(false)
 {
 	timer_=new QTimer(this);
@@ -36,7 +42,12 @@ ServerComQueue::ServerComQueue(ServerHandler *server,ClientInvoker *client, Serv
 	connect(timer_,SIGNAL(timeout()),
 			this,SLOT(slotRun()));
 
-	//When the ServerComThread finishes it emits a signal that
+    //When the ServerComThread starts it emits a signal that
+    //is connected to the queue.
+    connect(comThread_, SIGNAL(started()),
+            this, SLOT(slotTaskStarted()));
+
+    //When the ServerComThread finishes it emits a signal that
 	//is connected to the queue.
 	connect(comThread_, SIGNAL(finished()),
 			this, SLOT(slotTaskFinished()));
@@ -85,6 +96,8 @@ void ServerComQueue::disable()
 	if(state_ == DisabledState)
 		return;
 
+    UiLog(server_).dbg() << "ComQueue::disable -->";
+
 	state_=DisabledState;
 
 	//Remove all tasks
@@ -97,11 +110,13 @@ void ServerComQueue::disable()
 	//until it finishes its task.
 	comThread_->wait();
 
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerComQueue::disable"));
+    UiLog(server_).dbg() << " queue is disabled";
 
 	//Clear the current task
 	if(current_)
 		current_.reset();
+
+    taskStarted_=false;
 }
 
 
@@ -117,6 +132,8 @@ bool ServerComQueue::prepareReset()
 	//Remove all tasks
 	tasks_.clear();
 
+    taskStarted_=false;
+
 	state_=ResetState;
 
 	//If the comthread is running we need to wait
@@ -125,6 +142,9 @@ bool ServerComQueue::prepareReset()
 
 	//The thread cannot be running
 	assert(comThread_->isRunning() == false);
+    //assert(taskIsBeingFinished_==false);
+    //assert(taskIsBeingFailed_==false);
+    //assert(!current_);
 
 	return true;
 }
@@ -164,7 +184,13 @@ void ServerComQueue::start()
 {
 	if(state_ != DisabledState && state_ != ResetState)
 	{
-		UserMessage::message(UserMessage::DBG, false, std::string("comQueue::start"));
+        UiLog(server_).dbg() << "ComQueue::start -->";
+
+        //assert(taskIsBeingFinished_==false);
+        //assert(taskIsBeingFailed_==false);
+        //assert(!current_);
+
+        taskStarted_=false;
 
 		//If the comthread is running we need to wait
 		//until it finishes its task.
@@ -172,10 +198,13 @@ void ServerComQueue::start()
 
 		state_=RunningState;
 
-		UserMessage::message(UserMessage::DBG, false, std::string("comQueue::start start timer"));
+        UiLog(server_).dbg() << "  thread finished";
 
 		//Starts the timer
 		timer_->start(timeout_);
+
+        UiLog(server_).dbg() << "  timer started";
+        UiLog(server_).dbg() << "<-- ComQueue::start";
 	}
 }
 
@@ -192,6 +221,10 @@ void ServerComQueue::suspend(bool wait)
 		{
 			comThread_->wait();
 		}
+
+        //assert(taskIsBeingFinished_==false);
+        //assert(taskIsBeingFailed_==false);
+        //assert(!current_);
 	}
 }
 
@@ -286,37 +319,86 @@ void ServerComQueue::addSuiteAutoRegisterTask()
 	addTask(task);
 }
 
+void ServerComQueue::startCurrentTask()
+{
+    taskStarted_=false;
+    taskTime_.start();
+    comThread_->task(current_);
+}
+
 void ServerComQueue::slotRun()
 {
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+    UiLog(server_).dbg() << "ComQueue::slotRun -->";
+#endif
+
 	if(state_ == DisabledState ||state_ == SuspendedState )
-		return;
+    {
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " queue is either disabled or suspended";
+#endif
+        return;
+    }
 
 	if(taskIsBeingFinished_ || taskIsBeingFailed_)
-		return;
-
-	//UserMessage::message(UserMessage::DBG, false, std::string("ServerComQueue::slotRun"));
-	//UserMessage::message(UserMessage::DBG, false, std::string("     --> number of tasks: " + boost::lexical_cast<std::string>(tasks_.size()) ));
-	//for(std::deque<VTask_ptr>::const_iterator it=tasks_.begin(); it != tasks_.end(); it++)
-	//{
-	//	UserMessage::message(UserMessage::DBG, false,"        -task: " + (*it)->typeString());
-	//}
-
-	if(tasks_.empty())
+    {
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " task is either being finished or failed";
+#endif
+        return;
+    }
+
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+    UiLog(server_).dbg() << " number of tasks: "  << tasks_.size();
+    for(std::deque<VTask_ptr>::const_iterator it=tasks_.begin(); it != tasks_.end(); it++)
+    {
+        UiLog(server_).dbg() << "  task: " << (*it)->typeString();
+    }
+#endif
+    if(tasks_.empty() && !current_)
 	{
-		//UserMessage::message(UserMessage::DBG, false, std::string("     --> stop timer"));
-		timer_->stop();
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " there are no tasks! Stop timer!";
+#endif
+        timer_->stop();
 		return;
 	}
 
+    //If the thread could not start up for the current task.
+    if(current_ && !taskStarted_ && !comThread_->isRunning() &&
+       taskTime_.elapsed() > taskTimeout_)
+    {
+        UiLog(server_).dbg() << " It seems that the thread could not start. Try to run task again.";
+        comThread_->wait();
+
+        if(current_->status() != VTask::CANCELLED &&
+           current_->status() != VTask::ABORTED )
+        {
+            startCurrentTask();
+            return;
+        }
+        else
+        {
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+            UiLog(server_).dbg() << "  current_ aborted or cancelled. Reset current_ !";
+#endif
+            current_.reset();
+        }
+    }
+
 	if(current_)
 	{
-		//UserMessage::message(UserMessage::DBG, false, std::string("     --> processing reply from previous task"));
-		return;
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " still processing reply from previous task";
+#endif
+        return;
 	}
 
 	if(comThread_->isRunning())
 	{
-		//UserMessage::message(UserMessage::DBG, false, std::string("     --> thread is active"));
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " thread is active";
+#endif
 		return;
 	}
 
@@ -330,6 +412,7 @@ void ServerComQueue::slotRun()
 		{
 			break;
 		}
+        current_.reset();
 	}
 
 	if(!current_)
@@ -337,20 +420,29 @@ void ServerComQueue::slotRun()
 		timer_->stop();
 		return;
 	}
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+     UiLog(server_).dbg() << " run task: " <<  current_->typeString();
+#endif
 
-	//UserMessage::message(UserMessage::DBG, false,"     --> run task: " +  current_->typeString());
+    //Send it to the thread
+    startCurrentTask();
+}
 
-	//Send it to the thread
-	comThread_->task(current_);
+//This slot is called when ComThread finishes its task. At this point the
+//thread is not running so it is safe to access the ClientInvoker!
+void ServerComQueue::slotTaskStarted()
+{
+    taskStarted_=true;
 }
 
 //This slot is called when ComThread finishes its task. At this point the
 //thread is not running so it is safe to access the ClientInvoker!
 void ServerComQueue::slotTaskFinished()
 {
-	taskIsBeingFinished_=true;
+    taskStarted_=false;
+    taskIsBeingFinished_=true;
 
-	UserMessage::message(UserMessage::DBG, false,std::string("ServerComQueue::slotTaskFinished"));
+    UiLog(server_).dbg() << "ComQueue::slotTaskFinished -->";
 
 	//We need to leave the load mode
 	endReset();
@@ -359,7 +451,11 @@ void ServerComQueue::slotTaskFinished()
 	//handled by the sloTaskFailed slot.
 	if(current_)
 	{
-		VTask_ptr task=current_;
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+        UiLog(server_).dbg() << " reset current_";
+#endif
+
+        VTask_ptr task=current_;
 		current_.reset();
 
 		//We notify the server that the task has finished and the results can be accessed.
@@ -374,16 +470,32 @@ void ServerComQueue::slotTaskFinished()
 //to the slotTaskFinished slot.
 void ServerComQueue::slotTaskFailed(std::string msg)
 {
-	taskIsBeingFailed_=true;
-
-	UserMessage::message(UserMessage::DBG, false,std::string("ServerComQueue::slotTaskFailed"));
-
-	//We need to leave the load mode
+    taskStarted_=false;
+    taskIsBeingFailed_=true;
+
+    UiLog(server_).dbg() << "ComQueue::slotTaskFailed -->";
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+    if(current_)
+        UiLog(server_).dbg() << " current_ exists";
+    else
+        UiLog(server_).dbg() << " current_ is null";
+#endif
+
+    //We need to leave the load mode
 	endReset();
 
-	assert(current_);
-
-	VTask_ptr task=current_;
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+    if(current_)
+        UiLog(server_).dbg() << " current_ exists";
+    else
+        UiLog(server_).dbg() << " current_ is null";
+#endif
+
+#ifdef _UI_SERVERCOMQUEUE_DEBUG
+    UiLog(server_).dbg() << " reset current_";
+#endif
+    assert(current_);
+    VTask_ptr task=current_;
 	current_.reset();
 
 	//We notify the server that the task has failed
diff --git a/Viewer/src/ServerComQueue.hpp b/Viewer/src/ServerComQueue.hpp
index 9b86b53..899a4f1 100644
--- a/Viewer/src/ServerComQueue.hpp
+++ b/Viewer/src/ServerComQueue.hpp
@@ -16,6 +16,7 @@
 #include "VTask.hpp"
 
 #include <QObject>
+#include <QTime>
 #include <QTimer>
 
 class ClientInvoker;
@@ -55,13 +56,13 @@ public:
 
 protected Q_SLOTS:
 	void slotRun();
-
-protected Q_SLOTS:
+    void slotTaskStarted();
 	void slotTaskFinished();
 	void slotTaskFailed(std::string);
 
 protected:
-	void endReset();
+    void startCurrentTask();
+    void endReset();
 	bool hasTask(VTask::Type t) const;
 	bool isNextTask(VTask::Type t) const;
 
@@ -69,11 +70,14 @@ protected:
 	ClientInvoker* client_;
 	ServerComThread *comThread_;
 	QTimer* timer_;
-	int timeout_;
+    int timeout_;
+    QTime taskTime_;
+    int taskTimeout_;
 	std::deque<VTask_ptr> tasks_;
 	VTask_ptr current_;
 	State state_;
-	bool taskIsBeingFinished_;
+    bool taskStarted_;
+    bool taskIsBeingFinished_;
 	bool taskIsBeingFailed_;
 };
 
diff --git a/Viewer/src/ServerComThread.cpp b/Viewer/src/ServerComThread.cpp
index 505c24d..1d2f904 100644
--- a/Viewer/src/ServerComThread.cpp
+++ b/Viewer/src/ServerComThread.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -17,16 +17,11 @@
 #include "ServerComQueue.hpp"
 #include "ServerHandler.hpp"
 #include "SuiteFilter.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <algorithm>
-#include <sstream>
 
-#include <boost/algorithm/string/join.hpp>
-#include <boost/algorithm/string/predicate.hpp>
-#include <boost/lexical_cast.hpp>
-
-#include <QDebug>
+#define _UI_SERVERCOMTHREAD_DEBUG
 
 ServerComThread::ServerComThread(ServerHandler *server, ClientInvoker *ci) :
 		server_(server),
@@ -37,6 +32,7 @@ ServerComThread::ServerComThread(ServerHandler *server, ClientInvoker *ci) :
 		autoAddNewSuites_(false),
 		maxLineNum_(-1)
 {
+    assert(server_);
 }
 
 ServerComThread::~ServerComThread()
@@ -46,11 +42,11 @@ ServerComThread::~ServerComThread()
 
 void ServerComThread::task(VTask_ptr task)
 {
-	// do not execute thread if already running
+    //do not execute thread if already running
 
-	if (isRunning())
+    if(isRunning())
 	{
-		UserMessage::message(UserMessage::ERROR, true, std::string("ServerComThread::sendCommand - thread already running, will not execute command"));
+        UiLog(serverName_).err() << "ComThread::task - thread already running, will not execute command";
 	}
 	else
 	{
@@ -59,7 +55,8 @@ void ServerComThread::task(VTask_ptr task)
 
 		//We set the parameters needed to run the task. These members are not protected by
 		//a mutex, because apart from this function only run() can access them!!
-		command_=task->command();
+        serverName_=server_->longName();
+        command_=task->command();
 		params_=task->params();
 		contents_=task->contents();
 		vars_=task->vars();
@@ -70,7 +67,10 @@ void ServerComThread::task(VTask_ptr task)
 		//Suite filter
 		hasSuiteFilter_=server_->suiteFilter()->isEnabled();
 		autoAddNewSuites_=server_->suiteFilter()->autoAddNewSuites();
-		filteredSuites_=server_->suiteFilter()->filter();
+        if(hasSuiteFilter_)
+            filteredSuites_=server_->suiteFilter()->filter();
+        else
+            filteredSuites_.clear();
 
 		maxLineNum_=server_->conf()->intValue(VServerSettings::MaxOutputFileLines);
 
@@ -80,11 +80,8 @@ void ServerComThread::task(VTask_ptr task)
 }
 
 void ServerComThread::run()
-{
-	//Can we use it? We are in the thread!!!
-	//UserMessage::message(UserMessage::DBG, false, std::string("  ServerComThread::run start"));
-
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerComThread::run path: ") + nodePath_);
+{	
+    UiLog(serverName_).dbg() << "ComThread::run --> path="  <<  nodePath_;
 
     //Init flags
     rescanNeed_=false;
@@ -96,10 +93,11 @@ void ServerComThread::run()
 			case VTask::CommandTask:
 			{
 				// call the client invoker with the saved command
-				UserMessage::message(UserMessage::DBG, false, std::string(" COMMAND"));
+                UiLog(serverName_).dbg() << " COMMAND";
 				ArgvCreator argvCreator(command_);
-				//UserMessage::message(UserMessage::DBG, false, argvCreator.toString());
-
+#ifdef _UI_SERVERCOMTHREAD_DEBUG
+                UiLog(serverName_).dbg() << " args="  << argvCreator.toString();
+#endif
 				ci_->invoke(argvCreator.argc(), argvCreator.argv());
 
 				/*ci_->news_local();
@@ -118,14 +116,14 @@ void ServerComThread::run()
 
 			case VTask::NewsTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" NEWS"));
+                UiLog(serverName_).dbg() << " NEWS";
 				ci_->news_local(); // call the server
 				break;
 			}
 
 			case VTask::SyncTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" SYNC"));
+                UiLog(serverName_).dbg() << " SYNC";
 				sync_local();
 				break;
 			}
@@ -133,7 +131,7 @@ void ServerComThread::run()
 			//This is called during reset
 			case VTask::ResetTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" RESET"));
+                UiLog(serverName_).dbg() << " SYNC";
 				reset();
 				break;
 			}
@@ -143,7 +141,7 @@ void ServerComThread::run()
 			case VTask::ScriptTask:
 			case VTask::OutputTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" FILE"));
+                UiLog(serverName_).dbg() << " FILE" << " " << params_["clientPar"];
 				if(maxLineNum_ < 0)
 					ci_->file(nodePath_,params_["clientPar"]);
 				else
@@ -154,49 +152,49 @@ void ServerComThread::run()
 
 			case VTask::MessageTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" EDIT HISTORY"));
+                UiLog(serverName_).dbg() << " EDIT HISTORY";
 				ci_->edit_history(nodePath_);
 				break;
 			}
 
 			case VTask::StatsTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" STATS"));
+                UiLog(serverName_).dbg() << " STATS";
 				ci_->stats();
 				break;
 			}
 
 			case VTask::HistoryTask:
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" HISTORY"));
+                UiLog(serverName_).dbg() << " SERVER LOG";
 				ci_->getLog(100);
 				break;
 			}
 
 			case VTask::ScriptPreprocTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" SCRIP PREPROCESS"));
+                UiLog(serverName_).dbg() << " SCRIP PREPROCESS";
 				ci_->edit_script_preprocess(nodePath_);
 				break;
 
 			case VTask::ScriptEditTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" SCRIP EDIT"));
+                UiLog(serverName_).dbg() << " SCRIP EDIT";
 				ci_->edit_script_edit(nodePath_);
 				break;
 
 			case VTask::ScriptSubmitTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" SCRIP SUBMIT"));
+                UiLog(serverName_).dbg() << " SCRIP SUBMIT";
 				ci_->edit_script_submit(nodePath_, vars_, contents_,
 						(params_["alias"]=="1")?true:false,
 						(params_["run"] == "1")?true:false);
 				break;
 
 			case VTask::SuiteListTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" SUITES"));
+                UiLog(serverName_).dbg() << " SUITES";
 				ci_->suites();
 				break;
 
 			case VTask::SuiteAutoRegisterTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" SUITE AUTO REGISTER"));
+                UiLog(serverName_).dbg() << " SUITE AUTO REGISTER";
 				if(hasSuiteFilter_)
 				{
 					ci_->ch1_auto_add(autoAddNewSuites_);
@@ -204,12 +202,12 @@ void ServerComThread::run()
 				break;
 
 			case VTask::ZombieListTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" ZOMBIES"));
+                UiLog(serverName_).dbg() << " ZOMBIES";
 				ci_->zombieGet();
 				break;
 
 			case VTask::LogOutTask:
-				UserMessage::message(UserMessage::DBG, false, std::string(" LOGOUT"));
+                UiLog(serverName_).dbg() << " LOGOUT";
                 detach();
                 if(ci_->client_handle() > 0)
 				{
@@ -227,9 +225,8 @@ void ServerComThread::run()
 		// because we can't call Qt widgets from a worker thread
 
 		std::string errorString = e.what();
-		Q_EMIT failed(errorString);
-
-		UserMessage::message(UserMessage::DBG, false, std::string("  ServerComThread::run failed: ") + errorString);
+        UiLog(serverName_).dbg() << " thread failed: " <<  errorString;
+        Q_EMIT failed(errorString);
 
         //Reset flags
         rescanNeed_=false;
@@ -252,9 +249,9 @@ void ServerComThread::sync_local()
 	{
 		ServerDefsAccess defsAccess(server_);
 
-		UserMessage::message(UserMessage::DBG, false, "ServerComThread::sync -- begin");
+        UiLog(serverName_).dbg() << "ComThread::sync_local --> sync begin";
 		ci_->sync_local();
-		UserMessage::message(UserMessage::DBG, false, std::string("ServerComThread::sync -- end"));
+        UiLog(serverName_).dbg() << " sync end";
 
 		//If a rescan or fullscan is needed we have either added/remove nodes or deleted the defs.
 		//So there were significant changes.
@@ -267,21 +264,16 @@ void ServerComThread::sync_local()
 
 		if(rescanNeed_ || ci_->server_reply().full_sync())
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string("   --> rescan needed!"));
+            UiLog(serverName_).dbg() << " rescan needed!";
 			detach(defsAccess.defs());
 			attach(defsAccess.defs());
 		}
 	}
-
-	/*if(rescanNeed_ || ci_->server_reply().full_sync())
-	{
-		updateRegSuites();
-	}*/
 }
 
 void ServerComThread::reset()
 {
-	UserMessage::message(UserMessage::DBG, false,"ServerComThread::reset -- begin");
+    UiLog(serverName_).dbg() << "ComThread::reset -->";
 
 	//Lock the mutex on defs
 	ServerDefsAccess defsAccess(server_);
@@ -289,10 +281,6 @@ void ServerComThread::reset()
     //Detach the defs and the nodes from the observer
     detach(defsAccess.defs());
 
-	/// registering with empty set would lead
-	//      to retrieve all server content,
-	//      opposite of expected result
-
 	//If we have already set a handle we
 	//need to drop it.
 	if(ci_->client_handle() > 0)
@@ -303,7 +291,7 @@ void ServerComThread::reset()
 		}
 		catch (std::exception &e)
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string("no drop possible") + e.what());
+            UiLog(serverName_).warn() << " cannot drop handle: " << e.what();
 		}
 	}
 
@@ -314,11 +302,23 @@ void ServerComThread::reset()
 
 		if(!filteredSuites_.empty())
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string(" REGISTER SUITES"));
+            UiLog(serverName_).dbg() << " register suites";
 
 			//This will add a new handle to the client
 			ci_->ch_register(autoAddNewSuites_, filteredSuites_);
 		}
+        //If the suite filter is empty
+        else
+        {
+            //Registering with empty set would lead to retrieve all server content,
+            //opposite of expected result. So we just register a dummy suite
+            //to achive the our goal: for an empty suite filter no suites are retrieved.
+            UiLog(serverName_).dbg() << " register empty suite list";
+
+            std::vector<std::string> fsl;
+            fsl.push_back(SuiteFilter::dummySuite());
+            ci_->ch_register(autoAddNewSuites_, fsl);
+        }
 	}
 	else
 	{
@@ -326,107 +326,14 @@ void ServerComThread::reset()
 		ci_->reset();
 	}
 
-	UserMessage::message(UserMessage::DBG, false, std::string(" INIT SYNC"));
+    UiLog(serverName_).dbg() << " sync begin";
 	ci_->sync_local();
-	UserMessage::message(UserMessage::DBG, false, std::string(" INIT SYNC FINISHED"));
+    UiLog(serverName_).dbg() << " sync end";
 
     //Attach the nodes to the observer
 	attach(defsAccess.defs());
 
-	UserMessage::message(UserMessage::DBG, false,"ServerComThread::reset -- end");
-}
-
-
-//Called from sync local!!!
-void ServerComThread::updateRegSuites()
-{
-	if(!hasSuiteFilter_)
-		return;
-
-	//----------------------------------------
-	// Get the registered list of suites!!
-	//----------------------------------------
-	try
-	{
-		ci_->ch_suites();
-	}
-	catch ( std::exception& e )
-	{
-		UserMessage::message(UserMessage::DBG, false, std::string("host::update-reg-suite-error:") + e.what());
-	}
-
-	const std::vector<std::pair<unsigned int, std::vector<std::string> > >& vct=ci_->server_reply().get_client_handle_suites();
-
-	std::vector<std::string> regSuites;
-	for(size_t i = 0; i < vct.size(); ++i)
-	{
-		if(vct[i].first == static_cast<unsigned int>(ci_->client_handle()))
-		{
-		    regSuites = vct[i].second;
-		    break;
-		}
-    }
-
-	//-----------------------------------------
-	// Get the list of suites from the defs
-	//-----------------------------------------
-	const std::vector<suite_ptr>& defSuites = ci_->defs()->suiteVec();
-
-	//-----------------------------------------------------------------------
-	// If something is registered but not in the defs we need to remove it
-	//-----------------------------------------------------------------------
-
-	std::vector<std::string> delSuites;
-	for(std::vector<std::string>::iterator it=regSuites.begin(); it != regSuites.end(); ++it)
-	{
-		bool found=0;
-		for(size_t i = 0; i < defSuites.size(); ++i)
-		{
-			if(defSuites.at(i)->name() == *it)
-			{
-				found=true;
-				break;
-			}
-		}
-		if(!found)
-		{
-			delSuites.push_back(*it);
-		}
-	}
-
-	if(!delSuites.empty())
-	{
-		ci_->ch_remove(ci_->client_handle(),delSuites);
-	}
-
-	//------------------------------------------------------
-	// If something is loaded and in the filter but
-	// not registered we need to register it!!
-	//------------------------------------------------------
-
-	if(!autoAddNewSuites_)
-	{
-		//get the list of loaded suites
-		ci_->suites();
-		const std::vector<std::string>& loadedSuites=ci_->server_reply().get_string_vec();
-
-		std::vector<std::string> addSuites;
-		for(std::vector<std::string>::const_iterator it=loadedSuites.begin(); it != loadedSuites.end(); ++it)
-		{
-			if(std::find(filteredSuites_.begin(),filteredSuites_.end(),*it) != filteredSuites_.end() &&
-			   std::find(regSuites.begin(),regSuites.end(),*it) != regSuites.end())
-			{
-				addSuites.push_back(*it);
-			}
-		}
-
-		if(!addSuites.empty())
-		{
-			ci_->ch_add(ci_->client_handle(),addSuites);
-		}
-	}
-
-	UserMessage::message(UserMessage::DBG, false, std::string("Suite update finished"));
+    UiLog(serverName_).dbg() << "<-- ComThread::reset";
 }
 
 //This is an observer notification method!!
@@ -435,29 +342,26 @@ void ServerComThread::update(const Node* node, const std::vector<ecf::Aspect::Ty
 	//This function can only be called during a SYNC_LOCAl task!!!!
 	assert(taskType_ == VTask::SyncTask);
 
-	std::vector<ecf::Aspect::Type> typesCopy=types;
+    std::vector<ecf::Aspect::Type> typesCopy=types;
 
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerComThread::update - node: ") + node->name());
-	for(std::vector<ecf::Aspect::Type>::const_iterator it=types.begin(); it != types.end(); ++it)
-	{
-		int i=*it;
-		std::stringstream ss;
-		ss << i;
-		UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + ss.str());
-	}
+    UiLog(serverName_).dbg() << "ComThread::update --> node: " << node->name();
+    std::stringstream ss;
+    aspectToStr(ss,types);
+    UiLog(serverName_).dbg() << " aspects: " << ss.str();
 
     //If a node was already requested to be added/deleted in the thread we do not go further. At the end of the sync
 	//we will regenerate everything (the tree as well in ServerHandle).
     if(rescanNeed_)
 	{
-		UserMessage::message(UserMessage::DBG, false, std::string(" -->  No signal emitted (rescan needed)"));
+        UiLog(serverName_).dbg() << " rescanNeed already set";
 		return;
 	}
 
     //This is a radical change
-	if(std::find(types.begin(),types.end(),ecf::Aspect::ADD_REMOVE_NODE) != types.end())
-	{
-		UserMessage::message(UserMessage::DBG, false, std::string(" --> Rescan needed"));
+    if((std::find(types.begin(),types.end(),ecf::Aspect::ADD_REMOVE_NODE) != types.end()) ||
+       (std::find(types.begin(),types.end(),ecf::Aspect::ORDER)           != types.end()))
+    {
+        UiLog(serverName_).dbg() << " emit rescanNeed()";
 		rescanNeed_=true;
 
 		//We notify ServerHandler about the radical changes. When ServerHandler receives this signal
@@ -466,11 +370,10 @@ void ServerComThread::update(const Node* node, const std::vector<ecf::Aspect::Ty
 		Q_EMIT rescanNeed();
 
 		return;
-
 	}
 
     //This will notify SeverHandler
-	UserMessage::message(UserMessage::DBG, false, std::string(" -->  nodeChanged() emitted"));
+    UiLog(serverName_).dbg() << " emit nodeChanged()";
 	Q_EMIT nodeChanged(node,types);
 }
 
@@ -479,25 +382,35 @@ void ServerComThread::update(const Defs* dc, const std::vector<ecf::Aspect::Type
 {
 	std::vector<ecf::Aspect::Type> typesCopy=types;
 
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerComThread::update - defs: "));
-	for(std::vector<ecf::Aspect::Type>::const_iterator it=types.begin(); it != types.end(); ++it)
-	{
-		int i=*it;
-		std::stringstream ss;
-		ss << i;
-		UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + ss.str());
-	}
+    UiLog(serverName_).dbg() << "ComThread::update --> defs";
+    std::stringstream ss;
+    aspectToStr(ss,types);
+    UiLog(serverName_).dbg() << " aspects: " << ss.str();
 
     //If anything was requested to be deleted in the thread we do not go further
     //because it will trigger a full rescan in ServerHandler!
     if(rescanNeed_)
 	{
-		UserMessage::message(UserMessage::DBG, false, std::string(" -->  No signal emitted (rescan needed)"));
+        UiLog(serverName_).dbg() << " rescanNeed already set";
 	    return;
 	}
 
+    //This is a radical change
+    if(std::find(types.begin(),types.end(),ecf::Aspect::ORDER) != types.end())
+    {
+        UiLog(serverName_).dbg() << " emit rescanNeed()";
+        rescanNeed_=true;
+
+        //We notify ServerHandler about the radical changes. When ServerHandler receives this signal
+        //it will clear its tree, which stores shared pointers to the nodes (node_ptr). If these pointers are
+        //reset update_delete() might be called, so it should not write any shared variables!
+        Q_EMIT rescanNeed();
+
+        return;
+    }
+
     //This will notify SeverHandler
-	UserMessage::message(UserMessage::DBG, false, std::string(" -->  defsChanged() emitted"));
+    UiLog(serverName_).dbg() << " emit defsChanged()";
 	Q_EMIT defsChanged(typesCopy);
 }
 
@@ -505,14 +418,13 @@ void ServerComThread::update_delete(const Node* nc)
 {
 	Node *n=const_cast<Node*>(nc);
 	n->detach(this);
-    //UserMessage::message(UserMessage::DBG, false, std::string("Update delete: ") + n->name());
 }
 
 //This only be called when ComThread is running or from the ComThread desctructor. So it is safe to set
 //rescanNeed in it.
 void ServerComThread::update_delete(const Defs* dc)
 {
-    UserMessage::message(UserMessage::DBG, false, std::string("Update defs delete: "));
+    UiLog(serverName_).dbg() << "ServerComThread::update_delete -->";
 
     Defs *d=const_cast<Defs*>(dc);
     d->detach(this);
@@ -611,3 +523,13 @@ void ServerComThread::detach(Node *node)
 		detach((*it).get());
 	}
 }
+
+void ServerComThread::aspectToStr(std::stringstream& ss,const std::vector<ecf::Aspect::Type>& t) const
+{
+    for(std::vector<ecf::Aspect::Type>::const_iterator it=t.begin(); it != t.end(); ++it)
+    {
+        if(!ss.str().empty())
+            ss << ",";
+        ss << *it;
+    }
+}
diff --git a/Viewer/src/ServerComThread.hpp b/Viewer/src/ServerComThread.hpp
index d2a4446..422c043 100644
--- a/Viewer/src/ServerComThread.hpp
+++ b/Viewer/src/ServerComThread.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,6 +12,7 @@
 
 #include <deque>
 #include <utility>
+#include <sstream>
 #include <string>
 #include <vector>
 
@@ -59,7 +60,6 @@ protected:
 	void run();
 	void reset();
 	void sync_local();
-	void updateRegSuites();
 
 private:
     void attach();
@@ -68,8 +68,10 @@ private:
     void detach();
     void detach(defs_ptr d);
     void detach(Node *node);
+    void aspectToStr(std::stringstream& s,const std::vector<ecf::Aspect::Type>& t) const;
 
 	ServerHandler *server_;
+    std::string serverName_;
 	ClientInvoker *ci_;
 	VTask::Type taskType_;
 	std::vector<std::string> command_;
diff --git a/Viewer/src/ServerDialog.ui b/Viewer/src/ServerDialog.ui
deleted file mode 100644
index c96b145..0000000
--- a/Viewer/src/ServerDialog.ui
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ServerDialog</class>
- <widget class="QDialog" name="ServerDialog">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>787</width>
-    <height>646</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Select servers</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QToolButton" name="editTb">
-       <property name="toolTip">
-        <string>Edit</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/configure.svg</normaloff>:/viewer/images/configure.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="addTb">
-       <property name="toolTip">
-        <string>Add server</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/add.svg</normaloff>:/viewer/images/add.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="deleteTb">
-       <property name="toolTip">
-        <string>Delete server</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="rescanTb">
-       <property name="toolTip">
-        <string>Rescan network</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/reload.svg</normaloff>:/viewer/images/reload.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
-     <item>
-      <widget class="QTreeView" name="contentsView"/>
-     </item>
-     <item>
-      <widget class="QPushButton" name="pushButton">
-       <property name="text">
-        <string>PushButton</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QTreeView" name="serverView">
-       <property name="sizePolicy">
-        <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="rootIsDecorated">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QDialogButtonBox" name="buttonBox">
-     <property name="orientation">
-      <enum>Qt::Horizontal</enum>
-     </property>
-     <property name="standardButtons">
-      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
- <connections>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>accepted()</signal>
-   <receiver>ServerDialog</receiver>
-   <slot>accept()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>248</x>
-     <y>254</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>157</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
-  <connection>
-   <sender>buttonBox</sender>
-   <signal>rejected()</signal>
-   <receiver>ServerDialog</receiver>
-   <slot>reject()</slot>
-   <hints>
-    <hint type="sourcelabel">
-     <x>316</x>
-     <y>260</y>
-    </hint>
-    <hint type="destinationlabel">
-     <x>286</x>
-     <y>274</y>
-    </hint>
-   </hints>
-  </connection>
- </connections>
-</ui>
diff --git a/Viewer/src/ServerFilter.cpp b/Viewer/src/ServerFilter.cpp
index 73073f1..2b4d1c0 100644
--- a/Viewer/src/ServerFilter.cpp
+++ b/Viewer/src/ServerFilter.cpp
@@ -13,6 +13,7 @@
 #include "ServerItem.hpp"
 #include "ServerList.hpp"
 #include "VSettings.hpp"
+#include "SessionHandler.hpp"
 
 //==============================================
 //
@@ -150,6 +151,21 @@ void ServerFilter::readSettings(VSettings* vs)
 		{
 			addServer(s,true);
 		}
+		// special case - if we're starting a temporary session for looking at one
+		// particular server, then we need to replace the placeholder server alias
+		// with the one we actually want to look at
+		else if (name == "SERVER_ALIAS_PLACEHOLDER")
+		{
+			SessionItem *session = SessionHandler::instance()->current();
+			if (session->temporary())
+			{
+				std::string alias = session->temporaryServerAlias();
+				if (ServerItem* s=ServerList::instance()->find(alias))
+				{
+					addServer(s,true);
+				}
+			}
+		}
 	}
 }
 
diff --git a/Viewer/src/ServerFilter.hpp b/Viewer/src/ServerFilter.hpp
index fb73708..07ba525 100644
--- a/Viewer/src/ServerFilter.hpp
+++ b/Viewer/src/ServerFilter.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -22,7 +22,7 @@ class VSettings;
 class ServerFilterObserver
 {
 public:
-	virtual ~ServerFilterObserver() {};
+    virtual ~ServerFilterObserver() {}
 	virtual void notifyServerFilterAdded(ServerItem*)=0;
 	virtual void notifyServerFilterRemoved(ServerItem*)=0;
 	virtual void notifyServerFilterChanged(ServerItem*)=0;
@@ -38,7 +38,8 @@ public:
 	enum ChangeAspect {Reset,Added,Removed};
 
 	const std::vector<ServerItem*>& items() const {return items_;}
-	void serverNames(std::vector<std::string>&) const;
+    int  itemCount() const {return static_cast<int>(items_.size());}
+    void serverNames(std::vector<std::string>&) const;
 
 	void addServer(ServerItem*,bool broadcast=true);
 	void removeServer(ServerItem*);
diff --git a/Viewer/src/ServerHandler.cpp b/Viewer/src/ServerHandler.cpp
index c89fdc2..7097d4e 100644
--- a/Viewer/src/ServerHandler.cpp
+++ b/Viewer/src/ServerHandler.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -26,6 +26,7 @@
 #include "ServerDefsAccess.hpp"
 #include "ServerObserver.hpp"
 #include "SuiteFilter.hpp"
+#include "UiLog.hpp"
 #include "UpdateTimer.hpp"
 #include "UserMessage.hpp"
 #include "VNode.hpp"
@@ -190,13 +191,13 @@ void ServerHandler::stopRefreshTimer()
 {
     refreshTimer_->stop();
 #ifdef __UI_SERVERUPDATE_DEBUG
-    UserMessage::debug("stopRefreshTimer -->");
+    UiLog(this).dbg() << "ServerHandler::stopRefreshTimer -->";
 #endif
 }
 
 void ServerHandler::startRefreshTimer()
 {
-    UserMessage::debug("startRefreshTimer -->");
+    UiLog(this).dbg() << "ServerHandler::startRefreshTimer -->";
 
     if(!conf_->boolValue(VServerSettings::AutoUpdate))
     {
@@ -215,13 +216,13 @@ void ServerHandler::startRefreshTimer()
 	}
 
 #ifdef __UI_SERVERUPDATE_DEBUG
-    UserMessage::debug("startRefreshTimer --> " + QString::number(refreshTimer_->interval()).toStdString());
+    UiLog(this).dbg() << " refreshTimer interval: " <<  refreshTimer_->interval();
 #endif
 }
 
 void ServerHandler::updateRefreshTimer()
 {
-   UserMessage::debug("updateRefreshTimer -->");
+   UiLog(this).dbg() << "ServerHandler::updateRefreshTimer -->";
 
    if(!conf_->boolValue(VServerSettings::AutoUpdate))
     {
@@ -242,7 +243,7 @@ void ServerHandler::updateRefreshTimer()
 	}
 
 #ifdef __UI_SERVERUPDATE_DEBUG
-    UserMessage::debug("updateRefreshTimer --> " + QString::number(refreshTimer_->interval()).toStdString());
+    UiLog(this).dbg() << " refreshTimer interval: " << refreshTimer_->interval();
 #endif
 
 }
@@ -258,17 +259,20 @@ void ServerHandler::driftRefreshTimer()
     if(activity_ != LoadActivity &&
        conf_->boolValue(VServerSettings::AdaptiveUpdate))
     {
+#ifdef __UI_SERVERUPDATE_DEBUG
+        UiLog(this).dbg() << "driftRefreshTimer -->";
+#endif
+
         refreshTimer_->drift(conf_->intValue(VServerSettings::AdaptiveUpdateIncrement),
                               conf_->intValue(VServerSettings::MaxAdaptiveUpdateRate));
     }
 
 #ifdef __UI_SERVERUPDATE_DEBUG
-    UserMessage::debug("driftRefreshTimer --> " + QString::number(refreshTimer_->interval()).toStdString());
+    UiLog(this).dbg() << "driftRefreshTimer interval: " << refreshTimer_->interval();
 #endif
 
 }
 
-
 void ServerHandler::setActivity(Activity ac)
 {
 	activity_=ac;
@@ -292,6 +296,22 @@ void ServerHandler::removeServer(ServerHandler* server)
 	}
 }
 
+ServerHandler* ServerHandler::findServer(const std::string &alias)
+{
+	for(std::vector<ServerHandler*>::const_iterator it=servers_.begin(); it != servers_.end(); ++it)
+	{
+		ServerHandler *s=*it;
+
+		if (s->name() == alias)
+		{
+			return s;
+		}
+	}
+	return NULL; // did not find it
+}
+
+
+
 //This function can be called many times so we need to avoid locking the mutex.
 SState::State ServerHandler::serverState()
 {
@@ -370,12 +390,6 @@ defs_ptr ServerHandler::safelyAccessSimpleDefsMembers()
 	}
 }
 
-
-void ServerHandler::errorMessage(std::string message)
-{
-	UserMessage::message(UserMessage::ERROR, true, message);
-}
-
 //-------------------------------------------------------------
 // Run client tasks.
 //
@@ -499,7 +513,7 @@ void ServerHandler::refreshInternal()
 //This slot is called by the timer regularly to get news from the server.
 void ServerHandler::refreshServerInfo()
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("auto refreshing server info for ") + name());
+    UiLog(this).dbg() << "Auto refreshing server";
     refreshInternal();
 
     //We reduce the update frequency
@@ -519,7 +533,7 @@ void ServerHandler::command(VInfo_ptr info,const std::vector<std::string>& cmd)
 
 	if (!realCommand.empty())
 	{
-		UserMessage::message(UserMessage::DBG, false, std::string("command: ") + commandToString(realCommand));
+        UiLog().dbg() << "ServerHandler::command --> " << commandToString(realCommand);
 
 		//Get the name of the object for that the command will be applied
 		std::string nodeFullName;
@@ -548,7 +562,7 @@ void ServerHandler::command(VInfo_ptr info,const std::vector<std::string>& cmd)
 				realCommand[i]=nodeName;
 		}
 
-		UserMessage::message(UserMessage::DBG, false, std::string("final command: ") + commandToString(realCommand));
+        UiLog().dbg() << " final command: " << commandToString(realCommand);
 
 		// get the command into the right format by first splitting into tokens
 		// and then converting to argc, argv format
@@ -562,7 +576,8 @@ void ServerHandler::command(VInfo_ptr info,const std::vector<std::string>& cmd)
 	}
 	else
 	{
-		UserMessage::message(UserMessage::ERROR, true, std::string("command is not recognised."));
+        UiLog().err() << " command is not recognised!";
+        UserMessage::message(UserMessage::ERROR, true, std::string("command is not recognised."));
 	}
 }
 //Send the same command for a list of objects (nodes/servers) specified in a VInfo vector.
@@ -576,13 +591,12 @@ void ServerHandler::command(std::vector<VInfo_ptr> info, std::string cmd)
 
 	if (!realCommand.empty())
 	{
-		UserMessage::message(UserMessage::DBG, false, std::string("command: ") + cmd + " (real: " + realCommand + ")");
+        UiLog().dbg() << "ServerHandler::command -->" << cmd << " (real: " << realCommand + ")";
 
 		std::map<ServerHandler*,std::string> targetNodeNames;
 		std::map<ServerHandler*,std::string> targetNodeFullNames;
         std::map<ServerHandler*,std::string> targetParentFullNames;
 
-
 		//Figure out what objects (node/server) the command should be applied to
 		for(int i=0; i < info.size(); i++)
 		{
@@ -676,7 +690,7 @@ void ServerHandler::command(std::vector<VInfo_ptr> info, std::string cmd)
             placeholder = "<parent_name>";
             ecf::Str::replace_all(realCommand, placeholder, targetParentFullNames[serverHandler]);
 
-			UserMessage::message(UserMessage::DBG, false, std::string("final command: ") + realCommand);
+            UiLog().dbg() << " final command: " << realCommand;
 
 			// get the command into the right format by first splitting into tokens
 			// and then converting to argc, argv format
@@ -695,7 +709,8 @@ void ServerHandler::command(std::vector<VInfo_ptr> info, std::string cmd)
 	}
 	else
 	{
-		UserMessage::message(UserMessage::ERROR, true, std::string("command ") + cmd + " is not recognised. Check the menu definition.");
+        UiLog().err() << " command is not recognised. Check the menu definition.";
+        UserMessage::message(UserMessage::ERROR, true, std::string("command ") + cmd + " is not recognised. Check the menu definition.");
 	}
 }
 
@@ -708,7 +723,7 @@ void ServerHandler::command(const std::vector<std::string>& fullPaths, const std
 
 	if (!realCommand.empty())
 	{
-		UserMessage::message(UserMessage::DBG, false, "command: " +  commandToString(realCommand));
+        UiLog().dbg() << "ServerHandler::command: " << commandToString(realCommand);
 
 		std::string fullNameStr;
 
@@ -729,17 +744,30 @@ void ServerHandler::command(const std::vector<std::string>& fullPaths, const std
 				realCommand[i]=fullNameStr;
 		}
 
-		UserMessage::message(UserMessage::DBG, false, std::string("final command: ") + commandToString(realCommand));
+        UiLog().dbg() << " final command: " << commandToString(realCommand);
 
 		// set up and run the thread for server communication
 		runCommand(realCommand);
 	}
 	else
 	{
+        UiLog().err() << " command is not recognised. Check the menu definition.";
 		UserMessage::message(UserMessage::ERROR, true, std::string("command ") +   commandToString(cmd) + " is not recognised. Check the menu definition.");
 	}
 }
 
+// convenience function
+void ServerHandler::command(const std::string& fullPath, const std::string&cmd)
+{
+    std::vector<std::string> paths;
+    std::vector<std::string> commands;
+
+    paths.push_back(fullPath);
+    ecf::Str::split(cmd, commands);
+
+    command(paths, commands);
+}
+
 
 
 //======================================================================================
@@ -749,14 +777,15 @@ void ServerHandler::command(const std::vector<std::string>& fullPaths, const std
 //This slot is called when a node changes.
 void ServerHandler::slotNodeChanged(const Node* nc,std::vector<ecf::Aspect::Type> aspect)
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::slotNodeChanged - node: ") + nc->name());
-	for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
-		UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + boost::lexical_cast<std::string>(*it));
+    UiLog(this).dbg() << "ServerHandler::slotNodeChanged - node: " + nc->name();
+
+    //for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
+    //UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + boost::lexical_cast<std::string>(*it));
 
 	//This can happen if we initiated a reset while we sync in the thread
 	if(vRoot_->isEmpty())
 	{
-		UserMessage::message(UserMessage::DBG, false, " --> no change - tree is empty");
+        UiLog(this).dbg() << " tree is empty - no change applied!";
 		return;
 	}
 
@@ -772,7 +801,7 @@ void ServerHandler::slotNodeChanged(const Node* nc,std::vector<ecf::Aspect::Type
 	//TODO: what about the infopanel or breadcrumbs??????
 	if(change.ignore_)
 	{
-		UserMessage::message(UserMessage::DBG, false," --> Update ignored");
+        UiLog(this).dbg() << " update ignored";
 		return;
 	}
 	else
@@ -786,7 +815,7 @@ void ServerHandler::slotNodeChanged(const Node* nc,std::vector<ecf::Aspect::Type
 		//Notify the observers
 		broadcast(&NodeObserver::notifyEndNodeChange,vn,aspect,change);
 
-		UserMessage::message(UserMessage::DBG, false," --> Update applied");
+        UiLog(this).dbg() << " update applied";
 	}
 }
 
@@ -828,12 +857,12 @@ void ServerHandler::broadcast(NoMethodV1 proc,const VNode* node,const std::vecto
 //This slot is called when the Defs change.
 void ServerHandler::slotDefsChanged(std::vector<ecf::Aspect::Type> aspect)
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::slotDefsChanged"));
-	for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
-		UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + boost::lexical_cast<std::string>(*it));
+    UiLog().dbg() << "ServerHandler::slotDefsChanged -->";
+    //for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
+    //	UserMessage::message(UserMessage::DBG, false, std::string(" aspect: ") + boost::lexical_cast<std::string>(*it));
 
 	//Begin update for the VNode
-	VNodeChange change;
+    //VNodeChange change;
 	vRoot_->beginUpdate(aspect);
 
 	//Notify the observers
@@ -858,7 +887,7 @@ void ServerHandler::addServerObserver(ServerObserver *obs)
 	{
         serverObservers_.push_back(obs);
 #ifdef __UI_SERVEROBSERVER_DEBUG
-        UserMessage::debug("ServerHandler::addServerObserver -->  " + boost::lexical_cast<std::string>(obs));
+        UiLog(this).dbg() << "ServerHandler::addServerObserver -->  " << obs;
 #endif
 	}
 }
@@ -870,7 +899,7 @@ void ServerHandler::removeServerObserver(ServerObserver *obs)
 	{
 		serverObservers_.erase(it);
 #ifdef __UI_SERVEROBSERVER_DEBUG
-        UserMessage::debug("ServerHandler::removeServerObserver --> " + boost::lexical_cast<std::string>(obs));
+        UiLog(this).dbg() << "ServerHandler::removeServerObserver --> " << obs;
 #endif
 	}
 }
@@ -913,7 +942,7 @@ void ServerHandler::slotRescanNeed()
 
 void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverReply)
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::clientTaskFinished"));
+    UiLog(this).dbg() << "ServerHandler::clientTaskFinished -->";
 
 	//See which type of task finished. What we do now will depend on that.
 	switch(task->type())
@@ -924,8 +953,9 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 			// any updates on the server (there should have been, because we
 			// just did something!)
 
-			UserMessage::message(UserMessage::DBG, false, std::string(" --> COMMAND finished"));
-			comQueue_->addNewsTask();
+            UiLog(this).dbg() << " command finished - send SYNC command";
+			//comQueue_->addNewsTask();
+			comQueue_->addSyncTask();
 			break;
 		}
 		case VTask::NewsTask:
@@ -937,7 +967,7 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 				case ServerReply::NO_NEWS:
 				{
 					// no news, nothing to do
-					UserMessage::message(UserMessage::DBG, false, std::string(" --> No news from server"));
+                    UiLog(this).dbg() << " NO_NEWS";
 
 					//If we just regained the connection we need to reset
 					if(connectionGained())
@@ -952,7 +982,7 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 					// yes, something's changed - synchronise with the server
 
 					//If we just regained the connection we need to reset
-					UserMessage::message(UserMessage::DBG, false, std::string(" --> News from server - send SYNC command"));
+                    UiLog(this).dbg() << " NEWS - send SYNC command";
 					if(connectionGained())
 					{
 						reset();
@@ -966,9 +996,8 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 
 				case ServerReply::DO_FULL_SYNC:
 				{
-					// yes, a lot of things have changed - we need to reset!!!!!!
-
-					UserMessage::message(UserMessage::DBG, false, std::string(" --> DO_FULL_SYNC from server"));
+					// yes, a lot of things have changed - we need to reset!!!!!!                       
+                    UiLog(this).dbg() << " DO_FULL_SYNC - will reset";
 					connectionGained();
 					reset();
 					break;
@@ -983,12 +1012,12 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 		}
 		case VTask::SyncTask:
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string(" --> Sync finished"));
+            UiLog(this).dbg() << " sync finished";
 
 			//This typically happens when a suite is added/removed
 			if(serverReply.full_sync() || vRoot_->isEmpty())
 			{
-				UserMessage::message(UserMessage::DBG, false, std::string(" --> Full sync requested --> rescanTree"));
+                UiLog(this).dbg() << " full sync requested - rescanTree";
 
 				//This will update the suites
 				rescanTree();
@@ -997,10 +1026,6 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 			{
 				broadcast(&ServerObserver::notifyEndServerSync);
 			}
-
-			//UserMessage::message(UserMessage::DBG, false, std::string(" --> Update suite filter after sync"));
-			//comQueue_->addSuiteListTask();
-
 			break;
 		}
 
@@ -1065,13 +1090,12 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 		}
 		case VTask::ScriptSubmitTask:
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string(" --> Script submit  finished"));
+            UiLog(this).dbg() << " script submit finished - send NEWS command";
 
 			task->reply()->text(serverReply.get_string());
 			task->status(VTask::FINISHED);
 
-			//Submitting the task was successful - we should now get updates from the server
-			UserMessage::message(UserMessage::DBG, false, std::string(" --> Send NEWS command"));
+			//Submitting the task was successful - we should now get updates from the server			
 			comQueue_->addNewsTask();
 			break;
 		}
@@ -1079,8 +1103,8 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 		case VTask::SuiteListTask:
 		{
 			//Update the suite filter with the list of suites actually loaded onto the server.
-			//If the suitefilter is enabled this might have only a subset of it in our tree.
-			updateSuiteFilterWithLoaded(serverReply.get_string_vec());
+            //If the suitefilter is enabled this might have only a subset of it in our tree
+            updateSuiteFilterWithLoaded(serverReply.get_string_vec());
 			break;
 		}
 
@@ -1103,11 +1127,10 @@ void ServerHandler::clientTaskFinished(VTask_ptr task,const ServerReply& serverR
 
 void ServerHandler::clientTaskFailed(VTask_ptr task,const std::string& errMsg)
 {
-	//UserMessage::message(UserMessage::DBG, false, std::string("Client task finished"));
+    UiLog(this).dbg() << "ServerHandler::clientTaskFailed -->";
 
 	//TODO: suite filter  + ci_ observers
 
-
 	//See which type of task finished. What we do now will depend on that.
 	switch(task->type())
 	{
@@ -1188,7 +1211,7 @@ void ServerHandler::connectServer()
 
 void ServerHandler::reset()
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::reset"));
+    UiLog(this).dbg() << "ServerHandler::reset -->";
 
 	//---------------------------------
 	// First part of reset: clearing
@@ -1213,7 +1236,7 @@ void ServerHandler::reset()
 	}
 	else
 	{
-		UserMessage::message(UserMessage::DBG, false, " --> skip reset");
+        UiLog(this).dbg() << " skip reset";
 	}
 }
 
@@ -1295,7 +1318,7 @@ void ServerHandler::resetFailed(const std::string& errMsg)
 
 void ServerHandler::clearTree()
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::clearTree --  begin"));
+    UiLog(this).dbg() << "ServerHandler::clearTree -->";
 
 	if(!vRoot_->isEmpty())
 	{
@@ -1309,13 +1332,13 @@ void ServerHandler::clearTree()
         broadcast(&ServerObserver::notifyEndServerClear);
 	}
 
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::clearTree --  end"));
+    UiLog(this).dbg() << " <-- clearTree";
 }
 
 
 void ServerHandler::rescanTree()
 {
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::rescanTree -- begin"));
+    UiLog(this).dbg() << "ServerHandler::rescanTree -->";
 
 	setActivity(RescanActivity);
 
@@ -1366,7 +1389,7 @@ void ServerHandler::rescanTree()
 
 	setActivity(NoActivity);
 
-	UserMessage::message(UserMessage::DBG, false, std::string("ServerHandler::rescanTree -- end"));
+    UiLog(this).dbg() << "<-- rescanTree";
 }
 
 //====================================================
@@ -1393,8 +1416,8 @@ void ServerHandler::updateSuiteFilter(SuiteFilter* sf)
 //Update the suite filter with the list of suites actually loaded onto the server.
 //If the suitefilter is enabled this might have only a subset of it in our tree.
 void ServerHandler::updateSuiteFilterWithLoaded(const std::vector<std::string>& loadedSuites)
-{
-	suiteFilter_->setLoaded(loadedSuites);
+{	
+    suiteFilter_->setLoaded(loadedSuites);
 }
 
 //Update the suite filter with the list of suites stored in the defs (in the tree). It only
@@ -1412,12 +1435,13 @@ void ServerHandler::updateSuiteFilterWithDefs()
 //Only called internally after reset or serverscan!!
 void ServerHandler::updateSuiteFilter()
 {
-	bool hasObserver=suiteFilter_->hasObserver();
-
 	//We only fetch the full list of loaded suites from the server
-	//via the thread when the suiteFilter is observerved and it is
-	//enabled!
-	if(hasObserver && suiteFilter_->isEnabled())
+    //via the thread when
+    //  -the suiteFilter is not yet initialised
+    //   OR
+    //  -the suiteFilter is observerved and it is enabled!
+    if(!suiteFilter_->isLoadedInitialised() ||
+       (suiteFilter_->hasObserver() && suiteFilter_->isEnabled()))
 	{
 		//This will call updateSuiteFilterWithLoaded()
 		comQueue_->addSuiteListTask();
@@ -1504,13 +1528,13 @@ void ServerHandler::loadConf()
 
 void ServerHandler::searchBegan()
 {
-	UserMessage::message(UserMessage::DBG, false,"(" + name() + ") ServerHandler::searchBegan -- suspend queue");
+    UiLog(this).dbg() << "ServerHandler::searchBegan --> suspend queue";
 	comQueue_->suspend(true);
 }
 
 void ServerHandler::searchFinished()
 {
-	UserMessage::message(UserMessage::DBG, false, "(" + name() + ") ServerHandler::searchFinished -- start queue");
+    UiLog(this).dbg() << "ServerHandler::searchFinished --> start queue";
 	comQueue_->start();
 
 }
diff --git a/Viewer/src/ServerHandler.hpp b/Viewer/src/ServerHandler.hpp
index e949255..d944a55 100644
--- a/Viewer/src/ServerHandler.hpp
+++ b/Viewer/src/ServerHandler.hpp
@@ -95,8 +95,10 @@ public:
 	static const std::vector<ServerHandler*>& servers() {return servers_;}
 	static ServerHandler* addServer(const std::string &name,const std::string &host, const std::string &port);
 	static void removeServer(ServerHandler*);
+	static ServerHandler* findServer(const std::string &alias);
 
 	void command(const std::vector<std::string>& fullPaths, const std::vector<std::string>& cmd);
+	void command(const std::string& fullPath, const std::string&cmd);
 	static void command(VInfo_ptr,const std::vector<std::string>&);
 	static void command(std::vector<VInfo_ptr>,std::string);
 
@@ -137,7 +139,6 @@ protected:
 	static std::vector<ServerHandler*> servers_;
 
 private Q_SLOTS:
-	void errorMessage(std::string message); // invoked when an error message is received
 	void refreshServerInfo();
 	void slotNodeChanged(const Node* n, std::vector<ecf::Aspect::Type>);
 	void slotDefsChanged(std::vector<ecf::Aspect::Type>);
diff --git a/Viewer/src/ServerItem.cpp b/Viewer/src/ServerItem.cpp
index faa8529..6df8b30 100644
--- a/Viewer/src/ServerItem.cpp
+++ b/Viewer/src/ServerItem.cpp
@@ -21,7 +21,8 @@ ServerItem::ServerItem(const std::string& name) :
   name_(name),
   useCnt_(0),
   handler_(0),
-  favourite_(false)
+  favourite_(false),
+  system_(false)
 {
 }
 
@@ -29,7 +30,8 @@ ServerItem::ServerItem(const std::string& name,const std::string& host,const std
   name_(name), host_(host), port_(port),
   useCnt_(0),
   handler_(0),
-  favourite_(favourite)
+  favourite_(favourite),
+  system_(false)
 {
 }
 
@@ -61,6 +63,18 @@ void ServerItem::setFavourite(bool b)
 	favourite_=b;
 	broadcastChanged();
 }
+
+void ServerItem::setSystem(bool b)
+{
+    system_=b;
+    //broadcastChanged();
+}
+
+std::string ServerItem::longName() const
+{
+    return host_ + "@" + port_;
+}
+
 //===========================================================
 // Register the usage of the server. Create and destroys the
 // the ServerHandler.
diff --git a/Viewer/src/ServerItem.hpp b/Viewer/src/ServerItem.hpp
index 0d604dd..f9fbc31 100644
--- a/Viewer/src/ServerItem.hpp
+++ b/Viewer/src/ServerItem.hpp
@@ -39,7 +39,9 @@ public:
 	const std::string& name() const {return name_;}
 	const std::string& host() const {return host_;}
 	const std::string& port() const {return port_;}
+    std::string longName() const;
 	bool isFavourite() const {return favourite_;}
+    bool isSystem() const {return system_;}
 
 	bool isUsed() const;
 	int useCnt() const {return useCnt_;}
@@ -57,7 +59,8 @@ protected:
 	void  host(const std::string& host) {host_=host;}
 	void  port(const std::string& port) {port_=port;}
 	void  reset(const std::string& name,const std::string& host,const std::string& port);
-	void  setFavourite(bool b);
+    void  setFavourite(bool b);
+    void  setSystem(bool b);
 
 	void registerUsageBegin();
 	void registerUsageEnd();
@@ -69,10 +72,10 @@ protected:
 	std::string host_;
 	std::string port_;
 	bool favourite_;
+    bool system_;
 	int useCnt_;
 	ServerHandler* handler_;
 
-	std::set<std::string> suiteFilter_;
 	std::vector<ServerItemObserver*> observers_;
 };
 
diff --git a/Viewer/src/ServerList.cpp b/Viewer/src/ServerList.cpp
index e72797d..476b1ec 100644
--- a/Viewer/src/ServerList.cpp
+++ b/Viewer/src/ServerList.cpp
@@ -8,11 +8,14 @@
 //============================================================================
 
 #include <boost/algorithm/string.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/path.hpp>
 
 #include "ServerList.hpp"
 
 #include "DirectoryHandler.hpp"
 #include "ServerItem.hpp"
+#include "UiLog.hpp"
 
 #include <algorithm>
 #include <fstream>
@@ -22,6 +25,13 @@
 
 ServerList* ServerList::instance_=0;
 
+#define _UI_SERVERLIST_DEBUG
+
+ServerListTmpItem::ServerListTmpItem(ServerItem* item) :
+    name_(item->name()),
+    host_(item->host()),
+    port_(item->port())
+{}
 
 //Singleton instance method
 ServerList* ServerList::instance()
@@ -50,6 +60,16 @@ ServerItem* ServerList::find(const std::string& name)
 	return 0;
 }
 
+ServerItem* ServerList::find(const std::string& name, const std::string& host, const std::string& port)
+{
+	for(std::vector<ServerItem*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+	{
+		if((*it)->name() == name && (*it)->host() == host && (*it)->port() == port)
+			return *it;
+	}
+	return 0;
+}
+
 ServerItem* ServerList::add(const std::string& name,const std::string& host,const std::string& port,bool favourite,bool saveIt)
 {
     //Check if there is an item with the same name. Names have to be unique!
@@ -111,14 +131,14 @@ void ServerList::setFavourite(ServerItem* item,bool b)
 std::string ServerList::uniqueName(const std::string& name)
 {
 	bool hasIt=false;
-	for(std::vector<ServerItem*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
-	{
-		if((*it)->name() == name)
-		{
-			hasIt=true;
-			break;
-		}
-	}
+    for(std::vector<ServerItem*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        if((*it)->name() == name)
+        {
+            hasIt=true;
+            break;
+        }
+    }
 	if(!hasIt)
 	{
 		return name;
@@ -161,21 +181,21 @@ void ServerList::rescan()
 
 void ServerList::init()
 {
-	serversPath_ = DirectoryHandler::concatenate(DirectoryHandler::configDir(), "servers.txt");
+    localFile_ = DirectoryHandler::concatenate(DirectoryHandler::configDir(), "servers.txt");
+    systemFile_=DirectoryHandler::concatenate(DirectoryHandler::shareDir(), "servers");
 
-	if(load() == false)
-	{
-		if(readRcFile() ==  false)
-		{
-			readSystemFile();
-		}
-		save();
+    if(load() == false)
+	{		
+        if(readRcFile())
+            save();
 	}
+
+    syncSystemFile();
 }
 
 bool ServerList::load()
 {
-	std::ifstream in(serversPath_.c_str());
+    std::ifstream in(localFile_.c_str());
 	if(!in.good())
 		return false;
 
@@ -194,9 +214,14 @@ bool ServerList::load()
 		if(sv.size() >= 4)
 			favourite=(sv[3]=="1")?true:false;
 
-		if(sv.size() >= 3)
+        bool sys=false;
+        if(sv.size() >= 5)
+            sys=(sv[4]=="1")?true:false;
+
+        if(sv.size() >= 3)
 		{
-			add(sv[0],sv[1],sv[2],favourite,false);
+            ServerItem* item=add(sv[0],sv[1],sv[2],favourite,false);
+            item->setSystem(sys);
 		}
 	}
 
@@ -211,18 +236,19 @@ bool ServerList::load()
 void ServerList::save()
 {
 	std::ofstream out;
-	out.open(serversPath_.c_str());
+    out.open(localFile_.c_str());
 	if(!out.good())
 		  	return;
 
-	out << "#Name Host Port Favourite" << std::endl;
+    out << "#Name Host Port Favourite System" << std::endl;
 
 	for(std::vector<ServerItem*>::iterator it=items_.begin(); it != items_.end(); ++it)
 	{
-		std::string fav=((*it)->isFavourite())?"1":"0";
-		out << (*it)->name() << "," << (*it)->host() << "," <<  (*it)->port() <<  "," <<  fav <<  std::endl;
+        std::string fav=((*it)->isFavourite())?"1":"0";
+        std::string sys=((*it)->isSystem())?"1":"0";
+        out << (*it)->name() << "," << (*it)->host() << "," <<  (*it)->port() <<  "," <<  fav << "," <<  sys << std::endl;
 	}
-	out.close();
+	out.close();    
 }
 
 
@@ -263,10 +289,11 @@ bool ServerList::readRcFile()
 	return true;
 }
 
+#if 0
 bool ServerList::readSystemFile()
 {
 	std::string path(DirectoryHandler::concatenate(DirectoryHandler::shareDir(), "servers"));
-	std::ifstream in(path.c_str());
+    std::ifstream in(path.c_str());
 
 	if(in.good())
 	{
@@ -287,7 +314,8 @@ bool ServerList::readSystemFile()
 
 			if(vec.size() >= 3)
 			{
-				add(vec[0],vec[1],vec[2],false,false);
+                ServerItem *item=add(vec[0],vec[1],vec[2],false,false);
+                item->setSystem(true);
 			}
 		}
 	}
@@ -298,6 +326,171 @@ bool ServerList::readSystemFile()
 
 	return true;
 }
+#endif
+
+
+bool ServerList::hasSystemFile() const
+{
+    boost::filesystem::path p(systemFile_);
+    return boost::filesystem::exists(p);
+}
+
+void ServerList::syncSystemFile()
+{
+#ifdef _UI_SERVERLIST_DEBUG
+    UiLog().dbg() << "ServerList::syncSystemFile -->";
+#endif
+
+    std::vector<ServerListTmpItem> sysVec;
+    std::ifstream in(systemFile_.c_str());
+
+    syncDate_=QDateTime::currentDateTime();
+    clearSyncChange();
+
+    if(in.good())
+    {
+        std::string line;
+        while(getline(in,line))
+        {
+            std::string buf=boost::trim_left_copy(line);
+            if(buf.size() >0 && buf.at(0) == '#')
+                    continue;
+
+            std::stringstream ssdata(line);
+            std::vector<std::string> vec;
+
+            while(ssdata >> buf)
+            {
+                vec.push_back(buf);
+            }
+
+            if(vec.size() >= 3)
+            {
+                sysVec.push_back(ServerListTmpItem(vec[0],vec[1],vec[2]));
+            }
+        }
+    }
+    else
+        return;
+
+    in.close();
+
+#ifdef _UI_SERVERLIST_DEBUG
+    for(unsigned int i=0; i < sysVec.size(); i++)
+        UiLog().dbg() << sysVec[i].name() << "\t" + sysVec[i].host() << "\t" + sysVec[i].port();
+#endif
+
+    bool changed=false;
+    bool needBrodcast=false;
+
+    //See what changed or was added
+    for(unsigned int i=0; i < sysVec.size(); i++)
+    {
+#ifdef _UI_SERVERLIST_DEBUG
+        UiLog().dbg() << sysVec[i].name() << "\t" + sysVec[i].host() << "\t" + sysVec[i].port();
+#endif
+        ServerItem *item=0;
+
+        //There is a server with same name, host and port as in the local list. We
+        //mark it as system
+        item=find(sysVec[i].name(),sysVec[i].host(),sysVec[i].port());
+        if(item)
+        {            
+            if(!item->isSystem())
+            {
+#ifdef _UI_SERVERLIST_DEBUG
+                UiLog().dbg() << "  already in list (same name, host, port) -> mark as system";
+#endif
+                changed=true;
+                syncChange_.push_back(new ServerListSyncChangeItem(sysVec[i],sysVec[i],
+                                     ServerListSyncChangeItem::SetSysChange));
+                item->setSystem(true);
+            }
+            continue;
+        }
+
+        //There is no server with the same name in the local list
+        item=find(sysVec[i].name());
+        if(!item)
+        {
+#ifdef _UI_SERVERLIST_DEBUG
+            UiLog().dbg() << "  name not in list -> import as system";
+#endif
+            changed=true;
+            item=add(sysVec[i].name(),sysVec[i].host(),sysVec[i].port(), false, false);
+            item->setSystem(true);
+            syncChange_.push_back(new ServerListSyncChangeItem(sysVec[i],sysVec[i],
+                                     ServerListSyncChangeItem::AddedChange));
+            continue;
+        }
+        //There is a server with the same name but with different host or/and port
+        else
+        {
+#ifdef _UI_SERVERLIST_DEBUG
+            UiLog().dbg() << "  name in list with different port or/and host";
+#endif
+            changed=true;
+            needBrodcast=true;
+            assert(item->name() == sysVec[i].name());
+
+            ServerListTmpItem localTmp(item);
+            syncChange_.push_back(new ServerListSyncChangeItem(sysVec[i],localTmp,
+                                     ServerListSyncChangeItem::MatchChange));
+
+            item->reset(sysVec[i].name(),sysVec[i].host(),sysVec[i].port());
+            item->setSystem(true);
+            broadcastChanged();
+            continue;
+        }
+    }
+
+    std::vector<ServerItem*> itemsCopy=items_;
+
+    //See what needs to be removed
+    for(std::vector<ServerItem*>::const_iterator it=itemsCopy.begin(); it != itemsCopy.end(); ++it)
+    {
+        if((*it)->isSystem())
+        {
+            bool found=false;
+            for(unsigned int i=0; i < sysVec.size(); i++)
+            {
+                if(sysVec[i].name() == (*it)->name())
+                {
+                    found=true;
+                    break;
+                }
+            }
+            if(!found)
+            {
+                changed=true;
+                ServerListTmpItem localTmp(*it);
+                syncChange_.push_back(new ServerListSyncChangeItem(localTmp,localTmp,
+                                  ServerListSyncChangeItem::UnsetSysChange));
+                //remove item
+                remove(*it);
+            }
+         }
+     }
+
+    if(changed)
+        save();
+
+    if(needBrodcast)
+        broadcastChanged();
+
+#ifdef _UI_SERVERLIST_DEBUG
+    UiLog().dbg() << "<-- syncSystemFile";
+#endif
+}
+
+void ServerList::clearSyncChange()
+{
+    for(size_t i=0;i < syncChange_.size(); i++)
+        delete syncChange_[i];
+
+    syncChange_.clear();
+}
+
 
 //===========================================================
 // Observers
diff --git a/Viewer/src/ServerList.hpp b/Viewer/src/ServerList.hpp
index 67ae794..a914683 100644
--- a/Viewer/src/ServerList.hpp
+++ b/Viewer/src/ServerList.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -13,24 +13,64 @@
 #include <string>
 #include <vector>
 
+#include <QDateTime>
+
 class ServerItem;
 class ServerList;
 
+
 class ServerListObserver
 {
 public:
-	ServerListObserver() {};
-	virtual ~ServerListObserver() {};
+    ServerListObserver() {}
+    virtual ~ServerListObserver() {}
 	virtual void notifyServerListChanged()=0;
 	virtual void notifyServerListFavouriteChanged(ServerItem*)=0;
 };
 
+class ServerListTmpItem
+{
+public:
+    ServerListTmpItem() {}
+    ServerListTmpItem(const std::string name,const std::string& host, const std::string& port) :
+        name_(name), host_(host), port_(port) {}
+    explicit ServerListTmpItem(ServerItem* item);
+    ServerListTmpItem(const ServerListTmpItem& o) {name_=o.name_; host_=o.host_; port_=o.port_;}
+
+    const std::string& name() const {return name_;}
+    const std::string& host() const {return host_;}
+    const std::string& port() const {return port_;}
+
+protected:
+    std::string name_;
+    std::string host_;
+    std::string port_;
+};
+
+class ServerListSyncChangeItem
+{
+public:
+    enum ChangeType {AddedChange,RemovedChange, MatchChange, SetSysChange,UnsetSysChange};
+
+    ServerListSyncChangeItem(const ServerListTmpItem& sys,const ServerListTmpItem& local,ChangeType type) :
+       sys_(sys), local_(local), type_(type) {}
+
+    const ServerListTmpItem& sys() const {return sys_;}
+    const ServerListTmpItem& local() const {return local_;}
+    ChangeType type() const {return type_;}
+
+    ServerListTmpItem sys_;
+    ServerListTmpItem local_;
+    ChangeType type_;
+};
+
 class ServerList
 {
 public:
 	int count() {return static_cast<int>(items_.size());}
 	ServerItem* itemAt(int);
 	ServerItem* find(const std::string& name);
+	ServerItem* find(const std::string& name, const std::string& host, const std::string& port);
 
 	//Can be added or changed only via these static methods
 	ServerItem* add(const std::string&,const std::string&,const std::string&,bool,bool saveIt=true);
@@ -43,6 +83,11 @@ public:
 	void init();
 	void save();
 	void rescan();
+    void syncSystemFile();
+    bool hasSystemFile() const;
+    const std::vector<ServerListSyncChangeItem*>&  syncChange() const {return syncChange_;}
+    bool hasSyncChange() const {return !syncChange_.empty();}
+    QDateTime syncDate() const {return syncDate_;}
 
 	void addObserver(ServerListObserver*);
 	void removeObserver(ServerListObserver*);
@@ -50,21 +95,25 @@ public:
 	static ServerList* instance();
 
 protected:
-	ServerList() {};
-	~ServerList() {};
+    ServerList() {}
+    ~ServerList() {}
 
 	static ServerList* instance_;
 
 	bool load();
 	bool readRcFile();
-	bool readSystemFile();
+    //bool readSystemFile();
+    void clearSyncChange();
 
 	void broadcastChanged();
 	void broadcastChanged(ServerItem*);
 
 	std::vector<ServerItem*> items_;
-	std::string serversPath_;
+    std::string localFile_;
+    std::string systemFile_;
 	std::vector<ServerListObserver*> observers_;
+    std::vector<ServerListSyncChangeItem*> syncChange_;
+    QDateTime syncDate_;
 };
 
 
diff --git a/Viewer/src/ServerListDialog.cpp b/Viewer/src/ServerListDialog.cpp
index d6ed4e8..8543225 100644
--- a/Viewer/src/ServerListDialog.cpp
+++ b/Viewer/src/ServerListDialog.cpp
@@ -12,6 +12,7 @@
 
 #include <QtGlobal>
 #include <QCloseEvent>
+#include <QDebug>
 #include <QMessageBox>
 #include <QPushButton>
 #include <QSettings>
@@ -21,8 +22,12 @@
 #include "ServerFilter.hpp"
 #include "ServerItem.hpp"
 #include "ServerList.hpp"
+#include "ServerListSyncWidget.hpp"
 #include "SessionHandler.hpp"
 #include "VConfig.hpp"
+#include "WidgetNameProvider.hpp"
+
+static bool firstShowSysSyncLogW=true;
 
 //======================================
 //
@@ -286,11 +291,36 @@ ServerListDialog::ServerListDialog(Mode mode,ServerFilter *filter,QWidget *paren
 
 	for(int i=0; i < model_->columnCount()-1; i++)
 		serverView->resizeColumnToContents(i);
+
+#if 0
+    QFont labelF;
+    labelF.setBold(true);
+    labelF.setPointSize(labelF.pointSize()-1);
+
+    systemListLabel->setFont(labelF);
+    systemListLabel->setText("<font color=\'#565656\'>" + systemListLabel->text() + "</font>");
+#endif
+    systemListLabel->hide();
+
+    //At the moment we do not want users to sync manually. It is done automatically
+    //on each startup.
+    sysSyncTb->hide();
+
+    //The synclog is hidden
+    sysSyncLogTb->setChecked(false);
+    sysSyncLogW_->hide();
+    if(!ServerList::instance()->hasSystemFile())
+    {
+        sysSyncLogTb->setEnabled(false);
+    }
+
+    //Assign name to each object
+    WidgetNameProvider::nameChildren(this);
 }
 
 ServerListDialog::~ServerListDialog()
 {
-	writeSettings();
+    writeSettings();
 }
 
 void ServerListDialog::closeEvent(QCloseEvent* event)
@@ -320,7 +350,10 @@ void ServerListDialog::editItem(const QModelIndex& index)
 {
 	if(ServerItem* item=model_->indexToServer(sortModel_->mapToSource(index)))
 	{
-		ServerEditDialog d(QString::fromStdString(item->name()),
+        if(item->isSystem())
+            return;
+
+        ServerEditDialog d(QString::fromStdString(item->name()),
 						   QString::fromStdString(item->host()),
 						   QString::fromStdString(item->port()),
 						   item->isFavourite(),this);
@@ -473,6 +506,56 @@ void ServerListDialog::on_actionRescan_triggered()
 
 }
 
+void ServerListDialog::on_sysSyncTb_clicked(bool)
+{
+#if 0
+    ServerList::instance()->syncSystemFile();
+    on_sysSyncLogTb_toggled(true);
+#endif
+}
+
+void ServerListDialog::on_sysSyncLogTb_toggled(bool b)
+{
+    sysSyncLogW_->setVisible(b);
+    if(b && firstShowSysSyncLogW)
+    {
+        firstShowSysSyncLogW=false;
+
+        //Set the initial splitter sizes
+        QList<int> sList=splitter_->sizes();
+        qDebug() << "SPLITTER" << sList << splitter_->height();;
+        Q_ASSERT(sList.count()==2);
+        int h=sList[0]+sList[1];
+        if(h==0)
+        {
+           sList[0]=75;
+           sList[1]=25;
+        }
+        else
+        {
+            sList[1]=h/2;
+            if(ServerList::instance()->hasSyncChange())
+            {
+                if(h > 500)
+                    sList[1]=250;
+            }
+            else
+            {
+                if(h > 100)
+                    sList[1]=50;
+            }
+            sList[0]=h-sList[1];
+        }
+
+        splitter_->setSizes(sList);
+    }
+}
+
+void ServerListDialog::showSysSyncLog()
+{
+    sysSyncLogTb->setChecked(true);
+}
+
 void ServerListDialog::slotItemSelected(const QModelIndex& current,const QModelIndex& prev)
 {
 	checkActionState();
@@ -508,9 +591,9 @@ void ServerListDialog::checkActionState()
 
 		assert(item);
 
-		actionEdit->setEnabled(true);
+        actionEdit->setEnabled(!item->isSystem());
 		actionDuplicate->setEnabled(true);
-		actionDelete->setEnabled(true);
+        actionDelete->setEnabled(!item->isSystem());
 		actionFavourite->setEnabled(true);
 		actionFavourite->setChecked(item->isFavourite());
 	}
@@ -586,6 +669,9 @@ ServerListModel::ServerListModel(ServerFilter* filter,QObject *parent) :
 	id=IconProvider::add(":/viewer/favourite_empty.svg","favourite_empty");
 	favEmptyPix_=IconProvider::pixmap(id,12);
 
+    id=IconProvider::add(":/viewer/system.svg","system");
+    sysPix_=IconProvider::pixmap(id,12);
+
 	loadFont_.setBold(true);
 }
 
@@ -605,7 +691,7 @@ void ServerListModel::dataChangeFinished()
 
 int ServerListModel::columnCount(const QModelIndex& parent) const
 {
-	return 6;
+    return 6;
 }
 
 int ServerListModel::rowCount(const QModelIndex& parent) const
@@ -620,7 +706,8 @@ QVariant ServerListModel::data(const QModelIndex& index, int role) const
 {
 	if(!index.isValid() ||
 	  (role != Qt::DisplayRole && role != Qt::ForegroundRole && role != Qt::DecorationRole &&
-			  role != Qt::CheckStateRole  && role != Qt::UserRole && role != Qt::FontRole))
+              role != Qt::CheckStateRole  && role != Qt::UserRole && role != Qt::FontRole &&
+              role != IconStatusRole && role != Qt::ToolTipRole))
 	{
 		return QVariant();
 	}
@@ -636,12 +723,12 @@ QVariant ServerListModel::data(const QModelIndex& index, int role) const
 		{
 		case NameColumn: return QString::fromStdString(item->name());
 		case HostColumn: return QString::fromStdString(item->host());
-		case PortColumn: return QString::fromStdString(item->port());
-		case UseColumn:
+        case PortColumn: return QString::fromStdString(item->port());
+        case UseColumn:
 		{
 			int i=item->useCnt();
 			if(item->useCnt() > 0)
-				return "used (" + QString::number(item->useCnt()) + ")";
+                return "loaded (" + QString::number(item->useCnt()) + ")";
 
 			return QVariant();
 		}
@@ -650,17 +737,15 @@ QVariant ServerListModel::data(const QModelIndex& index, int role) const
 	}
 	else if (role == Qt::ForegroundRole)
 	{
-		//QColor selectCol_=QColor(34,51,136);
-
-		//if(index.column() != LoadColumn && index.column() != FavouriteColumn &&
-		//  filter_ && filter_->isFiltered(item))
-		//	return selectCol_;
-
-		return QVariant();
+        //return (item->isSystem())?QColor(70,71,72):QVariant();
+        return (item->isSystem())?QColor(67,78,109):QVariant();
 	}
 	else if (role == Qt::DecorationRole)
 	{
-		if(index.column() == FavouriteColumn)
+       if(index.column() == SystemColumn)
+            return (item->isSystem())?sysPix_:QPixmap();
+
+        else if(index.column() == FavouriteColumn)
 			return (item->isFavourite())?favPix_:favEmptyPix_;
 
 		return QVariant();
@@ -687,6 +772,28 @@ QVariant ServerListModel::data(const QModelIndex& index, int role) const
 
 		return QVariant();
 	}
+    else if (role == IconStatusRole)
+    {
+        if(index.column() == SystemColumn)
+            return item->isSystem();
+
+        else if(index.column() == FavouriteColumn)
+            return item->isFavourite();
+
+        return QVariant();
+    }
+
+    else if(role == Qt::ToolTipRole)
+    {
+        if(item->isSystem() && (index.column() == SystemColumn || index.column() == NameColumn ||
+          index.column() == HostColumn || index.column() == PortColumn))
+        {
+            return "This server appears in the central <b>system server list</b> and its name, \
+                    host or port cannot be modified.";
+        }
+
+        return QString();
+    }
 
 	return QVariant();
 }
@@ -705,9 +812,10 @@ QVariant ServerListModel::headerData(int section,Qt::Orientation ori,int role) c
     		case LoadColumn: return tr("L");
     		case NameColumn: return tr("Name");
     		case HostColumn: return tr("Host");
-    		case PortColumn: return tr("Port");
-    		case FavouriteColumn: return tr("F");
-    		case UseColumn: return tr("Usage");
+            case PortColumn: return tr("Port");
+            case SystemColumn: return tr("S");
+            case FavouriteColumn: return tr("F");
+            case UseColumn: return tr("Loaded");
     		default: return QVariant();
 		}
 	}
@@ -719,7 +827,9 @@ QVariant ServerListModel::headerData(int section,Qt::Orientation ori,int role) c
     		case NameColumn: return tr("Server name is a freely customisable <b>nickname</b>. It is only used by the </b>viewer</b>.");
     		case HostColumn: return tr("Hostname of the server");
     		case PortColumn: return tr("Port number of the server");
-    		case FavouriteColumn: return tr("Indicates if a server is a <b>favourite</b>. Only favourite and loaded servers \
+            case SystemColumn: return tr("Indicates if a server appears in the centrally maintained <b>system server list</b>. \
+                                         <br>The name, host and port of these server entries cannot be edited.");
+            case FavouriteColumn: return tr("Indicates if a server is a <b>favourite</b>. Only favourite and loaded servers \
     				                        are appearing in the server list under the <b>Servers menu</b> in the menubar");
     		case UseColumn: return tr("Indicates the <b>number of tabs</b> where the server is loaded.");
     		default: return QVariant();
@@ -845,4 +955,15 @@ bool ServerListFilterModel::filterAcceptsRow(int sourceRow,const QModelIndex &so
 
 }
 
+bool ServerListFilterModel::lessThan(const QModelIndex &left, const QModelIndex &right) const
+{
+    if(left.column() == ServerListModel::SystemColumn || left.column() == ServerListModel::FavouriteColumn)
+    {
+        return left.data(ServerListModel::IconStatusRole).toBool() <
+               right.data(ServerListModel::IconStatusRole).toBool();
+    }
+
+    return QSortFilterProxyModel::lessThan(left,right);
+}
+
 
diff --git a/Viewer/src/ServerListDialog.hpp b/Viewer/src/ServerListDialog.hpp
index 2c62173..f565aaf 100644
--- a/Viewer/src/ServerListDialog.hpp
+++ b/Viewer/src/ServerListDialog.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -26,7 +26,7 @@ class ServerListFilterModel;
 class ServerDialogChecker
 {
 protected:
-	explicit ServerDialogChecker(QString txt) : errorText_(txt) {};
+    explicit ServerDialogChecker(QString txt) : errorText_(txt) {}
 
     bool checkName(QString name,QString oriName=QString());
 	bool checkHost(QString host);
@@ -84,6 +84,8 @@ public:
 	ServerListDialog(Mode,ServerFilter*,QWidget *parent=0);
 	~ServerListDialog();
 
+     void showSysSyncLog();
+
 public Q_SLOTS:
 	 void accept();
 	 void reject();
@@ -95,8 +97,10 @@ protected Q_SLOTS:
 	 void on_actionDelete_triggered();
 	 void on_actionRescan_triggered();
 	 void on_serverView_doubleClicked(const QModelIndex& index);
-	 void on_actionFavourite_triggered(bool checked);
-	 void slotItemSelected(const QModelIndex&,const QModelIndex&);
+     void on_actionFavourite_triggered(bool checked);
+     void on_sysSyncTb_clicked(bool);
+     void on_sysSyncLogTb_toggled(bool);
+     void slotItemSelected(const QModelIndex&,const QModelIndex&);
 	 void slotItemClicked(const QModelIndex&);
 	 void slotFilter(QString);
 	 void slotFilterFavourite(bool);
@@ -140,12 +144,14 @@ public:
    	void dataChangeFinished();
    	ServerItem* indexToServer(const QModelIndex& index);
 
-   	enum Columns {LoadColumn=0, NameColumn = 1, HostColumn =2, PortColumn =3, FavouriteColumn= 4, UseColumn=5};
+    enum Columns {LoadColumn=0, NameColumn=1, HostColumn=2, PortColumn=3, SystemColumn=4, FavouriteColumn=5, UseColumn=6};
+    enum CustomItemRole {IconStatusRole = Qt::UserRole+1};
 
 protected:
    	ServerFilter* filter_;
    	QPixmap favPix_;
    	QPixmap favEmptyPix_;
+    QPixmap sysPix_;
    	QFont loadFont_;
 };
 
@@ -153,12 +159,13 @@ class ServerListFilterModel : public QSortFilterProxyModel
 {
 public:
 	explicit ServerListFilterModel(QObject *parent=0);
-	~ServerListFilterModel() {};
+    ~ServerListFilterModel() {}
 	void setFilterStr(QString);
 	void setFilterFavourite(bool b);
 
 protected:
 	 bool filterAcceptsRow(int sourceRow,const QModelIndex &sourceParent) const;
+     bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
 
 	 QString filterStr_;
 	 bool filterFavourite_;
diff --git a/Viewer/src/ServerListDialog.ui b/Viewer/src/ServerListDialog.ui
index eef3472..a8c5730 100644
--- a/Viewer/src/ServerListDialog.ui
+++ b/Viewer/src/ServerListDialog.ui
@@ -23,14 +23,17 @@
        </item>
        <item>
         <widget class="QToolButton" name="filterFavTb_">
+         <property name="toolTip">
+          <string>Show favourite and loaded servers only</string>
+         </property>
          <property name="statusTip">
           <string>Show favourite servers only</string>
          </property>
          <property name="text">
-          <string>Show favourite and loaded only</string>
+          <string>Favourites and loaded</string>
          </property>
          <property name="icon">
-          <iconset resource="viewer.qrc">
+          <iconset>
            <normaloff>:/viewer/favourite.svg</normaloff>:/viewer/favourite.svg</iconset>
          </property>
          <property name="checkable">
@@ -41,15 +44,37 @@
          </property>
         </widget>
        </item>
+       <item>
+        <widget class="QToolButton" name="sysSyncLogTb">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Show change log for <b>system servers</b></string>
+         </property>
+         <property name="text">
+          <string/>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>:/viewer/info.svg</normaloff>:/viewer/info.svg</iconset>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="toolButtonStyle">
+          <enum>Qt::ToolButtonIconOnly</enum>
+         </property>
+         <property name="autoRaise">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
       </layout>
      </item>
-     <item row="1" column="0">
-      <widget class="QTreeView" name="serverView">
-       <property name="contextMenuPolicy">
-        <enum>Qt::ActionsContextMenu</enum>
-       </property>
-      </widget>
-     </item>
      <item row="1" column="1">
       <layout class="QVBoxLayout" name="verticalLayout">
        <item>
@@ -137,6 +162,42 @@
         </widget>
        </item>
        <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Preferred</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>20</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="systemListLabel">
+         <property name="text">
+          <string>System servers:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="sysSyncTb">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="text">
+          <string>&Update from central list</string>
+         </property>
+        </widget>
+       </item>
+       <item>
         <spacer name="verticalSpacer">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
@@ -151,6 +212,40 @@
        </item>
       </layout>
      </item>
+     <item row="1" column="0">
+      <widget class="QWidget" name="widget" native="true">
+       <layout class="QVBoxLayout" name="verticalLayout_3">
+        <property name="spacing">
+         <number>0</number>
+        </property>
+        <property name="leftMargin">
+         <number>0</number>
+        </property>
+        <property name="topMargin">
+         <number>0</number>
+        </property>
+        <property name="rightMargin">
+         <number>0</number>
+        </property>
+        <property name="bottomMargin">
+         <number>0</number>
+        </property>
+        <item>
+         <widget class="QSplitter" name="splitter_">
+          <property name="orientation">
+           <enum>Qt::Vertical</enum>
+          </property>
+          <widget class="QTreeView" name="serverView">
+           <property name="contextMenuPolicy">
+            <enum>Qt::ActionsContextMenu</enum>
+           </property>
+          </widget>
+          <widget class="ServerListSyncWidget" name="sysSyncLogW_" native="true"/>
+         </widget>
+        </item>
+       </layout>
+      </widget>
+     </item>
     </layout>
    </item>
    <item>
@@ -166,7 +261,7 @@
   </layout>
   <action name="actionAdd">
    <property name="icon">
-    <iconset resource="viewer.qrc">
+    <iconset>
      <normaloff>:/viewer/images/add.svg</normaloff>:/viewer/images/add.svg</iconset>
    </property>
    <property name="text">
@@ -181,8 +276,8 @@
   </action>
   <action name="actionDelete">
    <property name="icon">
-    <iconset resource="viewer.qrc">
-     <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
+    <iconset>
+     <normaloff>:/viewer/close.svg</normaloff>:/viewer/close.svg</iconset>
    </property>
    <property name="text">
     <string>&Remove server</string>
@@ -196,7 +291,7 @@
   </action>
   <action name="actionEdit">
    <property name="icon">
-    <iconset resource="viewer.qrc">
+    <iconset>
      <normaloff>:/viewer/images/configure.svg</normaloff>:/viewer/images/configure.svg</iconset>
    </property>
    <property name="text">
@@ -237,7 +332,7 @@
     <bool>true</bool>
    </property>
    <property name="icon">
-    <iconset resource="viewer.qrc">
+    <iconset>
      <normaloff>:/viewer/favourite.svg</normaloff>:/viewer/favourite.svg</iconset>
    </property>
    <property name="text">
@@ -250,9 +345,15 @@
   <zorder>buttonBox</zorder>
   <zorder></zorder>
  </widget>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <customwidgets>
+  <customwidget>
+   <class>ServerListSyncWidget</class>
+   <extends>QWidget</extends>
+   <header>ServerListSyncWidget.hpp</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
  <connections>
   <connection>
    <sender>buttonBox</sender>
diff --git a/Viewer/src/ServerListSyncWidget.cpp b/Viewer/src/ServerListSyncWidget.cpp
new file mode 100644
index 0000000..a3d85f2
--- /dev/null
+++ b/Viewer/src/ServerListSyncWidget.cpp
@@ -0,0 +1,233 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "ServerListSyncWidget.hpp"
+
+#include <QDebug>
+
+#include "ServerFilter.hpp"
+#include "ServerItem.hpp"
+#include "ServerList.hpp"
+
+ServerListSyncWidget::ServerListSyncWidget(QWidget *parent) : QWidget(parent)
+{    
+    setupUi(this);
+
+    title_->setShowTypeTitle(false);
+    browser_->setProperty("log","1");
+
+    //Set the list
+    if(ServerList::instance()->syncDate().isValid())
+    {
+        QColor col(39,49,101);
+
+        if(ServerList::instance()->hasSyncChange())
+        {
+            QString t="Your copy of the system server list was updated <b>";
+            t+="<font color=\'" + col.name() + "\'> at </font></b>" +
+               ServerList::instance()->syncDate().toString("yyyy-MM-dd HH:mm") +
+                    ". This is the list of changes:";
+
+            title_->showInfo(t);
+
+            const std::vector<ServerListSyncChangeItem*>& items=ServerList::instance()->syncChange();
+            int matchCnt=0, addedCnt=0, setCnt=0, unsetCnt=0;
+            for(size_t i=0; i < items.size(); i++)
+            {
+                if(items[i]->type() == ServerListSyncChangeItem::MatchChange)
+                   matchCnt++;
+                else if(items[i]->type() == ServerListSyncChangeItem::AddedChange)
+                    addedCnt++;
+                else if(items[i]->type() == ServerListSyncChangeItem::SetSysChange)
+                    setCnt++;
+                else if(items[i]->type() == ServerListSyncChangeItem::UnsetSysChange)
+                    unsetCnt++;
+            }
+
+            if(matchCnt > 0)
+            {
+                QListWidgetItem *item=new QListWidgetItem("Host/port changed (" + QString::number(matchCnt) + ")");
+                item->setData(Qt::UserRole,ServerListSyncChangeItem::MatchChange);
+                typeList_->addItem(item);
+            }
+            if(unsetCnt > 0)
+            {
+                QListWidgetItem *item=new QListWidgetItem("Server removed (" + QString::number(unsetCnt) + ")");
+                item->setData(Qt::UserRole,ServerListSyncChangeItem::UnsetSysChange);
+                typeList_->addItem(item);
+            }
+            if(addedCnt > 0)
+            {
+                QListWidgetItem *item=new QListWidgetItem("New server (" + QString::number(addedCnt) + ")");
+                item->setData(Qt::UserRole,ServerListSyncChangeItem::AddedChange);
+                typeList_->addItem(item);
+            }
+            if(setCnt > 0)
+            {
+                QListWidgetItem *item=new QListWidgetItem("Marked as system (" + QString::number(setCnt) + ")");
+                item->setData(Qt::UserRole,ServerListSyncChangeItem::SetSysChange);
+                typeList_->addItem(item);
+            }
+
+            QFont f;
+            QFontMetrics fm(f);
+            typeList_->setFixedWidth(fm.width("Host/port changed (2222)"));
+
+            connect(typeList_,SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)),
+                this,SLOT(slotTypeChanged(QListWidgetItem*,QListWidgetItem*)));
+
+            typeList_->setCurrentRow(0);
+        }
+        else
+        {
+            QString t="Your copy of the system server list was updated <b>";
+            t+="<font color=\'" + col.name() + "\'> at </font></b>" +
+                ServerList::instance()->syncDate().toString("yyyy-MM-dd HH:mm") +
+                " but <u>no changes</u> were found.";
+            title_->showInfo(t);
+            typeList_->hide();
+            browser_->hide();
+        }
+    }
+    else
+    {
+        QString t="Your copy of the system server list has not been updated!";
+        title_->showInfo(t);
+        typeList_->hide();
+        browser_->hide();
+    }
+}
+
+ServerListSyncWidget::~ServerListSyncWidget()
+{
+}
+
+void ServerListSyncWidget::slotTypeChanged(QListWidgetItem* item,QListWidgetItem*)
+{
+    if(!item)
+        return;
+
+    const std::vector<ServerListSyncChangeItem*>& items=ServerList::instance()->syncChange();
+    ServerListSyncChangeItem::ChangeType type=
+            static_cast<ServerListSyncChangeItem::ChangeType>(item->data(Qt::UserRole).toInt());
+
+    QString s;
+
+    for(size_t i=0; i < items.size(); i++)
+    {
+        if(items[i]->type() == type)
+        {
+            if(!s.isEmpty())
+                s+="<hr>";
+
+            switch(type)
+            {
+            case ServerListSyncChangeItem::MatchChange:
+                s+=buildMatchChange(items[i]);
+                break;
+            case  ServerListSyncChangeItem::UnsetSysChange:
+                s+=buildUnsetSysChange(items[i]);
+                break;
+            case  ServerListSyncChangeItem::AddedChange:
+                s+=buildAddedChange(items[i]);
+                break;
+            case  ServerListSyncChangeItem::SetSysChange:
+                s+=buildSetSysChange(items[i]);
+                break;
+            default:
+                break;
+            }
+        }
+    }
+
+    browser_->setHtml(s);
+}
+
+QString ServerListSyncWidget::buildMatchChange(ServerListSyncChangeItem *t)
+{
+    QString hostTxt=QString::fromStdString(t->local().host());
+    QString portTxt=QString::fromStdString(t->local().port());
+
+    QColor col(0,80,50);
+
+    if(t->sys().host() != t->local().host())
+    {
+        hostTxt+=" -> " + QString::fromStdString(t->sys().host());
+        hostTxt="<font color=\'" + col.name() + "\'>" + hostTxt + "</font>";
+    }
+    if(t->sys().port() != t->local().port())
+    {
+        portTxt+=" -> " + QString::fromStdString(t->sys().port());
+        portTxt="<font color=\'" + col.name() + "\'>" + portTxt + "</font>";
+    }
+
+    QString s=buildTable(QString::fromStdString(t->local().name()),hostTxt,portTxt);
+    return s;
+}
+
+QString ServerListSyncWidget::buildAddedChange(ServerListSyncChangeItem *t)
+{
+#if 0
+    QString s="<tr><td class=\'add\'>New server added</td></tr>";
+    s+="<tr><td>" + buildTable(QString::fromStdString(t->sys().name()),
+                           QString::fromStdString(t->sys().host()),
+                           QString::fromStdString(t->sys().port())) + "</td></tr>";
+
+#endif
+
+    QString s=buildTable(QString::fromStdString(t->sys().name()),
+                           QString::fromStdString(t->sys().host()),
+                           QString::fromStdString(t->sys().port()));
+    return s;
+}
+
+
+QString ServerListSyncWidget::buildSetSysChange(ServerListSyncChangeItem *t)
+{
+#if 0
+    QString s="<tr><td class=\'set\'>Existing server marked as system</td></tr>";
+    s+="<tr><td>" + buildTable(QString::fromStdString(t->sys().name()),
+                           QString::fromStdString(t->sys().host()),
+                           QString::fromStdString(t->sys().port())) + "</td></tr>";
+#endif
+
+    QString s=buildTable(QString::fromStdString(t->sys().name()),
+                           QString::fromStdString(t->sys().host()),
+                           QString::fromStdString(t->sys().port()));
+    return s;
+}
+
+QString ServerListSyncWidget::buildUnsetSysChange(ServerListSyncChangeItem *t)
+{
+#if 0
+   QString s="<tr><td class=\'set\'>Existing server unmarked as system</td></tr>";
+    s+="<tr><td>" + buildTable(QString::fromStdString(t->local().name()),
+                           QString::fromStdString(t->local().host()),
+                           QString::fromStdString(t->local().port())) + "</td></tr>";
+#endif
+    QString s=buildTable(QString::fromStdString(t->local().name()),
+                           QString::fromStdString(t->local().host()),
+                           QString::fromStdString(t->local().port()));
+
+    return s;
+}
+
+
+
+QString ServerListSyncWidget::buildTable(QString name,QString host,QString port) const
+{
+    QColor col(60,60,60);
+    return "<table><tr><td><b><font color=\'" + col.name() + "\'> Name:</font></b></td>" +
+            "<td>" + name + "</td></tr>" +
+            "<tr><td><b><font color=\'" + col.name() + "\'> Host:</font></b></td>" +
+            "<td>" + host + "</td></tr>" +
+            "<tr><td><b><font color=\'" + col.name() + "\'> Port:</font></b></td>" +
+            "<td>" + port + "</td></tr></table>";
+}
diff --git a/Viewer/src/ServerListSyncWidget.hpp b/Viewer/src/ServerListSyncWidget.hpp
new file mode 100644
index 0000000..7fabf36
--- /dev/null
+++ b/Viewer/src/ServerListSyncWidget.hpp
@@ -0,0 +1,43 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef SERVERLISTSYNCWIDGET_HPP
+#define SERVERLISTSYNCWIDGET_HPP
+
+#include <QWidget>
+
+#include <vector>
+
+#include "ui_ServerListSyncWidget.h"
+
+class ServerListSyncChangeItem;
+class QListWidgetItem;
+
+class ServerListSyncWidget : public QWidget, protected Ui::ServerListSyncWidget
+{
+    Q_OBJECT
+
+public:
+    ServerListSyncWidget(QWidget *parent = 0);
+    ~ServerListSyncWidget();
+
+protected Q_SLOTS:
+    void slotTypeChanged(QListWidgetItem* item,QListWidgetItem*);
+
+private:
+    void build();
+    QString buildAddedChange(ServerListSyncChangeItem*);
+    QString buildMatchChange(ServerListSyncChangeItem*);
+    QString buildSetSysChange(ServerListSyncChangeItem *t);
+    QString buildUnsetSysChange(ServerListSyncChangeItem *t);
+    QString buildTable(QString name,QString host,QString port) const;
+};
+
+#endif // SERVERLISTSYNCWIDGET_HPP
diff --git a/Viewer/src/ServerListSyncWidget.ui b/Viewer/src/ServerListSyncWidget.ui
new file mode 100644
index 0000000..f3f496b
--- /dev/null
+++ b/Viewer/src/ServerListSyncWidget.ui
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>ServerListSyncWidget</class>
+ <widget class="QWidget" name="ServerListSyncWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>640</width>
+    <height>401</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,1">
+   <property name="spacing">
+    <number>1</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="MessageLabel" name="title_" native="true"/>
+   </item>
+   <item>
+    <layout class="QHBoxLayout" name="horizontalLayout">
+     <item>
+      <layout class="QVBoxLayout" name="verticalLayout">
+       <item>
+        <widget class="QListWidget" name="typeList_"/>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QTextBrowser" name="browser_"/>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>MessageLabel</class>
+   <extends>QWidget</extends>
+   <header location="global">MessageLabel.hpp</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Viewer/src/ServerWidget.ui b/Viewer/src/ServerWidget.ui
deleted file mode 100644
index 9d996c6..0000000
--- a/Viewer/src/ServerWidget.ui
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ServerWidget</class>
- <widget class="QWidget" name="ServerWidget">
-  <property name="geometry">
-   <rect>
-    <x>0</x>
-    <y>0</y>
-    <width>413</width>
-    <height>529</height>
-   </rect>
-  </property>
-  <property name="windowTitle">
-   <string>Form</string>
-  </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
-   <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <widget class="QToolButton" name="editTb">
-       <property name="toolTip">
-        <string>Edit</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/configure.svg</normaloff>:/viewer/images/configure.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="addTb">
-       <property name="toolTip">
-        <string>Add server</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/add.svg</normaloff>:/viewer/images/add.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="deleteTb">
-       <property name="toolTip">
-        <string>Delete server</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QToolButton" name="rescanTb">
-       <property name="toolTip">
-        <string>Rescan network</string>
-       </property>
-       <property name="text">
-        <string>...</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/images/reload.svg</normaloff>:/viewer/images/reload.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
-   <item>
-    <widget class="QTreeView" name="serverView">
-     <property name="sizePolicy">
-      <sizepolicy hsizetype="Preferred" vsizetype="Expanding">
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="rootIsDecorated">
-      <bool>false</bool>
-     </property>
-    </widget>
-   </item>
-  </layout>
- </widget>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
- <connections/>
-</ui>
diff --git a/Viewer/src/SessionDialog.cpp b/Viewer/src/SessionDialog.cpp
index 0ba0ec0..75be8cb 100644
--- a/Viewer/src/SessionDialog.cpp
+++ b/Viewer/src/SessionDialog.cpp
@@ -146,6 +146,7 @@ bool SessionDialog::validSaveName(const std::string &name)
 	{
 		return true;
 	}*/
+	return true;
 }
 
 void SessionDialog::on_sessionNameEdit__textChanged()
diff --git a/Viewer/src/SessionHandler.cpp b/Viewer/src/SessionHandler.cpp
index 7a30ca2..1ec11d1 100644
--- a/Viewer/src/SessionHandler.cpp
+++ b/Viewer/src/SessionHandler.cpp
@@ -10,11 +10,13 @@
 #include <algorithm>
 #include <assert.h>
 #include <fstream>
-
+#include <unistd.h>
+ 
 #include "SessionHandler.hpp"
 #include "DirectoryHandler.hpp"
 #include "Str.hpp"
 #include "UserMessage.hpp"
+#include "ServerList.hpp"
 
 
 SessionHandler* SessionHandler::instance_=0;
@@ -24,6 +26,18 @@ SessionItem::SessionItem(const std::string& name) :
   name_(name)
 {
 	checkDir();
+	isTemporary_ = false;
+	askToPreserveTemporarySession_ = true;
+}
+
+SessionItem::~SessionItem()
+{
+	// temporary session? if so, remove the directory on exit
+	if (isTemporary_)
+	{
+		std::string msg;
+		bool ok = DirectoryHandler::removeDir(dirPath_, msg);
+	}
 }
 
 void SessionItem::checkDir()
@@ -92,6 +106,15 @@ SessionHandler::SessionHandler() :
 	readLastSessionName();
 }
 
+SessionHandler::~SessionHandler()
+{
+    for(std::vector<SessionItem*>::const_iterator it=sessions_.begin(); it != sessions_.end(); ++it)
+    {
+        delete (*it);
+    }
+}
+
+
 SessionHandler* SessionHandler::instance()
 {
 	if(!instance_)
@@ -102,6 +125,14 @@ SessionHandler* SessionHandler::instance()
 	return instance_;
 }
 
+void SessionHandler::destroyInstance()
+{
+	if (instance_)
+		delete instance_;
+
+	instance_ = 0;
+}
+
 std::string SessionHandler::sessionDirName(const std::string &sessionName)
 {
 	return DirectoryHandler::concatenate(DirectoryHandler::configDir(), sessionName + ".session");
@@ -263,6 +294,53 @@ bool SessionHandler::requestStartupViaSessionManager()
 }
 
 
+void SessionHandler::setTemporarySessionIfReqested()
+{
+	char *sh = getenv("ECFUI_TEMP_SESSION_HOST");
+	if (sh)
+	{
+		char *sp = getenv("ECFUI_TEMP_SESSION_PORT");
+		if (sp)
+		{
+			// create a session name, likely to be unique - if it already exists in the list, then use that
+			char sessName[1024];
+			sprintf(sessName, "temporary_%s_%s_%d", sh, sp, getpid());
+			std::string sname(sessName);
+			SessionItem *si = instance()->add(sname);
+			if (!si)
+				si = instance()->find(sname);
+
+			instance()->current(si);
+			si->temporary(true);
+
+			char *sask = getenv("ECFUI_TEMP_SESSION_PRESERVE_CONFIRM");
+			if (sask && !strcmp(sask, "no"))
+				si->askToPreserveTemporarySession(false);
+
+			std::string templateName("ecflow_ui_test_session_template.json");
+			instance()->createSessionDirWithTemplate(sname, templateName);
+
+			// construct an alias for this server
+			char calias[1024];
+			sprintf(calias, "%s:%s", sh, sp);
+			std::string alias(calias);
+			si->temporaryServerAlias(alias);
+
+			// does this exact server already exist in the user's list?
+			std::string host(sh);
+			std::string port(sp);
+			ServerItem *serverItem = ServerList::instance()->find(alias, host, port);
+			if (!serverItem)
+			{
+				// no - add it, and make sure it's got a unique alias
+				std::string uniqueName = ServerList::instance()->uniqueName(alias);
+				serverItem = ServerList::instance()->add(uniqueName, host, port, false, true);
+			}
+		}
+	}
+}
+
+
 void SessionHandler::saveLastSessionName()
 {
 	std::string configDir = DirectoryHandler::configDir();
@@ -334,6 +412,37 @@ void SessionHandler::readLastSessionName()
 }
 
 
+bool SessionHandler::createSessionDirWithTemplate(const std::string &sessionName, const std::string &templateFile)
+{
+	// we want to:
+	// 1) create a new directory for the session
+	// 2) copy the session template JSON file across to the new dir
+
+	std::string sessionDir = sessionDirName(sessionName);
+	bool created = DirectoryHandler::createDir(sessionDir);
+
+	if (created)
+	{
+		std::string errorMsg;
+		std::string fullTemplatePath = DirectoryHandler::concatenate(DirectoryHandler::etcDir(), templateFile);
+		std::string fullDestPath = DirectoryHandler::concatenate(sessionDir, "session.json");
+		bool copied = DirectoryHandler::copyFile(fullTemplatePath, fullDestPath, errorMsg);
+		if (!copied)
+		{
+			UserMessage::message(UserMessage::ERROR, true, errorMsg);
+			return false;
+		}
+	}
+	else
+	{
+		UserMessage::message(UserMessage::ERROR, true, "Could not create temporary session directory: " + sessionDir);
+		return false;
+	}
+
+	return true;
+}
+
+
 SessionItem *SessionHandler::copySession(SessionItem* source, std::string &destName)
 {
 	// the main work is to make a copy of the source session's directory (recursively)
@@ -359,6 +468,6 @@ SessionItem *SessionHandler::copySession(std::string &source, std::string &destN
 	SessionItem *sourceSession = find(source);
 	assert(sourceSession);
 
-	copySession(sourceSession, destName);
+	return copySession(sourceSession, destName);
 }
 
diff --git a/Viewer/src/SessionHandler.hpp b/Viewer/src/SessionHandler.hpp
index 655f346..2e218da 100644
--- a/Viewer/src/SessionHandler.hpp
+++ b/Viewer/src/SessionHandler.hpp
@@ -13,11 +13,14 @@
 #include <string>
 #include <vector>
 
+class ServerItem;
+
+
 class SessionItem
 {
 public:
 	explicit SessionItem(const std::string&);
-    virtual ~SessionItem() {}
+	virtual ~SessionItem();
 
 	void  name(const std::string& name) {name_ = name;}
 	const std::string& name() const {return name_;}
@@ -28,21 +31,31 @@ public:
 	std::string recentCustomCommandsFile() const ;
 	std::string savedCustomCommandsFile() const ;
 	std::string serverFile(const std::string& serverName) const;
-    std::string qtDir() const;
-    std::string qtSettingsFile(const std::string name) const;
+	std::string qtDir() const;
+	std::string qtSettingsFile(const std::string name) const;
+	void temporary(bool t) {isTemporary_ = t;};
+	bool temporary() {return isTemporary_;};
+	void temporaryServerAlias(const std::string &alias) {temporaryServerAlias_ = alias;};
+	std::string temporaryServerAlias() {return temporaryServerAlias_;};
+	void askToPreserveTemporarySession(bool a) {askToPreserveTemporarySession_ = a;};
+	bool askToPreserveTemporarySession() {return askToPreserveTemporarySession_;};
 
 protected:
 	void checkDir();
 
 	std::string name_;
-    std::string dirPath_;
-    std::string qtPath_;
+	std::string dirPath_;
+	std::string qtPath_;
+	std::string temporaryServerAlias_;
+	bool isTemporary_;
+	bool askToPreserveTemporarySession_;
 };
 
 class SessionHandler
 {
 public:
 	SessionHandler();
+	~SessionHandler();
 
 	SessionItem* add(const std::string&);
 	void remove(const std::string&);
@@ -58,6 +71,7 @@ public:
 	SessionItem *sessionFromIndex(int i) {return sessions_[i];};
 	SessionItem *copySession(SessionItem* source, std::string &destName);
 	SessionItem *copySession(std::string &source, std::string &destName);
+	bool         createSessionDirWithTemplate(const std::string &sessionName, const std::string &templateFile);
 	void         saveLastSessionName();
 	void         removeLastSessionName();
 	bool         loadLastSessionAtStartup();
@@ -69,7 +83,9 @@ public:
 	static std::string sessionDirName(const std::string &sessionName);    // static because they are called from the constructor
 	static std::string sessionQtDirName(const std::string &sessionName);  // static because they are called from the constructor
 	static SessionHandler* instance();
+	static void destroyInstance();
 	static bool requestStartupViaSessionManager();
+	static void setTemporarySessionIfReqested();
 
 protected:
 	void readSessionListFromDisk();
diff --git a/Viewer/src/Sound.cpp b/Viewer/src/Sound.cpp
index 677a370..9b04f82 100644
--- a/Viewer/src/Sound.cpp
+++ b/Viewer/src/Sound.cpp
@@ -11,7 +11,7 @@
 #include "Sound.hpp"
 
 #include "DirectoryHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
 #include "VConfigLoader.hpp"
 #include "VProperty.hpp"
@@ -36,7 +36,7 @@ Sound* Sound::instance_=NULL;
     {
         const char *soundCmd = "play -q /usr/share/xemacs/xemacs-packages/etc/sounds/boing.wav";
         if (system(soundCmd))
-            UserMessage::message(UserMessage::DBG, false,"ChangeNotify:add() could not play sound alert");
+            UiLog().dbg() << "ChangeNotify:add() could not play sound alert";
 */
 //#ifdef ECFLOW_QT5
 //  QSoundEffect effect(dialog_);
@@ -99,7 +99,7 @@ void Sound::play(const std::string& fName,int loopCount)
 		boost::replace_first(cmd,"%REPEAT%",boost::lexical_cast<std::string>(loopCount-1));
 		if(system(cmd.c_str()))
 		{
-			UserMessage::message(UserMessage::DBG, false,"Sound::play() could not play sound alert. Command: " +  cmd);
+            UiLog().dbg() << "Sound::play() could not play sound alert. Command: " <<  cmd;
 		}
 	}
 
@@ -129,11 +129,11 @@ bool Sound::isSoundFile(const std::string& fName) const
 
 void Sound::load(VProperty* prop)
 {
-	UserMessage::message(UserMessage::DBG, false,"Sound:load() -- > begin");
+    UiLog().dbg() << "Sound:load() -- > begin";
 
 	if(prop->name() != "sound")
 	{
-		UserMessage::message(UserMessage::ERROR, false,"Sound:load() -- > no property found!");
+        UiLog().err() << "Sound:load() -- > no property found!";
 		return;
 	}
     
@@ -152,7 +152,7 @@ void Sound::load(VProperty* prop)
     	Sound::instance_->setCurrentPlayer(pp->valueAsString());
     }
 
-    UserMessage::message(UserMessage::DBG, false,"Sound:load() -- > end");
+    UiLog().dbg() << "Sound:load() -- > end";
 }
 
 static SimpleLoader<Sound> loaderSound("sound");
diff --git a/Viewer/src/StringMatchCombo.cpp b/Viewer/src/StringMatchCombo.cpp
index dd5f419..1ce393e 100644
--- a/Viewer/src/StringMatchCombo.cpp
+++ b/Viewer/src/StringMatchCombo.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,14 +10,27 @@
 
 #include "StringMatchCombo.hpp"
 
+#include <QMenu>
 #include <QVariant>
 
+StringMatchTb::StringMatchTb(QWidget* parent) : QToolButton(parent)
+{
+   QIcon ic(QPixmap(":/viewer/edit.svg")); 
+   setIcon(ic);
+   setAutoRaise(true);
+   QMenu *menu=new QMenu(this);
+   menu->addAction("Contains"); //,StringMatchMode::ContainsMatch);
+   menu->addAction("Matches"); //,StringMatchMode::WildcardMatch);
+   menu->addAction("Regexp"); //,StringMatchMode::RegexpMatch);
+   setMenu(menu);
+   setPopupMode(QToolButton::InstantPopup);
+}
+    
 StringMatchCombo::StringMatchCombo(QWidget* parent) : QComboBox(parent)
 {
-	//addItem("Exact match","=");
-	addItem("Contains",StringMatchMode::ContainsMatch);
-	addItem("Matches",StringMatchMode::WildcardMatch);
-	addItem("Regexp",StringMatchMode::RegexpMatch);
+    addItem("Contains",StringMatchMode::ContainsMatch);
+    addItem("Matches",StringMatchMode::WildcardMatch);
+    addItem("Regexp",StringMatchMode::RegexpMatch);
 
 	setCurrentIndex(1);
 }
diff --git a/Viewer/src/StringMatchCombo.hpp b/Viewer/src/StringMatchCombo.hpp
index 4ae8a76..3c01bd2 100644
--- a/Viewer/src/StringMatchCombo.hpp
+++ b/Viewer/src/StringMatchCombo.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,9 +12,16 @@
 #define VIEWER_SRC_STRINGMATCHCOMBO_HPP_
 
 #include <QComboBox>
+#include <QToolButton>
 
 #include "StringMatchMode.hpp"
 
+class StringMatchTb : public QToolButton
+{
+public:
+    StringMatchTb(QWidget* parent=0);
+};    
+
 class StringMatchCombo : public QComboBox
 {
 Q_OBJECT
diff --git a/Viewer/src/SuiteFilter.cpp b/Viewer/src/SuiteFilter.cpp
index 40246d0..287b933 100644
--- a/Viewer/src/SuiteFilter.cpp
+++ b/Viewer/src/SuiteFilter.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,10 +10,16 @@
 #include "SuiteFilter.hpp"
 
 #include "SuiteFilterObserver.hpp"
+#include "UserMessage.hpp"
 #include "VSettings.hpp"
 #include "VProperty.hpp"
 
 #include <algorithm>
+#include <assert.h>
+
+#define _UI_SUITEFILTER_DEBUG
+
+std::string SuiteFilter::dummySuite_="__DUMMY_FOR_UI__";
 
 //=================================================================
 //
@@ -23,7 +29,7 @@
 
 SuiteFilterItem::SuiteFilterItem(const SuiteFilterItem& other) :
 	name_(other.name_),
-	present_(other.present_),
+    loaded_(other.loaded_),
 	filtered_(other.filtered_)
 {
 }
@@ -34,12 +40,6 @@ SuiteFilterItem::SuiteFilterItem(const SuiteFilterItem& other) :
 //
 //=================================================================
 
-/*void SuiteFilter::current(const std::vector<std::string>& suites)
-{
-	current_=suites;
-	adjust();
-}*/
-
 SuiteFilter::~SuiteFilter()
 {
 	std::vector<SuiteFilterObserver*> obsCopy=observers_;
@@ -52,161 +52,180 @@ SuiteFilter::~SuiteFilter()
 void SuiteFilter::clear()
 {
 	items_.clear();
-	filter_.clear();
 	broadcastChange();
 }
 
-void SuiteFilter::checkForNewLoaded(const std::vector<std::string>& loaded)
+void SuiteFilter::adjustLoaded(const std::vector<std::string>& loaded)
 {
-	if(enabled_ && autoAddNew_)
-	{
-		for(std::vector<std::string>::const_iterator it=loaded.begin(); it != loaded.end(); ++it)
-		{
-			if(std::find(loaded_.begin(), loaded_.end(),*it) == loaded_.end())
-			{
-				if(std::find(filter_.begin(), filter_.end(),*it) == filter_.end())
-				{
-					filter_.push_back(*it);
-				}
-			}
-		}
-	}
+    bool changed=false;
+
+    std::vector<std::string> currentLoaded;
+    for(std::vector<SuiteFilterItem>::iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        bool ld=(std::find(loaded.begin(), loaded.end(),(*it).name_) != loaded.end());
+        if((*it).loaded_ != ld)
+        {
+            (*it).loaded_=ld;
+            if(ld &&
+              loadedInitialised_ && enabled_ && autoAddNew_)
+            {
+                (*it).filtered_=true;
+            }
+            changed=true;
+        }
+        if(ld)
+            currentLoaded.push_back((*it).name_);
+    }
+
+
+    //TODO: do we need to check enabled_
+    for(std::vector<std::string>::const_iterator it=loaded.begin(); it != loaded.end(); ++it)
+    {
+        if(std::find(currentLoaded.begin(), currentLoaded.end(),*it) == currentLoaded.end())
+        {
+            bool filtered=loadedInitialised_ && enabled_ && autoAddNew_;
+            items_.push_back(SuiteFilterItem(*it,true,filtered));
+            changed=true;
+        }
+    }
+
+
+    if(!loadedInitialised_ && loaded.size() > 0)
+        loadedInitialised_=true;
+
+    if(changed)
+        broadcastChange();
 }
 
-void SuiteFilter::adjust()
+std::vector<std::string> SuiteFilter::loaded() const
 {
-	items_.clear();
-
-	//Items present in current_
-	for(std::vector<std::string>::const_iterator it=loaded_.begin(); it != loaded_.end(); ++it)
-	{
-		bool filtered=false;
-		if(std::find(filter_.begin(), filter_.end(),*it) != filter_.end())
-		{
-			filtered=true;
-		}
+    std::vector<std::string> fv;
+    for(std::vector<SuiteFilterItem>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        if((*it).loaded_)
+           fv.push_back((*it).name());
+    }
+    return fv;
+}
 
-		items_.push_back(SuiteFilterItem(*it,true,filtered));
-	}
 
-	//Items present in filter_ only
-	for(std::vector<std::string>::const_iterator it=filter_.begin(); it != filter_.end(); ++it)
-	{
-		if(std::find(loaded_.begin(), loaded_.end(),*it) == loaded_.end())
-		{
-			items_.push_back(SuiteFilterItem(*it,false,true));
-		}
-	}
+void SuiteFilter::adjustFiltered(const std::vector<std::string>& filtered)
+{
+    bool changed=false;
+
+    std::vector<std::string> currentFiltered;
+    for(std::vector<SuiteFilterItem>::iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        bool ld=(std::find(filtered.begin(), filtered.end(),(*it).name_) != filtered.end());
+        if((*it).filtered_ != ld)
+        {
+            (*it).filtered_=ld;
+            changed=true;
+        }
+        if(ld)
+            currentFiltered.push_back((*it).name_);
+    }
+
+    for(std::vector<std::string>::const_iterator it=filtered.begin(); it != filtered.end(); ++it)
+    {
+        if(std::find(currentFiltered.begin(), currentFiltered.end(),*it) == currentFiltered.end())
+        {
+            items_.push_back(SuiteFilterItem(*it,false,true));
+            changed=true;
+        }
+    }
+
+    if(changed)
+        broadcastChange();
+}
 
-	broadcastChange();
+std::vector<std::string> SuiteFilter::filter() const
+{
+    std::vector<std::string> fv;
+    for(std::vector<SuiteFilterItem>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        if((*it).filtered_)
+           fv.push_back((*it).name());
+    }
+    return fv;
 }
 
 void SuiteFilter::setFiltered(int index,bool val)
 {
-	if(index >=0 && index < count())
-	{
-		items_.at(index).filtered_=val;
-
-		const std::string& name=items_.at(index).name_;
-		std::vector<std::string>::iterator it=std::find(filter_.begin(),filter_.end(),name);
-
-		if(val == true)
-		{
-			if(it == filter_.end())
-				filter_.push_back(name);
-		}
-		else
-		{
-			if(it != filter_.end())
-				filter_.erase(it);
-		}
-
-	}
+    Q_ASSERT(index >=0 && index < count());
+    items_[index].filtered_=val;
 }
 
+
+
 SuiteFilter* SuiteFilter::clone()
 {
-	SuiteFilter* sf=new SuiteFilter();
-	sf->loaded_=loaded_;
-	sf->filter_=filter_;
-	sf->items_=items_;
-	sf->enabled_=enabled_;
-	sf->autoAddNew_=autoAddNew_;
+    SuiteFilter* sf=new SuiteFilter();
+    sf->items_=items_;
+    sf->enabled_=enabled_;
+    sf->autoAddNew_=autoAddNew_;
 
 	return sf;
 }
 
-
 bool SuiteFilter::loadedSameAs(const std::vector<std::string>& loaded) const
 {
-	if(loaded.size() != loaded_.size())
-		return false;
-	else
-	{
-		for(unsigned int i=0; i < loaded.size(); i++)
-		{
-			if(loaded.at(i) != loaded_.at(i))
-			{
-				return false;
-			}
-		}
-	}
-	return true;
+    int cnt=0;
+
+    for(std::vector<SuiteFilterItem>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    {
+        bool ld=(std::find(loaded.begin(), loaded.end(),(*it).name()) != loaded.end());
+        if((*it).loaded() != ld)
+           return false;
+        else if(ld && (*it).loaded())
+            cnt++;
+    }
+
+    return cnt == loaded.size();
 }
 
-/*
-bool SuiteFilter::setLoadedInDefs(const std::vector<std::string>& loadedInDefs)
+bool SuiteFilter::setLoaded(const std::vector<std::string>& loaded,bool checkDiff)
 {
-	bool changed=false;
-	std::vector<std::string> loadedTmp=loaded_;
-	for(std::vector<std::string>::const_iterator it=loadedInDefs.begin(); it != loadedInDefs.end(); ++it)
-	{
-		std::vector<std::string>::const_iterator itF=std::find(loaded_.begin(),loaded_.end(),*it);
-		if(itF != loaded_.end())
-		{
-			loadedTmp.push_back(*it);
-			changed=true;
-		}
-	}
+    bool same=false;
+    if(checkDiff)
+        same=loadedSameAs(loaded);
 
-	if(changed)
-	{
-		loaded_=loadedTmp;
-		adjust();
-	}
-
-	return changed;
+    if(!checkDiff || !same)
+    {
+        adjustLoaded(loaded);
+        return true;
+    }
 
+    return !same;
 }
-*/
 
-bool SuiteFilter::setLoaded(const std::vector<std::string>& loaded,bool checkDiff)
+bool SuiteFilter::sameAs(const SuiteFilter* sf) const
 {
-	bool same=false;
-	if(checkDiff)
-		same=loadedSameAs(loaded);
+    if(autoAddNew_ != sf->autoAddNewSuites())
+        return false;
 
-	if(!checkDiff || !same)
-	{
-		checkForNewLoaded(loaded);
-		loaded_=loaded;
-		adjust();
-		return true;
-	}
+    if(enabled_ != sf->isEnabled())
+        return false;
 
-	return !same;
-}
+    if(sf->count() != count())
+        return false;
 
+    for(size_t i=0; i < items_.size(); i++)
+    {
+        if(items_[i] != sf->items()[i])
+        {
+           return false;
+        }
+    }
+
+    return true;
+}
 
 bool SuiteFilter::update(SuiteFilter* sf)
 {
 	changeFlags_.clear();
 
-	if(!sf)
-		return false;
-
-	if(sf->count() != count())
-		return false;
+    assert(sf);
 
 	if(autoAddNew_ != sf->autoAddNewSuites())
 	{
@@ -220,24 +239,23 @@ bool SuiteFilter::update(SuiteFilter* sf)
 		changeFlags_.set(EnabledChanged);
 	}
 
-	if(filter_.size() != sf->filter_.size())
-	{
-		filter_=sf->filter_;
-		changeFlags_.set(ItemChanged);
-	}
-	else
-	{
-		for(size_t i=0; i < filter_.size(); i++)
-		{
-			if(filter_[i] != sf->filter_.at(i))
-			{
-				filter_[i]=sf->filter_.at(i);
-				changeFlags_.set(ItemChanged);
-			}
-		}
-	}
-
-	adjust();
+    if(sf->count() != count())
+    {
+        items_=sf->items();
+        changeFlags_.set(ItemChanged);
+    }
+    else
+    {
+        for(size_t i=0; i < items_.size(); i++)
+        {
+            if(items_[i] != sf->items()[i])
+            {
+                items_=sf->items();
+                changeFlags_.set(ItemChanged);
+                break;
+            }
+        }
+    }
 
 	return (changeFlags_.isEmpty() == false);
 }
@@ -246,14 +264,49 @@ void SuiteFilter::selectAll()
 {
 	for(size_t i=0; i < items_.size(); i++)
 	{
-		setFiltered(static_cast<int>(i),true);
+        items_[i].filtered_=true;        
 	}
 }
 
 void SuiteFilter::unselectAll()
 {
-	filter_.clear();
-	adjust();
+    for(size_t i=0; i < items_.size(); i++)
+    {
+        items_[i].filtered_=false;      
+    }
+}
+
+bool SuiteFilter::removeUnloaded()
+{
+    std::vector<SuiteFilterItem> v;
+
+    bool changed=false;
+    for(size_t i=0; i < items_.size(); i++)
+    {
+        if(items_[i].loaded())
+        {
+            v.push_back(items_[i]);
+        }
+        else
+        {
+            changed=true;
+        }
+    }
+
+    if(changed)
+        items_=v;
+
+    return changed;
+}
+
+bool SuiteFilter::hasUnloaded() const
+{
+    for(size_t i=0; i < items_.size(); i++)
+    {
+        if(!items_[i].loaded())
+            return true;
+    }
+    return false;
 }
 
 void SuiteFilter::addObserver(SuiteFilterObserver* o)
@@ -282,35 +335,27 @@ void SuiteFilter::broadcastChange()
 
 void SuiteFilter::readSettings(VSettings *vs)
 {
-	clear();
+    enabled_=vs->getAsBool("enabled",enabled_);
+    autoAddNew_=vs->getAsBool("autoAddNew",autoAddNew_);
 
-	enabled_=vs->getAsBool("enabled",enabled_);
-	autoAddNew_=vs->getAsBool("autoAddNew",autoAddNew_);
+    std::vector<std::string> filter;
+    if(vs->contains("suites"))
+    {
+        vs->get("suites",filter);
+    }
 
-	if(vs->contains("suites"))
-	{
-		vs->get("suites",filter_);
-	}
+    adjustFiltered(filter);
 
-	adjust();
-
-	changeFlags_.clear();
-	changeFlags_.set(ItemChanged);
+    changeFlags_.clear();
+    changeFlags_.set(ItemChanged);
 }
 
 void SuiteFilter::writeSettings(VSettings *vs)
 {
-	vs->putAsBool("enabled",enabled_);
-	vs->putAsBool("autoAddNew",autoAddNew_);
+    vs->putAsBool("enabled",enabled_);
+    vs->putAsBool("autoAddNew",autoAddNew_);
 
-	if(filter_.size() >0)
-	{
-		std::vector<std::string> array;
-		for(std::vector<std::string>::const_iterator it=filter_.begin(); it != filter_.end(); ++it)
-		{
-			array.push_back(*it);
-		}
-
-		vs->put("suites",array);
-	}
+    std::vector<std::string> fv=filter();
+    if(fv.size() > 0)
+        vs->put("suites",fv);
 }
diff --git a/Viewer/src/SuiteFilter.hpp b/Viewer/src/SuiteFilter.hpp
index a6f5ee5..3d63e86 100644
--- a/Viewer/src/SuiteFilter.hpp
+++ b/Viewer/src/SuiteFilter.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -15,6 +15,7 @@
 
 #include "FlagSet.hpp"
 
+class SuiteFilter;
 class SuiteFilterObserver;
 class VSettings;
 
@@ -41,35 +42,44 @@ private:
 
 class SuiteFilterItem
 {
+   friend class SuiteFilter;
 public:
-	SuiteFilterItem(const std::string& name,bool present, bool filtered) :
-		     name_(name), present_(present), filtered_(filtered) {}
+    SuiteFilterItem(const std::string& name,bool loaded, bool filtered) :
+             name_(name), loaded_(loaded), filtered_(filtered) {}
 
 	SuiteFilterItem(const SuiteFilterItem& other);
 
+    bool operator!=(const SuiteFilterItem& rhs) const {return name_ != rhs.name_ || loaded_ != rhs.loaded_ ||
+                filtered_ != rhs.filtered_;}
+
+    const std::string& name() const {return name_;}
+    bool loaded() const {return loaded_;}
+    bool filtered() const {return filtered_;}
+
+protected:
 	std::string name_;
-	bool present_;
+    bool loaded_;
 	bool filtered_;
 };
 
 class SuiteFilter
 {
 public:
-	SuiteFilter() : autoAddNew_(false), enabled_(false) {}
+    SuiteFilter() : autoAddNew_(false), enabled_(false), loadedInitialised_(false) {}
 	~SuiteFilter();
 
 	enum ChangeFlag {AutoAddChanged=1,EnabledChanged=2,ItemChanged=4};
 
 	SuiteFilter* clone();
 
-	const std::vector<std::string>& filter() const {return filter_;}
-	const std::vector<std::string>& loaded() const {return loaded_;}
-	const std::vector<SuiteFilterItem> items() const {return items_;}
+    std::vector<std::string> filter() const;
+    std::vector<std::string> loaded() const;
+    const std::vector<SuiteFilterItem>& items() const {return items_;}
 
 	void current(const std::vector<std::string>& suites);
 	int count() const {return static_cast<int>(items_.size());}
 	void setFiltered(int index,bool val);
-
+    bool isLoadedInitialised() const {return loadedInitialised_;}
 	bool autoAddNewSuites() const {return autoAddNew_;}
 	bool isEnabled() const {return enabled_;}
 
@@ -77,7 +87,10 @@ public:
 	void setEnabled(bool b) {enabled_=b;}
 	void selectAll();
 	void unselectAll();
+    bool removeUnloaded();
+    bool hasUnloaded() const;
 
+    bool sameAs(const SuiteFilter*) const;
 	bool update(SuiteFilter*);
 	bool setLoaded(const std::vector<std::string>& loaded,bool checkDiff=true);
 	bool loadedSameAs(const std::vector<std::string>& loaded) const;
@@ -90,23 +103,22 @@ public:
 	void readSettings(VSettings *vs);
 	void writeSettings(VSettings *vs);
 
+    static const std::string dummySuite() {return dummySuite_;}
+
 private:
 	void clear();
 	void adjust();
-	void broadcastChange();
-	void checkForNewLoaded(const std::vector<std::string>& loaded);
-
-	//All the suites currently loaded onto the server
-    std::vector<std::string> loaded_;
-
-    //The suites we want to filter (they might not be loaded)
-    std::vector<std::string> filter_;
+    void broadcastChange();
+    void adjustLoaded(const std::vector<std::string>& loaded);
+    void adjustFiltered(const std::vector<std::string>& filtered);
 
-	std::vector<SuiteFilterItem> items_;
-	bool autoAddNew_;
+    std::vector<SuiteFilterItem> items_;
+    bool autoAddNew_;
 	bool enabled_;
+    bool loadedInitialised_;
 	FlagSet<ChangeFlag> changeFlags_;
 	std::vector<SuiteFilterObserver*> observers_;
+    static std::string dummySuite_;
 };
 
 
diff --git a/Viewer/src/SuiteItemWidget.cpp b/Viewer/src/SuiteItemWidget.cpp
index c0e24d3..33e33ff 100644
--- a/Viewer/src/SuiteItemWidget.cpp
+++ b/Viewer/src/SuiteItemWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,6 +9,8 @@
 
 #include "SuiteItemWidget.hpp"
 
+#include <QSortFilterProxyModel>
+
 #include "InfoProvider.hpp"
 #include "ServerHandler.hpp"
 #include "SuiteFilter.hpp"
@@ -22,25 +24,54 @@
 //
 //========================================================
 
-SuiteItemWidget::SuiteItemWidget(QWidget *parent) : QWidget(parent)
+SuiteItemWidget::SuiteItemWidget(QWidget *parent) :
+    QWidget(parent),
+    columnsAdjusted_(false)
 {
 	setupUi(this);
 
 	infoProvider_=new SuiteProvider(this);
 
 	model_=new SuiteModel(this);
+    QSortFilterProxyModel* sortModel=new QSortFilterProxyModel(this);
+    sortModel->setSourceModel(model_);
 
-	suiteView->setModel(model_);
+    suiteView->setUniformRowHeights(true);
+    suiteView->setSortingEnabled(true);
+    suiteView->setModel(sortModel);
 
 	connect(model_,SIGNAL(dataChanged(QModelIndex,QModelIndex)),
 			this,SLOT(slotModelEdited(QModelIndex,QModelIndex)));
 
-	//messageLabel->hide();
+    messageLabel->setShowTypeTitle(false);
+    messageLabel->setNarrowMode(true);
+    messageLabel->hide();
 
-	okTb->setEnabled(false);
+    QFont labelF;
+    labelF.setBold(true);
+    labelF.setPointSize(labelF.pointSize()-1);
+
+    controlLabel->setFont(labelF);
+    controlLabel->setText("<font color=\'#565656\'>" + controlLabel->text() + "</font>");
+
+    selectLabel->setFont(labelF);
+    selectLabel->setText("<font color=\'#565656\'>" + selectLabel->text() + "</font>");
+
+    loadedLabel->setFont(labelF);
+    loadedLabel->setText("<font color=\'#565656\'>" + loadedLabel->text() + "</font>");
+
+    QPalette pal=okTb->palette();
+    QColor col(10,150,10);
+    pal.setColor(QPalette::Active,QPalette::Button,col);
+    pal.setColor(QPalette::Active,QPalette::ButtonText,QColor(Qt::white));
+    //okTb->setPalette(pal);
+
+    okTb->setEnabled(false);
 	enableTb->setChecked(false);
 
     checkActionState();
+
+    okTb->setEnabled(false);
 }
 
 QWidget* SuiteItemWidget::realWidget()
@@ -67,7 +98,21 @@ void SuiteItemWidget::reload(VInfo_ptr info)
 		assert(sf);
 
 		//The model will be an observer of the suitefilter
-		model_->setData(sf);
+        model_->setData(sf,info_->server());
+
+        if(!columnsAdjusted_)
+        {
+            for(int i=0; i < model_->columnCount()-1; i++)
+            {
+                suiteView->resizeColumnToContents(i);
+                suiteView->setColumnWidth(i,suiteView->columnWidth(i) + ((i==0)?25:15));
+            }
+            columnsAdjusted_=true;
+        }
+
+        suiteView->sortByColumn(0,Qt::AscendingOrder);
+
+        model_->filter()->addObserver(this);
 
 		enableTb->setChecked(sf->isEnabled());
 		autoCb->setChecked(sf->autoAddNewSuites());
@@ -104,7 +149,8 @@ void SuiteItemWidget::updateData()
 
 void SuiteItemWidget::infoReady(VReply* reply)
 {
-	//updateData();
+    suiteView->sortByColumn(0,Qt::AscendingOrder);
+    //updateData();
 }
 
 void SuiteItemWidget::infoFailed(VReply* reply)
@@ -116,10 +162,10 @@ void SuiteItemWidget::infoFailed(VReply* reply)
 
 void SuiteItemWidget::clearContents()
 {
-	model_->setData(0);
+    model_->setData(0,0);
 	InfoPanelItem::clear();
 	okTb->setEnabled(false);
-	//messageLabel->hide();
+    messageLabel->hide();
 }
 
 void SuiteItemWidget::updateState(const FlagSet<ChangeFlag>&)
@@ -136,6 +182,7 @@ void SuiteItemWidget::checkActionState()
         selectAllTb->setEnabled(false);
         unselectAllTb->setEnabled(false);
         syncTb->setEnabled(false);
+        removeTb->setEnabled(false);
         suiteView->setEnabled(false);
         okTb->setEnabled(false);
         return;
@@ -143,7 +190,6 @@ void SuiteItemWidget::checkActionState()
     else
     {
          enableTb->setEnabled(true);
-         okTb->setEnabled(true);
          suiteView->setEnabled(true);
     }
 
@@ -151,24 +197,15 @@ void SuiteItemWidget::checkActionState()
 	{
 		autoCb->setEnabled(true);
 		selectAllTb->setEnabled(true);
-		unselectAllTb->setEnabled(true);
+        unselectAllTb->setEnabled(true);
+        syncTb->setEnabled(true);
 
 		if(SuiteFilter* sf=model_->filter())
 		{
 			autoCb->setChecked(sf->autoAddNewSuites());
+            removeTb->setEnabled(sf->hasUnloaded());
+            syncTb->setEnabled(true);
 
-			if(!sf->autoAddNewSuites())
-			{
-				syncTb->setEnabled(true);
-			}
-			else
-			{
-				syncTb->setEnabled(false);
-			}
-		}
-		else
-		{
-			syncTb->setEnabled(false);
 		}
 	}
 	else
@@ -176,7 +213,8 @@ void SuiteItemWidget::checkActionState()
 		autoCb->setEnabled(false);
 		selectAllTb->setEnabled(false);
 		unselectAllTb->setEnabled(false);
-		syncTb->setEnabled(false);
+        syncTb->setEnabled(false);
+        removeTb->setEnabled(false);
 	}
 }
 
@@ -185,9 +223,8 @@ void SuiteItemWidget::on_autoCb_clicked(bool val)
 	if(SuiteFilter* sf=model_->filter())
 	{
 		sf->setAutoAddNewSuites(val);
+        settingsChanged();
 	}
-
-    checkActionState();
 }
 
 void SuiteItemWidget::on_enableTb_clicked(bool val)
@@ -231,6 +268,20 @@ void SuiteItemWidget::on_syncTb_clicked(bool)
 	}
 }
 
+void SuiteItemWidget::on_removeTb_clicked(bool val)
+{
+    if(SuiteFilter* sf=model_->filter())
+    {
+        if(sf->removeUnloaded())
+        {
+            model_->reloadData();
+            settingsChanged();
+        }
+    }
+
+    checkActionState();
+}
+
 void SuiteItemWidget::on_okTb_clicked(bool)
 {
 	if(info_.get() && info_->isServer() && info_->server())
@@ -238,7 +289,9 @@ void SuiteItemWidget::on_okTb_clicked(bool)
 		//This replace the edited filter in model the one
 		//stored by the server
 		info_->server()->updateSuiteFilter(model_->filter());
-		okTb->setEnabled(false);
+        okTb->setEnabled(false);
+        messageLabel->clear();
+        messageLabel->hide();
 	}
 }
 
@@ -249,12 +302,34 @@ void SuiteItemWidget::slotModelEdited(const QModelIndex&,const QModelIndex&)
 
 void SuiteItemWidget::settingsChanged()
 {
-	if(!okTb->isEnabled())
-	{
-		okTb->setEnabled(true);
-		//messageLabel->show();
-		//messageLabel->showInfo("The suite filter changed!");
-	}
+    SuiteFilter *sf=model_->filter();
+    SuiteFilter *oriSf=model_->realFilter();
+    if(sf && oriSf)
+    {
+        bool st=oriSf->sameAs(sf);
+        okTb->setEnabled(!st);
+        if(st)
+        {
+            messageLabel->clear();
+            messageLabel->hide();
+        }
+        else
+        {
+            messageLabel->showTip("The suite filter has changed! Please click <b>Apply</b> to submit the changes to the server!");
+        }
+    }
+}
+
+void SuiteItemWidget::notifyChange(SuiteFilter *filter)
+{
+    settingsChanged();
+    checkActionState();
+}
+
+void SuiteItemWidget::notifyDelete(SuiteFilter *filter)
+{
+    Q_ASSERT(filter);
+    filter->removeObserver(this);
 }
 
 
diff --git a/Viewer/src/SuiteItemWidget.hpp b/Viewer/src/SuiteItemWidget.hpp
index 06b4661..09d71cf 100644
--- a/Viewer/src/SuiteItemWidget.hpp
+++ b/Viewer/src/SuiteItemWidget.hpp
@@ -15,12 +15,13 @@
 
 #include "InfoPanelItem.hpp"
 #include "VInfo.hpp"
+#include "SuiteFilterObserver.hpp"
 
 #include "ui_SuiteItemWidget.h"
 
 class SuiteModel;
 
-class SuiteItemWidget : public QWidget, public InfoPanelItem, protected Ui::SuiteItemWidget
+class SuiteItemWidget : public QWidget, public InfoPanelItem, public SuiteFilterObserver, protected Ui::SuiteItemWidget
 {
 Q_OBJECT
 
@@ -31,7 +32,6 @@ public:
 	QWidget* realWidget();
     void clearContents();  
 
-	//From VInfoPresenter
 	void infoReady(VReply*);
 	void infoFailed(VReply*);
     void infoProgress(VReply*) {}
@@ -39,13 +39,17 @@ public:
     void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&) {}
     void defsChanged(const std::vector<ecf::Aspect::Type>&) {}
 
+    void notifyChange(SuiteFilter *filter);
+    void notifyDelete(SuiteFilter *filter);
+
 protected Q_SLOTS:
 	void on_autoCb_clicked(bool);
 	void on_enableTb_clicked(bool);
 	void on_selectAllTb_clicked(bool);
 	void on_unselectAllTb_clicked(bool);
 	void on_syncTb_clicked(bool);
-	void on_okTb_clicked(bool);
+    void on_okTb_clicked(bool);
+    void on_removeTb_clicked(bool);
 	void slotModelEdited(const QModelIndex&,const QModelIndex&);
 
 protected:
@@ -55,6 +59,7 @@ protected:
     void checkActionState();
 
     SuiteModel *model_;
+    bool columnsAdjusted_;
 };
 
 #endif
diff --git a/Viewer/src/SuiteItemWidget.ui b/Viewer/src/SuiteItemWidget.ui
index 887ec44..d825062 100644
--- a/Viewer/src/SuiteItemWidget.ui
+++ b/Viewer/src/SuiteItemWidget.ui
@@ -22,9 +22,9 @@
   <property name="statusTip">
    <string/>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,1">
    <property name="spacing">
-    <number>4</number>
+    <number>1</number>
    </property>
    <property name="leftMargin">
     <number>0</number>
@@ -39,112 +39,153 @@
     <number>0</number>
    </property>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout">
-     <item>
-      <spacer name="horizontalSpacer_2">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Fixed</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>4</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QToolButton" name="enableTb">
-       <property name="text">
-        <string>Enable filter</string>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/filter_decor.svg</normaloff>:/viewer/filter_decor.svg</iconset>
-       </property>
-       <property name="checkable">
-        <bool>true</bool>
-       </property>
-       <property name="toolButtonStyle">
-        <enum>Qt::ToolButtonTextBesideIcon</enum>
-       </property>
-       <property name="autoRaise">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QCheckBox" name="autoCb">
-       <property name="text">
-        <string>Automatically add new suites to filter</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer name="horizontalSpacer">
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QToolButton" name="syncTb">
-       <property name="toolTip">
-        <string>Get  the current list of <b>loaded suites</b> from the server</string>
-       </property>
-       <property name="text">
-        <string/>
-       </property>
-       <property name="icon">
-        <iconset resource="viewer.qrc">
-         <normaloff>:/viewer/sync.svg</normaloff>:/viewer/sync.svg</iconset>
-       </property>
-       <property name="autoRaise">
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-    </layout>
+    <widget class="MessageLabel" name="messageLabel" native="true"/>
    </item>
    <item>
-    <layout class="QHBoxLayout" name="horizontalLayout_2">
+    <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
-      <widget class="QTreeView" name="suiteView">
-       <property name="contextMenuPolicy">
-        <enum>Qt::ActionsContextMenu</enum>
-       </property>
-       <property name="alternatingRowColors">
-        <bool>true</bool>
-       </property>
-       <property name="rootIsDecorated">
-        <bool>false</bool>
-       </property>
-       <property name="uniformRowHeights">
-        <bool>true</bool>
-       </property>
-       <property name="itemsExpandable">
-        <bool>false</bool>
-       </property>
-       <property name="allColumnsShowFocus">
-        <bool>true</bool>
-       </property>
-       <property name="expandsOnDoubleClick">
-        <bool>false</bool>
-       </property>
-      </widget>
+      <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0">
+       <item>
+        <widget class="MessageLabel" name="messageLabel_1" native="true"/>
+       </item>
+       <item>
+        <widget class="QTreeView" name="suiteView">
+         <property name="contextMenuPolicy">
+          <enum>Qt::ActionsContextMenu</enum>
+         </property>
+         <property name="alternatingRowColors">
+          <bool>true</bool>
+         </property>
+         <property name="rootIsDecorated">
+          <bool>false</bool>
+         </property>
+         <property name="uniformRowHeights">
+          <bool>true</bool>
+         </property>
+         <property name="itemsExpandable">
+          <bool>false</bool>
+         </property>
+         <property name="allColumnsShowFocus">
+          <bool>true</bool>
+         </property>
+         <property name="expandsOnDoubleClick">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+      </layout>
      </item>
      <item>
       <layout class="QVBoxLayout" name="verticalLayout_3">
        <item>
+        <widget class="QToolButton" name="okTb">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Apply changes</string>
+         </property>
+         <property name="text">
+          <string>&Apply</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>:/viewer/submit_round.svg</normaloff>:/viewer/submit_round.svg</iconset>
+         </property>
+         <property name="toolButtonStyle">
+          <enum>Qt::ToolButtonTextBesideIcon</enum>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_2">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>15</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="controlLabel">
+         <property name="text">
+          <string>Control:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="enableTb">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string><html><head/><body><p>By specifiying a <span style=" font-weight:600;">suite filter</span> we can define a subset of suites that ecflowUI needs to keep track of. This can significantly reduce network bandwith and <span style=" font-weight:600;">speed up communication</span> to the server.</p></body></html></string>
+         </property>
+         <property name="text">
+          <string>Enable filter</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>:/viewer/filter_decor.svg</normaloff>:/viewer/filter_decor.svg</iconset>
+         </property>
+         <property name="checkable">
+          <bool>true</bool>
+         </property>
+         <property name="toolButtonStyle">
+          <enum>Qt::ToolButtonTextBesideIcon</enum>
+         </property>
+         <property name="autoRaise">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QCheckBox" name="autoCb">
+         <property name="toolTip">
+          <string><html><head/><body><p>By selecting this option all <span style=" font-weight:600;">new suites</span> loaded to the server will be <span style=" font-weight:600;">automatically</span> added to the suite filter and become visible in the views.</p></body></html></string>
+         </property>
+         <property name="text">
+          <string>Auto add new suites</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <spacer name="verticalSpacer_4">
+         <property name="orientation">
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>8</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="selectLabel">
+         <property name="text">
+          <string>Selection:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
         <widget class="QToolButton" name="selectAllTb">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -159,7 +200,7 @@
           <string>Select &all</string>
          </property>
          <property name="icon">
-          <iconset resource="viewer.qrc">
+          <iconset>
            <normaloff>:/viewer/select_all.svg</normaloff>:/viewer/select_all.svg</iconset>
          </property>
          <property name="toolButtonStyle">
@@ -185,7 +226,7 @@
           <string>&Unselect all</string>
          </property>
          <property name="icon">
-          <iconset resource="viewer.qrc">
+          <iconset>
            <normaloff>:/viewer/unselect_all.svg</normaloff>:/viewer/unselect_all.svg</iconset>
          </property>
          <property name="toolButtonStyle">
@@ -197,14 +238,30 @@
         </widget>
        </item>
        <item>
-        <widget class="Line" name="line">
+        <spacer name="verticalSpacer_3">
          <property name="orientation">
-          <enum>Qt::Horizontal</enum>
+          <enum>Qt::Vertical</enum>
+         </property>
+         <property name="sizeType">
+          <enum>QSizePolicy::Fixed</enum>
+         </property>
+         <property name="sizeHint" stdset="0">
+          <size>
+           <width>20</width>
+           <height>8</height>
+          </size>
+         </property>
+        </spacer>
+       </item>
+       <item>
+        <widget class="QLabel" name="loadedLabel">
+         <property name="text">
+          <string>Load/unload status:</string>
          </property>
         </widget>
        </item>
        <item>
-        <widget class="QToolButton" name="okTb">
+        <widget class="QToolButton" name="syncTb">
          <property name="sizePolicy">
           <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
            <horstretch>0</horstretch>
@@ -212,14 +269,40 @@
           </sizepolicy>
          </property>
          <property name="toolTip">
-          <string>Apply changes</string>
+          <string><html><head/><body><p>Get the<span style=" font-weight:600;"> current</span> list of <span style=" text-decoration: underline;">loaded suites</span> from the server. </p></body></html></string>
+         </property>
+         <property name="text">
+          <string>&Fetch load status</string>
+         </property>
+         <property name="icon">
+          <iconset>
+           <normaloff>:/viewer/sync_black.svg</normaloff>:/viewer/sync_black.svg</iconset>
+         </property>
+         <property name="toolButtonStyle">
+          <enum>Qt::ToolButtonTextBesideIcon</enum>
+         </property>
+         <property name="autoRaise">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="removeTb">
+         <property name="sizePolicy">
+          <sizepolicy hsizetype="Preferred" vsizetype="Fixed">
+           <horstretch>0</horstretch>
+           <verstretch>0</verstretch>
+          </sizepolicy>
+         </property>
+         <property name="toolTip">
+          <string>Remove all currently unloaded suites from the suite filter list</string>
          </property>
          <property name="text">
-          <string>&Submit</string>
+          <string>&Remove unloaded</string>
          </property>
          <property name="icon">
-          <iconset resource="viewer.qrc">
-           <normaloff>:/viewer/submit.svg</normaloff>:/viewer/submit.svg</iconset>
+          <iconset>
+           <normaloff>:/viewer/remove.svg</normaloff>:/viewer/remove.svg</iconset>
          </property>
          <property name="toolButtonStyle">
           <enum>Qt::ToolButtonTextBesideIcon</enum>
@@ -245,8 +328,14 @@
    </item>
   </layout>
  </widget>
- <resources>
-  <include location="viewer.qrc"/>
- </resources>
+ <customwidgets>
+  <customwidget>
+   <class>MessageLabel</class>
+   <extends>QWidget</extends>
+   <header location="global">MessageLabel.hpp</header>
+   <container>1</container>
+  </customwidget>
+ </customwidgets>
+ <resources/>
  <connections/>
 </ui>
diff --git a/Viewer/src/SuiteModel.cpp b/Viewer/src/SuiteModel.cpp
index 5a49e30..5751a9a 100644
--- a/Viewer/src/SuiteModel.cpp
+++ b/Viewer/src/SuiteModel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,14 +11,17 @@
 
 #include <QDebug>
 
+#include "ServerHandler.hpp"
 #include "SuiteFilter.hpp"
+#include "VNode.hpp"
 
 SuiteModel::SuiteModel(QObject *parent) :
      QAbstractItemModel(parent),
+     server_(0),
      data_(0),
      realData_(0),
-	 presentCol_(QColor(1,128,73)),
-	 notPresentCol_(QColor(255,0,0))
+     presentCol_(QColor(1,128,73)),
+     notPresentCol_(QColor(255,0,0))
 {
 
 }
@@ -32,7 +35,9 @@ SuiteModel::~SuiteModel()
 
 void SuiteModel::clearData()
 {
-	if(data_)
+    server_=0;
+
+    if(data_)
 		delete data_;
 
 	data_=0;
@@ -43,7 +48,7 @@ void SuiteModel::clearData()
 	realData_=0;
 }
 
-void SuiteModel::setData(SuiteFilter* filter)
+void SuiteModel::setData(SuiteFilter* filter,ServerHandler* server)
 {
 	beginResetModel();
 
@@ -54,7 +59,9 @@ void SuiteModel::setData(SuiteFilter* filter)
 
 	if(filter)
 	{
-		data_=filter->clone();
+        server_=server;
+        Q_ASSERT(server);
+        data_=filter->clone();
 		realData_=filter;
 		realData_->addObserver(this);
 	}
@@ -82,13 +89,13 @@ void SuiteModel::notifyDelete(SuiteFilter *filter)
 
 void SuiteModel::updateData()
 {
-	if(realData_ && data_ &&
-	 !data_->loadedSameAs(realData_->loaded()))
-	{
-		beginResetModel();
-		data_->setLoaded(realData_->loaded());
-		endResetModel();
-	}
+    if(realData_ && data_ &&
+         !data_->loadedSameAs(realData_->loaded()))
+        {
+            beginResetModel();
+            data_->setLoaded(realData_->loaded());
+            endResetModel();
+        }
 }
 
 void SuiteModel::reloadData()
@@ -104,7 +111,7 @@ bool SuiteModel::hasData() const
 
 int SuiteModel::columnCount( const QModelIndex& /*parent */ ) const
 {
-   	 return 2;
+     return 3;
 }
 
 int SuiteModel::rowCount( const QModelIndex& parent) const
@@ -157,19 +164,34 @@ QVariant SuiteModel::data( const QModelIndex& index, int role ) const
 		switch(index.column())
 		{
 		case 0:
-			return QString::fromStdString(data_->items().at(row).name_);
+            return QString::fromStdString(data_->items().at(row).name());
 			break;
 		case 1:
-			return (data_->items().at(row).present_)?"loaded":"not loaded";
+            return (data_->items().at(row).loaded())?"loaded":"not loaded";
 			break;
-		default:
+        case 2:
+            {
+                if(data_->items().at(row).loaded())
+                {
+                    Q_ASSERT(server_);
+                    int n=server_->vRoot()->totalNumOfTopLevel(data_->items().at(row).name());
+                    if(n != -1)
+                        return n;
+                    else
+                        return QVariant();
+                }
+                else
+                    return QVariant();
+            }
+            break;
+        default:
 			break;
 		}
 	}
 	else if(role == Qt::CheckStateRole)
 	{
 		if(index.column()==0)
-			return (data_->items().at(row).filtered_)?QVariant(Qt::Checked):QVariant(Qt::Unchecked);
+            return (data_->items().at(row).filtered())?QVariant(Qt::Checked):QVariant(Qt::Unchecked);
 	}
 	else if(role == Qt::ForegroundRole)
 	{
@@ -179,7 +201,7 @@ QVariant SuiteModel::data( const QModelIndex& index, int role ) const
 		}
 		else if(index.column() == 1)
 		{
-			return (data_->items().at(row).present_)?presentCol_:notPresentCol_;
+            return (data_->items().at(row).loaded())?presentCol_:notPresentCol_;
 		}
 		return QVariant();
 	}
@@ -215,7 +237,8 @@ QVariant SuiteModel::headerData( const int section, const Qt::Orientation orient
    		switch ( section )
    		{
    		case 0: return tr("Suite");
-   		case 1: return tr("Status on server");
+        case 1: return tr("Load status on server");
+        case 2: return tr("Number of children");
    		default: return QVariant();
    		}
    	}
@@ -223,8 +246,11 @@ QVariant SuiteModel::headerData( const int section, const Qt::Orientation orient
    	{
    		switch ( section )
    		{
-   		case 0: return tr("Suite filter status");
-   		case 1: return tr("Indicates if the suite is currently <b>loaded</b> on the server");
+        case 0: return tr("Filter status of suite");
+        case 1: return tr("Indicates if the suite is currently <b>loaded</b> on the server.<br><br>\
+                          Please note: this information might not be up to date for <b>unfiltered</b> suites. Use <u>Fetch load status</u> \
+                          to get the actual load status list.");
+        case 2: return tr("Number of children");
    		default: return QVariant();
    		}
    	}
diff --git a/Viewer/src/SuiteModel.hpp b/Viewer/src/SuiteModel.hpp
index 4103195..e9e5e51 100644
--- a/Viewer/src/SuiteModel.hpp
+++ b/Viewer/src/SuiteModel.hpp
@@ -6,6 +6,7 @@
 
 #include "SuiteFilterObserver.hpp"
 
+class ServerHandler;
 class SuiteFilter;
 
 class SuiteModel : public QAbstractItemModel, public SuiteFilterObserver
@@ -25,12 +26,13 @@ public:
    	QModelIndex index (int, int, const QModelIndex& parent = QModelIndex() ) const;
    	QModelIndex parent (const QModelIndex & ) const;
 
-	void setData(SuiteFilter* filter);
+    void setData(SuiteFilter* filter,ServerHandler* server);
 	void reloadData();
 
-   	SuiteFilter* filter() const {return data_;}
+   	SuiteFilter* filter() const {return data_;}   
+    SuiteFilter* realFilter() const {return realData_;}
 
-   	void notifyChange(SuiteFilter*);
+    void notifyChange(SuiteFilter*);
    	void notifyDelete(SuiteFilter*);
 
 protected:
@@ -38,6 +40,7 @@ protected:
 	void clearData();
 	void updateData();
 
+    ServerHandler* server_;
 	SuiteFilter* data_;
 	SuiteFilter* realData_;
 	QColor presentCol_;
diff --git a/Viewer/src/TabWidget.cpp b/Viewer/src/TabWidget.cpp
index 15835b0..a82178c 100644
--- a/Viewer/src/TabWidget.cpp
+++ b/Viewer/src/TabWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,13 +10,33 @@
 #include "TabWidget.hpp"
 
 #include <QDebug>
+#include <QAction>
+#include <QLabel>
+#include <QMenu>
 #include <QStackedWidget>
+#include <QStyleOptionTabV2>
+#include <QStylePainter>
 #include <QTabBar>
 #include <QToolButton>
 #include <QVBoxLayout>
 
 #include "UserMessage.hpp"
 
+void IconTabBar::paintEvent(QPaintEvent *e)
+{
+    QStylePainter painter(this);
+    for(int i = 0; i < count(); ++i)
+    {
+        QStyleOptionTabV2 option;
+        initStyleOption(&option, i);
+        qDebug() << i << option.iconSize;
+        painter.drawItemPixmap(option.rect, Qt::AlignTop|Qt::AlignHCenter, option.icon.pixmap(option.iconSize));
+        //painter.drawItemText(option.rect, Qt::AlignBottom|Qt::AlignHCenter, palette(), 1, option.text);
+
+    }
+}
+
+
 TabWidget::TabWidget(QWidget* parent) :
 		QWidget(parent),
 		beingCleared_(false)
@@ -33,12 +53,13 @@ TabWidget::TabWidget(QWidget* parent) :
 	layout->addLayout(hb);
 
 	//Tab bar
-	bar_ = new QTabBar(this);
+    bar_ = new QTabBar(this);
+    bar_->setObjectName("bar");
 	hb->addWidget(bar_, 1);
 
-	//bar_->setProperty("mvStyle","folder");
+    bar_->setProperty("nodePanel","1");
 	bar_->setMovable(true);
-	bar_->setExpanding(true);
+    //bar_->setExpanding(true);
 
 	//QString st=bar_->styleSheet();
 	//st+="QTabBar::tab{padding: 4px;}";
@@ -48,13 +69,23 @@ TabWidget::TabWidget(QWidget* parent) :
 
 	//Add tab button on the right
 	addTb_ = new QToolButton(this);
+    addTb_->setObjectName("addTb");
 	addTb_->setAutoRaise(true);
 	addTb_->setIcon(QPixmap(":/viewer/add_tab.svg"));
 	addTb_->setToolTip(tr("Open a new tab"));
 	hb->addWidget(addTb_);
 
-	//Stacked widget to store the actual tab widgets
+    //Tab list menu
+    tabListTb_=new QToolButton(this);
+    tabListTb_->setObjectName("tabListTb");
+    tabListTb_->setAutoRaise(true);
+    tabListTb_->setIcon(QPixmap(":/viewer/menu_arrow_down.svg"));
+    tabListTb_->setToolTip(tr("List all tabs"));
+    hb->addWidget(tabListTb_);
+
+    //Stacked widget to store the actual tab widgets
 	stacked_ = new QStackedWidget(this);
+    stacked_->setObjectName("stacked");
 	stacked_->setMinimumHeight(1);
 	stacked_->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Minimum);
 	layout->addWidget(stacked_);
@@ -76,12 +107,33 @@ TabWidget::TabWidget(QWidget* parent) :
 
 	connect(addTb_,SIGNAL(clicked()),
 			this,SIGNAL(newTabRequested()));
+
+    connect(tabListTb_,SIGNAL(clicked()),
+            this,SLOT(slotTabList()));
 }
 
 void TabWidget::slotContextMenu(const QPoint& pos) {
-	if (pos.isNull())
+
+    if (pos.isNull())
 		return;
 
+    int index = bar_->tabAt(pos);
+    if(index < 0 || index > bar_->count())
+        return;
+
+    QList<QAction*> lst;
+    QAction *closeAc=new QAction(QPixmap(":/viewer/close.svg"),"&Close tab",this);
+    lst << closeAc;
+
+    if(QAction *ac=QMenu::exec(lst,mapToGlobal(pos),closeAc,this))
+    {
+        if(ac == closeAc)
+            removeTab(index);
+    }
+
+    qDeleteAll(lst);
+
+
 	/*MvQContextItemSet *cms = cmSet();
 	if (!cms)
 		return;
@@ -160,6 +212,8 @@ void TabWidget::removeTab(int index)
 		bar_->removeTab(index);
 		w->hide();
 		w->deleteLater();
+
+        Q_EMIT tabRemoved();
 	}
 
 	checkTabStatus();
@@ -212,13 +266,49 @@ void TabWidget::setTabText(int index, QString txt)
 	}
 }
 
+void TabWidget::setTabToolTip(int index, QString txt)
+{
+    if (index >= 0 && index < bar_->count()) {
+        bar_->setTabToolTip(index, txt);
+    }
+}
+
+void TabWidget::setTabWht(int index, QString txt)
+{
+    if (index >= 0 && index < bar_->count()) {
+        bar_->setTabWhatsThis(index, txt);
+    }
+}
+
+void TabWidget::setTabData(int index, QPixmap pix)
+{
+    if (index >= 0 && index < bar_->count()) {
+        bar_->setTabData(index,QIcon(pix));
+    }
+}
+
 void TabWidget::setTabIcon(int index, QPixmap pix)
 {
 	if (index >= 0 && index < bar_->count())
 	{
-		QSize maxSize=maxIconSize();
-
-		if(maxSize.width() < pix.width())
+        QLabel *lab=static_cast<QLabel*>(bar_->tabButton(index,QTabBar::RightSide));
+        if(!lab)
+        {
+            lab=new QLabel();
+            lab->setAlignment(Qt::AlignCenter);
+        }
+        else
+        {
+            bar_->setTabButton(index,QTabBar::RightSide,0);
+        }
+        lab->setPixmap(pix);
+        lab->setFixedSize(pix.size());
+        bar_->setTabButton(index,QTabBar::RightSide,lab);
+
+#if 0
+        QSize maxSize=maxIconSize();
+
+        if(maxSize.width() < pix.width())
 			maxSize.setWidth(pix.width());
 
 		if(maxSize.height() < pix.height())
@@ -228,9 +318,12 @@ void TabWidget::setTabIcon(int index, QPixmap pix)
 			bar_->setIconSize(maxSize);
 
 		bar_->setTabIcon(index, QIcon(pix));
+#endif
+
 	}
 }
 
+#if 0
 QSize TabWidget::maxIconSize() const
 {
 	QSize maxSize(0,0);
@@ -248,23 +341,26 @@ QSize TabWidget::maxIconSize() const
 	}
 	return maxSize;
 }
-
+#endif
 
 void TabWidget::checkTabStatus()
 {
 	if (bar_->count() > 1)
 	{
 		bar_->show();
-		bar_->setTabsClosable(true);
+        //bar_->setTabsClosable(true);
 		addTb_->show();
+        tabListTb_->show();
 	}
 	else
 	{
 		bar_->hide();
-		bar_->setTabsClosable(false);
-		addTb_->hide();
+        //bar_->setTabsClosable(false);
+        addTb_->hide();
+        tabListTb_->hide();
 	}
 
+    /*
 	for (int i = 0; i < bar_->count(); i++)
 	{
 		if (QWidget *w = bar_->tabButton(i, QTabBar::RightSide))
@@ -274,5 +370,38 @@ void TabWidget::checkTabStatus()
 			else
 				w->hide();
 		}
-	}
+    }*/
+}
+
+void TabWidget::slotTabList()
+{
+    QMenu* menu=new QMenu(tabListTb_);
+
+    for(int i=0; i < bar_->count(); i++)
+    {
+        QAction *ac=new QAction(menu);
+        ac->setText(bar_->tabWhatsThis(i));
+        ac->setIcon(bar_->tabData(i).value<QIcon>());
+        ac->setData(i);
+        if(i==bar_->currentIndex())
+        {
+            QFont font;
+            font.setBold(true);
+            ac->setFont(font);
+        }
+
+        menu->addAction(ac);
+    }
+
+    if(QAction *ac=menu->exec(QCursor::pos()))
+    {
+        int index=ac->data().toInt();
+        if(index >=0 && index < count())
+        {
+            setCurrentIndex(index);
+        }
+    }
+
+    menu->clear();
+    menu->deleteLater();
 }
diff --git a/Viewer/src/TabWidget.hpp b/Viewer/src/TabWidget.hpp
index 941c6f6..4394d1e 100644
--- a/Viewer/src/TabWidget.hpp
+++ b/Viewer/src/TabWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,6 +10,7 @@
 #ifndef TABWIDGET_HPP_
 #define TABWIDGET_HPP_
 
+#include <QTabBar>
 #include <QWidget>
 
 class QMenu;
@@ -18,6 +19,15 @@ class QTabBar;
 class QToolButton;
 class QVBoxLayout;
 
+class IconTabBar : public QTabBar
+{
+public:
+    IconTabBar(QWidget* parent=0) : QTabBar(parent) {}
+protected:
+    void paintEvent(QPaintEvent *e);
+};
+
+
 class TabWidget : public QWidget
 {
     Q_OBJECT
@@ -32,7 +42,10 @@ public:
 	void checkTabStatus();
 	void addTab(QWidget *,QPixmap,QString);
 	void setTabText(int,QString);
-	void setTabIcon(int,QPixmap);
+    void setTabIcon(int,QPixmap);
+    void setTabToolTip(int,QString);
+    void setTabWht(int,QString);
+    void setTabData(int,QPixmap);
 	int count() const;
 	void clear();
 	bool beingCleared() const {return beingCleared_;}
@@ -46,21 +59,25 @@ private Q_SLOTS:
 	void slotContextMenu(const QPoint&);
 	void currentTabChanged(int index);
 	void tabMoved(int from,int to);
+    void slotTabList();
 
 Q_SIGNALS:
     void currentIndexChanged(int);
-	void newTabRequested();
+    void newTabRequested();
+    void tabRemoved();
 
 protected:
 	//virtual MvQContextItemSet* cmSet()=0;
 	virtual void tabBarCommand(QString,int)=0;
 
 private:
-	QSize maxIconSize() const;
-
+#if 0
+    QSize maxIconSize() const;
+#endif
 	QTabBar *bar_;
 	QStackedWidget *stacked_;
-	QToolButton* addTb_;
+    QToolButton* addTb_;
+    QToolButton* tabListTb_;
 	bool beingCleared_;
 };
 
diff --git a/Viewer/src/TableFilterWidget.cpp b/Viewer/src/TableFilterWidget.cpp
index 8bfc4a4..8c03ad8 100644
--- a/Viewer/src/TableFilterWidget.cpp
+++ b/Viewer/src/TableFilterWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -16,8 +16,9 @@
 #include "FilterWidget.hpp"
 #include "NodeFilterDialog.hpp"
 #include "NodeQuery.hpp"
+#include "NodeQueryOption.hpp"
 #include "ServerFilter.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VFilter.hpp"
 
 #include <assert.h>
@@ -50,7 +51,7 @@ void TableFilterWidget::slotEdit()
 	if(d.exec() == QDialog::Accepted)
 	{
 		filterDef_->setQuery(d.query());
-		UserMessage::message(UserMessage::DBG,false,"new table query: " + filterDef_->query()->query().toStdString());
+        UiLog().dbg() << "new table query: " << filterDef_->query()->query();
 	}
 }
 
@@ -68,7 +69,7 @@ void TableFilterWidget::build(NodeFilterDef* def,ServerFilter *sf)
 void TableFilterWidget::slotDefChanged()
 {
 	QColor bg(240,240,240);
-	queryTe_->setHtml(filterDef_->query()->extQueryHtml(false,bg,0));
+    queryTe_->setHtml(filterDef_->query()->sqlQuery());
 }
 
 void TableFilterWidget::slotHeaderFilter(QString column,QPoint globalPos)
@@ -80,14 +81,23 @@ void TableFilterWidget::slotHeaderFilter(QString column,QPoint globalPos)
 		//stateFilterMenu_=new StateFilterMenu(menuState,filter_->menu());
 
 		NodeStateFilter sf;
-		sf.setCurrent(q->stateSelection());
-		VParamFilterMenu* sfm= new VParamFilterMenu(menu,&sf,"Status filter",
-				          VParamFilterMenu::FilterMode,VParamFilterMenu::ColourDecor);
+        NodeQueryListOption* op=q->stateOption();
+        Q_ASSERT(op);
+        //if(!op->selection().isEmpty())
+        sf.setCurrent(op->selection());
+
+        VParamFilterMenu* sfm= new VParamFilterMenu(menu,&sf,"Status filter",
+                          VParamFilterMenu::FilterMode,VParamFilterMenu::ColourDecor);
 
 		if(menu->exec(globalPos) != NULL)
 		{
-			q->setStateSelection(sf.currentAsList());
-			filterDef_->setQuery(q);
+            //if(sf.isComplete())
+            //   op->setSelection(QStringList());
+            //else
+                op->setSelection(sf.currentAsList());
+
+            //this will create deep copy so we can delet q in the end
+            filterDef_->setQuery(q);
 		}
 
 		delete menu;
diff --git a/Viewer/src/TableNodeModel.cpp b/Viewer/src/TableNodeModel.cpp
index 1147139..4fb27bb 100644
--- a/Viewer/src/TableNodeModel.cpp
+++ b/Viewer/src/TableNodeModel.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,12 +9,12 @@
 
 #include "TableNodeModel.hpp"
 
-#include <QDebug>
 #include <QMetaMethod>
 
 #include "ModelColumn.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
+#include "VAttribute.hpp"
 #include "VFilter.hpp"
 #include "VIcon.hpp"
 #include "VModelData.hpp"
@@ -41,6 +41,16 @@ TableNodeModel::TableNodeModel(ServerFilter* serverFilter,NodeFilterDef* filterD
 
     Q_ASSERT(columns_);
 
+    //Check the mapping between the enum and column ids
+    Q_ASSERT(columns_->id(PathColumn) == "path");
+    Q_ASSERT(columns_->id(StatusColumn) == "status");
+    Q_ASSERT(columns_->id(TypeColumn) == "type");
+    Q_ASSERT(columns_->id(TriggerColumn) == "trigger");
+    Q_ASSERT(columns_->id(LabelColumn) == "label");
+    Q_ASSERT(columns_->id(EventColumn) == "event");
+    Q_ASSERT(columns_->id(MeterColumn) == "meter");
+    Q_ASSERT(columns_->id(StatusChangeColumn) == "statusChange");
+
 	//Create the data handler for the model.
 	data_=new VTableModelData(filterDef,this);
 
@@ -99,7 +109,7 @@ QVariant TableNodeModel::data( const QModelIndex& index, int role ) const
 	//the cases where the default should be used.
 	if( !index.isValid() ||
        (role != Qt::DisplayRole && role != Qt::ToolTipRole &&
-        role != Qt::BackgroundRole && role != IconRole))
+        role != Qt::BackgroundRole && role != IconRole && role != SortRole))
     {
 		return QVariant();
 	}
@@ -114,30 +124,40 @@ QVariant TableNodeModel::nodeData(const QModelIndex& index, int role) const
 	if(!vnode || !vnode->node())
 		return QVariant();
 
+    ColumnType id=static_cast<ColumnType>(index.column());
+
 	if(role == Qt::DisplayRole)
 	{
-        QString id=columns_->id(index.column());
+        //QString id=columns_->id(index.column());
 
-		if(id == "path")
+        if(id == PathColumn)
         {   return QString::fromStdString(vnode->absNodePath());
         }
-        else if(id == "status")
+        else if(id == StatusColumn)
 			return vnode->stateName();
-		else if(id == "type")
+        else if(id == TypeColumn)
 			return QString::fromStdString(vnode->nodeType());
 
 		//Attributes
-		else if(id == "event" || id == "label" || id == "meter" || id == "trigger")
+        else if(id == EventColumn || id == LabelColumn || id == MeterColumn ||
+                id == TriggerColumn)
 		{
 			QStringList lst;
-			if(vnode->getAttributeData(id.toStdString(),0,lst))
+            if(vnode->getAttributeData(columns_->id(index.column()).toStdString(),0,lst))
 				return lst;
 			else
 				return QVariant();
 		}
 
-        else if(id == "icon")
-            return VIcon::pixmapList(vnode,0);
+        else if(id == StatusChangeColumn)
+        {
+            QString s;
+            vnode->statusChangeTime(s);
+            return s;
+        }
+
+        //else if(id == "icon")
+        //    return VIcon::pixmapList(vnode,0);
 	}
 	else if(role == Qt::BackgroundRole)
 	{
@@ -145,11 +165,18 @@ QVariant TableNodeModel::nodeData(const QModelIndex& index, int role) const
 	}
 	else if(role == IconRole)
 	{
-		if(columns_->id(index.column()) =="path")
+        if(id == PathColumn)
 			return VIcon::pixmapList(vnode,0);
 		else
 			return QVariant();
 	}
+    else if(role == SortRole)
+    {
+        if(id == StatusChangeColumn)
+        {
+            return vnode->statusChangeTime();
+        }
+    }
 
 	return QVariant();
 }
@@ -235,6 +262,66 @@ QModelIndex TableNodeModel::nodeToIndex(VTableServer* server,const VNode* node,
 	return QModelIndex();
 }
 
+QModelIndex TableNodeModel::attributeToIndex(const VAttribute* a, int column) const
+{
+    if(!a)
+        return QModelIndex();
+
+    VNode* node=a->parent();
+    if(!node)
+        return QModelIndex();
+
+    int row=0;
+    if((row=data_->position(node)) != -1)
+    {
+        return createIndex(row,column,const_cast<VNode*>(node));
+    }
+    return QModelIndex();
+}
+
+QModelIndex TableNodeModel::forceShowNode(const VNode* node) const
+{
+    if(!node)
+        return QModelIndex();
+
+    Q_ASSERT(node);
+    Q_ASSERT(!node->isServer());
+    Q_ASSERT(node->server());
+
+    if(VModelServer *mserver=data_->server(node->server()))
+    {
+        VTableServer* server=mserver->tableServer();
+        server->setForceShowNode(node);
+        return nodeToIndex(node);
+    }
+
+    return QModelIndex();
+}
+
+QModelIndex TableNodeModel::forceShowAttribute(const VAttribute* a) const
+{
+    Q_ASSERT(a);
+    VNode* node=a->parent();
+    Q_ASSERT(node);
+
+    return forceShowNode(const_cast<VNode*>(node));
+}
+
+void TableNodeModel::selectionChanged(QModelIndexList lst)
+{
+    Q_FOREACH(QModelIndex idx,lst)
+    {
+        VInfo_ptr info=nodeInfo(idx);
+
+        for(int i=0; i < data_->count(); i++)
+        {
+           VTableServer *ts=data_->server(i)->tableServer();
+           Q_ASSERT(ts);
+           ts->clearForceShow(info->item());
+        }
+    }
+}
+
 VInfo_ptr TableNodeModel::nodeInfo(const QModelIndex& index)
 {
 	VNode *n=indexToNode(index);
@@ -247,7 +334,6 @@ VInfo_ptr TableNodeModel::nodeInfo(const QModelIndex& index)
 	return info;
 }
 
-
 //Server is about to be added
 void TableNodeModel::slotServerAddBegin(int /*row*/)
 {
@@ -306,7 +392,8 @@ void TableNodeModel::slotBeginServerScan(VModelServer* server,int num)
     Q_ASSERT(server);
 
 #ifdef _UI_TABLENODEMODEL_DEBUG
-     UserMessage::debug("TableNodeModel::slotBeginServerScan --> " + server->realServer()->name() + " " + QString::number(num).toStdString());
+     UiLog().dbg() << "TableNodeModel::slotBeginServerScan --> " << server->realServer()->name() <<
+                      " " << num;
 #endif
 
 	if(num >0)
@@ -322,7 +409,8 @@ void TableNodeModel::slotEndServerScan(VModelServer* server,int num)
 	assert(active_ == true);
 
 #ifdef _UI_TABLENODEMODEL_DEBUG
-     UserMessage::debug("TableNodeModel::slotEndServerScan --> " + server->realServer()->name() + " " + QString::number(num).toStdString());
+     UiLog().dbg() << "TableNodeModel::slotEndServerScan --> " << server->realServer()->name() <<
+                      " " << num;
      QTime t;
      t.start();
 #endif
@@ -331,8 +419,8 @@ void TableNodeModel::slotEndServerScan(VModelServer* server,int num)
 		endInsertRows();
 
 #ifdef _UI_TABLENODEMODEL_DEBUG
-     UserMessage::debug("  elapsed: " + QString::number(t.elapsed()).toStdString() + " ms");
-     UserMessage::debug("<-- TableNodeModel::slotEndServerScan");
+     UiLog().dbg() << "  elapsed: " << t.elapsed() << " ms";
+     UiLog().dbg() << "<-- slotEndServerScan";
 
      //qDebug() << "hit" << hitCount;
 #endif
diff --git a/Viewer/src/TableNodeModel.hpp b/Viewer/src/TableNodeModel.hpp
index ac2d87a..b245ad0 100644
--- a/Viewer/src/TableNodeModel.hpp
+++ b/Viewer/src/TableNodeModel.hpp
@@ -42,8 +42,15 @@ public:
    	QModelIndex parent (const QModelIndex & ) const;
 
    	VInfo_ptr nodeInfo(const QModelIndex&);
+    void selectionChanged(QModelIndexList lst);
 
    	VModelData* data() const;
+    ModelColumn* columns() const {return columns_;}
+
+    //To speed up identifying a column. The mapping here must match the definition of
+    //"table_columns" in ecflowview_view_conf.json !!!
+    enum ColumnType {PathColumn=0,StatusColumn=1,TypeColumn=2,TriggerColumn=3,
+                     LabelColumn=4, EventColumn=5, MeterColumn=6, StatusChangeColumn=7};
 
 public Q_SLOTS:
     void slotServerAddBegin(int);
@@ -73,11 +80,16 @@ protected:
 	QModelIndex serverToIndex(ServerHandler*) const {return QModelIndex();}
 
     QModelIndex nodeToIndex(VTableServer* server,const VNode* node, int column) const;
-   	QModelIndex nodeToIndex(const VNode*,int column=0) const;
-	VNode* indexToNode( const QModelIndex & index) const;
+    QModelIndex nodeToIndex(const VNode*,int column=0) const;
+    VNode* indexToNode( const QModelIndex & index) const;
+
+    QModelIndex attributeToIndex(const VAttribute* a, int column=0) const;
 
 	QVariant nodeData(const QModelIndex& index,int role) const;
 
+    QModelIndex forceShowNode(const VNode* node) const;
+    QModelIndex forceShowAttribute(const VAttribute* a) const;
+
 	VTableModelData* data_;
 	ModelColumn* columns_;
 };
diff --git a/Viewer/src/TableNodeSortModel.cpp b/Viewer/src/TableNodeSortModel.cpp
index c33bf94..1c75f06 100644
--- a/Viewer/src/TableNodeSortModel.cpp
+++ b/Viewer/src/TableNodeSortModel.cpp
@@ -10,6 +10,7 @@
 #include "TableNodeSortModel.hpp"
 
 #include "TableNodeModel.hpp"
+#include "ModelColumn.hpp"
 
 TableNodeSortModel::TableNodeSortModel(TableNodeModel* nodeModel,QObject *parent) :
 		QSortFilterProxyModel(parent),
@@ -42,9 +43,27 @@ QModelIndex TableNodeSortModel::nodeToIndex(const VNode *node)
 	return mapFromSource(nodeModel_->nodeToIndex(node));
 }
 
+void TableNodeSortModel::selectionChanged(QModelIndexList lst)
+{
+    QModelIndexList lstm;
+    Q_FOREACH(QModelIndex idx,lst)
+        lstm << mapToSource(idx);
+
+    nodeModel_->selectionChanged(lstm);
+}
+
+
 bool TableNodeSortModel::lessThan(const QModelIndex &left,
                                   const QModelIndex &right) const
 {
+    TableNodeModel::ColumnType id=static_cast<TableNodeModel::ColumnType>(left.column());
+
+    if(id == TableNodeModel::StatusChangeColumn)
+    {
+        return left.data(AbstractNodeModel::SortRole).toUInt() <
+               right.data(AbstractNodeModel::SortRole).toUInt();
+    }
+
     QVariant leftData = nodeModel_->data(left);
     QVariant rightData = nodeModel_->data(right);
 
diff --git a/Viewer/src/TableNodeSortModel.hpp b/Viewer/src/TableNodeSortModel.hpp
index 7fd9619..ba55548 100644
--- a/Viewer/src/TableNodeSortModel.hpp
+++ b/Viewer/src/TableNodeSortModel.hpp
@@ -29,7 +29,8 @@ public:
 
 	VInfo_ptr nodeInfo(const QModelIndex&);
 	QModelIndex infoToIndex(VInfo_ptr);
-	QModelIndex nodeToIndex(const VNode *node);
+    QModelIndex nodeToIndex(const VNode *node);
+    void selectionChanged(QModelIndexList lst);
 
 protected:
     bool lessThan(const QModelIndex &left,
diff --git a/Viewer/src/TableNodeView.cpp b/Viewer/src/TableNodeView.cpp
index ce16512..98c5c3b 100644
--- a/Viewer/src/TableNodeView.cpp
+++ b/Viewer/src/TableNodeView.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -28,17 +28,22 @@
 #include "PropertyMapper.hpp"
 #include "TableNodeModel.hpp"
 #include "TableNodeViewDelegate.hpp"
+#include "UiLog.hpp"
 #include "VFilter.hpp"
 #include "VSettings.hpp"
 
+#define _UI_TABLENODEVIEW_DEBUG
+
 TableNodeView::TableNodeView(TableNodeSortModel* model,NodeFilterDef* filterDef,QWidget* parent) :
      QTreeView(parent),
      NodeViewBase(filterDef),
      model_(model),
 	 needItemsLayout_(false),
-	 prop_(NULL)
+     prop_(NULL),
+     setCurrentIsRunning_(false)
 {
-	setProperty("style","nodeView");
+    setObjectName("view");
+    setProperty("style","nodeView");
 	setProperty("view","table");
 
 	setRootIsDecorated(false);
@@ -67,9 +72,6 @@ TableNodeView::TableNodeView(TableNodeSortModel* model,NodeFilterDef* filterDef,
 		                this, SLOT(slotContextMenu(const QPoint &)));
 
 	//Selection
-	connect(this,SIGNAL(clicked(const QModelIndex&)),
-			this,SLOT(slotSelectItem(const QModelIndex)));
-
 	connect(this,SIGNAL(doubleClicked(const QModelIndex&)),
 			this,SLOT(slotDoubleClickItem(const QModelIndex)));
 
@@ -133,17 +135,20 @@ QWidget* TableNodeView::realWidget()
 	return this;
 }
 
+
 //Collects the selected list of indexes
 QModelIndexList TableNodeView::selectedList()
 {
-  	QModelIndexList lst;
-  	Q_FOREACH(QModelIndex idx,selectedIndexes())
-	  	if(idx.column() == 0)
-		  	lst << idx;
-	return lst;
+    QModelIndexList lst;
+    Q_FOREACH(QModelIndex idx,selectedIndexes())
+        if(idx.column() == 0)
+            lst << idx;
+    return lst;
 }
 
-void TableNodeView::slotSelectItem(const QModelIndex&)
+
+// reimplement virtual function from QTreeView - called when the selection is changed
+void TableNodeView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
 {
 	QModelIndexList lst=selectedIndexes();
 	if(lst.count() > 0)
@@ -151,9 +156,17 @@ void TableNodeView::slotSelectItem(const QModelIndex&)
 		VInfo_ptr info=model_->nodeInfo(lst.front());
 		if(info && !info->isEmpty())
 		{
+#ifdef _UI_TABLENODEVIEW_DEBUG
+            UiLog().dbg() << "TableNodeView::selectionChanged --> emit=" << info->path();
+#endif
 			Q_EMIT selectionChanged(info);
 		}
 	}
+	QTreeView::selectionChanged(selected, deselected);
+
+    //The model has to know about the selection in order to manage the
+    //nodes that are forced to be shown
+    model_->selectionChanged(lst);
 }
 
 VInfo_ptr TableNodeView::currentSelection()
@@ -166,6 +179,26 @@ VInfo_ptr TableNodeView::currentSelection()
 	return VInfo_ptr();
 }
 
+void TableNodeView::setCurrentSelection(VInfo_ptr info)
+{
+    //While the current is being selected we do not allow
+    //another setCurrent call go through
+    if(setCurrentIsRunning_)
+        return;
+
+    setCurrentIsRunning_=true;
+    QModelIndex idx=model_->infoToIndex(info);
+    if(idx.isValid())
+    {
+#ifdef _UI_TABLENODEVIEW_DEBUG
+    if(info)
+        UiLog().dbg() << "TableNodeView::setCurrentSelection --> " <<  info->path();
+#endif
+        setCurrentIndex(idx);
+    }
+    setCurrentIsRunning_=false;
+}
+
 void TableNodeView::slotDoubleClickItem(const QModelIndex&)
 {
 }
@@ -264,11 +297,16 @@ void TableNodeView::notifyChange(VProperty* p)
 
 void TableNodeView::slotHeaderContextMenu(const QPoint &position)
 {
-	int section=header_->logicalIndexAt(position);
+    int section=header_->logicalIndexAt(position);
 
 	if(section< 0 || section >= header_->count())
 		return;
 
+    int visCnt=0;
+    for(int i=0; i <header_->count(); i++)
+        if(!header_->isSectionHidden(i))
+            visCnt++;
+
 	QList<QAction*> lst;
 	QMenu *menu=new QMenu(this);
 	QAction *ac;
@@ -281,20 +319,17 @@ void TableNodeView::slotHeaderContextMenu(const QPoint &position)
 		ac->setCheckable(true);
 		ac->setData(i);
 
-		if(i==0)
-		{
-		  	ac->setChecked(true);
-			ac->setEnabled(false);
-		}
-		else
-		{
-			ac->setChecked(!(header_->isSectionHidden(i)));
-		}
+        bool vis=!header_->isSectionHidden(i);
+        ac->setChecked(vis);
+
+        if(vis && visCnt <=1)
+        {
+            ac->setEnabled(false);
+        }
 
 		menu->addAction(ac);
 	}
 
-
 	//stateFilterMenu_=new StateFilterMenu(menuState,filter_->menu());
 	//VParamFilterMenu stateFilterMenu(menu,filterDef_->nodeState(),VParamFilterMenu::ColourDecor);
 
@@ -303,31 +338,76 @@ void TableNodeView::slotHeaderContextMenu(const QPoint &position)
 	{
 	  	int i=ac->data().toInt();
 	  	header_->setSectionHidden(i,!ac->isChecked());
-		//MvQDesktopSettings::headerVisible_[i]=ac->isChecked();
-		//broadcastHeaderChange();
 	}
 	delete menu;
 }
 
 void TableNodeView::readSettings(VSettings* vs)
 {
-	std::vector<std::string> array;
-	vs->get("columns",array);
+    vs->beginGroup("column");
 
-	for(std::vector<std::string>::const_iterator it = array.begin(); it != array.end(); ++it)
-	{
-		std::string id=*it;
-		for(int i=0; i < model_->columnCount(QModelIndex()); i++)
-		{
-			if(model_->headerData(i,Qt::Horizontal,Qt::UserRole).toString().toStdString() == id)
-			{
-				header()->setSectionHidden(i,false);
-				break;
-			}
-		}
-	}
+    std::vector<std::string> orderVec;
+    std::vector<int> visVec, wVec;
+
+    vs->get("order",orderVec);
+    vs->get("visible",visVec);
+    vs->get("width",wVec);
+
+    vs->endGroup();
+
+    if(orderVec.size() != visVec.size() || orderVec.size() != wVec.size())
+        return;
+
+    for(size_t i=0; i < orderVec.size(); i++)
+    {
+        std::string id=orderVec[i];
+        for(int j=0; j < model_->columnCount(QModelIndex()); j++)
+        {
+            if(model_->headerData(j,Qt::Horizontal,Qt::UserRole).toString().toStdString() == id)
+            {
+                if(visVec[i] == 0)
+                    header()->setSectionHidden(j,true);               
+
+                else if(wVec[i] > 0)
+                    setColumnWidth(j,wVec[i]);
+
+                break;
+            }
+        }
+    }
+
+    if(header_->count() > 0)
+    {
+        int visCnt=0;
+        for(int i=0; i < header_->count(); i++)
+            if(!header_->isSectionHidden(i))
+                visCnt++;
+
+        if(visCnt==0)
+            header()->setSectionHidden(0,false);
+    }
 }
 
+void TableNodeView::writeSettings(VSettings* vs)
+{
+    vs->beginGroup("column");
+
+    std::vector<std::string> orderVec;
+    std::vector<int> visVec, wVec;
+    for(int i=0; i < model_->columnCount(QModelIndex()); i++)
+    {
+        std::string id=model_->headerData(i,Qt::Horizontal,Qt::UserRole).toString().toStdString();
+        orderVec.push_back(id);
+        visVec.push_back((header()->isSectionHidden(i))?0:1);
+        wVec.push_back(columnWidth(i));
+    }
+
+    vs->put("order",orderVec);
+    vs->put("visible",visVec);
+    vs->put("width",wVec);
+
+    vs->endGroup();
+}
 
 //=========================================
 // TableNodeHeader
diff --git a/Viewer/src/TableNodeView.hpp b/Viewer/src/TableNodeView.hpp
index 877f40b..756de60 100644
--- a/Viewer/src/TableNodeView.hpp
+++ b/Viewer/src/TableNodeView.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -41,16 +41,16 @@ public:
 	void rerender();
 	QWidget* realWidget();
 	VInfo_ptr currentSelection();
-    void currentSelection(VInfo_ptr n) {}
+    void setCurrentSelection(VInfo_ptr n);
 	void selectFirstServer() {}
 	void setModel(TableNodeSortModel *model);
 
 	void notifyChange(VProperty* p);
 
-	void readSettings(VSettings* vs);
+    void readSettings(VSettings*);
+    void writeSettings(VSettings*);
 
 public Q_SLOTS:
-	void slotSelectItem(const QModelIndex&);
 	void slotDoubleClickItem(const QModelIndex&);
 	void slotContextMenu(const QPoint &position);
 	void slotViewCommand(std::vector<VInfo_ptr>,QString);
@@ -58,7 +58,6 @@ public Q_SLOTS:
 	void slotSizeHintChangedGlobal();
     void slotRerender();
     void slotViewCommand(VInfo_ptr,QString) {}
-    void slotSetCurrent(VInfo_ptr) {}
 
 Q_SIGNALS:
 	void selectionChanged(VInfo_ptr);
@@ -70,12 +69,14 @@ protected:
 	QModelIndexList selectedList();
 	void handleContextMenu(QModelIndex indexClicked,QModelIndexList indexLst,QPoint globalPos,QPoint widgetPos,QWidget *widget);
 	void adjustBackground(QColor col);
+	void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
 
     TableNodeSortModel* model_;
 	ActionHandler* actionHandler_;
 	TableNodeHeader* header_;
 	bool needItemsLayout_;
 	PropertyMapper* prop_;
+    bool setCurrentIsRunning_;
 };
 
 class TableNodeHeaderButton
diff --git a/Viewer/src/TableNodeViewDelegate.cpp b/Viewer/src/TableNodeViewDelegate.cpp
index ebc0a31..c0c936c 100644
--- a/Viewer/src/TableNodeViewDelegate.cpp
+++ b/Viewer/src/TableNodeViewDelegate.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -234,8 +234,7 @@ void TableNodeViewDelegate::renderNode(QPainter *painter,const QModelIndex& inde
 	painter->setFont(font_);
 	painter->drawText(textRect,Qt::AlignLeft | Qt::AlignVCenter,text);
 
-
-	if(selected)
+    if(selected)
 	{
 		painter->setPen(nodeSelectPen_);
 		QRect selRect=textRect.adjusted(-2,0,2,0);
diff --git a/Viewer/src/TableNodeWidget.cpp b/Viewer/src/TableNodeWidget.cpp
index c6d0dbf..d1562ed 100644
--- a/Viewer/src/TableNodeWidget.cpp
+++ b/Viewer/src/TableNodeWidget.cpp
@@ -1,6 +1,6 @@
 /***************************** LICENSE START ***********************************
 
- Copyright 2015 ECMWF and INPE. This software is distributed under the terms
+ Copyright 2016 ECMWF and INPE. This software is distributed under the terms
  of the Apache License version 2.0. In applying this license, ECMWF does not
  waive the privileges and immunities granted to it by virtue of its status as
  an Intergovernmental Organization or submit itself to any jurisdiction.
@@ -23,6 +23,7 @@
 #include "TableNodeView.hpp"
 #include "VFilter.hpp"
 #include "VSettings.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include <QHBoxLayout>
 
@@ -67,8 +68,8 @@ TableNodeWidget::TableNodeWidget(ServerFilter* serverFilter,QWidget * parent) :
 	connect(view_->realWidget(),SIGNAL(dashboardCommand(VInfo_ptr,QString)),
 			this,SIGNAL(dashboardCommand(VInfo_ptr,QString)));
 
-    connect(bcWidget_,SIGNAL(selected(VInfo_ptr)),
-            view_->realWidget(),SLOT(slotSetCurrent(VInfo_ptr)));
+    connect(bcWidget_,SIGNAL(selected(VInfo_ptr)),           
+            this,SLOT(slotSelectionChangedInBc(VInfo_ptr)));
 
     connect(view_->realWidget(),SIGNAL(headerButtonClicked(QString,QPoint)),
     		filterW_,SLOT(slotHeaderFilter(QString,QPoint)));
@@ -90,6 +91,8 @@ TableNodeWidget::TableNodeWidget(ServerFilter* serverFilter,QWidget * parent) :
 
 	//The node status filter is exposed via a menu. So we need a reference to it.
 	states_=filterDef_->nodeState();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 TableNodeWidget::~TableNodeWidget()
@@ -104,15 +107,18 @@ void TableNodeWidget::populateDockTitleBar(DashboardDockTitleWidget* tw)
 	menu->setTearOffEnabled(true);
 
 	menu->addAction(actionBreadcrumbs);
-	QMenu *menuState=menu->addMenu(tr("Status"));
 
+#if 0
+    QMenu *menuState=menu->addMenu(tr("Status"));
 	menuState->setTearOffEnabled(true);
 
 	//stateFilterMenu_=new StateFilterMenu(menuState,filter_->menu());
 	stateFilterMenu_=new VParamFilterMenu(menuState,states_,"Status filter",
-			        VParamFilterMenu::FilterMode,VParamFilterMenu::ColourDecor);
+                    //VParamFilterMenu::FilterMode,VParamFilterMenu::ColourDecor);
+                     VParamFilterMenu::ShowMode,VParamFilterMenu::ColourDecor);
 
-	//Sets the menu on the toolbutton
+#endif
+    //Sets the menu on the toolbutton
 	tw->optionsTb()->setMenu(menu);
 
 	//Sets the title
@@ -135,7 +141,8 @@ void TableNodeWidget::slotSelectionChangedInView(VInfo_ptr info)
 {
     updateActionState(info);
     bcWidget_->setPath(info);
-    Q_EMIT selectionChanged(info);
+    if(broadcastSelection())
+        Q_EMIT selectionChanged(info);
 }
 
 void TableNodeWidget::on_actionBreadcrumbs_triggered(bool b)
@@ -143,17 +150,14 @@ void TableNodeWidget::on_actionBreadcrumbs_triggered(bool b)
 	if(b)
 	{
 		bcWidget_->active(true);
-		bcWidget_->setPath(view_->currentSelection());
+        bcWidget_->setPath(view_->currentSelection());
 	}
 	else
 	{
 		bcWidget_->active(false);
 	}
-
-	//bcWidget_->clear();
 }
 
-
 void TableNodeWidget::rerender()
 {
 	bcWidget_->rerender();
@@ -171,8 +175,9 @@ void TableNodeWidget::writeSettings(VSettings* vs)
 	states_->writeSettings(vs);
 	filterDef_->writeSettings(vs);
 
-	//atts_->writeSettings(vs);
-	//icons_->writeSettings(vs);
+    view_->writeSettings(vs);
+
+    DashboardWidget::writeSettings(vs);
 }
 
 void TableNodeWidget::readSettings(VSettings* vs)
@@ -184,8 +189,6 @@ void TableNodeWidget::readSettings(VSettings* vs)
 	//This will not emit the changed signal. So the "observers" will
 	//not notice the change.
 	states_->readSettings(vs);
-	//atts_->readSettings(vs);
-	//icons_->readSettings(vs);
 	filterDef_->readSettings(vs);
 
 	//The model at this point is inactive (not using its data). We make it active:
@@ -204,197 +207,12 @@ void TableNodeWidget::readSettings(VSettings* vs)
 	//This will not emit the trigered signal of the action!!
 	actionBreadcrumbs->setChecked(bcWidget_->active());
 
-	//attrFilterMenu_->reload();
-	//iconFilterMenu_->reload();
-	stateFilterMenu_->reload();
+    view_->readSettings(vs);
 
+    DashboardWidget::readSettings(vs);
 }
 
 
 
 
 
-
-
-
-
-
-
-
-
-/*
-
-#include "TreeNodeWidget.hpp"
-
-
-#include "NodeViewBase.hpp"
-
-#include "AbstractNodeModel.hpp"
-#include "NodeFilterModel.hpp"
-#include "NodePathWidget.hpp"
-#include "TreeNodeModel.hpp"
-#include "TreeNodeView.hpp"
-#include "VFilter.hpp"
-#include "VModelData.hpp"
-#include "VSettings.hpp"
-
-#include "FilterWidget.hpp"
-
-TreeNodeWidget::TreeNodeWidget(ServerFilter* servers,QWidget* parent) : NodeWidget(parent)
-{
-	//Init qt-creator form
-	setupUi(this);
-
-	//Define the icon filter for the model. It controls what icons
-	//are displayed next to the nodes. This is exposed via a menu.
-	icons_=new IconFilter;
-
-	//Define the attribute filter for the model. It controls what attributes
-	//are displayed for a given node. This is exposed via a menu.
-	atts_=new AttributeFilter;
-
-	//This defines how to filter the nodes in the tree. We only want to filter according to node status.
-	NodeFilterDef *filterDef_=new NodeFilterDef(NodeFilterDef::NodeState);
-
-	//The node status filter is exposed via a menu. So we need a reference to it.
-	states_=filterDef_->nodeState();
-
-	//Create the data handler for the tree model.
-	data_=new VModelData(servers,filterDef_,VModelData::TreeModel);
-
-	//Create the tree model. It uses the datahandler to access the data.
-	model_=new TreeNodeModel(data_,atts_,icons_,parent);
-
-	//Create a filter model for the tree.
-	filterModel_=new NodeFilterModel(model_,parent);
-
-	//Set the model on the view.
-	viewWidget_->setModel(filterModel_);
-
-	//Store the pointer to the (non-QObject) base class of the view!!!
-	view_=viewWidget_;
-
-	//Signals-slots
-
-	connect(view_->realWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
-	    		bcWidget_,SLOT(setPath(VInfo_ptr)));
-
-	connect(bcWidget_,SIGNAL(selected(VInfo_ptr)),
-			view_->realWidget(),SLOT(slotSetCurrent(VInfo_ptr)));
-
-	connect(view_->realWidget(),SIGNAL(selectionChanged(VInfo_ptr)),
-			this,SIGNAL(selectionChanged(VInfo_ptr)));
-
-	connect(model_,SIGNAL(clearBegun(const VNode*)),
-			view_->realWidget(),SLOT(slotSaveExpand(const VNode*)));
-
-	connect(model_,SIGNAL(scanEnded(const VNode*)),
-				view_->realWidget(),SLOT(slotRestoreExpand(const VNode*)));
-
-	connect(data_,SIGNAL(rerender()),
-				view_->realWidget(),SLOT(slotRerender()));
-
-	//Builds the menu for the settings tool button
-	QMenu *menu=new QMenu(this);
-	menu->setTearOffEnabled(true);
-
-	menu->addAction(actionBreadcrumbs);
-	QMenu *menuState=menu->addMenu(tr("Status"));
-	QMenu *menuType=menu->addMenu(tr("Attribute"));
-	QMenu *menuIcon=menu->addMenu(tr("Icon"));
-
-	menuState->setTearOffEnabled(true);
-	menuType->setTearOffEnabled(true);
-	menuIcon->setTearOffEnabled(true);
-
-	//stateFilterMenu_=new StateFilterMenu(menuState,filter_->menu());
-	attrFilterMenu_=new VParamFilterMenu(menuType,atts_);
-	iconFilterMenu_=new VParamFilterMenu(menuIcon,icons_);
-	stateFilterMenu_=new VParamFilterMenu(menuState,states_,VParamFilterMenu::ColourDecor);
-
-	//Sets the menu on the toolbutton
-	viewTb->setMenu(menu);
-
-
-	//This will not emit the trigered signal of the action!!
-	//Synchronise the action and the breadcrumbs state
-	actionBreadcrumbs->setChecked(bcWidget_->active());
-
-}
-
-void TreeNodeWidget::on_actionBreadcrumbs_triggered(bool b)
-{
-	if(b)
-	{
-		bcWidget_->active(true);
-		bcWidget_->setPath(view_->currentSelection());
-	}
-	else
-	{
-		bcWidget_->active(false);
-	}
-
-	//bcWidget_->clear();
-}
-
-bool TreeNodeWidget::selectFirstServerInView()
-{
-	view_->selectFirstServer();
-	return true;
-}
-
-
-void TreeNodeWidget::writeSettings(VSettings* vs)
-{
-	vs->put("type",std::string("tree"));
-	vs->put("dockId",id_);
-
-	bcWidget_->writeSettings(vs);
-
-	states_->writeSettings(vs);
-	atts_->writeSettings(vs);
-	icons_->writeSettings(vs);
-}
-
-void TreeNodeWidget::readSettings(VSettings* vs)
-{
-	std::string type=vs->get<std::string>("type","");
-	if(type != "tree")
-		return;
-
-	//This will not emit the changed signal. So the "observers" will
-	//not notice the change.
-	states_->readSettings(vs);
-	atts_->readSettings(vs);
-	icons_->readSettings(vs);
-
-	//The model at this point is inactive (not using its data). We make it active:
-	//	-it will instruct its data provider to filter the data according
-	//   to the current settings
-	//	-it will load and display the data
-	model_->active(true);
-
-	//--------------------------
-	//Breadcrumbs
-	//--------------------------
-
-	bcWidget_->readSettings(vs);
-
-	//Synchronise the action and the breadcrumbs state
-	//This will not emit the trigered signal of the action!!
-	actionBreadcrumbs->setChecked(bcWidget_->active());
-
-	attrFilterMenu_->reload();
-	iconFilterMenu_->reload();
-	stateFilterMenu_->reload();
-}
-
-
-*/
-
-
-
-
-
-
-
diff --git a/Viewer/src/TableNodeWidget.hpp b/Viewer/src/TableNodeWidget.hpp
index a197bd6..491a6c3 100644
--- a/Viewer/src/TableNodeWidget.hpp
+++ b/Viewer/src/TableNodeWidget.hpp
@@ -37,6 +37,9 @@ protected Q_SLOTS:
 	void on_actionBreadcrumbs_triggered(bool b);
     void slotSelectionChangedInView(VInfo_ptr info);
 
+protected:
+    void detachedChanged() {}
+
 private:
     TableNodeSortModel *sortModel_;
     VParamFilterMenu *stateFilterMenu_;
diff --git a/Viewer/src/TextEditSearchLine.cpp b/Viewer/src/TextEditSearchLine.cpp
index 6c0cfb6..65835f6 100644
--- a/Viewer/src/TextEditSearchLine.cpp
+++ b/Viewer/src/TextEditSearchLine.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -24,7 +24,8 @@
 
 TextEditSearchLine::TextEditSearchLine(QWidget *parent) :
 	AbstractSearchLine(parent),
-	interface_(0)
+	interface_(0),
+	lastFindSuccessful_(false)
 {
 	connect(matchModeCb_,SIGNAL(currentIndexChanged(int)),
 		this, SLOT(matchModeChanged(int)));
@@ -40,10 +41,11 @@ void TextEditSearchLine::setSearchInterface(AbstractTextEditSearchInterface *e)
 	interface_=e;
 }
 
-bool TextEditSearchLine::findString (QString str, bool highlightAll, QTextDocument::FindFlags extraFlags, bool gotoStartOfWord, int iteration)
+bool TextEditSearchLine::findString (QString str, bool highlightAll, QTextDocument::FindFlags extraFlags, QTextCursor::MoveOperation move, int iteration)
 {
 	QTextDocument::FindFlags flags = findFlags() | extraFlags;
-	return interface_->findString(str,highlightAll,flags,gotoStartOfWord,iteration,matchModeCb_->currentMatchMode());
+	lastFindSuccessful_ = interface_->findString(str,highlightAll,flags,move,iteration,matchModeCb_->currentMatchMode());
+	return lastFindSuccessful_;
 }
 
 void TextEditSearchLine::highlightMatches(QString txt)
@@ -53,7 +55,7 @@ void TextEditSearchLine::highlightMatches(QString txt)
 		interface_->enableHighlights();
 		if(interface_->highlightsNeedSearch() && !txt.isEmpty())
 		{
-			findString(txt, true,  0, true, 0);   // highlight all matches
+			findString(txt, true,  0, QTextCursor::StartOfWord, 0);   // highlight all matches
 		}
 	}
 }
@@ -89,7 +91,8 @@ void TextEditSearchLine::slotFind(QString txt)
 	}
 
 	highlightAllTimer_.stop();
-	bool found = findString(txt, false, 0, true, 0);  // find the next match
+	bool found = findString(txt, false, 0, QTextCursor::StartOfWord, 0);  // find the next match
+	lastFindSuccessful_ = found;
 
 	if (!isEmpty()) // there is a search term supplied by the user
 	{
@@ -114,8 +117,8 @@ void TextEditSearchLine::slotFindNext()
 	if(!interface_)
 		return;
 
-	bool found = findString(searchLine_->text(), false, 0, false, 0);
-	updateButtons(found);
+	lastFindSuccessful_ = findString(searchLine_->text(), false, 0, QTextCursor::NoMove, 0);
+	updateButtons(lastFindSuccessful_);
 }
 
 void TextEditSearchLine::slotFindPrev()
@@ -123,8 +126,8 @@ void TextEditSearchLine::slotFindPrev()
 	if(!interface_)
 		return;
 
-	bool found = findString(searchLine_->text(), false, QTextDocument::FindBackward, false, 0);
-	updateButtons(found);
+	lastFindSuccessful_ = findString(searchLine_->text(), false, QTextDocument::FindBackward, QTextCursor::NoMove, 0);
+	updateButtons(lastFindSuccessful_);
 }
 
 QTextDocument::FindFlags TextEditSearchLine::findFlags()
@@ -223,15 +226,18 @@ void TextEditSearchLine::slotClose()
 // Called when we load a new node's information into the panel, or
 // when we move to the panel from another one.
 // If the search box is open, then search for the first matching item;
-// otherwise, search for a pre-configured list of keywords. If none
-// are found, and the user has clicked on the 'reload' button then
-// we just go to the last line of the output
+// if not found, go to the last line.
+// If the search box is not open, search for a pre-configured list of
+// keywords. If none are found, and the user has clicked on the 'reload'
+// button then we just go to the last line of the output
 void TextEditSearchLine::searchOnReload(bool userClickedReload)
 {
 	if (isVisible() && !isEmpty())
 	{
 		slotFindNext();
 		slotHighlight();
+		if(!lastFindSuccessful())
+			interface_->gotoLastLine();
 	}
 	else if(interface_)
 	{
diff --git a/Viewer/src/TextEditSearchLine.hpp b/Viewer/src/TextEditSearchLine.hpp
index 0e8469c..832ee61 100644
--- a/Viewer/src/TextEditSearchLine.hpp
+++ b/Viewer/src/TextEditSearchLine.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -43,15 +43,17 @@ public Q_SLOTS:
 
 protected:
 	QTextDocument::FindFlags findFlags();
-	bool findString (QString str, bool highlightAll, QTextDocument::FindFlags extraFlags, bool gotoStartOfWord, int iteration);
+	bool findString (QString str, bool highlightAll, QTextDocument::FindFlags extraFlags, QTextCursor::MoveOperation move, int iteration);
 	void refreshSearch();
 	void highlightMatches(QString txt);
     void clearHighlights();
     void disableHighlights();
+    bool lastFindSuccessful() {return lastFindSuccessful_;}
 
     AbstractTextEditSearchInterface* interface_;
     QTimer highlightAllTimer_;
 	QColor highlightColour_;
+	bool lastFindSuccessful_;
 };
 
 #endif /* VIEWER_SRC_TEXTEDITSEARCHLINE_HPP_ */
diff --git a/Viewer/src/TextPager/TextPagerCursor.cpp b/Viewer/src/TextPager/TextPagerCursor.cpp
index 64bf126..0d468ea 100644
--- a/Viewer/src/TextPager/TextPagerCursor.cpp
+++ b/Viewer/src/TextPager/TextPagerCursor.cpp
@@ -546,7 +546,8 @@ int TextPagerCursor::lineNumber() const
 void TextPagerCursor::detach()
 {
     Q_ASSERT(d);
-    if (d->ref > 1) {
+    int refint = d->ref.fetchAndAddRelaxed(0); // required to get past a bug in Qt 5.2.1 (see Ubuntu 14.04)
+    if (refint > 1) {
         d->ref.deref();
         TextCursorSharedPrivate *p = new TextCursorSharedPrivate;
         p->position = d->position;
diff --git a/Viewer/src/TextPager/TextPagerCursor_p.hpp b/Viewer/src/TextPager/TextPagerCursor_p.hpp
index 1bd6e35..a9f4877 100644
--- a/Viewer/src/TextPager/TextPagerCursor_p.hpp
+++ b/Viewer/src/TextPager/TextPagerCursor_p.hpp
@@ -196,7 +196,8 @@ public:
 
     ~TextCursorSharedPrivate()
     {
-        ASSUME(ref == 0);
+        int refint = ref.fetchAndAddRelaxed(0); // required to get past a bug in Qt 5.2.1 (see Ubuntu 14.04)
+        ASSUME(refint == 0);
     }
 
     void invalidate()
diff --git a/Viewer/src/TextPager/TextPagerDocument.cpp b/Viewer/src/TextPager/TextPagerDocument.cpp
index 5c603ce..daaa270 100644
--- a/Viewer/src/TextPager/TextPagerDocument.cpp
+++ b/Viewer/src/TextPager/TextPagerDocument.cpp
@@ -422,7 +422,7 @@ TextPagerCursor TextPagerDocument::find(const QRegExp &regexp, const TextPagerCu
 	qDebug() << "---> TextPagerDocument::find" << "regexp" << regexp;
 #endif
 
-    if(documentSize() == 0 || cursor.textEdit == NULL)
+    if(documentSize() == 0)
         return TextPagerCursor();
 
 	if(regexp.isEmpty())
diff --git a/Viewer/src/TextPager/TextPagerEdit.cpp b/Viewer/src/TextPager/TextPagerEdit.cpp
index 3d80924..648db82 100644
--- a/Viewer/src/TextPager/TextPagerEdit.cpp
+++ b/Viewer/src/TextPager/TextPagerEdit.cpp
@@ -21,7 +21,7 @@
 #include "TextPagerCursor_p.hpp"
 #include "TextPagerDocument_p.hpp"
 #include "TextPagerSearchHighlighter.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
 
 #include <cmath>
@@ -325,11 +325,11 @@ bool TextPagerEdit::load(const QString &file, TextPagerDocument::DeviceMode mode
     }
 #endif
 
-    UserMessage::message(UserMessage::DBG,false,"TextPagerEdit::load fileName" + file.toStdString());
+    UiLog().dbg() << "TextPagerEdit::load fileName" << file;
     //we have to check to font here because the initial setting in setFontProperty doe not have any effect
     updateFont();
     bool ret=d->document->load(file, mode, codec);
-    UserMessage::message(UserMessage::DBG,false,"  cursor: " + QString::number(textCursor().position()).toStdString());
+    UiLog().dbg() << "  cursor: " << textCursor().position();
     return ret;
 }
 
@@ -1095,11 +1095,21 @@ void TextEditPrivate::onScrollBarValueChanged(int value)
 
 void TextEditPrivate::onScrollBarActionTriggered(int action)
 {
+    // IR: see comment at the top of cursorMoveKeyEventReadOnly().
+    // Also: added code to handle SliderPageStepAdd and SliderPageStepSub because
+    // these cases were not handled well by default. These cases occur when the user clicks inside
+    // the scrollbar area, but not on the bar itself; this should do something similar or
+    // identical to a page up/down operation.
+
     switch (action) {
     case QAbstractSlider::SliderSingleStepAdd:
         scrollLines(1); requestedScrollBarPosition = -1; break;
     case QAbstractSlider::SliderSingleStepSub:
         scrollLines(-1); requestedScrollBarPosition = -1; break;
+    case QAbstractSlider::SliderPageStepAdd:
+        scrollLines(qMax(1, visibleLines - 1)); requestedScrollBarPosition = -1; break;
+    case QAbstractSlider::SliderPageStepSub:
+        scrollLines(-qMax(1, visibleLines - 2)); requestedScrollBarPosition = -1; break;
     default: break;
     }
 
@@ -1130,8 +1140,8 @@ void TextEditPrivate::onCharactersAddedOrRemoved(int from, int count)
     if(textCursor.position() > document->documentSize())
         textCursor.setPosition(0);
 
-    UserMessage::message(UserMessage::DBG,false,
-              "TextEditPrivate::onCharactersAddedOrRemoved --> textCursor: " + QString::number(textCursor.position()).toStdString());
+    UiLog().dbg() <<
+              "TextEditPrivate::onCharactersAddedOrRemoved --> textCursor: " << textCursor.position();
 
     /*if (from > qMin(bufferPosition + buffer.size(), layoutEnd)) {
         return;
@@ -1306,6 +1316,8 @@ void TextEditPrivate::onDocumentDestroyed()
 
 void TextEditPrivate::scrollLines(int lines)
 {
+    // IR: see comment at the top of cursorMoveKeyEventReadOnly().
+
     int pos = viewportPosition;
     const Direction d = (lines < 0 ? Backward : Forward);
     const int add = lines < 0 ? -1 : 1;
@@ -1318,6 +1330,14 @@ void TextEditPrivate::scrollLines(int lines)
             // (ie. lines containing only '\n') by just ignoring them here
             // - updateViewportPosition automatically takes us one index past
             // this newline, thus displaying the next line)
+
+            // IR: the above comment does not seem to be true, at least it is not always true.
+            // If performing a 'page down' operation, this 'break' causes one less line to
+            // be scrolled. This is because pos is already on the newline at the end of
+            // the previous line; this check re-reads that newline and then breaks without
+            // reading the last line at all. This is not done when paging backwards. So
+            // scrolling down 5 lines actually scrolls down 4 lines, and scrolling up 5
+            // lines does indeed scroll up 5 lines.
             break;
         } else {
             pos += add;
@@ -1411,6 +1431,14 @@ bool TextEditPrivate::isSectionOnScreen(const TextPagerSection *section) const
 
 void TextEditPrivate::cursorMoveKeyEventReadOnly(QKeyEvent *e)
 {
+    // IR: changed MoveToPreviousPage from visibleLines to (visibleLines-2) because:
+    // the scrollLines routine does not perform consistently between page up and page down;
+    // performing a page down followed by a page up does not get you back to where you started.
+    // See my comment in scrollLines, which might point to why this is. The quickest way
+    // to make the functions consistent was to make this change. The primary reason was to
+    // ensure that the user does not miss any lines of text when they page up and down through
+    // the document. The same change was made in onScrollBarActionTriggered.
+
     if (e == QKeySequence::MoveToNextLine) {
         scrollLines(1);
     } else if (e == QKeySequence::MoveToPreviousLine) {
@@ -1422,7 +1450,7 @@ void TextEditPrivate::cursorMoveKeyEventReadOnly(QKeyEvent *e)
     } else if (e == QKeySequence::MoveToNextPage) {
         scrollLines(qMax(1, visibleLines - 1));
     } else if (e == QKeySequence::MoveToPreviousPage) {
-        scrollLines(-qMax(1, visibleLines));
+        scrollLines(-qMax(1, visibleLines - 2));
     } else if (e == QKeySequence::MoveToStartOfLine) {
          textCursor.movePosition(TextPagerCursor::StartOfLine);
          e->accept();
diff --git a/Viewer/src/TextPager/TextPagerSearchInterface.cpp b/Viewer/src/TextPager/TextPagerSearchInterface.cpp
index 8d7aa11..f7fefbb 100644
--- a/Viewer/src/TextPager/TextPagerSearchInterface.cpp
+++ b/Viewer/src/TextPager/TextPagerSearchInterface.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -7,12 +7,10 @@
 // nor does it submit to any jurisdiction.
 //
 //============================================================================
-
-// Copyright 2014 ECMWF.
+#include <assert.h>
 
 #include "TextPager/TextPagerSearchInterface.hpp"
 
-//#include <QTextEdit>
 #include "TextPagerEdit.hpp"
 #include "UserMessage.hpp"
 
@@ -20,13 +18,32 @@
 #include <QGuiApplication>
 #endif
 
+TextPagerCursor::MoveOperation TextPagerSearchInterface::translateCursorMoveOp(QTextCursor::MoveOperation move)
+{
+	switch (move)
+	{
+		case QTextCursor::NoMove:       return TextPagerCursor::NoMove;
+		case QTextCursor::Start:        return TextPagerCursor::Start;
+		case QTextCursor::StartOfLine:  return TextPagerCursor::StartOfLine;
+		case QTextCursor::StartOfWord:  return TextPagerCursor::StartOfWord;
+		case QTextCursor::PreviousWord: return TextPagerCursor::PreviousWord;
+		case QTextCursor::End:          return TextPagerCursor::End;
+		default:
+		{
+			assert(0);
+			return TextPagerCursor::NoMove;
+		}
+	}
+}
+
+
 bool TextPagerSearchInterface::findString (QString str, bool highlightAll, QTextDocument::FindFlags flags,
-		                                bool gotoStartOfWord, int iteration,StringMatchMode::Mode matchMode)
+										   QTextCursor::MoveOperation move, int iteration, StringMatchMode::Mode matchMode)
 {
 	if(!editor_)
 		return false;
 
-    if(editor_->document()->documentSize() ==0)
+    if(editor_->document()->documentSize() == 0)
         return false;
 
     bool doSearch=true;
@@ -37,8 +54,7 @@ bool TextPagerSearchInterface::findString (QString str, bool highlightAll, QText
 
 	TextPagerCursor cursor(editor_->textCursor());
 
-	if (gotoStartOfWord)	// go to start of word?
-		cursor.movePosition(TextPagerCursor::StartOfWord);
+	cursor.movePosition(translateCursorMoveOp(move));  // move the cursor?
 
 	TextPagerDocument::FindMode mode=TextPagerDocument::FindWrap;
 
@@ -131,58 +147,66 @@ void TextPagerSearchInterface::automaticSearchForKeywords(bool userClickedReload
     if(editor_->document()->documentSize() ==0)
         return;
 
-    bool found = false;
-	TextPagerDocument::FindMode findMode = TextPagerDocument::FindBackward;
-	TextPagerCursor cursor(editor_->textCursor());
-	cursor.movePosition(TextPagerCursor::End);
+    bool performSearch = vpPerformAutomaticSearch_->value().toBool();
 
-    qDebug() << "automaticSearchForKeyword" << editor_->textCursor().position();
+	if (performSearch)
+	{
 
 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
-	QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+		QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
 #endif
 
-	//QRegExp regexp("10:56:45 4");
-	QRegExp regexp("--(abort|complete)");
-	TextPagerCursor findCursor = editor_->document()->find(regexp, cursor, findMode);  // perform the search
-	//TextPagerCursor findCursor = editor_->document()->find("--abort", cursor, findMode);
-	found = (!findCursor.isNull());
-	if(found)
-	{
-		editor_->setTextCursor(findCursor);
-	}
+		// search direction
+		QTextDocument::FindFlags findFlags;
+		TextPagerCursor cursor(editor_->textCursor());
+		std::string searchFrom = vpAutomaticSearchFrom_->valueAsString();
+		QTextCursor::MoveOperation move;
 
-#if 0
-	QStringList keywords;
-	keywords << "--abort" << "--complete";// << "xabort" << "xcomplete"
-	         << "System Billing Units";
+		if (searchFrom == "bottom")
+		{
+			findFlags = QTextDocument::FindBackward;
+			move = QTextCursor::End;
+		}
+		else
+		{
+			move = QTextCursor::Start;
+		}
 
-	// find any of the keywords and stop at the first one
-	int i = 0;
-	while (!found && i < keywords.size())
-	{
-		cursor.movePosition(QTextCursor::End);
-		textEdit_->setTextCursor(cursor);
-		found = textEdit_->findString(keywords.at(i), findFlags);
-		i++;
-	}
-#endif
+		// case sensitivity
+		bool caseSensitive = vpAutomaticSearchCase_->value().toBool();
+		if (caseSensitive)
+			findFlags = findFlags | QTextDocument::FindCaseSensitively;
 
-    else
-	{
-		if(userClickedReload)
+		// string match mode
+		std::string matchMode(vpAutomaticSearchMode_->valueAsString());
+		StringMatchMode::Mode mode = StringMatchMode::operToMode(matchMode);
+
+		// the term to be searched for
+		std::string searchTerm_s(vpAutomaticSearchText_->valueAsString());
+		QString searchTerm = QString::fromStdString(searchTerm_s);
+
+		// perform the search
+		bool found = findString (searchTerm, false, findFlags, move, 1, mode);
+
+		if(!found)
 		{
-			// move the cursor to the start of the last line
-			TextPagerCursor cursor = editor_->textCursor();
-			cursor.movePosition(TextPagerCursor::End);
-			cursor.movePosition(TextPagerCursor::StartOfLine);
-			editor_->setTextCursor(cursor);
+			if(userClickedReload)
+			{
+				// move the cursor to the start of the last line
+				gotoLastLine();
+			}
 		}
-	}
 
 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
-	QGuiApplication::restoreOverrideCursor();
+		QGuiApplication::restoreOverrideCursor();
 #endif
+
+	}
+	else
+	{
+		// move the cursor to the start of the last line
+		gotoLastLine();
+	}
 }
 
 void TextPagerSearchInterface::refreshSearch()
@@ -216,3 +240,13 @@ void TextPagerSearchInterface::disableHighlights()
     if(editor_)
         editor_->setEnableSearchHighlighter(false);
 }
+
+void TextPagerSearchInterface::gotoLastLine()
+{
+	// move the cursor to the start of the last line
+	TextPagerCursor cursor = editor_->textCursor();
+	cursor.movePosition(TextPagerCursor::End);
+	cursor.movePosition(TextPagerCursor::StartOfLine);
+	editor_->setTextCursor(cursor);
+	editor_->ensureCursorVisible();
+}
diff --git a/Viewer/src/TextPager/TextPagerSearchInterface.hpp b/Viewer/src/TextPager/TextPagerSearchInterface.hpp
index 4054134..ff2af3d 100644
--- a/Viewer/src/TextPager/TextPagerSearchInterface.hpp
+++ b/Viewer/src/TextPager/TextPagerSearchInterface.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -12,6 +12,7 @@
 #define VIEWER_SRC_TEXTPAGER_TEXTPAGERSEARCHINTERFACE_HPP_
 
 #include "AbstractTextEditSearchInterface.hpp"
+#include "TextPagerCursor.hpp"
 
 class TextPagerEdit;
 
@@ -22,7 +23,7 @@ public:
 	void setEditor(TextPagerEdit* e) {editor_=e;}
 
 	bool findString (QString str, bool highlightAll, QTextDocument::FindFlags findFlags,
-			         bool gotoStartOfWord, int iteration,StringMatchMode::Mode matchMode);
+					 QTextCursor::MoveOperation move, int iteration,StringMatchMode::Mode matchMode);
 
 	void automaticSearchForKeywords(bool);
 	void refreshSearch();
@@ -30,9 +31,10 @@ public:
     void disableHighlights();
 	void enableHighlights();
 	bool highlightsNeedSearch() {return false;}
+	void gotoLastLine();
 
 protected:
-
+	TextPagerCursor::MoveOperation translateCursorMoveOp(QTextCursor::MoveOperation move);
 	TextPagerEdit *editor_;
 
 };
diff --git a/Viewer/src/TreeNodeModel.cpp b/Viewer/src/TreeNodeModel.cpp
index 2e8034e..a7c1825 100644
--- a/Viewer/src/TreeNodeModel.cpp
+++ b/Viewer/src/TreeNodeModel.cpp
@@ -16,10 +16,11 @@
 #include "VFilter.hpp"
 #include "ServerFilter.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VFilter.hpp"
 #include "VNState.hpp"
 #include "VSState.hpp"
+#include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "VNode.hpp"
 #include "VIcon.hpp"
@@ -186,7 +187,7 @@ QVariant TreeNodeModel::serverData(const QModelIndex& index,int role) const
 	if(role == FilterRole)
 		return true;
 
-    if(role == Qt::ToolTipRole & !serverToolTip_)
+    if(role == Qt::ToolTipRole && !serverToolTip_)
         return QVariant();
 
     ServerHandler *server=indexToServerHandler(index);
@@ -275,7 +276,7 @@ QVariant TreeNodeModel::serverData(const QModelIndex& index,int role) const
 
 QVariant TreeNodeModel::nodeData(const QModelIndex& index, int role) const
 {
-    if(role == Qt::ToolTipRole & !nodeToolTip_)
+    if(role == Qt::ToolTipRole && !nodeToolTip_)
         return QVariant();
 
     VTreeNode* tnode=indexToNode(index);
@@ -343,7 +344,7 @@ QVariant TreeNodeModel::nodeData(const QModelIndex& index, int role) const
 		{
 			if(vnode->isTopLevel())
 			{
-                if(data_->isFilterNull())
+                if(data_->isFilterComplete())
                     return vnode->server()->vRoot()->totalNumOfTopLevel(vnode);
                 else
                     return  QString::number(tnode->root()->totalNumOfTopLevel(tnode)) + "/" +
@@ -370,7 +371,7 @@ QVariant TreeNodeModel::nodeData(const QModelIndex& index, int role) const
 
 QVariant TreeNodeModel::attributesData(const QModelIndex& index, int role) const
 {
-    if(role == Qt::ToolTipRole & !attributeToolTip_)
+    if(role == Qt::ToolTipRole && !attributeToolTip_)
         return QVariant();
 
     if(role == IconRole)
@@ -505,7 +506,7 @@ QModelIndex TreeNodeModel::parent(const QModelIndex &child) const
             Q_ASSERT(row >=0);
             VTreeServer *ts=root->server();
 
-            int serverAttrNum=root->attrNum();
+            int serverAttrNum=root->attrNum(atts_);
             return createIndex(serverAttrNum+row,0,ts);
 
 #if 0
@@ -524,7 +525,7 @@ QModelIndex TreeNodeModel::parent(const QModelIndex &child) const
 		//is its parent (i.e.. the grandparent)
         else if(VTreeNode *grandParentNode=parentNode->parent())
 		{
-			int num=grandParentNode->attrNum()+grandParentNode->indexOfChild(parentNode);
+            int num=grandParentNode->attrNum(atts_)+grandParentNode->indexOfChild(parentNode);
 
 			//qDebug() << "PARENT 2" << child << grandParentNode->node()->name().c_str() << num;
 			return createIndex(num,0,grandParentNode);
@@ -672,6 +673,7 @@ QModelIndex TreeNodeModel::nodeToIndex(const VNode* node, int column) const
             VTreeServer* server=mserver->treeServer();
             Q_ASSERT(server);
 
+            //the node is displayed in the tree
             if(VTreeNode* tn=server->tree()->find(node))
             {
                 int row=tn->indexInParent();
@@ -777,6 +779,98 @@ QModelIndex TreeNodeModel::nodeToIndex(VTreeServer* server,const VTreeNode* node
 
 }
 
+//Find the index for the node! The VNode can be a server as well!!!
+QModelIndex TreeNodeModel::attributeToIndex(const VAttribute* a, int column) const
+{
+    if(!a)
+        return QModelIndex();
+
+    VNode* node=a->parent();
+    if(!node)
+        return QModelIndex();
+
+    VModelServer *mserver=data_->server(node->server());
+    VTreeServer* server=mserver->treeServer();
+    Q_ASSERT(server);
+
+    int row=a->absIndex(atts_);
+    if(row != -1)
+    {
+        //This is a server!!!
+        if(node->isServer())
+        {
+            return createIndex(row,column,server);
+        }
+        else
+        {
+            if(VTreeNode* tn=server->tree()->find(node))
+            {
+                return createIndex(row,column,tn);
+            }
+        }
+    }
+
+    return QModelIndex();
+}
+
+QModelIndex TreeNodeModel::forceShowNode(const VNode* node) const
+{
+    if(data_->isFilterNull())
+        return QModelIndex();
+
+    Q_ASSERT(node);
+    Q_ASSERT(!node->isServer());
+    Q_ASSERT(node->server());
+
+    if(VModelServer *mserver=data_->server(node->server()))
+    {
+        VTreeServer* server=mserver->treeServer();
+        Q_ASSERT(server);
+        server->setForceShowNode(node);
+        return nodeToIndex(node);
+    }
+
+    return QModelIndex();
+}
+
+QModelIndex TreeNodeModel::forceShowAttribute(const VAttribute* a) const
+{
+    VNode* node=a->parent();
+    Q_ASSERT(node);
+    //Q_ASSERT(!node->isServer());
+    Q_ASSERT(node->server());
+
+    if(VModelServer *mserver=data_->server(node->server()))
+    {
+        VTreeServer* server=mserver->treeServer();
+        Q_ASSERT(server);        
+        server->setForceShowAttribute(a);
+        return attributeToIndex(a);
+    }
+
+    return QModelIndex();
+}
+
+
+void TreeNodeModel::selectionChanged(QModelIndexList lst)
+{
+    if(data_->isFilterNull())
+        return;
+
+    Q_FOREACH(QModelIndex idx,lst)
+    {
+        VInfo_ptr info=nodeInfo(idx);
+
+        for(int i=0; i < data_->count(); i++)
+        {
+           VTreeServer *ts=data_->server(i)->treeServer();
+           Q_ASSERT(ts);
+           ts->clearForceShow(info->item());
+        }
+    }
+}
+
+
 //------------------------------------------------------------------
 // Create info object to index. It is used to identify nodes in
 // the tree all over in the programme outside the view.
@@ -833,12 +927,15 @@ VInfo_ptr TreeNodeModel::nodeInfo(const QModelIndex& index)
 		//It is an attribute
 		else
 		{
-            int realAttrRow=parentNode->attrRow(index.row(),atts_);
-            Q_ASSERT(realAttrRow >= 0);
-
-            VInfo_ptr p=VInfoAttribute::create(parentNode->vnode(),realAttrRow);
-            qDebug() << p->isAttribute() << p->attribute() << p->server() << p->node();
-            return p;
+            VNode *n=parentNode->vnode();
+            Q_ASSERT(n);
+            VItemTmp_ptr atmp=VAttributeType::itemForAbsIndex(n,index.row(),atts_);
+            if(atmp->attribute())
+            {
+                //VInfo will take charge of the attribute!
+                VInfo_ptr p=VInfoAttribute::create(atmp->attribute()->clone());
+                return p;
+            }
 		}
 	}
 
@@ -866,14 +963,14 @@ void TreeNodeModel::slotServerAddEnd()
 void TreeNodeModel::slotServerRemoveBegin(VModelServer* server,int /*nodeNum*/)
 {
 #ifdef _UI_TREENODEMODEL_DEBUG
-    UserMessage::debug("TreeNodeModel::slotServerRemoveBegin -->");
+    UiLog().dbg() << "TreeNodeModel::slotServerRemoveBegin -->";
 #endif
 
     int row=data_->indexOfServer(server);
     Q_ASSERT(row >= 0);
 
 #ifdef _UI_TREENODEMODEL_DEBUG
-    UserMessage::debug("  row: " + QString::number(row).toStdString());
+    UiLog().dbg() << "  row: " << row;
 #endif
 	beginRemoveRows(QModelIndex(),row,row);
 }
@@ -882,7 +979,7 @@ void TreeNodeModel::slotServerRemoveBegin(VModelServer* server,int /*nodeNum*/)
 void TreeNodeModel::slotServerRemoveEnd(int /*nodeNum*/)
 {
 #ifdef _UI_TREENODEMODEL_DEBUG
-    UserMessage::debug("TreeNodeModel::slotServerRemoveEnd -->");
+    UiLog().dbg() << "TreeNodeModel::slotServerRemoveEnd -->";
 #endif
 
     endRemoveRows();
@@ -1005,7 +1102,7 @@ void TreeNodeModel::slotBeginServerScan(VModelServer* server,int num)
 	//At this point the server node does not have any rows in the model!!!
     if(idx.isValid() && num >0)
 	{
-		beginInsertRows(idx,0,num-1);
+        beginInsertRows(idx,0,num-1);
 	}
 }
 
@@ -1017,7 +1114,6 @@ void TreeNodeModel::slotEndServerScan(VModelServer* server,int num)
 	QModelIndex idx=serverToIndex(server);
 	if(idx.isValid() && num >0)
 	{
-        beginInsertRows(idx,0,num-1);
         endInsertRows();
 	}
 
@@ -1114,4 +1210,42 @@ void TreeNodeModel::slotEndFilterUpdateAdd(VTreeServer* /*server*/,const VTreeNo
     Q_EMIT filterUpdateAddEnded(topChange);
 }
 
+void TreeNodeModel::slotBeginFilterUpdateRemoveTop(VTreeServer* server,int row)
+{
+    Q_ASSERT(server);
+    QModelIndex idx=serverToIndex(server);
+    int attrNum=server->tree()->attrNum(atts_);
+    int chNum=server->tree()->numOfChildren();
+
+    Q_ASSERT(chNum > row);
+    Q_ASSERT(attrNum >=0);
+    Q_ASSERT(chNum >=0);
+
+    beginRemoveRows(idx,attrNum+row,attrNum+row);
+}
+
+void TreeNodeModel::slotEndFilterUpdateRemoveTop(VTreeServer* server,int)
+{
+    Q_ASSERT(server);
+    endRemoveRows();
+}
 
+void TreeNodeModel::slotBeginFilterUpdateInsertTop(VTreeServer* server,int row)
+{
+    Q_ASSERT(server);
+    QModelIndex idx=serverToIndex(server);
+    int attrNum=server->tree()->attrNum(atts_);
+    int chNum=server->tree()->numOfChildren();
+
+    Q_ASSERT(chNum >= row);
+    Q_ASSERT(attrNum >=0);
+    Q_ASSERT(chNum >=0);
+
+    beginInsertRows(idx,attrNum+row,attrNum+row);
+}
+
+void TreeNodeModel::slotEndFilterUpdateInsertTop(VTreeServer* server,int)
+{
+    Q_ASSERT(server);
+    endInsertRows();
+}
diff --git a/Viewer/src/TreeNodeModel.hpp b/Viewer/src/TreeNodeModel.hpp
index 64cfa0e..87f1c5d 100644
--- a/Viewer/src/TreeNodeModel.hpp
+++ b/Viewer/src/TreeNodeModel.hpp
@@ -49,7 +49,11 @@ public:
     QModelIndex nodeToIndex(const VNode*,int column=0) const;
     VTreeServer* indexToServer(const QModelIndex & index) const;
     VTreeServer* nameToServer(const std::string&) const;
+
+    QModelIndex attributeToIndex(const VAttribute* a, int column=0) const;
+
     VInfo_ptr nodeInfo(const QModelIndex& index);
+    void selectionChanged(QModelIndexList lst);
 
     void setEnableServerToolTip(bool st) {serverToolTip_=st;}
     void setEnableNodeToolTip(bool st) {nodeToolTip_=st;}
@@ -71,6 +75,10 @@ public Q_SLOTS:
     void slotEndFilterUpdateRemove(VTreeServer*,const VTreeNode*,int);
     void slotBeginFilterUpdateAdd(VTreeServer*,const VTreeNode*,int);
     void slotEndFilterUpdateAdd(VTreeServer*,const VTreeNode*,int);
+    void slotBeginFilterUpdateRemoveTop(VTreeServer*,int);
+    void slotEndFilterUpdateRemoveTop(VTreeServer*,int);
+    void slotBeginFilterUpdateInsertTop(VTreeServer*,int);
+    void slotEndFilterUpdateInsertTop(VTreeServer*,int);
 
 	//void slotResetBranch(VModelServer*,const VNode*);
     void slotDataChanged(VModelServer*);
@@ -87,6 +95,10 @@ Q_SIGNALS:
     void filterChangeBegun();
     void filterChangeEnded();
 
+protected:
+    QModelIndex forceShowNode(const VNode* node) const;
+    QModelIndex forceShowAttribute(const VAttribute* a) const;
+
 private:
 	bool isServer(const QModelIndex & index) const;
 	bool isNode(const QModelIndex & index) const;
@@ -103,6 +115,7 @@ private:
 	QVariant nodeData(const QModelIndex& index,int role) const;
 	QVariant attributesData(const QModelIndex& index,int role) const;
 
+
 	//Attribute filter
 	VTreeModelData* data_;
 	AttributeFilter* atts_;
diff --git a/Viewer/src/TreeNodeView.cpp b/Viewer/src/TreeNodeView.cpp
index f760a9f..d18cd74 100644
--- a/Viewer/src/TreeNodeView.cpp
+++ b/Viewer/src/TreeNodeView.cpp
@@ -27,19 +27,25 @@
 #include "PropertyMapper.hpp"
 #include "TreeNodeModel.hpp"
 #include "TreeNodeViewDelegate.hpp"
+#include "UiLog.hpp"
 #include "VNode.hpp"
 #include "VModelData.hpp"
 #include "VTree.hpp"
 
+#define _UI_TREENODEVIEW_DEBUG
+
 TreeNodeView::TreeNodeView(TreeNodeModel* model,NodeFilterDef* filterDef,QWidget* parent) :
 	QTreeView(parent),
     NodeViewBase(filterDef),
     model_(model),
     needItemsLayout_(false),
 	defaultIndentation_(indentation()),
-	prop_(NULL)
+    prop_(NULL),
+    setCurrentIsRunning_(false),
+    setCurrentFromExpand_(false)
 {
-	setProperty("style","nodeView");
+    setObjectName("view");
+    setProperty("style","nodeView");
 	setProperty("view","tree");
 
     expandState_=new ExpandState(this,model_);
@@ -61,6 +67,12 @@ TreeNodeView::TreeNodeView(TreeNodeModel* model,NodeFilterDef* filterDef,QWidget
 	setMouseTracking(true);
 	setSelectionMode(QAbstractItemView::ExtendedSelection);
 
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+    header()->setSectionResizeMode(0,QHeaderView::ResizeToContents);
+    header()->setStretchLastSection(false);
+    header()->setMinimumSectionSize(4096);
+#endif
+
 	//!!!!We need to do it because:
 	//The background colour between the view's left border and the nodes cannot be
 	//controlled by delegates or stylesheets. It always takes the QPalette::Highlight
@@ -71,7 +83,8 @@ TreeNodeView::TreeNodeView(TreeNodeModel* model,NodeFilterDef* filterDef,QWidget
 	setPalette(pal);
 
 	//Hide header
-	header()->hide();
+    setHeaderHidden(true);
+    //header()->hide();
 
 	//Context menu
 	setContextMenuPolicy(Qt::CustomContextMenu);
@@ -80,9 +93,6 @@ TreeNodeView::TreeNodeView(TreeNodeModel* model,NodeFilterDef* filterDef,QWidget
 		                this, SLOT(slotContextMenu(const QPoint &)));
 
 	//Selection
-	connect(this,SIGNAL(clicked(const QModelIndex&)),
-			this,SLOT(slotSelectItem(const QModelIndex)));
-
 	connect(this,SIGNAL(doubleClicked(const QModelIndex&)),
 			this,SLOT(slotDoubleClickItem(const QModelIndex)));
 
@@ -142,6 +152,12 @@ QWidget* TreeNodeView::realWidget()
 	return this;
 }
 
+void TreeNodeView::resizeEvent(QResizeEvent* e)
+{
+    QTreeView::resizeEvent(e);
+    //resizeColumnToContents(0);
+}
+
 //Collects the selected list of indexes
 QModelIndexList TreeNodeView::selectedList()
 {
@@ -152,18 +168,31 @@ QModelIndexList TreeNodeView::selectedList()
 	return lst;
 }
 
-void TreeNodeView::slotSelectItem(const QModelIndex&)
+// reimplement virtual function from QTreeView - called when the selection is changed
+void TreeNodeView::selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
 {
-	QModelIndexList lst=selectedIndexes();
-	if(lst.count() > 0)
-	{
-		VInfo_ptr info=model_->nodeInfo(lst.front());
-		if(info)
-		{
-			Q_EMIT selectionChanged(info);
-		}
-	}
+    QModelIndexList lst=selectedIndexes();
+    //When the selection was triggered from restoring (expanding) the nodes
+    //we do not want to broadcast it
+    if(lst.count() > 0 && !setCurrentFromExpand_)
+    {            
+        VInfo_ptr info=model_->nodeInfo(lst.front());
+        if(info && !info->isEmpty())
+        {
+#ifdef _UI_TREENODEVIEW_DEBUG
+            UiLog().dbg() << "TreeNodeView::selectionChanged --> emit=" << info->path();
+#endif
+            Q_EMIT selectionChanged(info);
+        }
+    }
+
+    QTreeView::selectionChanged(selected, deselected);
+
+    //The model has to know about the selection in order to manage the
+    //nodes that are forced to be shown
+    model_->selectionChanged(lst);
 }
+
 VInfo_ptr TreeNodeView::currentSelection()
 {
 	QModelIndexList lst=selectedIndexes();
@@ -174,32 +203,45 @@ VInfo_ptr TreeNodeView::currentSelection()
 	return VInfo_ptr();
 }
 
-void TreeNodeView::currentSelection(VInfo_ptr info)
+void TreeNodeView::setCurrentSelection(VInfo_ptr info)
 {
-	QModelIndex idx=model_->infoToIndex(info);
+    //While the current is being selected we do not allow
+    //another setCurrent call go through
+    if(!info || setCurrentIsRunning_)
+        return;
+
+    setCurrentIsRunning_=true;
+    QModelIndex idx=model_->infoToIndex(info);
 	if(idx.isValid())
-	{
-		setCurrentIndex(idx);
-		Q_EMIT selectionChanged(info);
+	{          
+#ifdef _UI_TREENODEVIEW_DEBUG
+        UiLog().dbg() << "TreeNodeView::setCurrentSelection --> " << info->path();
+#endif
+        setCurrentIndex(idx);
 	}
+    setCurrentIsRunning_=false;
 }
 
-void TreeNodeView::slotSetCurrent(VInfo_ptr info)
+void TreeNodeView::setCurrentSelectionFromExpand(VInfo_ptr info)
 {
-	QModelIndex idx=model_->infoToIndex(info);
-	if(idx.isValid())
-	{
-			setCurrentIndex(idx);
-			Q_EMIT selectionChanged(info);
-	}
+    if(!info || setCurrentFromExpand_)
+        return;
+
+#ifdef _UI_TREENODEVIEW_DEBUG
+        UiLog().dbg() << "TreeNodeView::setCurrentSelectionFromExpand --> " << info->path();
+#endif
+
+    setCurrentFromExpand_=true;
+    setCurrentSelection(info);
+    setCurrentFromExpand_=false;
 }
 
 void TreeNodeView::selectFirstServer()
 {
 	QModelIndex idx=model_->index(0,0);
 	if(idx.isValid())
-	{
-		setCurrentIndex(idx);
+	{      
+        setCurrentIndex(idx);
 		VInfo_ptr info=model_->nodeInfo(idx);
 		Q_EMIT selectionChanged(info);
 	}
@@ -325,7 +367,6 @@ void TreeNodeView::slotRepaint(Animation* an)
 	}
 }
 
-
 void TreeNodeView::slotSizeHintChangedGlobal()
 {
 	needItemsLayout_=true;
@@ -454,6 +495,29 @@ void TreeNodeView::collapseAll(const QModelIndex& idx)
 	}
 }
 
+void TreeNodeView::expandTo(const QModelIndex& idxTo)
+{
+    QModelIndex idx=model_->parent(idxTo);
+    QModelIndexList lst;
+
+    qDebug() << idxTo << idx;
+
+    while(idx.isValid())
+    {
+        lst.push_front(idx);
+        idx=idx.parent();
+    }
+
+    qDebug() << lst;
+
+    Q_FOREACH(QModelIndex d,lst)
+    {
+        expand(d);
+        qDebug() << "expand" << d << isExpanded(d);
+    }
+}
+
+
 //Save all
 void TreeNodeView::slotSaveExpand()
 {
@@ -494,13 +558,13 @@ void TreeNodeView::slotRestoreExpand()
         if(!s)
         {
             expandState_->selection_->regainData();
-            if(!expandState_->selection_->server())
+            if(!expandState_->selection_->hasData())
             {
                 expandState_->selection_.reset();
             }
             else
             {
-                currentSelection(expandState_->selection_);
+                setCurrentSelectionFromExpand(expandState_->selection_);
             }
         }
     }
@@ -523,7 +587,7 @@ void TreeNodeView::slotSaveExpand(const VTreeNode* node)
     es->save(node);
 }
 
-//Save the expand state for the given node (it can be a server as well)
+//Restore the expand state for the given node (it can be a server as well)
 void TreeNodeView::slotRestoreExpand(const VTreeNode* node)
 {
     Q_FOREACH(ExpandStateTree* es,expandState_->items())
@@ -538,13 +602,13 @@ void TreeNodeView::slotRestoreExpand(const VTreeNode* node)
                 if(!s)
                 {
                     expandState_->selection_->regainData();
-                    if(!expandState_->selection_->server())
+                    if(!expandState_->selection_->hasData())
                     {
                         expandState_->selection_.reset();
                     }
                     else if(node->server()->realServer() == expandState_->selection_->server())
                     {
-                        currentSelection(expandState_->selection_);
+                        setCurrentSelectionFromExpand(expandState_->selection_);
                         expandState_->selection_.reset();
                     }
                 }
@@ -554,103 +618,3 @@ void TreeNodeView::slotRestoreExpand(const VTreeNode* node)
         }
     }
 }
-
-
-#if 0
-
-//Save the expand state for the given node (it can be a server as well)
-void TreeNodeView::slotSaveExpand(const VNode* node)
-{
-    assert(node);
-
-    expandState_->clear();
-
-    VInfo_ptr s=currentSelection();
-    if(s)
-    {
-        if(node->server() == s->server())
-          expandState_->selection_=s;
-    }
-
-	QModelIndex idx=model_->nodeToIndex(node);
-	if(isExpanded(idx))
-	{
-		expandState_->setRoot(node->strName());
-		saveExpand(expandState_->root(),idx);
-	}
-}
-
-void TreeNodeView::saveExpand(ExpandNode *parentExpand,const QModelIndex& idx)
-{
-	for(int i=0; i < model_->rowCount(idx); i++)
-	{
-		QModelIndex chIdx=model_->index(i, 0, idx);
-
-		if(!isExpanded(chIdx))
-	        continue;
-		else
-		{
-			ExpandNode* expand=parentExpand->add(chIdx.data(Qt::DisplayRole).toString().toStdString());
-			saveExpand(expand,chIdx);
-		}
-	}
-}
-
-//Save the expand state for the given node (it can be a server as well)
-void TreeNodeView::slotRestoreExpand(const VNode* node)
-{
-	if(!expandState_->root())
-		return;
-
-	if(node->strName() != expandState_->root()->name_)
-	{
-		expandState_->clear();
-		return;
-	}
-
-	restoreExpand(expandState_->root(),node);
-
-    if(expandState_->selection_)
-    {
-        VInfo_ptr s=currentSelection();
-        if(!s)
-        {
-            expandState_->selection_->regainData();
-            currentSelection(expandState_->selection_);
-        }
-    }
-
-    expandState_->clear();
-}
-
-void TreeNodeView::restoreExpand(ExpandNode *expand,const VNode* node)
-{
-	//Lookup the mnode in the model
-	QModelIndex nodeIdx=model_->nodeToIndex(node);
-	if(nodeIdx != QModelIndex())
-	{
-		setExpanded(nodeIdx,true);
-	}
-	else
-	{
-		return;
-	}
-
-	for(int i=0; i < expand->children_.size(); i++)
-	{
-		ExpandNode *chExpand=expand->children_.at(i);
-		std::string name=chExpand->name_;
-
-		if(VNode *chNode=node->findChild(name))
-		{
-			QModelIndex chIdx=model_->nodeToIndex(chNode);
-			if(chIdx != QModelIndex())
-			{
-				//setExpanded(chIdx,true);
-				restoreExpand(chExpand,chNode);
-			}
-		}
-	}
-}
-
-#endif
diff --git a/Viewer/src/TreeNodeView.hpp b/Viewer/src/TreeNodeView.hpp
index a5b44fb..663ea14 100644
--- a/Viewer/src/TreeNodeView.hpp
+++ b/Viewer/src/TreeNodeView.hpp
@@ -39,8 +39,8 @@ public:
 	void reload();
 	void rerender();
 	QWidget* realWidget();
-	VInfo_ptr currentSelection();
-	void currentSelection(VInfo_ptr n);
+    VInfo_ptr currentSelection();
+    void setCurrentSelection(VInfo_ptr n);
 	void selectFirstServer();
 #if 0
     void setModel(NodeFilterModel* model);
@@ -48,13 +48,12 @@ public:
 	void notifyChange(VProperty* p);
 
     void readSettings(VSettings* vs) {}
+    void writeSettings(VSettings* vs) {}
 
 public Q_SLOTS:
-	void slotSelectItem(const QModelIndex&);
 	void slotDoubleClickItem(const QModelIndex&);
 	void slotContextMenu(const QPoint &position);
 	void slotViewCommand(VInfo_ptr,QString);
-	void slotSetCurrent(VInfo_ptr);
     void slotSaveExpand();
     void slotRestoreExpand();
     void slotSaveExpand(const VTreeNode* node);
@@ -69,7 +68,8 @@ Q_SIGNALS:
 	void dashboardCommand(VInfo_ptr,QString);
 
 protected:
-	QModelIndexList selectedList();
+    void resizeEvent(QResizeEvent*);
+    QModelIndexList selectedList();
 	void handleContextMenu(QModelIndex indexClicked,QModelIndexList indexLst,QPoint globalPos,QPoint widgetPos,QWidget *widget);
 	void saveExpand(ExpandNode *parentExpand,const QModelIndex& idx);
 	void restoreExpand(ExpandNode *expand,const VNode* node);
@@ -82,6 +82,9 @@ protected:
     void adjustAttributeToolTip(bool);
     void expandAll(const QModelIndex& idx);
 	void collapseAll(const QModelIndex& idx);
+    void expandTo(const QModelIndex& idxTo);
+    void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected);
+    void setCurrentSelectionFromExpand(VInfo_ptr info);
 
     TreeNodeModel* model_;
 	ActionHandler* actionHandler_;
@@ -91,6 +94,8 @@ protected:
 	TreeNodeViewDelegate* delegate_;
 	PropertyMapper* prop_;
     QMap<QString,QString> styleSheet_;
+    bool setCurrentIsRunning_;
+    bool setCurrentFromExpand_;
 };
 
 #endif
diff --git a/Viewer/src/TreeNodeViewDelegate.cpp b/Viewer/src/TreeNodeViewDelegate.cpp
index 8a41124..99719d7 100644
--- a/Viewer/src/TreeNodeViewDelegate.cpp
+++ b/Viewer/src/TreeNodeViewDelegate.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -60,7 +60,9 @@ TreeNodeViewDelegate::TreeNodeViewDelegate(QWidget *parent) :
     drawNodeType_(true),
     bgCol_(Qt::white)
 {
-	attrFont_=font_;
+    drawAttrSelectionRect_=true;
+
+    attrFont_=font_;
 	attrFont_.setPointSize(8);
 
 	serverInfoFont_=font_;
@@ -88,8 +90,7 @@ TreeNodeViewDelegate::TreeNodeViewDelegate(QWidget *parent) :
         propVec.push_back("view.tree.display_child_count");
         propVec.push_back("view.tree.displayNodeType");
         propVec.push_back("view.tree.background");
-        propVec.push_back("view.common.node_style");
-        propVec.push_back("view.common.node_gradient");
+        propVec.push_back("view.common.node_style");      
 
         //Base settings
         addBaseSettings(propVec);
@@ -122,11 +123,6 @@ void TreeNodeViewDelegate::updateSettings()
         else
             nodeStyle_=BoxAndTextNodeStyle;
     }
-    if(VProperty* p=prop_->find("view.common.node_gradient"))
-    {
-        useStateGrad_=p->value().toBool();
-    }
-        
     if(VProperty* p=prop_->find("view.tree.nodeRectRadius"))
 	{
 		nodeRectRad_=p->value().toInt();
@@ -789,7 +785,7 @@ void TreeNodeViewDelegate::renderNode(QPainter *painter,const QModelIndex& index
 	//Draw aborted reason
 	if(hasReason)
 	{
-        painter->setPen(stateShape.col_);
+        painter->setPen(stateShape.col_.darker(120));
 		painter->setFont(abortedReasonFont_);
 		painter->drawText(reasonRect,Qt::AlignLeft | Qt::AlignVCenter,reasonTxt);
 	}
diff --git a/Viewer/src/TreeNodeWidget.cpp b/Viewer/src/TreeNodeWidget.cpp
index 4187f3a..21b93c5 100644
--- a/Viewer/src/TreeNodeWidget.cpp
+++ b/Viewer/src/TreeNodeWidget.cpp
@@ -21,6 +21,7 @@
 #include "VFilter.hpp"
 #include "VConfig.hpp"
 #include "VSettings.hpp"
+#include "WidgetNameProvider.hpp"
 
 #include "FilterWidget.hpp"
 
@@ -64,8 +65,8 @@ TreeNodeWidget::TreeNodeWidget(ServerFilter* serverFilter,QWidget* parent) : Nod
 	connect(view_->realWidget(),SIGNAL(dashboardCommand(VInfo_ptr,QString)),
 			this,SIGNAL(dashboardCommand(VInfo_ptr,QString)));
 
-	connect(bcWidget_,SIGNAL(selected(VInfo_ptr)),
-			view_->realWidget(),SLOT(slotSetCurrent(VInfo_ptr)));
+	connect(bcWidget_,SIGNAL(selected(VInfo_ptr)),            
+            this,SLOT(slotSelectionChangedInBc(VInfo_ptr)));
 
     connect(model_,SIGNAL(clearBegun(const VTreeNode*)),
             view_->realWidget(),SLOT(slotSaveExpand(const VTreeNode*)));
@@ -98,6 +99,8 @@ TreeNodeWidget::TreeNodeWidget(ServerFilter* serverFilter,QWidget* parent) : Nod
 	//The node status filter is exposed via a menu. So we need a reference to it.
 	states_=filterDef_->nodeState();
 
+    viewHolder_->setObjectName("h");
+    WidgetNameProvider::nameChildren(this);
 }
 
 TreeNodeWidget::~TreeNodeWidget()
@@ -127,8 +130,8 @@ void TreeNodeWidget::populateDockTitleBar(DashboardDockTitleWidget* tw)
 	menu->setTearOffEnabled(true);
 
 	menu->addAction(actionBreadcrumbs);
-	QMenu *menuState=new QMenu(this); //menu->addMenu(tr("Status"));
-	QMenu *menuType=new QMenu(this); //menu->addMenu(tr("Attribute"));
+    QMenu *menuState=new QMenu(this);
+    QMenu *menuType=new QMenu(this);
 	QMenu *menuIcon=menu->addMenu(tr("Icon"));
 
 	menuState->setTearOffEnabled(true);
@@ -137,9 +140,10 @@ void TreeNodeWidget::populateDockTitleBar(DashboardDockTitleWidget* tw)
 
 	//stateFilterMenu_=new StateFilterMenu(menuState,filter_->menu());
 	attrFilterMenu_=new VParamFilterMenu(menuType,atts_,"Show attributes",VParamFilterMenu::ShowMode);
-	iconFilterMenu_=new VParamFilterMenu(menuIcon,icons_,"Show icons",VParamFilterMenu::ShowMode);
-	stateFilterMenu_=new VParamFilterMenu(menuState,states_,"Status filter",
-			       VParamFilterMenu::FilterMode,VParamFilterMenu::ColourDecor);
+    iconFilterMenu_=new VParamFilterMenu(menuIcon,icons_,"Show icons",VParamFilterMenu::ShowMode,
+                                         VParamFilterMenu::PixmapDecor);
+    stateFilterMenu_=new VParamFilterMenu(menuState,states_,"Show statuses",
+                   VParamFilterMenu::ShowMode,VParamFilterMenu::ColourDecor);
 
 	//Sets the menu on the toolbutton
 	tw->optionsTb()->setMenu(menu);
@@ -148,16 +152,16 @@ void TreeNodeWidget::populateDockTitleBar(DashboardDockTitleWidget* tw)
     tw->slotUpdateTitle("<b>Tree</b>");
     
     QList<QAction*> acLst;
+
     QAction* acState=new QAction(this);
     acState->setIcon(QPixmap(":viewer/status.svg"));
-    acState->setToolTip("Status filter");
+    acState->setToolTip("Show statuses");
     acState->setMenu(menuState);
     acLst << acState;
 
     QAction* acAttr=new QAction(this);
     acAttr->setIcon(QPixmap(":viewer/attribute.svg"));
     acAttr->setToolTip("Show attributes");
-    //acAttr->setText("Attributes ");
     acAttr->setMenu(menuType);
     acLst << acAttr;
 
@@ -168,7 +172,8 @@ void TreeNodeWidget::slotSelectionChangedInView(VInfo_ptr info)
 {
 	updateActionState(info);
 	bcWidget_->setPath(info);
-	Q_EMIT selectionChanged(info);
+    if(broadcastSelection())
+        Q_EMIT selectionChanged(info);
 }
 
 
@@ -177,14 +182,12 @@ void TreeNodeWidget::on_actionBreadcrumbs_triggered(bool b)
 	if(b)
 	{
 		bcWidget_->active(true);
-		bcWidget_->setPath(view_->currentSelection());
+        bcWidget_->setPath(view_->currentSelection());
 	}
 	else
 	{
 		bcWidget_->active(false);
 	}
-
-	//bcWidget_->clear();
 }
 
 void TreeNodeWidget::rerender()
@@ -213,7 +216,9 @@ void TreeNodeWidget::writeSettings(VSettings* vs)
 
 	states_->writeSettings(vs);
 	atts_->writeSettings(vs);
-	icons_->writeSettings(vs);
+    icons_->writeSettings(vs);
+
+    DashboardWidget::writeSettings(vs);
 }
 
 void TreeNodeWidget::readSettings(VSettings* vs)
@@ -249,4 +254,6 @@ void TreeNodeWidget::readSettings(VSettings* vs)
 	attrFilterMenu_->reload();
 	iconFilterMenu_->reload();
 	stateFilterMenu_->reload();
+
+    DashboardWidget::readSettings(vs);
 }
diff --git a/Viewer/src/TreeNodeWidget.hpp b/Viewer/src/TreeNodeWidget.hpp
index ece6ffa..f7c169f 100644
--- a/Viewer/src/TreeNodeWidget.hpp
+++ b/Viewer/src/TreeNodeWidget.hpp
@@ -43,6 +43,7 @@ protected Q_SLOTS:
 
 protected:
 	void initAtts();
+    void detachedChanged() {}
 
 	VParamFilterMenu *stateFilterMenu_;
 	VParamFilterMenu *attrFilterMenu_;
diff --git a/Viewer/src/TriggerBrowser.cpp b/Viewer/src/TriggerBrowser.cpp
new file mode 100644
index 0000000..b0d6fe4
--- /dev/null
+++ b/Viewer/src/TriggerBrowser.cpp
@@ -0,0 +1,292 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "TriggerBrowser.hpp"
+
+#include <QDebug>
+#include <QPlainTextEdit>
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+#include <QGuiApplication>
+#endif
+
+#include "Highlighter.hpp"
+#include "TriggerCollector.hpp"
+#include "TriggerItemWidget.hpp"
+#include "VAttribute.hpp"
+#include "VItemPathParser.hpp"
+
+TriggerBrowser::TriggerBrowser(QWidget *parent) : QWidget(parent), owner_(0)
+{
+    setupUi(this);
+
+    //We use this plaintextedit to generate the syntax highligted html text for
+    //the trigger expression.
+    exprTe_=new QPlainTextEdit(this);
+    exprTe_->hide();
+    exprHighlight_=new Highlighter(exprTe_->document(),"trigger");
+
+    triggerCollector_=new TriggerListCollector(false);
+
+    Q_ASSERT(tab_->count() == 2);
+    tab_->setCurrentIndex(tabIndexToInt(TriggerTabIndex));
+
+    QFont f("Monospace");
+    f.setStyleHint(QFont::TypeWriter);
+    f.setFixedPitch(true);
+    f.setPointSize(10);
+    f.setStyleStrategy(QFont::PreferAntialias);
+    triggerBrowser_->setFont(f);
+    triggeredBrowser_->setFont(f);
+
+    connect(triggerBrowser_,SIGNAL(anchorClicked(const QUrl&)),
+            this,SLOT(anchorClicked(const QUrl&)));
+
+    connect(triggeredBrowser_,SIGNAL(anchorClicked(const QUrl&)),
+            this,SLOT(anchorClicked(const QUrl&)));
+}
+
+TriggerBrowser::~TriggerBrowser()
+{
+    delete triggerCollector_;
+}
+
+void TriggerBrowser::setOwner(TriggerItemWidget* owner)
+{
+    Q_ASSERT(!owner_);
+    owner_=owner;
+}
+
+void TriggerBrowser::clear()
+{
+    triggerCollector_->clear();
+    loadedTabs_.clear();
+    triggerBrowser_->clear();
+    triggeredBrowser_->clear();
+}
+
+void TriggerBrowser::suspend()
+{
+    triggerCollector_->clear();
+}
+
+void TriggerBrowser::load()
+{    
+    Q_ASSERT(owner_);
+
+    loadedTabs_.clear();
+
+    if(tab_->currentIndex() == tabIndexToInt(TriggerTabIndex))
+    {
+        loadTriggerTab(true);
+    }
+    else if(tab_->currentIndex() == tabIndexToInt(TriggeredTabIndex))
+    {
+        loadTriggeredTab(true);
+    }
+}
+
+void TriggerBrowser::loadTriggerTab(bool forceLoad)
+{
+    if(!forceLoad && isTabLoaded(TriggerTabIndex))
+        return;
+
+    VNode *n=owner_->info()->node();
+    Q_ASSERT(n);
+
+    std::string te,ce;
+    n->triggerExpr(te,ce);
+
+    QString s="<table width=\'100%\'>";
+
+    //Trigger expression
+    if(!te.empty())
+    {
+        //Generate syntax highlighted html text for the trigger expression
+        QString tb;
+        exprTe_->setPlainText(QString::fromStdString(te));
+        exprHighlight_->toHtml(tb);
+
+        //We extract the useful bit from the html text
+        QRegExp rx("<!--StartFragment-->(.+)<!--EndFragment-->");
+        if(rx.indexIn(tb) > -1 && rx.captureCount() == 1)
+        {
+            tb=rx.cap(1);
+        }
+
+        tb="<font face=\'monospace\'>" + tb + "</font>";
+
+        s+="<tr><td colspan=\'2\' class=\'trigger_title\'>Trigger expression</td></tr><tr><td colspan=\'2\' class=\'trigger\'> <p>" +
+                 tb + "</p></td></tr>";
+    }
+
+    triggerCollector_->setDependency(owner_->dependency());
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+    QGuiApplication::setOverrideCursor(QCursor(Qt::WaitCursor));
+#endif
+    n->triggers(triggerCollector_);
+    s+=makeHtml(triggerCollector_,"Triggers directly triggering the selected node","Triggers");
+    s+="</table>";
+    triggerBrowser_->setHtml(s);
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+    QGuiApplication::restoreOverrideCursor();
+#endif
+
+    loadedTabs_.insert(TriggerTabIndex);
+}
+
+void TriggerBrowser::loadTriggeredTab(bool forceLoad)
+{
+    if(!forceLoad && isTabLoaded(TriggeredTabIndex))
+        return;
+
+    VNode *n=owner_->info()->node();
+    Q_ASSERT(n);
+
+    TriggerListCollector c(owner_->dependency());
+    n->triggered(&c,owner_->triggeredScanner());
+
+    QString s="<table width=\'100%\'>";
+    s+=makeHtml(&c,"Nodes directly triggered by the selected node","Triggered");
+    s+="</table>";
+    triggeredBrowser_->setHtml(s);
+
+    loadedTabs_.insert(TriggeredTabIndex);
+}
+
+void TriggerBrowser::on_tab__currentChanged(int idx)
+{
+    if(owner_ && !owner_->isSuspended())
+    {
+        if(idx == tabIndexToInt(TriggerTabIndex))
+            loadTriggerTab();
+        else if(idx == tabIndexToInt(TriggeredTabIndex))
+            loadTriggeredTab();
+    }
+}
+
+bool TriggerBrowser::isTabLoaded(TabIndex idx) const
+{
+    return (loadedTabs_.find(idx) != loadedTabs_.end());
+}
+
+int TriggerBrowser::tabIndexToInt(TabIndex idx) const
+{
+    return static_cast<int>(idx);
+}
+
+//Updates the trigger list if the right type of change happened
+void TriggerBrowser::nodeChanged(const VNode* n)
+{
+    if(!isTabLoaded(TriggerTabIndex))
+        return;
+
+    VNode *node=owner_->info()->node();
+    Q_ASSERT(node);
+    if(n == node)
+    {
+        loadTriggerTab(true);
+        return;
+    }
+
+    const std::vector<TriggerListItem*>& items=triggerCollector_->items();
+    for(unsigned int i=0; i < items.size(); i++)
+    {
+        if(VItem *t=items[i]->item())
+        {
+            if(VAttribute* a=t->isAttribute())
+            {
+                if(a->parent() == n)
+                {
+                    loadTriggerTab(true);
+                    return;
+                }
+            }
+        }
+    }
+}
+
+void TriggerBrowser::anchorClicked(const QUrl& link)
+{
+    owner_->linkSelected(link.toString().toStdString());
+    tab_->setCurrentIndex(TriggerTabIndex);
+}
+
+QString TriggerBrowser::makeHtml(TriggerListCollector *tc,QString directTitle,QString modeText) const
+{
+    QString s;
+    bool firstDirectTrigger=true;
+    const std::vector<TriggerListItem*>& items=tc->items();
+
+    for(unsigned int i=0; i < items.size(); i++)
+    {
+        VItem *t=items[i]->item();
+        VItem *d=items[i]->dep();
+        if(!t)
+            continue;
+
+        if(!d)
+        {
+            if(firstDirectTrigger)
+            {
+                s+="<tr><td class=\'direct_title\' colspan=\'2\'>" + directTitle + "</td></tr>";
+                firstDirectTrigger=false;
+            }
+
+            QString type=QString::fromStdString(t->typeName());
+            QString path=QString::fromStdString(t->fullPath());
+            QString anchor=QString::fromStdString(VItemPathParser::encode(t->fullPath(),t->typeName()));
+
+            s+="<tr>";
+            s+="<td width=\'100\'>" + type + "</td>";
+            s+="<td><a href=\'" + anchor  + "\'>" + path +"</a>";
+        }
+    }
+
+    QString prevH;
+
+    for(unsigned int i=0; i < items.size(); i++)
+    {
+        VItem *t=items[i]->item();
+        VItem *d=items[i]->dep();
+        if(!t || !d)
+            continue;
+
+        QString h;
+
+        if(items[i]->mode()== TriggerCollector::Parent)
+           h+=modeText + " through parent";
+        else
+           h+=modeText + " through child";
+
+        QString type=QString::fromStdString(d->typeName());
+        QString path=QString::fromStdString(d->fullPath());
+        QString anchor=QString::fromStdString(VItemPathParser::encode(d->fullPath(),d->typeName()));
+
+        h+="  " + type;
+        h+=" <a class=\'chp\' href=\'" + anchor + "\'>" + path +"</a>";
+
+        if(h != prevH)
+        {
+            s+="<tr><td class=\'title\' colspan=\'2\'>" + h + "</td></tr>";
+            prevH=h;
+        }
+
+        type=QString::fromStdString(t->typeName());
+        path=QString::fromStdString(t->fullPath());
+        anchor=QString::fromStdString(VItemPathParser::encode(t->fullPath(),t->typeName()));
+
+        s+="<tr>";
+        s+="<td width=\'100\'>" + type + "</td>";
+        s+="<td><a href=\'" +  anchor + "\'>" + path +"</a>";
+     }
+
+    return s;
+}
diff --git a/Viewer/src/TriggerBrowser.hpp b/Viewer/src/TriggerBrowser.hpp
new file mode 100644
index 0000000..9bf166c
--- /dev/null
+++ b/Viewer/src/TriggerBrowser.hpp
@@ -0,0 +1,60 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef TRIGGERBROWSER_HPP
+#define TRIGGERBROWSER_HPP
+
+#include <QWidget>
+
+#include <set>
+
+#include "ui_TriggerBrowser.h"
+
+#include "VInfo.hpp"
+
+class QPlainTextEdit;
+class Highlighter;
+class TriggerItemWidget;
+class TriggerListCollector;
+
+class TriggerBrowser : public QWidget, protected Ui::TriggerBrowser
+{
+Q_OBJECT
+
+public:
+    explicit TriggerBrowser(QWidget *parent=0);
+    ~TriggerBrowser();
+
+    void setOwner(TriggerItemWidget*);
+    void clear();
+    void load();
+    void suspend();
+    void nodeChanged(const VNode*);
+
+protected Q_SLOTS:
+    void on_tab__currentChanged(int idx);
+    void anchorClicked(const QUrl& link);
+
+private:
+    enum TabIndex {TriggerTabIndex=0, TriggeredTabIndex=1};
+
+    void loadTriggerTab(bool forceLoad=false);
+    void loadTriggeredTab(bool forceLoad=false);
+    bool isTabLoaded(TabIndex idx) const;
+    int tabIndexToInt(TabIndex idx) const;
+    QString makeHtml(TriggerListCollector *tc,QString,QString) const;
+
+    TriggerItemWidget* owner_;
+    std::set<TabIndex> loadedTabs_;
+    QPlainTextEdit* exprTe_;
+    Highlighter* exprHighlight_;
+    TriggerListCollector* triggerCollector_;
+};
+
+#endif // TRIGGERBROWSER_HPP
diff --git a/Viewer/src/TriggerBrowser.ui b/Viewer/src/TriggerBrowser.ui
new file mode 100644
index 0000000..faa3458
--- /dev/null
+++ b/Viewer/src/TriggerBrowser.ui
@@ -0,0 +1,100 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TriggerBrowser</class>
+ <widget class="QWidget" name="TriggerBrowser">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>400</width>
+    <height>300</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QVBoxLayout" name="verticalLayout">
+   <property name="spacing">
+    <number>1</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item>
+    <widget class="QTabWidget" name="tab_">
+     <property name="currentIndex">
+      <number>1</number>
+     </property>
+     <widget class="QWidget" name="tab">
+      <attribute name="title">
+       <string>Triggers of the selected node</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_2">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="TriggerTextWidget" name="triggerBrowser_"/>
+       </item>
+      </layout>
+     </widget>
+     <widget class="QWidget" name="tab_2">
+      <attribute name="title">
+       <string>Nodes triggered by the selected node</string>
+      </attribute>
+      <layout class="QVBoxLayout" name="verticalLayout_3">
+       <property name="spacing">
+        <number>0</number>
+       </property>
+       <property name="leftMargin">
+        <number>0</number>
+       </property>
+       <property name="topMargin">
+        <number>0</number>
+       </property>
+       <property name="rightMargin">
+        <number>0</number>
+       </property>
+       <property name="bottomMargin">
+        <number>0</number>
+       </property>
+       <item>
+        <widget class="TriggerTextWidget" name="triggeredBrowser_"/>
+       </item>
+      </layout>
+     </widget>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>TriggerTextWidget</class>
+   <extends>QTextBrowser</extends>
+   <header>TriggerTextWidget.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Viewer/src/TriggerCollector.cpp b/Viewer/src/TriggerCollector.cpp
new file mode 100644
index 0000000..8c62ee3
--- /dev/null
+++ b/Viewer/src/TriggerCollector.cpp
@@ -0,0 +1,81 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "TriggerCollector.hpp"
+
+#include "UiLog.hpp"
+#include "VItem.hpp"
+#include "VItemPathParser.hpp"
+#include "VNode.hpp"
+
+#define _UI_TRIGGERCOLLECTOR_DEBUG
+
+TriggerListCollector::~TriggerListCollector()
+{
+    clear();
+}
+
+bool TriggerListCollector::add(VItemTmp_ptr t, VItemTmp_ptr dep,Mode mode)
+{
+    TriggerListItem *item=new TriggerListItem(t,dep,mode) ;
+    items_.push_back(item);
+    return true;
+
+#if 0
+    if(dep)
+    {
+        UiLog().dbg() << " dep=" << dep->typeName() << " " +  dep->strName();
+        UiLog().dbg() << "    =" << item->dep_->typeName() << " " <<  item->dep_->strName());
+    }
+#endif
+}
+
+void TriggerListCollector::setDependency(bool b)
+{
+    extended_=b;
+    clear();
+}
+
+void TriggerListCollector::clear()
+{
+    for(size_t i=0; i < items_.size(); i++)
+    {
+        delete items_[i];
+    }
+    items_.clear();
+}
+
+
+bool TriggerChildCollector::add(VItemTmp_ptr t, VItemTmp_ptr,Mode)
+{
+    if(!t->item()->isAncestor(node_->item()))
+    {
+        // child is a kid of n whose trigger_panel is outside its subtree
+        return collector_->add(t,child_,TriggerCollector::Child);
+    }
+    return false;
+}
+
+bool TriggerParentCollector::add(VItemTmp_ptr t, VItemTmp_ptr,Mode)
+{
+    return collector_->add(t,parent_,TriggerCollector::Parent);
+}
+
+bool TriggeredCollector::add(VItemTmp_ptr trigger, VItemTmp_ptr,Mode)
+{
+    if(VNode *n=trigger->item()->isNode())
+    {
+        n->addTriggeredData(node_->item());
+    }
+    return false;
+
+    //else if(trigger->isAttribute())
+    //    trigger->parent()->addTriggeredData(node_,trigger);
+}
+
diff --git a/Viewer/src/TriggerCollector.hpp b/Viewer/src/TriggerCollector.hpp
new file mode 100644
index 0000000..1ce8af9
--- /dev/null
+++ b/Viewer/src/TriggerCollector.hpp
@@ -0,0 +1,121 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef TRIGGERCOLLECTOR_HPP
+#define TRIGGERCOLLECTOR_HPP
+
+#include <string>
+#include <vector>
+
+#include <stdio.h>
+
+class TriggerListItem;
+
+#include "VItemTmp.hpp"
+#include "VNode.hpp"
+
+class TriggerCollector
+{
+public:
+    TriggerCollector() {}
+    virtual ~TriggerCollector() {}
+
+    enum Mode { Normal    = 0,   // Normal trigger_node
+                Parent    = 1,   // Through parent
+                Child     = 2,   // Through child
+                Hierarchy = 3    // Through child
+    };
+
+    virtual bool add(VItemTmp_ptr, VItemTmp_ptr,Mode) = 0;
+    virtual bool scanParents() { return false; }
+    virtual bool scanKids()    { return false; }
+    virtual bool scanSelf()    { return true; }
+
+private:
+    TriggerCollector(const TriggerCollector&);
+    TriggerCollector& operator=(const TriggerCollector&);
+};
+
+class TriggerListCollector : public TriggerCollector
+{
+public:
+    TriggerListCollector(bool extended) :
+        extended_(extended) {}
+
+    ~TriggerListCollector();
+    bool add(VItemTmp_ptr, VItemTmp_ptr,Mode);
+    bool scanParents() { return extended_; }
+    bool scanKids() { return extended_; }
+    void setDependency(bool);
+    void clear();
+
+    const std::vector<TriggerListItem*>& items() const {return items_;}
+
+protected:
+    bool extended_;
+    std::vector<TriggerListItem*> items_;
+};
+
+class TriggerChildCollector : public TriggerCollector
+{
+public:
+    TriggerChildCollector(VItem *n,VItem* child,TriggerCollector* collector) :
+        node_(VItemTmp::create(n)), child_(VItemTmp::create(child)), collector_(collector) {}
+
+    bool add(VItemTmp_ptr, VItemTmp_ptr,Mode);
+
+private:
+  VItemTmp_ptr node_;
+  VItemTmp_ptr child_;
+  TriggerCollector* collector_;
+};
+
+class TriggerParentCollector : public TriggerCollector
+{
+public:
+    TriggerParentCollector(VItem* parent,TriggerCollector* collector) :
+        parent_(VItemTmp::create(parent)), collector_(collector) {}
+
+    bool add(VItemTmp_ptr, VItemTmp_ptr,Mode);
+
+private:
+  VItemTmp_ptr parent_;
+  TriggerCollector* collector_;
+};
+
+class TriggeredCollector : public TriggerListCollector
+{
+public:
+    TriggeredCollector(VNode* n) :
+        TriggerListCollector(false), node_(VItemTmp::create(n)) {}
+    bool add(VItemTmp_ptr, VItemTmp_ptr,Mode);
+
+private:
+  VItemTmp_ptr node_;
+};
+
+class TriggerListItem
+{
+public:
+    TriggerListItem(VItemTmp_ptr t,VItemTmp_ptr dep,TriggerCollector::Mode mode) :
+        t_(t), dep_(dep), mode_(mode) {}
+
+    VItem* item() const {return (t_)?t_->item():NULL;}
+    VItem* dep()  const {return (dep_)?dep_->item():NULL;}
+    TriggerCollector::Mode mode() const {return mode_;}
+
+protected:
+    VItemTmp_ptr t_; //trigger or triggered
+    VItemTmp_ptr dep_;
+    TriggerCollector::Mode mode_;
+};
+
+
+#endif // TRIGGERCOLLECTOR_HPP
+
diff --git a/Viewer/src/TriggerEditor.cpp b/Viewer/src/TriggerEditor.cpp
new file mode 100644
index 0000000..9aebe5c
--- /dev/null
+++ b/Viewer/src/TriggerEditor.cpp
@@ -0,0 +1,161 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "TriggerEditor.hpp"
+
+#include <QSettings>
+
+#include "AttributeEditorFactory.hpp"
+#include "Highlighter.hpp"
+#include "VAttribute.hpp"
+#include "VAttributeType.hpp"
+#include "ServerHandler.hpp"
+#include "SessionHandler.hpp"
+
+TriggerEditorWidget::TriggerEditorWidget(QWidget* parent) : QWidget(parent)
+{
+    setupUi(this);
+
+#if 0
+    QLayoutItem *item;
+    item=grid_->itemAtPosition(1,0);
+    Q_ASSERT(item);
+    item->setAlignment(Qt::AlignLeft|Qt::AlignTop);
+#endif
+
+    Highlighter *h=new Highlighter(te_->document(),"trigger");
+    te_->setShowLineNumbers(false);
+}
+
+TriggerEditor::TriggerEditor(VInfo_ptr info,QWidget* parent) : AttributeEditor(info,"trigger",parent)
+{
+    w_=new TriggerEditorWidget(this);
+    addForm(w_);
+
+    VAttribute* a=info_->attribute();
+
+    Q_ASSERT(a);
+    Q_ASSERT(a->type());
+    Q_ASSERT(a->type()->name() == "trigger");
+
+    //Data is built dynamically so we store it
+    QStringList data=a->data();
+
+    if(data.count() != 3)
+        return;
+
+    QString txt=data[2];
+
+    oriText_=txt;
+    w_->te_->setPlainText(txt);
+
+    QString typeInHeader;
+    if(data[1]=="0")
+    {
+        typeInCmd_="trigger";
+        typeInHeader="Trigger";
+    }
+    else
+    {
+        typeInCmd_="complete";
+        typeInHeader="Complete";
+    }
+    typeInHeader+=" expression";
+
+    header_->setInfo(QString::fromStdString(info_->path()),typeInHeader);
+
+    connect(w_->te_,SIGNAL(textChanged()),
+            this,SLOT(slotValueChanged()));
+
+    checkButtonStatus();
+
+    readSettings();
+}
+
+TriggerEditor::~TriggerEditor()
+{
+    writeSettings();
+}
+
+void TriggerEditor::apply()
+{
+    if(typeInCmd_.isEmpty())
+        return;
+
+    std::string txt=w_->te_->toPlainText().toStdString();
+    std::vector<std::string> cmd;
+    VAttribute::buildAlterCommand(cmd,"change",typeInCmd_.toStdString(),txt);
+    ServerHandler::command(info_,cmd);
+}
+
+void TriggerEditor::resetValue()
+{
+    w_->te_->setPlainText(oriText_);
+    checkButtonStatus();
+}
+
+void TriggerEditor::slotValueChanged()
+{
+    checkButtonStatus();
+}
+
+bool TriggerEditor::isValueChanged()
+{
+    return (oriText_ != w_->te_->toPlainText());
+}
+
+void TriggerEditor::writeSettings()
+{
+    SessionItem* cs=SessionHandler::instance()->current();
+    Q_ASSERT(cs);
+    QSettings settings(QString::fromStdString(cs->qtSettingsFile("TriggerEditor")),
+                       QSettings::NativeFormat);
+
+    //We have to clear it so that should not remember all the previous values
+    settings.clear();
+
+    settings.beginGroup("main");
+    settings.setValue("size",size());
+    settings.setValue("fontSize",w_->te_->font().pointSize());
+    settings.endGroup();
+}
+
+void TriggerEditor::readSettings()
+{
+    SessionItem* cs=SessionHandler::instance()->current();
+    Q_ASSERT(cs);
+    QSettings settings(QString::fromStdString(cs->qtSettingsFile("TriggerEditor")),
+                       QSettings::NativeFormat);
+
+    settings.beginGroup("main");
+    if(settings.contains("size"))
+    {
+        resize(settings.value("size").toSize());
+    }
+    else
+    {
+        resize(QSize(310,200));
+    }
+
+    if(settings.contains("fontSize"))
+    {
+        QFont f=w_->te_->font();
+        int fSize=settings.value("fontSize").toInt();
+        if(fSize > 0 && fSize < 100)
+            f.setPointSize(fSize);
+
+        w_->te_->setFont(f);
+    }
+
+    settings.endGroup();
+}
+
+static AttributeEditorMaker<TriggerEditor> makerStr("trigger");
+
diff --git a/Viewer/src/TriggerEditor.hpp b/Viewer/src/TriggerEditor.hpp
new file mode 100644
index 0000000..a573605
--- /dev/null
+++ b/Viewer/src/TriggerEditor.hpp
@@ -0,0 +1,51 @@
+#ifndef TRIGGEREDITOR_HPP
+#define TRIGGEREDITOR_HPP
+
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "ui_TriggerEditorWidget.h"
+
+#include "AttributeEditor.hpp"
+#include "VInfo.hpp"
+
+class LabelEditor;
+
+class TriggerEditorWidget :  public QWidget, protected Ui::TriggerEditorWidget
+{
+friend class TriggerEditor;
+public:
+    TriggerEditorWidget(QWidget *parent=0);
+};
+
+class TriggerEditor : public AttributeEditor
+{
+Q_OBJECT
+public:
+    TriggerEditor(VInfo_ptr,QWidget* parent=0);
+    ~TriggerEditor();
+
+protected Q_SLOTS:
+    void slotValueChanged();
+
+protected:
+    void apply();
+    void resetValue();
+    bool isValueChanged();
+    void readSettings();
+    void writeSettings();
+
+    TriggerEditorWidget* w_;
+    QString oriText_;
+    QString typeInCmd_;
+};
+
+#endif // TRIGGEREDITOR_HPP
+
diff --git a/Viewer/src/TriggerEditorWidget.ui b/Viewer/src/TriggerEditorWidget.ui
new file mode 100644
index 0000000..993de46
--- /dev/null
+++ b/Viewer/src/TriggerEditorWidget.ui
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>TriggerEditorWidget</class>
+ <widget class="QWidget" name="TriggerEditorWidget">
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>329</width>
+    <height>227</height>
+   </rect>
+  </property>
+  <property name="windowTitle">
+   <string>Form</string>
+  </property>
+  <layout class="QGridLayout" name="grid_" rowstretch="0">
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
+   <property name="bottomMargin">
+    <number>0</number>
+   </property>
+   <item row="0" column="0">
+    <widget class="PlainTextEdit" name="te_">
+     <property name="sizePolicy">
+      <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
+       <horstretch>0</horstretch>
+       <verstretch>1</verstretch>
+      </sizepolicy>
+     </property>
+    </widget>
+   </item>
+  </layout>
+ </widget>
+ <customwidgets>
+  <customwidget>
+   <class>PlainTextEdit</class>
+   <extends>QPlainTextEdit</extends>
+   <header>PlainTextEdit.hpp</header>
+  </customwidget>
+ </customwidgets>
+ <resources/>
+ <connections/>
+</ui>
diff --git a/Viewer/src/TriggerItemWidget.cpp b/Viewer/src/TriggerItemWidget.cpp
index 4da2112..a55d219 100644
--- a/Viewer/src/TriggerItemWidget.cpp
+++ b/Viewer/src/TriggerItemWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,8 +9,10 @@
 
 #include "TriggerItemWidget.hpp"
 
-#include "Node.hpp"
 #include "TriggerView.hpp"
+#include "TriggeredScanner.hpp"
+#include "VNode.hpp"
+#include "VSettings.hpp"
 
 //========================================================
 //
@@ -21,6 +23,30 @@
 TriggerItemWidget::TriggerItemWidget(QWidget *parent) : QWidget(parent)
 {
     setupUi(this);
+
+    messageLabel_->hide();
+    messageLabel_->setShowTypeTitle(false);
+
+    textTb_->hide();
+    graphTb_->hide();
+    triggerView_->hide();
+
+    //Dependencies
+    dependTb_->setChecked(false);
+
+    //Scanner
+    scanner_=new TriggeredScanner(this);
+
+    connect(scanner_,SIGNAL(scanStarted()),
+            this,SLOT(scanStarted()));
+
+    connect(scanner_,SIGNAL(scanFinished()),
+            this,SLOT(scanFinished()));
+
+    connect(scanner_,SIGNAL(scanProgressed(int)),
+            this,SLOT(scanProgressed(int)));
+
+    textBrowser_->setOwner(this);
 }
 
 QWidget* TriggerItemWidget::realWidget()
@@ -28,26 +54,139 @@ QWidget* TriggerItemWidget::realWidget()
 	return this;
 }
 
-void TriggerItemWidget::reload(VInfo_ptr nodeInfo)
+void TriggerItemWidget::reload(VInfo_ptr info)
 {
-	clearContents();
+    assert(active_);
+
+    if(suspended_)
+        return;
 
-	active_=true;
+    clearContents();
 
-	if(nodeInfo.get() != 0 && nodeInfo->isNode())
-	{
-		//Node* n=nodeInfo->node();
-	}
-	else
-	{
+    info_=info;
+    //messageLabel_->hide();
 
-	}
+    //Info must be a node
+    if(info_ && info_->isNode() && info_->node())
+    {
+        textBrowser_->load();
+    }
+}
 
+void TriggerItemWidget::load()
+{
+    if(info_ && info_->isNode() && info_->node())
+    {        
+        textBrowser_->load();
+    }
 }
 
 void TriggerItemWidget::clearContents()
 {
-	InfoPanelItem::clear();
+    InfoPanelItem::clear();
+    textBrowser_->clear();
+}
+
+void TriggerItemWidget::updateState(const FlagSet<ChangeFlag>& flags)
+{
+    if(flags.isSet(SuspendedChanged))
+    {
+        if(suspended_)
+           textBrowser_->suspend();
+    }
+
+    checkActionState();
+}
+
+void TriggerItemWidget::checkActionState()
+{
+    if(suspended_)
+    {
+         dependTb_->setEnabled(false);
+         return;
+    }
+
+    dependTb_->setEnabled(true);
+}
+
+void TriggerItemWidget::on_dependTb__toggled(bool)
+{   
+    load();
+}
+
+bool TriggerItemWidget::dependency() const
+{
+    return dependTb_->isChecked();
+}
+#if 0
+void TriggerItemWidget::infoProgressStart(const std::string& text,int max)
+{
+    messageLabel_->showInfo(QString::fromStdString(text));
+    messageLabel_->startProgress(max);
+}
+
+void TriggerItemWidget::infoProgress(const std::string& text,int value)
+{
+    messageLabel_->progress(QString::fromStdString(text),value);
+}
+
+#endif
+
+void TriggerItemWidget::scanStarted()
+{
+    messageLabel_->showInfo("Mapping trigger connections in the whole tree ...");
+    messageLabel_->startProgress(100);
+}
+
+void TriggerItemWidget::scanFinished()
+{
+    messageLabel_->stopProgress();
+    messageLabel_->hide();
+}
+
+void TriggerItemWidget::scanProgressed(int value)
+{
+    std::string text="";
+    messageLabel_->progress(QString::fromStdString(text),value);
+}
+
+void TriggerItemWidget::writeSettings(VSettings* vs)
+{
+#if 0
+    vs->beginGroup("triggers");
+    vs->putAsBool("dependency",dependency());
+    vs->endGroup();
+#endif
+}
+
+void TriggerItemWidget::readSettings(VSettings* vs)
+{
+#if 0
+    vs->beginGroup("triggers");
+    dependTb_->setChecked(vs->getAsBool("dependency",dependency()));
+    vs->endGroup();
+#endif
+}
+
+//-------------------------
+// Update
+//-------------------------
+
+void TriggerItemWidget::nodeChanged(const VNode* n, const std::vector<ecf::Aspect::Type>& aspect)
+{
+    if(!info_ || !info_->isNode())
+        return;
+
+    //Changes in the nodes
+    for(std::vector<ecf::Aspect::Type>::const_iterator it=aspect.begin(); it != aspect.end(); ++it)
+    {
+        if(*it == ecf::Aspect::ADD_REMOVE_ATTR || *it == ecf::Aspect::NODE_VARIABLE ||
+            *it == ecf::Aspect::EXPR_TRIGGER || *it == ecf::Aspect::EXPR_COMPLETE)
+        {
+            textBrowser_->nodeChanged(n);
+            return;
+        }
+    }
 }
 
 static InfoPanelItemMaker<TriggerItemWidget> maker1("triggers");
diff --git a/Viewer/src/TriggerItemWidget.hpp b/Viewer/src/TriggerItemWidget.hpp
index 68845cf..b79ca76 100644
--- a/Viewer/src/TriggerItemWidget.hpp
+++ b/Viewer/src/TriggerItemWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -18,8 +18,14 @@
 
 #include "ui_TriggerItemWidget.h"
 
+class TriggeredScanner;
+
 class TriggerItemWidget : public QWidget, public InfoPanelItem, protected Ui::TriggerItemWidget
 {
+  friend class TriggerBrowser;
+
+Q_OBJECT
+
 public:
 	explicit TriggerItemWidget(QWidget *parent=0);
 
@@ -27,12 +33,27 @@ public:
 	QWidget* realWidget();
     void clearContents();
 
-    void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&) {}
+    void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&);
     void defsChanged(const std::vector<ecf::Aspect::Type>&) {}
 
+    bool dependency() const;
+
+    void writeSettings(VSettings* vs);
+    void readSettings(VSettings* vs);
+
+protected Q_SLOTS:
+    void on_dependTb__toggled(bool);
+    void scanStarted();
+    void scanFinished();
+    void scanProgressed(int);
+
 protected:
-    void updateState(const ChangeFlags&) {}
+    void load();
+    void updateState(const ChangeFlags&);
+    TriggeredScanner* triggeredScanner() const {return scanner_;}
+    void checkActionState();
 
+    TriggeredScanner *scanner_;
 };
 
 #endif
diff --git a/Viewer/src/TriggerItemWidget.ui b/Viewer/src/TriggerItemWidget.ui
index 47aec5e..d2a90c7 100644
--- a/Viewer/src/TriggerItemWidget.ui
+++ b/Viewer/src/TriggerItemWidget.ui
@@ -6,14 +6,26 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>510</width>
-    <height>465</height>
+    <width>620</width>
+    <height>728</height>
    </rect>
   </property>
   <property name="windowTitle">
    <string>Form</string>
   </property>
-  <layout class="QVBoxLayout" name="verticalLayout">
+  <layout class="QVBoxLayout" name="verticalLayout" stretch="0,0,1,0">
+   <property name="spacing">
+    <number>1</number>
+   </property>
+   <property name="leftMargin">
+    <number>0</number>
+   </property>
+   <property name="topMargin">
+    <number>0</number>
+   </property>
+   <property name="rightMargin">
+    <number>0</number>
+   </property>
    <item>
     <layout class="QHBoxLayout" name="horizontalLayout">
      <item>
@@ -56,6 +68,12 @@
     </layout>
    </item>
    <item>
+    <widget class="MessageLabel" name="messageLabel_" native="true"/>
+   </item>
+   <item>
+    <widget class="TriggerBrowser" name="textBrowser_" native="true"/>
+   </item>
+   <item>
     <widget class="TriggerView" name="triggerView_"/>
    </item>
   </layout>
@@ -64,7 +82,19 @@
   <customwidget>
    <class>TriggerView</class>
    <extends>QGraphicsView</extends>
-   <header location="global">TriggerView.hpp</header>
+   <header>TriggerView.hpp</header>
+  </customwidget>
+  <customwidget>
+   <class>TriggerBrowser</class>
+   <extends>QWidget</extends>
+   <header>TriggerBrowser.hpp</header>
+   <container>1</container>
+  </customwidget>
+  <customwidget>
+   <class>MessageLabel</class>
+   <extends>QWidget</extends>
+   <header>MessageLabel.hpp</header>
+   <container>1</container>
   </customwidget>
  </customwidgets>
  <resources/>
diff --git a/Viewer/src/TriggerProvider.cpp b/Viewer/src/TriggerProvider.cpp
new file mode 100644
index 0000000..68464d3
--- /dev/null
+++ b/Viewer/src/TriggerProvider.cpp
@@ -0,0 +1,275 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "TriggerProvider.hpp"
+
+#include "LogServer.hpp"
+#include "OutputDirClient.hpp"
+#include "VNode.hpp"
+#include "VReply.hpp"
+#include "ServerHandler.hpp"
+#include "UiLog.hpp"
+
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/algorithm/string/predicate.hpp>
+
+TriggerProvider::TriggerProvider(InfoPresenter* owner) :
+    InfoProvider(owner,VTask::NoTask)
+{
+}
+
+void TriggerProvider::clear()
+{
+    InfoProvider::clear();
+}
+
+//Node
+void TriggerProvider::visit(VInfoNode* info)
+{
+    //Reset the reply
+    reply_->reset();
+
+    if(!info)
+    {
+        owner_->infoFailed(reply_);
+    }
+
+    ServerHandler* server=info_->server();
+    VNode *n=info->node();
+
+    if(!n || !n->node())
+    {
+        owner_->infoFailed(reply_);
+    }
+
+    triggers(server,n);
+}
+
+void TriggerProvider::trigger(ServerHandler* server,VNode* n)
+{
+    VDir_ptr dir;
+
+    if(!info_ || !info_->isNode() || !info_->node() || !info_->node()->node())
+    {
+        //reply_->setDirectory(dir);
+        owner_->infoFailed(reply_);
+    }
+
+    TriggerListCollector c(0,"Nodes/attributes triggering this node",dependency());
+    n->triggers(&c);
+
+    TriggerListCollector c1(0,"Nodes triggered by this node",dependency());
+    n->triggered(&c1);
+
+    triggerBrowser_->setHtml(c.text()+c1.text());
+
+    //Get the jobout name
+    std::string fileName=n->findVariable("ECF_JOBOUT",true);
+
+    //Check if it is tryno 0
+    //bool tynozero=(boost::algorithm::ends_with(fileName,".0"));
+
+    //Jobout is empty: no dir path is availabale
+    if(fileName.empty())
+    {
+        reply_->setDirectory(dir);
+        owner_->infoFailed(reply_);
+
+        return;
+    }
+
+    //----------------------------------
+    // The host is the localhost
+    //----------------------------------
+#if 0
+    //if(server->isLocalHost())
+    //{
+        if(server->readFromDisk())
+        {
+            dir=fetchLocalDir(fileName,tynozero);
+            if(dir)
+            {
+                reply_->setDirectory(dir);
+                owner_->infoReady(reply_);
+                return;
+            }
+        }
+   // }
+#endif
+    //----------------------------------------------------
+    // Not the localhost or we could not read dir
+    //----------------------------------------------------
+
+    //We try the output client, its asynchronous!
+    if(fetchDirViaOutputClient(n,fileName))
+    {
+        //If we are here we created a output client and asked to the fetch the
+        //file asynchronously. The ouput client will call slotOutputClientFinished() or
+        //slotOutputClientError eventually!!
+        return;
+    }
+
+    //If there is no output client and it is not the localhost we try
+    //to read it again from the disk!!!
+
+    dir=fetchLocalDir(fileName);
+    if(dir)
+    {
+        reply_->setDirectory(dir);
+        owner_->infoReady(reply_);
+        return;
+     }
+
+     //If we are we coud not get the file
+     reply_->setDirectory(dir);
+     owner_->infoFailed(reply_);
+}
+
+bool OutputDirProvider::fetchDirViaOutputClient(VNode *n,const std::string& fileName)
+{
+    std::string host, port;
+    if(n->logServer(host,port))
+    {
+        //host=host + "baaad";
+
+        //reply_->setInfoText("Getting file through log server: " + host + "@" + port);
+        //owner_->infoProgress(reply_);
+
+        outClient_=makeOutputClient(host,port);
+        outClient_->getDir(fileName);
+
+        return true;
+    }
+
+    return false;
+}
+
+void OutputDirProvider::slotOutputClientFinished()
+{
+    VDir_ptr dir = outClient_->result();
+
+    if(dir && dir.get())
+    {
+        reply_->setInfoText("");
+        //reply_->fileReadMode(VReply::LogServerReadMode);
+
+        //std::string method="served by " + outClient_->host() + "@" + outClient_->portStr();
+        //reply_->fileReadMethod(method);
+
+        reply_->setDirectory(dir);
+        owner_->infoReady(reply_);
+    }
+}
+
+void OutputDirProvider::slotOutputClientProgress(QString,int)
+{
+    /*reply_->setInfoText(msg.toStdString());
+    owner_->infoProgress(reply_);
+    reply_->setInfoText("");*/
+}
+
+void OutputDirProvider::slotOutputClientError(QString msg)
+{
+    if(info_ && info_.get())
+    {
+        if(ServerHandler* server=info_->server())
+        {
+            if(outClient_)
+            {
+                //Check if it is tryno 0
+                //bool tynozero=(boost::algorithm::ends_with(outClient_->remoteFile(),".0"));
+                VDir_ptr dir=fetchLocalDir(outClient_->remoteFile()); //,tynozero);
+                if(dir)
+                {
+                    reply_->setDirectory(dir);
+                    owner_->infoReady(reply_);
+                    return;
+                }
+            }
+        }
+
+        reply_->setErrorText(msg.toStdString());
+        owner_->infoFailed(reply_);
+    }
+}
+
+VDir_ptr OutputDirProvider::fetchLocalDir(const std::string& path)  //,bool trynozero)
+{
+    VDir_ptr res;
+
+    boost::filesystem::path p(path);
+
+    try {
+        //Is it a directory?
+        if(boost::filesystem::is_directory(p))
+        {
+            return res;
+        }
+        //It must be a file
+        //if((trynozero || boost::filesystem::exists(p)) &&
+        if(boost::filesystem::exists(p.parent_path()))
+        {
+            std::string dirName=p.parent_path().string();
+            //std::string fileName=p.leaf().string();
+
+            if(info_ && info_->isNode() && info_->node())
+            {
+                std::string nodeName=info_->node()->strName();
+                std::string pattern=nodeName+".";
+                res=VDir_ptr(new VDir(dirName,pattern));
+                return res;
+            }
+        }
+
+    }
+    catch (const boost::filesystem::filesystem_error& e)
+    {
+        UiLog().warn() << "fetchLocalDir failed:" << std::string(e.what());
+        return res;
+    }
+
+
+    return res;
+}
+
+OutputDirClient* OutputDirProvider::makeOutputClient(const std::string& host,const std::string& port)
+{
+    if(outClient_)
+    {
+        if(outClient_->host() != host || outClient_->portStr() != port)
+        {
+            delete outClient_;
+            outClient_=0;
+        }
+    }
+
+    if(!outClient_)
+    {
+        outClient_=new OutputDirClient(host,port,this);
+
+        connect(outClient_,SIGNAL(error(QString)),
+                this,SLOT(slotOutputClientError(QString)));
+
+        connect(outClient_,SIGNAL(progress(QString,int)),
+                this,SLOT(slotOutputClientProgress(QString,int)));
+
+        connect(outClient_,SIGNAL(finished()),
+                this,SLOT(slotOutputClientFinished()));
+    }
+
+    return outClient_;
+
+
+}
+
+
+
+
diff --git a/Viewer/src/TriggerProvider.hpp b/Viewer/src/TriggerProvider.hpp
new file mode 100644
index 0000000..d202237
--- /dev/null
+++ b/Viewer/src/TriggerProvider.hpp
@@ -0,0 +1,47 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef TRIGGERPROVIDER_HPP
+#define TRIGGERPROVIDER_HPP
+
+#include <QObject>
+
+#include "VDir.hpp"
+#include "VInfo.hpp"
+#include "InfoProvider.hpp"
+#include "VTask.hpp"
+#include "VTaskObserver.hpp"
+
+class TriggerProvider : public QObject, public InfoProvider
+{
+//Q_OBJECT
+
+public:
+     explicit TriggerProvider(InfoPresenter* owner);
+
+     void visit(VInfoNode*);
+     void clear();
+
+//private Q_SLOTS:
+//	void slotOutputClientError(QString);
+//    void slotOutputClientProgress(QString,int);
+//	void slotOutputClientFinished();
+
+private:
+   // void fetchDir(ServerHandler*,VNode*);
+    //bool fetchDirViaOutputClient(VNode *n,const std::string& fileName);
+    //VDir_ptr fetchLocalDir(const std::string& path);
+    //OutputDirClient* makeOutputClient(const std::string& host,const std::string& port);
+
+    //OutputDirClient *outClient_;
+};
+
+
+#endif
diff --git a/Viewer/src/TriggerTextWidget.cpp b/Viewer/src/TriggerTextWidget.cpp
new file mode 100644
index 0000000..4bfb544
--- /dev/null
+++ b/Viewer/src/TriggerTextWidget.cpp
@@ -0,0 +1,36 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "TriggerTextWidget.hpp"
+
+#include <QFile>
+#include <QTextStream>
+
+TriggerTextWidget::TriggerTextWidget(QWidget* parent) : QTextBrowser(parent)
+{
+    setOpenExternalLinks(false);
+    setOpenLinks(false);
+    setReadOnly(true);
+
+    setProperty("trigger","1");
+
+    //Set css for the text formatting
+    QString cssDoc;
+    QFile f(":/viewer/trigger.css");
+    //QTextStream in(&f);
+    if(f.open(QIODevice::ReadOnly | QIODevice::Text))
+    {
+        cssDoc=QString(f.readAll());
+    }
+    f.close();
+    document()->setDefaultStyleSheet(cssDoc);
+}
+
+
+
diff --git a/Viewer/src/NodeViewBase.cpp b/Viewer/src/TriggerTextWidget.hpp
similarity index 69%
copy from Viewer/src/NodeViewBase.cpp
copy to Viewer/src/TriggerTextWidget.hpp
index b755188..aa292cd 100644
--- a/Viewer/src/NodeViewBase.cpp
+++ b/Viewer/src/TriggerTextWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -7,9 +7,16 @@
 // nor does it submit to any jurisdiction.
 //============================================================================
 
-#include "NodeViewBase.hpp"
+#ifndef TRIGGERTEXTWIDGET_HPP
+#define TRIGGERTEXTWIDGET_HPP
 
-NodeViewBase::NodeViewBase(NodeFilterDef* filterDef) : filterDef_(filterDef)
+#include <QTextBrowser>
+
+class TriggerTextWidget : public QTextBrowser
 {
+public:
+    explicit TriggerTextWidget(QWidget *parent=0);
+};
+
+#endif
 
-}
diff --git a/Viewer/src/TriggerView.cpp b/Viewer/src/TriggerView.cpp
index 23512bc..648302d 100644
--- a/Viewer/src/TriggerView.cpp
+++ b/Viewer/src/TriggerView.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,6 +10,7 @@
 
 #include "TriggerView.hpp"
 
+#include "VNode.hpp"
 
 NodeItem::NodeItem()
 {
@@ -57,36 +58,129 @@ TriggerView::TriggerView(QWidget *parent) : QGraphicsView(parent)
 
 ////////////////////////////////////////////////////////////////////////
 /*
-class TriggerList
+
+class TriggerListItem
 {
 public:
+    std::string type_;
+    std::string name_;
+    std::string path_;
+protected:
+
+};
 
-    TriggerList() {}
-    virtual ~TriggerList() {}
+class TriggerCollector
+{
+public:
+    TriggerCollector() {}
+    virtual ~TriggerCollector() {}
 
-    enum { normal    = 0,   // Normal trigger_node
-           parent    = 1,   // Through parent
-           child     = 2,   // Through child
-	   hierarchy = 3    // Through child
-    };
+    enum Mode { Normal    = 0,   // Normal trigger_node
+                Parent    = 1,   // Through parent
+                Child     = 2,   // Through child
+                Hierarchy = 3    // Through child
+    }
 
-    virtual void next_node(node&, node*,int,node*) = 0;
-    virtual bool parents() { return false; }
-    virtual bool kids()    { return false; }
-    virtual bool self()    { return true; }
+    virtual void add(VItem*, VNode*,Mode,VNode*) = 0;
+    virtual bool scanParents() { return false; }
+    virtual bool scnaKids()    { return false; }
+    virtual bool scanSelf()    { return true; }
 
 private:
-	TriggerList(const trigger_lister&);
-	TriggerList& operator=(const trigger_lister&);
+    TriggerCollector(const trigger_lister&);
+    TriggerCollector& operator=(const trigger_lister&);
+
+    std::vector<VItem*> items_;
 };
-*/
 
 
 
+class TriggerListCollector : public TriggerCollector
+{
+public:
+    TriggerListCollector(FILE* f,const std::string& *title,bool extended) :
+        file_(f), title_(t), extended_(extended) {}
+
+    void add(VItem*, VNode*,Mode,VNode*);
+    bool scanParents() { return extended_; }
+    bool scanKids() { return extended_; }
+
+protected:
+    //panel& p_;
+    FILE* file_;
+    std::string title_;
+    bool extended_;
+    std::vector<VItem*> items_;
+};
+
+void InfoLister::add(VItem* n, VNode* parent,Mode mode,VNode*)
+{
+    items_.push_back(n);
+
+
+#if 0
+    // Title
+    if(title_)
+    {
+            int n = fprintf(f_,"\n%s:\n",t_) - 2;
+            while(n--) fputc('-',f_);
+            fputc('\n',f_);
+            t_ = 0;
+    }
+
+    p_.observe(&n);
+    fprintf(f_,"%s {%s}",n.type_name(), n.full_name().c_str());
+    if(p) {
+        fprintf(f_," through ");
+        p_.observe(p);
+
+        switch(mode)
+        {
+            case trigger_lister::parent:  fprintf(f_,"parent "); break;
+            case trigger_lister::child:   fprintf(f_,"child ");  break;
+        }
+
+        fprintf(f_,"%s {%s}",p->type_name(),p->full_name().c_str());
+    }
+    fputc('\n',f_);
+#endif
+}
+
+
+
+class fik : public TriggerList
+{
+public:
+    fik(node* n,node* k,trigger_lister& l): n_(n),k_(k),l_(l) {};
+
+    void next_node(node& n, node*,int type,node *t)
+    {
+        if(!n.is_my_parent(n_))
+        {
+        // k is a kid of n whose trigger_panel is outside its subtree
+            l_.next_node(n,k_,trigger_lister::child,t);
+        }
+    }
+
+private:
+  node*     n_;
+  node*     k_;
+  trigger_lister& l_;
+};
+
+class fip : public trigger_lister {
+  node* p_;
+  trigger_lister& l_;
 
+public:
+  fip(node* p,trigger_lister& l) : p_(p), l_(l) {}
 
+  void next_node(node& n, node*,int type,node *t)
+  { l_.next_node(n,p_,trigger_lister::parent,t); }
+};
 
 
+*/
 
 
 
@@ -178,7 +272,7 @@ public:
   virtual void visitLessThan(AstLessThan*){}
   virtual void visitLeaf(AstLeaf*){}
   virtual void visitInteger(AstInteger*){}
-  virtual void visitString(AstString*){}
+  virtual void visitFunction(AstFunction*){}
   virtual void visitNodeState(AstNodeState*){}
   virtual void visitEventState(AstEventState*);
   virtual void visitNode(AstNode*);
diff --git a/Viewer/src/TriggeredScanner.cpp b/Viewer/src/TriggeredScanner.cpp
new file mode 100644
index 0000000..ff481e1
--- /dev/null
+++ b/Viewer/src/TriggeredScanner.cpp
@@ -0,0 +1,64 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "TriggeredScanner.hpp"
+
+#include <QDebug>
+
+#include "TriggerCollector.hpp"
+#include "VNode.hpp"
+
+void TriggeredScanner::clear()
+{
+    total_=0;
+    current_=0;
+}
+
+void TriggeredScanner::start(VServer* s)
+{
+    clear();
+    assert(s);
+    total_=s->totalNum();
+    current_=0;
+    Q_EMIT scanStarted();
+    scan(s);
+    Q_EMIT scanFinished();
+    clear();
+}
+
+//Scan the the whole tree to find for each node all the nodes that it or its
+//attributes trigger.
+void TriggeredScanner::scan(VNode *n)
+{
+    TriggeredCollector tc(n);
+    n->triggers(&tc);
+
+    updateProgress();
+
+    for(int i=0; i < n->numOfChildren(); i++)
+        scan(n->childAt(i));
+}
+
+void TriggeredScanner::updateProgress()
+{
+    current_++;
+    if(current_ > 0 && current_ % batchSize_ == 0)
+    {      
+        Q_EMIT scanProgressed(progress());
+    }
+}
+
+int TriggeredScanner::progress() const
+{
+    if(total_ > 0)
+    {
+        return static_cast<int>(100.*static_cast<float>(current_)/static_cast<float>(total_));
+    }
+    return 0;
+}
diff --git a/Viewer/src/TriggeredScanner.hpp b/Viewer/src/TriggeredScanner.hpp
new file mode 100644
index 0000000..8a5a7d3
--- /dev/null
+++ b/Viewer/src/TriggeredScanner.hpp
@@ -0,0 +1,44 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef TRIGGEREDSCANNER_HPP
+#define TRIGGEREDSCANNER_HPP
+
+#include <QObject>
+
+class VNode;
+class VServer;
+
+class TriggeredScanner : public QObject
+{
+Q_OBJECT
+
+public:
+    TriggeredScanner(QObject* parent) : QObject(parent), total_(0), current_(0), batchSize_(100) {}
+
+    void clear();
+    void start(VServer*);
+
+Q_SIGNALS:
+    void scanStarted();
+    void scanFinished();
+    void scanProgressed(int percent);
+
+private:
+    void scan(VNode*);
+    void updateProgress();
+    int  progress() const;
+
+    int total_;
+    int current_;
+    int batchSize_;
+};
+
+#endif // TRIGGEREDSCANNER_HPP
+
diff --git a/Viewer/src/AbstractTextEditSearchInterface.cpp b/Viewer/src/UIDebug.cpp
similarity index 52%
copy from Viewer/src/AbstractTextEditSearchInterface.cpp
copy to Viewer/src/UIDebug.cpp
index 906ed0a..1e85cea 100644
--- a/Viewer/src/AbstractTextEditSearchInterface.cpp
+++ b/Viewer/src/UIDebug.cpp
@@ -1,25 +1,29 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
-//
 //============================================================================
 
-#include "AbstractTextEditSearchInterface.hpp"
+#include <iostream>
 
-#include "VConfig.hpp"
-#include "VProperty.hpp"
+#include "UIDebug.hpp"
 
-QColor AbstractTextEditSearchInterface::highlightColour_=QColor(200, 255, 200);
 
-AbstractTextEditSearchInterface::AbstractTextEditSearchInterface()
+void UIDebug::uiAssert(char const* expr, char const* file, long line, const std::string& message)
 {
-	if(VProperty *p=VConfig::instance()->find("panel.search.highlightColour"))
-	{
-		highlightColour_=p->value().value<QColor>();
-	}
+	std::stringstream ss;
+	ss << "ASSERT failure: " << expr << " at " << file << ":" << line << " " << message;
+	std::string assert_msg = ss.str();
+	std::cerr << assert_msg << "\n";
+	exit(1);
 }
 
+std::string UIDebug::longToString(long num)
+{
+	char buf[64];
+	sprintf(buf, "%ld", num);
+	return std::string(buf);
+}
diff --git a/Viewer/src/FileInfoLabel.hpp b/Viewer/src/UIDebug.hpp
similarity index 54%
copy from Viewer/src/FileInfoLabel.hpp
copy to Viewer/src/UIDebug.hpp
index eefde4b..c626d7a 100644
--- a/Viewer/src/FileInfoLabel.hpp
+++ b/Viewer/src/UIDebug.hpp
@@ -1,39 +1,34 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
-//
 //============================================================================
 
-#ifndef FILEINFOLABEL_HPP_
-#define FILEINFOLABEL_HPP_
+#ifndef UIDEBUG_HPP_
+#define UIDEBUG_HPP_
 
-#include <QLabel>
 
-#include "VDir.hpp"
+#include "Log.hpp"  // from ACore
 
-class VReply;
 
-class FileInfoLabel : public QLabel
+class UIDebug
 {
 public:
-	explicit FileInfoLabel(QWidget* parent=0);
+	UIDebug() {};
+   ~UIDebug() {};
 
-	void update(VReply*,QString str=QString());
-	QColor fileSizeColour(qint64 size) const;
 
-};
+	static void uiAssert(char const* expr, char const* file, long line, const std::string& message);
+	static std::string longToString(long num);
 
-class DirInfoLabel : public FileInfoLabel
-{
-public:
-	explicit DirInfoLabel(QWidget* parent=0) : FileInfoLabel(parent) {}
 
-	void update(VDir_ptr);
 
 };
 
+
+#define UI_ASSERT(expr,EXPRESSION) ((expr)? ((void)0): UIDebug::uiAssert(#expr, __FILE__, __LINE__, STRINGIZE(EXPRESSION)))
+
 #endif
diff --git a/Viewer/src/UiLog.cpp b/Viewer/src/UiLog.cpp
new file mode 100644
index 0000000..2c5e283
--- /dev/null
+++ b/Viewer/src/UiLog.cpp
@@ -0,0 +1,136 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "UiLog.hpp"
+
+#include <assert.h>
+#include <iostream>
+
+#include <QDebug>
+#include <QModelIndex>
+#include <QString>
+#include <QStringList>
+#include <QVariant>
+
+#include "DirectoryHandler.hpp"
+#include "LogTruncator.hpp"
+#include "ServerHandler.hpp"
+#include "TimeStamp.hpp"
+
+static LogTruncator *truncator=0;
+
+UiLog::UiLog(ServerHandler* sh) :
+    type_(INFO), server_(sh->longName())
+{}
+
+UiLog::UiLog(const std::string& server) :
+    type_(INFO), server_(server)
+{}
+
+
+UiLog::~UiLog()
+{
+    output(os_.str());
+}
+
+void UiLog::appendType(std::string& s,Type t) const
+{
+    switch(t)
+    {
+    case DBG: s.append("DBG:"); break;
+    case INFO: s.append("INF:"); break;
+    case WARN: s.append("WAR:"); break;
+    case ERROR: s.append("ERR:"); break;
+    default: assert(false); break;
+    }
+}
+
+std::ostringstream& UiLog::info()
+{
+    type_=INFO;
+    return os_;
+}
+
+std::ostringstream& UiLog::err()
+{
+    type_=ERROR;
+    return os_;
+}
+
+std::ostringstream& UiLog::warn()
+{
+    type_=WARN;
+    return os_;
+}
+
+std::ostringstream& UiLog::dbg()
+{
+    type_=DBG;
+    return os_;
+}
+
+void UiLog::output(const std::string& msg)
+{
+    std::string ts;
+    ecf::TimeStamp::now_in_brief(ts);
+
+    std::string s;
+    appendType(s,type_);
+
+    if(server_.empty())
+        s+=" " + ts + msg;
+    else
+        s+=" " + ts + "[" + server_ + "] " + msg;
+
+    std::cout << s << std::endl;
+
+}
+
+void UiLog::enableTruncation()
+{
+    if(!truncator)
+        truncator=new LogTruncator(QString::fromStdString(DirectoryHandler::uiLogFileName()),
+                                     86400*1000,10*1024*1024,1000);
+}
+
+//------------------------------------------
+// Overload ostringstream for qt objects
+//------------------------------------------
+std::ostream&  operator <<(std::ostream &stream,const QString &str)
+{
+   stream << str.toStdString();
+   return stream;
+}
+
+std::ostream& operator <<(std::ostream &stream,const QModelIndex& idx)
+{
+    QString s;
+    QDebug ts(&s);
+    ts << idx;
+    stream << s.toStdString();
+    return stream;
+}
+
+std::ostream&  operator <<(std::ostream &stream,const QVariant &v)
+{
+   QString s;
+   QDebug ts(&s);
+   ts << v;
+   stream << s.toStdString();
+   return stream;
+}
+
+std::ostream&  operator <<(std::ostream &stream,const QStringList &lst)
+{
+   QString s;
+   QDebug ts(&s);
+   ts << lst;
+   stream << s.toStdString();
+   return stream;
+}
diff --git a/Viewer/src/UiLog.hpp b/Viewer/src/UiLog.hpp
new file mode 100644
index 0000000..da604ca
--- /dev/null
+++ b/Viewer/src/UiLog.hpp
@@ -0,0 +1,60 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef UILOG_HPP
+#define UILOG_HPP
+
+#include <string>
+#include <sstream>
+
+class QString;
+class QModelIndex;
+class QStringList;
+class QVariant;
+
+class ServerHandler;
+
+class UiLog
+{
+public:
+   enum Type {INFO,WARN,ERROR,DBG};
+
+   UiLog() : type_(INFO) {}
+   UiLog(ServerHandler* server);
+   UiLog(const std::string& server);
+   ~UiLog();
+
+   std::ostringstream& info();
+   std::ostringstream& err();
+   std::ostringstream& warn();
+   std::ostringstream& dbg();
+
+   static void enableTruncation();
+
+protected:
+   void output(const std::string& msg);
+   void appendType(std::string& s,Type t) const;
+
+   Type type_;
+   std::ostringstream os_;
+   std::string server_;
+
+private:
+   UiLog(const UiLog&);
+   UiLog& operator =(const UiLog&);
+};
+
+//Overload ostringstream for qt objects
+std::ostream&  operator <<(std::ostream&,const QString &);
+std::ostream&  operator <<(std::ostream&,const QModelIndex&);
+std::ostream&  operator <<(std::ostream&,const QVariant&);
+std::ostream&  operator <<(std::ostream&,const QStringList&);
+
+#endif // UILOG_HPP
+
diff --git a/Viewer/src/UserMessage.cpp b/Viewer/src/UserMessage.cpp
index 88b7eff..c04528d 100644
--- a/Viewer/src/UserMessage.cpp
+++ b/Viewer/src/UserMessage.cpp
@@ -1,6 +1,6 @@
 
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -14,6 +14,8 @@
 
 #include "UserMessage.hpp"
 
+#include "UiLog.hpp"
+
 bool UserMessage::echoToCout_ = true;  // XXX should be false to start with
 
 UserMessage::UserMessage()
@@ -25,6 +27,7 @@ void UserMessage::message(MessageType type, bool popup, const std::string& messa
 
     if (echoToCout_)
     {
+#if 0
         switch (type)
         {
             case INFO:  std::cout << "INFO  : "; break;
@@ -35,6 +38,16 @@ void UserMessage::message(MessageType type, bool popup, const std::string& messa
         }
 
         std::cout << message << std::endl;
+#endif
+
+        switch (type)
+        {
+        case DBG:   UiLog().dbg() << message; break;
+        case INFO:  UiLog().info() << message ; break;
+        case WARN:  UiLog().warn() << message; break;
+        case ERROR: UiLog().err() << message; break;
+        default:   break;
+        }
     }
 
     if (popup)
@@ -48,7 +61,7 @@ void UserMessage::message(MessageType type, bool popup, const std::string& messa
             case DBG:   icon = QMessageBox::NoIcon;      break;
             default:    icon = QMessageBox::NoIcon;      break;
         }
-        QString title("Ecflowview");
+        QString title("EcFlowUI");
         QString qmsg = QString::fromStdString(message);
 
         QMessageBox box(icon, title, qmsg);
@@ -57,14 +70,25 @@ void UserMessage::message(MessageType type, bool popup, const std::string& messa
 
 }
 
-void UserMessage::debug(const std::string& message)
+bool UserMessage::confirm(const std::string& message)
 {
-        std::cout << "DEBUG : " << message << std::endl;
+    bool ok = true;
+    QMessageBox msgBox;
+    msgBox.setText(QString::fromStdString(message));
+    msgBox.setTextFormat(Qt::RichText);
+    msgBox.setIcon(QMessageBox::Question);
+    msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
+    if (msgBox.exec() == QMessageBox::Cancel)
+    {
+        ok=false;
+    }
+    return ok;
 }
 
-void UserMessage::qdebug(QString message)
+
+void UserMessage::debug(const std::string& message)
 {
-        std::cout << "DEBUG : " << message.toStdString() << std::endl;
+    UiLog().dbg() << message;
 }
 
 std::string UserMessage::toString(int v)
diff --git a/Viewer/src/UserMessage.hpp b/Viewer/src/UserMessage.hpp
index afefcf9..56cb0d7 100644
--- a/Viewer/src/UserMessage.hpp
+++ b/Viewer/src/UserMessage.hpp
@@ -25,9 +25,9 @@ public:
 
     static void setEchoToCout(bool toggle) {echoToCout_ = toggle;}
     static void message(MessageType type, bool popup, const std::string& message);
+    static bool confirm(const std::string& message);
 
     static void debug(const std::string& message);
-    static void qdebug(QString message);
     static std::string toString(int);
 
 private:
diff --git a/Viewer/src/VAttribute.cpp b/Viewer/src/VAttribute.cpp
index 5746c12..43290f3 100644
--- a/Viewer/src/VAttribute.cpp
+++ b/Viewer/src/VAttribute.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -8,19 +8,103 @@
 //
 //============================================================================
 
+
 #include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 
 #include "VNode.hpp"
+#include "UIDebug.hpp"
+
+#include <QDebug>
+
+//#define  _UI_VATTRIBUTE_DEBUG
+
+static unsigned int totalAttrNum=0;
+
+VAttribute::VAttribute(VNode *parent,VAttributeType* type,int indexInType) :
+    VItem(parent)
+{
+    UI_ASSERT(indexInType >=0, "Index = " << UIDebug::longToString(indexInType));
+    assert(type);
+    id_=indexToId(type,indexInType);
+    totalAttrNum++;
+}        
+
+VAttribute::VAttribute(VNode *parent,int id) :
+    VItem(parent),
+    id_(id)
+{
+    totalAttrNum++;
+}
+
+VAttribute::~VAttribute()
+{
+    totalAttrNum--;
+}
+
+VAttribute* VAttribute::clone() const
+{
+    return new VAttribute(parent_,id_);
+}
+
+unsigned int VAttribute::totalNum()
+{
+    return totalAttrNum;
+}
 
-VAttribute::VAttribute(VNode* parent,int index) : VItem(parent), type_(0), index_(index)
+VServer* VAttribute::root() const
 {
-    data_=parent_->getAttributeData(index_,type_) ;
+    return (parent_)?parent_->root():NULL;
 }
 
 QString VAttribute::toolTip() const
 {
-    return (type_)?(type_->toolTip(data_)):QString();
+    VAttributeType* t=type();
+    return (t)?(t->toolTip(data())):QString();
+}
+
+VAttributeType* VAttribute::type() const
+{
+    return idToType(id_);
+}
+
+const std::string& VAttribute::typeName() const
+{
+    VAttributeType* t=type();
+    static std::string e;
+    return (t)?(t->strName()):e;
+}
+
+std::string VAttribute::fullPath() const
+{
+    return (parent_)?(parent_->fullPath() + ":" + strName()):"";
+}
+
+bool VAttribute::sameContents(VItem* item) const
+{
+    if(!item)
+        return false;
+
+    if(VAttribute *a=item->isAttribute())
+    {    return a->parent() == parent() && a->id_ == id_;
+    }
+    return false;
+}
+
+QStringList VAttribute::data() const
+{
+    QStringList d;
+    if(id_ ==-1) return d;
+    VAttributeType *t=idToType(id_);
+    assert(t);
+    int idx=idToTypeIndex(id_);
+    t->itemData(parent(),idx,d);
+    return d;
+}
+
+int VAttribute::absIndex(AttributeFilter *filter) const
+{
+    return VAttributeType::absIndexOf(this,filter);
 }
 
 void VAttribute::buildAlterCommand(std::vector<std::string>& cmd,
@@ -57,10 +141,17 @@ void VAttribute::buildAlterCommand(std::vector<std::string>& cmd,
 
 QString VAttribute::name() const
 {
-    if(data_.count() >= 2)
-       return data_[1];
+    std::string s;
+    value("name",s);
+    return QString::fromStdString(s);
+
+#if 0
+    QStringList d=data();
+    if(d.count() >= 2)
+       return d[1];
 
     return QString();
+#endif
 }
 
 std::string VAttribute::strName() const
@@ -68,12 +159,93 @@ std::string VAttribute::strName() const
     return name().toStdString();
 }
 
-bool VAttribute::isValid(VNode* parent)
+bool VAttribute::isValid(VNode* parent,QStringList data)
 {
-    if(type_)
+    if(VAttributeType* t=type())
     {
-        return type_->exists(parent,data_);
+        return t->exists(parent,data);
     }
+    return false;
+}
+
+bool VAttribute::value(const std::string& key,std::string& val) const
+{
+    QStringList d=data();
+    VAttributeType* t=type();
+    if(d.isEmpty() || !t)
+        return false;
+
+    int idx=t->searchKeyToDataIndex(key);
 
+#ifdef _UI_VATTRIBUTE_DEBUG
+    qDebug() << QString::fromStdString(key) << QString::fromStdString(val);
+    qDebug() << "  data=" << d;
+    qDebug() << "  idx=" << idx;
+#endif
+
+    if(idx != -1)
+    {
+        val=d[idx].toStdString();
+        return true;
+    }
     return false;
 }
+
+VAttribute* VAttribute::make(VNode* n,const std::string& type,const std::string& name)
+{
+    if(!n) return NULL;
+    VAttributeType *t=VAttributeType::find(type);
+    assert(t);
+    VItemTmp_ptr item=t->item(n,name);
+    return (item)?item->attribute()->clone():NULL;
+}
+
+VAttribute* VAttribute::makeFromId(VNode* n,int id)
+{
+    if(id ==-1) return NULL;
+    VAttributeType *t=idToType(id);
+    assert(t);
+    QStringList d;
+    int idx=idToTypeIndex(id);
+    return NULL;
+    //return t->getSearchData(n,idx,d);
+}
+
+VAttribute* VAttribute::make(VNode *parent,QStringList data)
+{
+    assert(parent);
+    if(data.count() >=2)
+    {
+        std::string type=data[0].toStdString();
+        VAttributeType *t=VAttributeType::find(type);
+        assert(t);
+
+        int idx=t->searchKeyToDataIndex("name");
+        if(idx != -1 && idx < data.count())
+        {
+            std::string name=data[idx].toStdString();
+            VItemTmp_ptr item=t->item(parent,name);
+            return (item)?item->attribute()->clone():NULL;
+        }
+    }
+    return 0;
+}
+
+int VAttribute::indexToId(VAttributeType* t,int idx)
+{
+    return (idx >=0)?(t->id()*10000+idx):-1;
+}
+
+VAttributeType* VAttribute::idToType(int id)
+{
+    if(id < 0) return NULL;
+    return VAttributeType::find(id/10000);
+}
+
+int VAttribute::idToTypeIndex(int id)
+{
+    if(id < 0) return -1;
+    return id-(id/10000)*10000;
+}
+
+
diff --git a/Viewer/src/VAttribute.hpp b/Viewer/src/VAttribute.hpp
index ccfb4de..994b2b3 100644
--- a/Viewer/src/VAttribute.hpp
+++ b/Viewer/src/VAttribute.hpp
@@ -17,21 +17,41 @@
 #include <string>
 #include <vector>
 
+#include <boost/shared_ptr.hpp>
+
+class AttributeFilter;
 class VAttributeType;
 class VNode;
 
+class VAttribute;
+typedef boost::shared_ptr<VAttribute> VAttribute_ptr;
+
 class VAttribute : public VItem
 {
 public:
-    VAttribute(VNode* parent,int index);
+    VAttribute(VNode *parent,VAttributeType* type,int indexInType);
+    ~VAttribute();
 
+    VAttribute* clone() const;
+    VServer* root() const;
     VAttribute* isAttribute() const {return const_cast<VAttribute*>(this);}
-    VAttributeType* type() const {return type_;}
-    QStringList data() const {return data_;}
+    VAttributeType* type() const;
+    QStringList data() const;
     QString toolTip() const;
     QString name() const;
     std::string strName() const;
-    bool isValid(VNode* parent);
+    const std::string& typeName() const;
+    std::string fullPath() const;
+    bool sameContents(VItem*) const;
+    int id() const {return id_;}
+    int absIndex(AttributeFilter *filter) const;
+
+    bool isValid(VNode* parent,QStringList);
+    bool value(const std::string& key,std::string& val) const;
+
+    static VAttribute* make(VNode* n,const std::string& type,const std::string& name);
+    static VAttribute* makeFromId(VNode*,int);
+    static VAttribute* make(VNode *parent,QStringList data);
 
     static void buildAlterCommand(std::vector<std::string>& cmd,
                          const std::string& action, const std::string& type,
@@ -40,12 +60,18 @@ public:
     static void buildAlterCommand(std::vector<std::string>& cmd,
                          const std::string& action, const std::string& type,
                          const std::string& value);
+
+    static unsigned int totalNum();
+
 protected:
-    VAttributeType* type_;
-    QStringList data_;
-    int index_;
-};
+    VAttribute(VNode *parent,int id);
 
+    static int indexToId(VAttributeType* t,int idx);
+    static VAttributeType* idToType(int id);
+    static int idToTypeIndex(int id);
+
+    int id_;
+};
 
 #endif // VATTRIBUTE_HPP
 
diff --git a/Viewer/src/VAttributeType.cpp b/Viewer/src/VAttributeType.cpp
index dbfaf37..2ee6d62 100644
--- a/Viewer/src/VAttributeType.cpp
+++ b/Viewer/src/VAttributeType.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -21,155 +21,33 @@
 #include <map>
 
 #include "VNode.hpp"
-#include "UserMessage.hpp"
 #include "VConfigLoader.hpp"
 #include "VProperty.hpp"
 #include "VFilter.hpp"
 #include "VRepeat.hpp"
+#include "VAttribute.hpp"
+#include "UiLog.hpp"
+#include "UIDebug.hpp"
 
-std::map<std::string,VAttributeType*> VAttributeType::items_;
+std::map<std::string,VAttributeType*> VAttributeType::typesMap_;
+std::vector<VAttributeType*> VAttributeType::types_;
 
 //#define _UI_ATTR_DEBUG
 
-class VMeterAttribute : public VAttributeType
-{
-public:
-    explicit VMeterAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VEventAttribute : public VAttributeType
-{
-public:
-    explicit  VEventAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VRepeatAttribute : public VAttributeType
-{
-public:
-    explicit VRepeatAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VTriggerAttribute : public VAttributeType
-{
-public:
-    explicit VTriggerAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-};
-
-class VLabelAttribute : public VAttributeType
-{
-public:
-    explicit VLabelAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    int lineNum(const VNode* vnode,int row);
-    QString toolTip(QStringList d) const;
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VDateAttribute : public VAttributeType
-{
-public:
-    explicit VDateAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-};
-
-class VTimeAttribute : public VAttributeType
-{
-public:
-    explicit VTimeAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-};
-
-class VLimitAttribute : public VAttributeType
-{
-public:
-    explicit VLimitAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VLimiterAttribute : public VAttributeType
-{
-public:
-    explicit VLimiterAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-};
-
-class VLateAttribute : public VAttributeType
-{
-public:
-    explicit VLateAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    QString toolTip(QStringList d) const;
-};
-
-class VVarAttribute : public VAttributeType
-{
-public:
-    explicit VVarAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-class VGenvarAttribute : public VAttributeType
-{
-public:
-    explicit VGenvarAttribute(const std::string& n) : VAttributeType(n) {}
-    int num(const VNode *node);
-    bool getData(VNode *node,int row,int& size,QStringList& data);
-    bool exists(const VNode* vnode,QStringList) const;
-};
-
-static VMeterAttribute meterAttr("meter");
-static VEventAttribute eventAttr("event");
-static VRepeatAttribute repeatAttr("repeat");
-static VTriggerAttribute triggerAttr("trigger");
-static VLabelAttribute labelAttr("label");
-static VTimeAttribute timeAttr("time");
-static VDateAttribute dateAttr("date");
-static VLimitAttribute limitAttr("limit");
-static VLimiterAttribute limiterAttr("limiter");
-static VLateAttribute lateAttr("late");
-static VVarAttribute varAttr("var");
-static VGenvarAttribute genvarAttr("genvar");
-
-
 VAttributeType::VAttributeType(const std::string& name) :
-        VParam(name)
+        VParam(name),
+        dataCount_(0),
+        id_(types_.size())
 {
     //items_.push_back(this);
-    items_[name]=this;
+    typesMap_[name]=this;
+    types_.push_back(this);
 }
 
 std::vector<VParam*> VAttributeType::filterItems()
 {
     std::vector<VParam*> v;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
     {
         v.push_back(it->second);
     }
@@ -177,11 +55,10 @@ std::vector<VParam*> VAttributeType::filterItems()
     return v;
 }
 
-
 VAttributeType* VAttributeType::find(const std::string& name)
 {
-    std::map<std::string,VAttributeType*>::const_iterator it=items_.find(name);
-    if(it != items_.end())
+    std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.find(name);
+    if(it != typesMap_.end())
             return it->second;
 
     return 0;
@@ -195,35 +72,55 @@ VAttributeType* VAttributeType::find(const std::string& name)
     return NULL;*/
 }
 
+VAttributeType* VAttributeType::find(int id)
+{
+    assert(id >=0  && id < types_.size());
+    return types_[id];
+}
+
 int VAttributeType::totalNum(const VNode *vnode, AttributeFilter *filter)
 {
     if(!vnode)
         return 0;
 
     int total=0;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
-    {
-        if(!filter || filter->isSet(it->second))
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
+    {        
+        if(!filter || filter->isSet(it->second) )
         {
             total+=it->second->num(vnode);
         }
+        //If the filter contains a forceShow item
+        else if(filter->matchForceShowAttr(vnode,it->second))
+        {
+            total+=1;
+        }
     }
 
     return total;
 }
 
-VAttributeType* VAttributeType::getType(const VNode *vnode,int row,AttributeFilter *filter)
+VAttributeType* VAttributeType::getType(const VNode *vnode,int absRowInFilter,AttributeFilter *filter)
 {
     if(!vnode)
         return NULL;
 
     int totalRow=0;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
     {
         if(!filter || filter->isSet(it->second))
         {
             int size=it->second->num(vnode);
-            if(row-totalRow >=0 && row-totalRow < size)
+            if(absRowInFilter-totalRow >=0 && absRowInFilter-totalRow < size)
+            {
+                return it->second;
+            }
+            totalRow+=size;
+        }
+        else if(filter && filter->matchForceShowAttr(vnode,it->second))
+        {
+            int size=1;
+            if(absRowInFilter-totalRow >=0 && absRowInFilter-totalRow < size)
             {
                 return it->second;
             }
@@ -234,7 +131,7 @@ VAttributeType* VAttributeType::getType(const VNode *vnode,int row,AttributeFilt
     return NULL;
 }
 
-bool VAttributeType::getData(VNode *vnode,int row,VAttributeType* &type,QStringList& data,AttributeFilter *filter)
+bool VAttributeType::getData(VNode *vnode,int absRowInFilter,VAttributeType* &type,QStringList& data,AttributeFilter *filter)
 {
     type=0;
 
@@ -242,58 +139,70 @@ bool VAttributeType::getData(VNode *vnode,int row,VAttributeType* &type,QStringL
         return false;
 
     int totalRow=0;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
     {
         if(!filter || filter->isSet(it->second))
         {
             int size=0;
-            if(it->second->getData(vnode,row-totalRow,size,data))
+            if(it->second->getData(vnode,absRowInFilter-totalRow,size,data))
             {
                 type=it->second;
                 return true;
             }
             totalRow+=size;
         }
+        else if(filter && filter->matchForceShowAttr(vnode,it->second))
+        {
+            if(absRowInFilter == totalRow)
+            {
+                VAttribute* a=filter->forceShowAttr();
+                Q_ASSERT(a);
+                data=a->data();
+                type=it->second;
+                return true;
+            }
+            totalRow+=1;
+        }
     }
 
     return false;
 }
 
-bool VAttributeType::getData(const std::string& type,VNode* vnode,int row,QStringList& data,AttributeFilter *filter)
+bool VAttributeType::getData(const std::string& type,VNode* vnode,int rowInType,QStringList& data)
 {
     if(VAttributeType* va=find(type))
-    {
-        if(!filter || filter->isSet(va))
-        {
-            int size=0;
-            return va->getData(vnode,row,size,data);
-        }
+    {       
+        int size=0;
+        return va->getData(vnode,rowInType,size,data);
     }
     return false;
 }
 
-int VAttributeType::getLineNum(const VNode *vnode,int row,AttributeFilter *filter)
+int VAttributeType::getLineNum(const VNode *vnode,int absRowInFilter,AttributeFilter *filter)
 {
     if(!vnode)
         return 1;
 
     int totalRow=0;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
     {
         if(!filter || filter->isSet(it->second))
         {
             int size=it->second->num(vnode);
-            if(row-totalRow >=0 && row-totalRow < size)
+            if(absRowInFilter-totalRow >=0 && absRowInFilter-totalRow < size)
             {
-                return it->second->lineNum(vnode,row-totalRow);
+                return it->second->lineNum(vnode,absRowInFilter-totalRow);
             }
             totalRow+=size;
         }
     }
 
+    //TODO:: add forceShowAttr
+
     return 1;
 }
 
+#if 0
 int VAttributeType::getRow(const VNode *vnode,int row,AttributeFilter *filter)
 {
     if(!vnode)
@@ -304,7 +213,7 @@ int VAttributeType::getRow(const VNode *vnode,int row,AttributeFilter *filter)
 
     int totalRow=0;
     int realRow=0;
-    for(std::map<std::string,VAttributeType*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
     {
         if(!filter || filter->isSet(it->second))
         {
@@ -324,6 +233,93 @@ int VAttributeType::getRow(const VNode *vnode,int row,AttributeFilter *filter)
 
     return -1;
 }
+#endif
+
+VItemTmp_ptr VAttributeType::itemForAbsIndex(const VNode *vnode,int absIndex,AttributeFilter *filter) //,VAttributeType* &type,int& indexInType)
+{
+    if(!vnode)
+        return VItemTmp_ptr();
+
+    int totalNum=0;
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
+    {
+        if(!filter || filter->isSet(it->second))
+        {
+            int size=it->second->num(vnode);
+            if(absIndex-totalNum >=0 && absIndex-totalNum < size)
+            {
+                int indexInType=absIndex-totalNum;
+                return VItemTmp::create(new VAttribute(const_cast<VNode*>(vnode),it->second,indexInType));
+            }
+            totalNum+=size;
+        }
+        else if(filter && filter->matchForceShowAttr(vnode,it->second))
+        {
+            int size=1;
+            if(absIndex-totalNum >=0 && absIndex-totalNum < size)
+            {
+                VAttribute* a=filter->forceShowAttr();
+                Q_ASSERT(a);
+                return VItemTmp::create(a->clone());
+            }
+            totalNum+=size;
+        }
+    }
+
+    return VItemTmp_ptr();
+}
+
+//Returns the absolute index of the given attribute within the whole list of attributes of a given node.
+int VAttributeType::absIndexOf(const VAttribute* a,AttributeFilter *filter)
+{
+    if(!a)
+        return -1;
+
+    VNode* vnode=a->parent();
+    if(!vnode)
+        return -1;
+
+    if(filter && !filter->isSet(a->type()) &&
+       a->sameContents(filter->forceShowAttr()) == false)
+        return -1;
+
+    int absIndex=-1;
+    for(std::map<std::string,VAttributeType*>::const_iterator it=typesMap_.begin(); it != typesMap_.end(); ++it)
+    {
+        if(a->type() == it->second)
+        {
+            int idx=-1;
+            if(filter && a->sameContents(filter->forceShowAttr()))
+                idx=0;
+            else
+                idx=it->second->indexOf(a);
+
+            return (idx != -1)?(absIndex+idx+1):-1;
+        }
+
+        if(!filter || filter->isSet(it->second))
+        {
+            int size=it->second->num(vnode);
+            if(size > 0)
+                absIndex+=size;
+        }
+        else if(filter->matchForceShowAttr(vnode,it->second))
+        {
+            absIndex+=1;
+        }
+    }
+
+    return -1;
+}
+
+//Returns the index of the given attribute within the given type
+int VAttributeType::indexOf(const VAttribute* a)
+{
+    if(a && a->parent())
+        return indexOf(a->parent(),a->data());
+
+    return -1;
+}
 
 void VAttributeType::load(VProperty* group)
 {
@@ -336,10 +332,88 @@ void VAttributeType::load(VProperty* group)
     }
 }
 
+int VAttributeType::keyToDataIndex(const std::string& key) const
+{
+    std::map<std::string,int>::const_iterator it=keyToData_.find(key);
+    if(it != keyToData_.end())
+        return it->second;
+
+    return -1;
+}
+
+int VAttributeType::searchKeyToDataIndex(const std::string& key) const
+{
+    std::map<std::string,int>::const_iterator it=searchKeyToData_.find(key);
+    if(it != searchKeyToData_.end())
+        return it->second;
+
+    return -1;
+}
+
+QStringList VAttributeType::searchKeys() const
+{
+    QStringList lst;
+    for(std::map<std::string,int>::const_iterator it=searchKeyToData_.begin(); it != searchKeyToData_.end(); it++)
+    {
+        lst << QString::fromStdString(it->first);
+    }
+    return lst;
+}
+
+void VAttributeType::items(const VNode* vnode,QList<VItemTmp_ptr>& lst)
+{
+    int cnt=num(vnode);
+    for(int i=0; i < cnt; i++)
+        lst << VItemTmp::create(new VAttribute(const_cast<VNode*>(vnode),this,i));
+}
+
+void VAttributeType::items(const std::string& type,const VNode* vnode,QList<VItemTmp_ptr>& lst)
+{
+    VAttributeType *t=VAttributeType::find(type);
+    Q_ASSERT(t);
+    t->items(vnode,lst);
+}
+
+VItemTmp_ptr VAttributeType::item(const VNode* vnode,const std::string& name)
+{
+    std::vector<std::string> nameVec;
+    itemNames(vnode,nameVec);
+    for(size_t i=0; i < nameVec.size(); i++)
+        if(nameVec[i] == name)
+            return VItemTmp::create(new VAttribute(const_cast<VNode*>(vnode),this,i));
+
+    return VItemTmp_ptr();
+}
+
 //================================
 // Meters
 //================================
 
+class VMeterAttribute : public VAttributeType
+{
+public:
+    explicit VMeterAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2,MinIndex=3, MaxIndex=4,ThresholdIndex=5};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Meter& m,QStringList& data) const;
+};
+
+VMeterAttribute::VMeterAttribute(const std::string& n) :
+    VAttributeType(n)
+{
+    dataCount_=6;
+    searchKeyToData_["meter_name"]=NameIndex;
+    searchKeyToData_["meter_value"]=ValueIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VMeterAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -359,24 +433,21 @@ bool VMeterAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VMeterAttribute::getData -->");
+    UiLog().dbg() << "VMeterAttribute::getData -->";
 #endif
     const std::vector<Meter>&  v=node->meters();
     if(row >=0 && row < v.size())
     {
-        data << qName_ <<
-                        QString::fromStdString(v.at(row).name()) <<
-                        QString::number(v.at(row).value()) << QString::number(v.at(row).min()) << QString::number(v.at(row).max()) <<
-                        QString::number(v.at(row).colorChange());
+        getData(v[row],data);
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  data=" + data.join(",").toStdString());
+    UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
 
     size=v.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -384,85 +455,142 @@ bool VMeterAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VMeterAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Meter<br>";
-    if(d.count() >=5)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1] + "<br>";
-        t+="<b>Value:</b> " + d[2]+ "<br>";
-        t+="<b>Minimum:</b> " + d[3] + "<br>";
-        t+="<b>Maximum:</b> " + d[4];
+        t+="<b>Name:</b> " + d[NameIndex] + "<br>";
+        t+="<b>Value:</b> " + d[ValueIndex]+ "<br>";
+        t+="<b>Minimum:</b> " + d[MinIndex] + "<br>";
+        t+="<b>Maximum:</b> " + d[MaxIndex];
     }
     return t;
 }
 
-bool VMeterAttribute::exists(const VNode* vnode,QStringList data) const
+int VMeterAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
     if(vnode->isServer())
-        return false;
+        return -1;
 
     node_ptr node=vnode->node();
     if(!node)
-        return false;
+        return -1;
 
-    if(data.count() != 6 && data[0] != qName_)
-        return false;
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
 
     const std::vector<Meter>&  v=node->meters();
     for(size_t i=0; i < v.size(); i++)
     {
-        if(v[i].name() == data[1].toStdString())
-            return true;
+        if(v[i].name() == data[NameIndex].toStdString())
+            return i;
     }
 
-    return false;
+    return -1;
 }
 
-//================================
-// Labels
-//================================
-
-int VLabelAttribute::num(const VNode *vnode)
+void VMeterAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
 {
     if(vnode->isServer())
-        return 0;
+        return;
 
     node_ptr node=vnode->node();
-    return (node.get())?static_cast<int>(node->labels().size()):0;
+    if(!node)
+        return;
+
+    const std::vector<Meter>& v=node->meters();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        nameVec.push_back(v[i].name());
+    }
 }
 
-bool VLabelAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
+bool VMeterAttribute::itemData(const VNode* vnode,int index,QStringList& data)
 {
     if(vnode->isServer())
         return false;
 
     node_ptr node=vnode->node();
-    if(!node.get())
+    if(!node)
         return false;
 
-#ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VLabelAttribute::getData -->");
-#endif
-    const std::vector<Label>&  v=node->labels();
-    if(row >=0 && row < v.size())
-    {
-        std::string val=v.at(row).new_value();
-        if(val.empty() || val == " ")
-        {
-            val=v.at(row).value();
-        }
+    const std::vector<Meter>& v=node->meters();
+    assert(index >=0 && index < v.size());
+    getData(v[index],data);
+    return true;
+}
 
-        data << qName_ <<
-                    QString::fromStdString(v.at(row).name()) <<
-                    QString::fromStdString(val);
+void VMeterAttribute::getData(const Meter& m,QStringList& data) const
+{
+    data << qName_ <<
+                    QString::fromStdString(m.name()) <<
+                    QString::number(m.value()) << QString::number(m.min()) << QString::number(m.max()) <<
+                    QString::number(m.colorChange());
+}
+
+//================================
+// Labels
+//================================
+
+class VLabelAttribute : public VAttributeType
+{
+public:
+    explicit VLabelAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    int lineNum(const VNode* vnode,int row);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Label& label,QStringList& data);
+};
+
+
+VLabelAttribute::VLabelAttribute(const std::string& n) :
+    VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["label_name"]=NameIndex;
+    searchKeyToData_["label_value"]=ValueIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
+int VLabelAttribute::num(const VNode *vnode)
+{
+    if(vnode->isServer())
+        return 0;
+
+    node_ptr node=vnode->node();
+    return (node.get())?static_cast<int>(node->labels().size()):0;
+}
+
+bool VLabelAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node.get())
+        return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  data=" + data.join(",").toStdString());
+    UiLog().dbg() << "VLabelAttribute::getData -->";
+#endif
+    const std::vector<Label>&  v=node->labels();
+    if(row >=0 && row < v.size())
+    {
+        getData(v[row],data);
+#ifdef _UI_ATTR_DEBUG
+    UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=v.size();
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
 
     return false;
@@ -480,10 +608,10 @@ int VLabelAttribute::lineNum(const VNode* vnode,int row)
     const std::vector<Label>&  v=node->labels();
     if(row >=0 && row < v.size())
     {
-        std::string val=v.at(row).new_value();
+        std::string val=v[row].new_value();
         if(val.empty() || val == " ")
         {
-            val=v.at(row).value();
+            val=v[row].value();
         }
         return std::count(val.begin(), val.end(), '\n')+1;
     }
@@ -494,40 +622,111 @@ int VLabelAttribute::lineNum(const VNode* vnode,int row)
 QString VLabelAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Label<br>";
-    if(d.count() >= 3)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1] + "<br>";
-        t+="<b>Value:</b> " + d[2];
+        t+="<b>Name:</b> " + d[NameIndex] + "<br>";
+        t+="<b>Value:</b> " + d[ValueIndex];
     }
     return t;
 }
 
-bool VLabelAttribute::exists(const VNode* vnode,QStringList data) const
+int VLabelAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
     if(vnode->isServer())
-        return false;
+        return -1;
 
     node_ptr node=vnode->node();
     if(!node)
-        return false;
+        return -1;
 
-    if(data.count() != 3 && data[0] != qName_)
-        return false;
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
 
     const std::vector<Label>&  v=node->labels();
     for(size_t i=0; i < v.size(); i++)
     {
-        if(v[i].name() == data[1].toStdString())
-            return true;
+        if(v[i].name() == data[NameIndex].toStdString())
+            return i;
     }
 
-    return false;
+    return -1;
+}
+
+void VLabelAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<Label>& v=node->labels();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        nameVec.push_back(v[i].name());
+    }
+}
+
+bool VLabelAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<Label>& v=node->labels();
+    UI_ASSERT(index >=0 && index < v.size(), "Index: " << UIDebug::longToString(index) << " v.size: " << v.size());
+    getData(v[index],data);
+    return true;
+}
+
+void VLabelAttribute::getData(const Label& label,QStringList& data)
+{
+    std::string val=label.new_value();
+    if(val.empty() || val == " ")
+    {
+        val=label.value();
+    }
+
+    data << qName_ <<
+                QString::fromStdString(label.name()) <<
+                QString::fromStdString(val);
 }
 
 //================================
 // Events
 //================================
 
+
+class VEventAttribute : public VAttributeType
+{
+public:
+    explicit  VEventAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2,MinIndex=3, MaxIndex=4,ThresholdIndex=5};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Event& m,QStringList& data);
+
+};
+
+VEventAttribute::VEventAttribute(const std::string& n) :
+    VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["event_name"]=NameIndex;
+    searchKeyToData_["event_value"]=ValueIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VEventAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -547,22 +746,27 @@ bool VEventAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
             return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VEventAttribute::getData -->");
+    UiLog().dbg() << "VEventAttribute::getData -->";
 #endif
     const std::vector<Event>& v=node->events();
     if(row >=0 && row < v.size())
     {
+        getData(v[row],data);
+
+#if 0
         data << qName_ <<
                 QString::fromStdString(v.at(row).name_or_number()) <<
                 QString::number((v.at(row).value()==true)?1:0);
+#endif
+
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  data=" + data.join(",").toStdString());
+    UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=v.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
 
     return false;
@@ -571,171 +775,254 @@ bool VEventAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VEventAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Event<br>";
-    if(d.count() >=3)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1] + "<br>";
+        t+="<b>Name:</b> " + d[NameIndex] + "<br>";
         t+="<b>Status:</b> ";
-        t+=(d[2] == "1")?"set (true)":"clear (false)";
+        t+=(d[ValueIndex] == "1")?"set (true)":"clear (false)";
 
     }
     return t;
 }
 
-bool VEventAttribute::exists(const VNode* vnode,QStringList data) const
+int VEventAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
     if(vnode->isServer())
-        return false;
+        return -1;
 
     node_ptr node=vnode->node();
     if(!node)
-        return false;
+        return -1;
 
-    if(data.count() != 3 && data[0] != qName_)
-        return false;
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
 
     const std::vector<Event>&  v=node->events();
     for(size_t i=0; i < v.size(); i++)
     {
-        if(v[i].name_or_number() == data[1].toStdString())
-            return true;
+        if(v[i].name_or_number() == data[NameIndex].toStdString())
+            return i;
     }
 
-    return false;
+    return -1;
+}
+
+void VEventAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<Event>& v=node->events();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        nameVec.push_back(v[i].name_or_number());
+    }
+}
+
+bool VEventAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<Event>& v=node->events();
+    UI_ASSERT(index >=0 && index < v.size(), "Index: " << UIDebug::longToString(index) << " v.size: " << v.size());
+    getData(v[index],data);
+    return true;
 }
 
+void VEventAttribute::getData(const Event& e,QStringList& data)
+{
+    data << qName_ <<
+              QString::fromStdString(e.name_or_number()) <<
+              QString::number((e.value()==true)?1:0);
+}
+
+
 //================================
 //Generated Variables
 //================================
 
+class VGenvarAttribute : public VAttributeType
+{
+public:
+    explicit VGenvarAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList& data);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Variable&,QStringList& data);
+};
+
+VGenvarAttribute::VGenvarAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["var_name"]=NameIndex;
+    searchKeyToData_["var_value"]=ValueIndex;
+    searchKeyToData_["var_type"]=TypeIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VGenvarAttribute::num(const VNode *vnode)
 {
     return vnode->genVariablesNum();
-
-    /*node_ptr node=vnode->node();
-    if(node.get())
-    {
-        std::vector<Variable> genV;
-        node->gen_variables(genV);
-        return static_cast<int>(genV.size());
-    }
-    return 0;*/
 }
 
 bool VGenvarAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 {
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VGenvarAttribute::getData -->");
+    UiLog().dbg() << "VGenvarAttribute::getData -->";
 #endif
 
     std::vector<Variable> genV;
     vnode->genVariables(genV);
 
-    /*node_ptr node=vnode->node();
-    if(!node.get())
-            return false;
-
-    std::vector<Variable> genV;
-    node->gen_variables(genV);*/
-
     if(row >=0 && row < genV.size())
     {
-        data << qName_ <<
-                QString::fromStdString(genV.at(row).name()) <<
-                QString::fromStdString(genV.at(row).theValue());
+        getData(genV[row],data);
+        //data << qName_ <<
+        //        QString::fromStdString(genV.at(row).name()) <<
+        //        QString::fromStdString(genV.at(row).theValue());
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  data=" + data.join(",").toStdString());
+    UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=genV.size();
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
 
-bool VGenvarAttribute::exists(const VNode* vnode,QStringList data) const
+int VGenvarAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
-    if(vnode->isServer())
-        return false;
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
 
-    node_ptr node=vnode->node();
-    if(!node)
-        return false;
+    std::vector<Variable> v;
+    vnode->genVariables(v);
 
-    if(data.count() != 3 && data[0] != qName_)
-        return false;
+    for(size_t i=0; i < v.size(); i++)
+    {
+        if(v[i].name() == data[NameIndex].toStdString())
+           return i;
+    }
 
+    return -1;
+}
+
+void VGenvarAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
     std::vector<Variable> v;
     vnode->genVariables(v);
-
     for(size_t i=0; i < v.size(); i++)
     {
-        if(v[i].name() == data[1].toStdString())
-           return true;
+        nameVec.push_back(v[i].name());
     }
+}
 
-    return false;
+bool VGenvarAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    std::vector<Variable> v;
+    vnode->genVariables(v);
+    assert(index >=0 && index  < v.size());
+    getData(v[index],data);
+    return true;
+}
+
+void VGenvarAttribute::getData(const Variable& v,QStringList& data)
+{
+    data << qName_ <<
+            QString::fromStdString(v.name()) <<
+            QString::fromStdString(v.theValue());
 }
 
 //================================
 //Variables
 //================================
 
+class VVarAttribute : public VAttributeType
+{
+public:
+    explicit VVarAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Variable&,QStringList& data);
+};
+
+VVarAttribute::VVarAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["var_name"]=NameIndex;
+    searchKeyToData_["var_value"]=ValueIndex;
+    searchKeyToData_["var_type"]=TypeIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VVarAttribute::num(const VNode *vnode)
 {
     return vnode->variablesNum();
-
-    //node_ptr node=vnode->node();
-    //return (node.get())?static_cast<int>(node->variables().size()):0;
 }
 
 bool VVarAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 {
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VVarAttribute::getData -->");
+    UiLog().dbg() << "VVarAttribute::getData -->";
 #endif
 
     if(vnode->isServer())
     {
         std::vector<Variable> v;
         vnode->variables(v);
-        //node_ptr node=vnode->node();
         if(row >=0 && row < v.size())
         {
-            data << qName_ <<
-                    QString::fromStdString(v.at(row).name()) <<
-                    QString::fromStdString(v.at(row).theValue());
+            getData(v[row],data);
 #ifdef _UI_ATTR_DEBUG
-            UserMessage::debug("  data=" + data.join(",").toStdString());
+            UiLog().dbg() << "  data=" << data.join(",");
 #endif
             return true;
         }
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  size=" + QString::number(size).toStdString());
+        UiLog().dbg() << "  size=" << size;
 #endif
         size=v.size();
     }
     else
     {
         node_ptr node=vnode->node();
-        if(!node.get())
+        if(!node)
             return false;
 
         const std::vector<Variable>& v=node->variables();
         if(row >=0 && row < v.size())
         {
-            data << qName_ <<
-                    QString::fromStdString(v.at(row).name()) <<
-                    QString::fromStdString(v.at(row).theValue());
+            getData(v[row],data);
 #ifdef _UI_ATTR_DEBUG
-            UserMessage::debug("  data=" + data.join(",").toStdString());
+            UiLog().dbg() << "  data=" << data.join(",");
 #endif
             return true;
         }
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  size=" + QString::number(size).toStdString());
+        UiLog().dbg() << "  size=" << size;
 #endif
         size=v.size();
     }
@@ -743,45 +1030,122 @@ bool VVarAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
     return false;
 }
 
-bool VVarAttribute::exists(const VNode* vnode,QStringList data) const
+int VVarAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
     if(vnode->isServer())
-        return false;
+    {
+        std::vector<Variable> v;
+        vnode->variables(v);
+        for(size_t i=0; i < v.size(); i++)
+        {
+            if(v[i].name() == data[NameIndex].toStdString())
+               return i;
+        }
+    }
+    else
+    {
+        node_ptr node=vnode->node();
+        if(!node)
+            return -1;
 
-    node_ptr node=vnode->node();
-    if(!node)
-        return false;
+        const std::vector<Variable>& v=node->variables();
+        for(size_t i=0; i < v.size(); i++)
+        {
+            if(v[i].name() == data[NameIndex].toStdString())
+                return i;
+        }
+    }
 
-    if(data.count() != 3 && data[0] != qName_)
-        return false;
+    return -1;
+}
 
+void VVarAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
     if(vnode->isServer())
     {
         std::vector<Variable> v;
         vnode->variables(v);
         for(size_t i=0; i < v.size(); i++)
         {
-            if(v[i].name() == data[1].toStdString())
-               return true;
+            nameVec.push_back(v[i].name());
         }
     }
     else
     {
+        node_ptr node=vnode->node();
+        if(!node)
+            return;
+
         const std::vector<Variable>& v=node->variables();
         for(size_t i=0; i < v.size(); i++)
         {
-            if(v[i].name() == data[1].toStdString())
-                return true;
+            nameVec.push_back(v[i].name());
         }
     }
+}
 
-    return false;
+bool VVarAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+    {
+        std::vector<Variable> v;
+        vnode->variables(v);        
+        getData(v[index],data);
+
+    }
+    else
+    {
+        node_ptr node=vnode->node();
+        if(!node)
+            return false;
+
+        const std::vector<Variable>& v=node->variables();
+        assert(index >=0 && index  < v.size());
+        getData(v[index],data);       
+    }
+
+    return true;
+}
+
+void VVarAttribute::getData(const Variable& v,QStringList& data)
+{
+    data << qName_ <<
+            QString::fromStdString(v.name()) <<
+            QString::fromStdString(v.theValue());
 }
 
 //================================
 // Limits
 //================================
 
+class VLimitAttribute : public VAttributeType
+{
+public:
+    explicit VLimitAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,ValueIndex=2,MaxIndex=3};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(limit_ptr lim,QStringList& data);
+};
+
+VLimitAttribute::VLimitAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=4;
+    searchKeyToData_["limit_name"]=NameIndex;
+    searchKeyToData_["limit_value"]=ValueIndex;
+    searchKeyToData_["limit_max"]=MaxIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VLimitAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -801,25 +1165,22 @@ bool VLimitAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VLimitAttribute::getData -->");
+    UiLog().dbg() << "VLimitAttribute::getData -->";
 #endif
 
     const std::vector<limit_ptr>& v=node->limits();
     if(row >=0 && row < v.size())
     {
-        data << qName_ <<
-                    QString::fromStdString(v.at(row)->name()) <<
-                    QString::number(v.at(row)->value()) <<
-                    QString::number(v.at(row)->theLimit());
+        getData(v[row],data);
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
 
         return true;
     }
     size=v.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
 
     return false;
@@ -828,41 +1189,104 @@ bool VLimitAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VLimitAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Limit<br>";
-    if(d.count() >=4)
+    if(d.count()  == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1] + "<br>";
-        t+="<b>Value:</b> " + d[2] + "<br>";
-        t+="<b>Maximum:</b> " + d[3];
+        t+="<b>Name:</b> " + d[NameIndex] + "<br>";
+        t+="<b>Value:</b> " + d[ValueIndex] + "<br>";
+        t+="<b>Maximum:</b> " + d[MaxIndex];
     }
     return t;
 }
 
-bool VLimitAttribute::exists(const VNode* vnode,QStringList data) const
+int VLimitAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
     if(vnode->isServer())
-        return false;
+        return -1;
 
     node_ptr node=vnode->node();
     if(!node)
-        return false;
+        return -1;
 
-    if(data.count() != 4 && data[0] != qName_)
-        return false;
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
 
     const std::vector<limit_ptr>& v=node->limits();
     for(size_t i=0; i < v.size(); i++)
     {
-        if(v[i]->name() == data[1].toStdString())
-            return true;
+        if(v[i]->name() == data[NameIndex].toStdString())
+            return i;
     }
 
-    return false;
+    return -1;
+}
+
+void VLimitAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<limit_ptr>& v=node->limits();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        nameVec.push_back(v[i]->name());
+    }
+}
+
+bool VLimitAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<limit_ptr>& v=node->limits();
+    UI_ASSERT(index >=0 && index < v.size(), "index = " << UIDebug::longToString(index) << " v.size: " << UIDebug::longToString(v.size()));
+    getData(v[index],data);
+    return true;
+}
+
+void VLimitAttribute::getData(limit_ptr lim,QStringList& data)
+{    
+    data << qName_ <<
+        QString::fromStdString(lim->name()) <<
+        QString::number(lim->value()) <<
+        QString::number(lim->theLimit());
 }
 
 //================================
 //Limiters
 //================================
 
+class VLimiterAttribute : public VAttributeType
+{
+public:
+    explicit VLimiterAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1,PathIndex=2};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const InLimit& lim,QStringList& data);
+};
+
+VLimiterAttribute::VLimiterAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["limiter_name"]=NameIndex;
+    searchKeyToData_["limiter_path"]=PathIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VLimiterAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -882,22 +1306,20 @@ bool VLimiterAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VLimiterAttribute::getData -->");
+    UiLog().dbg() << "VLimiterAttribute::getData -->";
 #endif
     const std::vector<InLimit>& v=node->inlimits();
     if(row >=0 && row < v.size())
     {
-        data << qName_ <<
-                    QString::fromStdString(v.at(row).name()) <<
-                    QString::fromStdString(v.at(row).pathToNode());
+        getData(v[row],data);
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=v.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -905,19 +1327,103 @@ bool VLimiterAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
 QString VLimiterAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Limiter<br>";
-    if(d.count() >=3)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Limit:</b> " + d[1] + "<br>";
-        t+="<b>Node:</b> " + d[2];
+        t+="<b>Limit:</b> " + d[NameIndex] + "<br>";
+        t+="<b>Node:</b> " + d[PathIndex];
 
     }
     return t;
 }
 
+int VLimiterAttribute::indexOf(const VNode* vnode,QStringList data) const
+{
+    if(vnode->isServer())
+        return -1;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    const std::vector<InLimit>& v=node->inlimits();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        if(v[i].name() == data[NameIndex].toStdString() &&
+           v[i].pathToNode() == data[PathIndex].toStdString())
+            return i;
+    }
+
+    return -1;
+}
+
+void VLimiterAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<InLimit>& v=node->inlimits();
+    for(size_t i=0; i < v.size(); i++)
+    {
+        nameVec.push_back(v[i].name());
+    }
+}
+
+bool VLimiterAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<InLimit>& v=node->inlimits();
+    assert(index >=0 && index < v.size());
+    getData(v[index],data);
+    return true;
+}
+
+void VLimiterAttribute::getData(const InLimit& lim,QStringList& data)
+{
+    data << qName_ <<
+           QString::fromStdString(lim.name()) <<
+           QString::fromStdString(lim.pathToNode());
+}
+
 //================================
 //Triggers
 //================================
 
+class VTriggerAttribute : public VAttributeType
+{
+public:
+    explicit VTriggerAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList data) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,CompleteIndex=1,ExprIndex=2};
+    void itemNames(const VNode*,std::vector<std::string>&) {}
+};
+
+VTriggerAttribute::VTriggerAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=3;
+    searchKeyToData_["trigger_type"]=CompleteIndex;
+    searchKeyToData_["trigger_expression"]=ExprIndex;
+    searchKeyToData_["name"]=CompleteIndex;
+}
+
 int VTriggerAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -941,7 +1447,7 @@ bool VTriggerAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VTriggerAttribute::getData -->");
+    UiLog().dbg() << "VTriggerAttribute::getData -->";
 #endif
 
     Expression* eT=node->get_trigger();
@@ -951,7 +1457,8 @@ bool VTriggerAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
     bool getComplete=false;
 
     if(row == 0)
-    {    if(eT)
+    {
+        if(eT)
             getTrigger=true;
         else if(eC)
             getComplete=true;
@@ -964,7 +1471,7 @@ bool VTriggerAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
         data << qName_;
         data << "0" << QString::fromStdString(eT->expression());
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
@@ -973,7 +1480,7 @@ bool VTriggerAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
         data << qName_;
         data << "1" << QString::fromStdString(eC->expression());
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
@@ -982,24 +1489,101 @@ bool VTriggerAttribute::getData(VNode *vnode,int row,int& size,QStringList& data
     size+=(eC)?1:0;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
 
+int VTriggerAttribute::indexOf(const VNode* vnode,QStringList data) const
+{
+    if(vnode->isServer())
+        return -1;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    Expression* eT=node->get_trigger();
+    Expression* eC=node->get_complete();
+
+    int index=-1;
+    if(eT)
+    {
+        index=0;
+        if(data[CompleteIndex] == "0")
+            return index;
+    }
+
+    if(eC)
+    {
+        if(index==0)
+            index=1;
+        else
+            index=0;
+
+        if(data[CompleteIndex] == "1")
+            return index;
+    }
+
+    //TODO: we should check the expressions as well
+
+    return -1;
+}
+
+bool VTriggerAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    Expression* eT=node->get_trigger();
+    Expression* eC=node->get_complete();
+
+    bool getTrigger=false;
+    bool getComplete=false;
+
+    if(index == 0)
+    {
+        if(eT)
+            getTrigger=true;
+        else if(eC)
+            getComplete=true;
+    }
+    else if(index==1 && eC)
+        getComplete=true;
+
+    if(getTrigger)
+    {
+        data << qName_ << "0" << QString::fromStdString(eT->expression());
+        return true;
+    }
+    else if(getComplete)
+    {        
+        data << qName_ << "1" << QString::fromStdString(eC->expression());     
+    }
+
+    return false;
+}
+
 QString VTriggerAttribute::toolTip(QStringList d) const
 {
     QString t;
-    if(d.count() >=3)
+    if(d.count() == dataCount_)
     {
-        if(d[1] == "0")
+        if(d[CompleteIndex] == "0")
             t+="<b>Type:</b> Trigger<br>";
-        else if(d[1] == "1")
+        else if(d[CompleteIndex] == "1")
             t+="<b>Type:</b> Complete<br>";
         else
             return t;
 
-        t+="<b>Expression:</b> " + d[2];
+        t+="<b>Expression:</b> " + d[ExprIndex];
     }
     return t;
 }
@@ -1008,13 +1592,38 @@ QString VTriggerAttribute::toolTip(QStringList d) const
 //Times
 //================================
 
+class VTimeAttribute : public VAttributeType
+{
+public:
+    explicit VTimeAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const ecf::TimeAttr& lim,QStringList& data);
+    void getData(const ecf::TodayAttr& lim,QStringList& data);
+    void getData(const ecf::CronAttr& lim,QStringList& data);
+};
+
+VTimeAttribute::VTimeAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=2;
+    searchKeyToData_["time_name"]=NameIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VTimeAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
         return 0;
 
     node_ptr node=vnode->node();
-    return (node.get())?static_cast<int>(node->timeVec().size() + node->todayVec().size()+ node->crons().size()):0;
+    return (node)?static_cast<int>(node->timeVec().size() + node->todayVec().size()+ node->crons().size()):0;
 }
 
 bool VTimeAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
@@ -1023,11 +1632,11 @@ bool VTimeAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
     node_ptr node=vnode->node();
-    if(!node.get())
+    if(!node)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VTimeAttribute::getData -->");
+    UiLog().dbg() << "VTimeAttribute::getData -->";
 #endif
 
     const std::vector<ecf::TimeAttr>& tV=node->timeVec();
@@ -1036,22 +1645,22 @@ bool VTimeAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 
     if(row >=0 && row < tV.size()+tdV.size()+ cV.size())
     {
-        data << qName_;
         if(row < tV.size())
-            data << QString::fromStdString(tV.at(row).name());
+            getData(tV[row],data);
         else if(row < tV.size() + tdV.size())
-            data << QString::fromStdString(tdV.at(row-tV.size()).name());
+            getData(tdV[row-tV.size()],data);
         else
-            data << QString::fromStdString(cV.at(row-tV.size()-tdV.size()).name());
+            getData(cV[row-tV.size()-tdV.size()],data);
+
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
 
     size=tV.size()+tdV.size()+ cV.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -1059,19 +1668,151 @@ bool VTimeAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VTimeAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Time<br>";
-    if(d.count() >=2)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1];
+        t+="<b>Name:</b> " + d[NameIndex];
     }
     return t;
 }
 
+int VTimeAttribute::indexOf(const VNode* vnode,QStringList data) const
+{
+    if(vnode->isServer())
+        return -1;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    const std::vector<ecf::TimeAttr>& tV=node->timeVec();
+    const std::vector<ecf::TodayAttr>& tdV=node->todayVec();
+    const std::vector<ecf::CronAttr>& cV=node->crons();
+
+    int cnt=0;
+    for(size_t i=0; i < tV.size(); i++)
+    {
+        if(tV[i].name() == data[NameIndex].toStdString())
+            return i;
+    }
+
+    cnt+=tV.size();
+    for(size_t i=0; i < tdV.size(); i++)
+    {
+        if(tdV[i].name() == data[NameIndex].toStdString())
+            return cnt+i;
+    }
+
+    cnt+=tdV.size();
+    for(size_t i=0; i < cV.size(); i++)
+    {
+        if(cV[i].name() == data[NameIndex].toStdString())
+            return cnt+i;
+    }
+
+    return -1;
+}
+
+void VTimeAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<ecf::TimeAttr>& tV=node->timeVec();
+    const std::vector<ecf::TodayAttr>& tdV=node->todayVec();
+    const std::vector<ecf::CronAttr>& cV=node->crons();
 
+    for(size_t i=0; i < tV.size(); i++)
+    {
+        nameVec.push_back(tV[i].name());
+    }
+    for(size_t i=0; i < tdV.size(); i++)
+    {
+        nameVec.push_back(tdV[i].name());
+    }
+    for(size_t i=0; i < cV.size(); i++)
+    {
+        nameVec.push_back(cV[i].name());
+    }
+}
+
+bool VTimeAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<ecf::TimeAttr>& tV=node->timeVec();
+    const std::vector<ecf::TodayAttr>& tdV=node->todayVec();
+    const std::vector<ecf::CronAttr>& cV=node->crons();
+
+    if(index >=0 && index < tV.size()+tdV.size()+ cV.size())
+    {
+        if(index < tV.size())
+            getData(tV[index],data);
+        else if(index < tV.size() + tdV.size())
+            getData(tdV[index-tV.size()],data);
+        else
+            getData(cV[index-tV.size()-tdV.size()],data);
+
+        assert(!data.isEmpty());
+    }
+
+    return false;
+}
+
+void VTimeAttribute::getData(const ecf::TimeAttr& d,QStringList& data)
+{
+    data << qName_ << QString::fromStdString(d.name());
+}
+
+void VTimeAttribute::getData(const ecf::TodayAttr& d,QStringList& data)
+{
+    data << qName_ << QString::fromStdString(d.name());
+}
+
+void VTimeAttribute::getData(const ecf::CronAttr& d,QStringList& data)
+{
+    data << qName_ << QString::fromStdString(d.name());
+}
 
 //================================
 //Date
 //================================
 
+class VDateAttribute : public VAttributeType
+{
+public:
+    explicit VDateAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;    
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const DateAttr& lim,QStringList& data);
+    void getData(const DayAttr& lim,QStringList& data);
+};
+
+VDateAttribute::VDateAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=2;
+    searchKeyToData_["date_name"]=NameIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VDateAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -1091,7 +1832,7 @@ bool VDateAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VDateAttribute::getData -->");
+    UiLog().dbg() << "VDateAttribute::getData -->";
 #endif
 
     const std::vector<DateAttr>& dV=node->dates();
@@ -1099,21 +1840,20 @@ bool VDateAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 
     if(row >=0 && row < dV.size()+dayV.size())
     {
-        data << qName_;
         if(row < dV.size())
-             data << QString::fromStdString(dV.at(row).name());
+            getData(dV[row],data);
         else
-            data << QString::fromStdString(dayV.at(row-dV.size()).name());
+            getData(dayV[row-dV.size()],data);
 
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
 
         return true;
     }
     size=dV.size()+dayV.size();
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -1121,17 +1861,132 @@ bool VDateAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VDateAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Date<br>";
-    if(d.count() >=2)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1];
+        t+="<b>Name:</b> " + d[NameIndex];
     }
     return t;
 }
 
+int VDateAttribute::indexOf(const VNode* vnode,QStringList data) const
+{
+    if(vnode->isServer())
+        return -1;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    const std::vector<DateAttr>& dV=node->dates();
+    const std::vector<DayAttr>& dayV=node->days();
+
+    int cnt=0;
+    for(size_t i=0; i < dV.size(); i++)
+    {
+        if(dV[i].name() == data[NameIndex].toStdString())
+            return i;
+    }
+
+    cnt+=dV.size();
+    for(size_t i=0; i < dayV.size(); i++)
+    {
+        if(dayV[i].name() == data[NameIndex].toStdString())
+            return cnt+i;
+    }
+
+    return -1;
+}
+
+void VDateAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const std::vector<DateAttr>& dV=node->dates();
+    const std::vector<DayAttr>& dayV=node->days();
+
+    for(size_t i=0; i < dV.size(); i++)
+    {
+        nameVec.push_back(dV[i].name());
+    }
+    for(size_t i=0; i < dayV.size(); i++)
+    {
+        nameVec.push_back(dayV[i].name());
+    }
+}
+
+bool VDateAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    const std::vector<DateAttr>& dV=node->dates();
+    const std::vector<DayAttr>& dayV=node->days();
+
+    if(index >=0 && index < dV.size()+dayV.size())
+    {
+        QStringList  data;
+        if(index < dV.size())
+            getData(dV[index],data);
+        else
+            getData(dayV[index-dV.size()],data);
+
+        assert(!data.isEmpty());
+    }
+
+    return false;
+}
+
+void VDateAttribute::getData(const DateAttr& d,QStringList& data)
+{
+    data << qName_ << QString::fromStdString(d.name());
+}
+
+void VDateAttribute::getData(const DayAttr& d,QStringList& data)
+{
+    data << qName_ << QString::fromStdString(d.name());
+}
+
 //================================
 //Repeat
 //================================
 
+class VRepeatAttribute : public VAttributeType
+{
+public:
+    explicit VRepeatAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList&);
+
+private:
+    enum DataIndex {TypeIndex=0,SubtypeIndex=1,NameIndex=2,ValueIndex=3,StartIndex=4,EndIndex=5,StepIndex=6};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(const Repeat& r,QStringList& data);
+};
+
+
+VRepeatAttribute::VRepeatAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=7;
+    searchKeyToData_["repeat_name"]=NameIndex;
+    searchKeyToData_["repeat_value"]=ValueIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VRepeatAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -1151,30 +2006,21 @@ bool VRepeatAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VRepeatAttribute::getData -->");
+    UiLog().dbg() << "VRepeatAttribute::getData -->";
 #endif
 
     const Repeat& r=node->repeat();
     if(row ==0 && !r.empty())
     {
-        //We try to avoid creating a VRepeat object everytime we are here
-        std::string type=VRepeat::type(r);
-
-        data << qName_ << QString::fromStdString(type) <<
-             QString::fromStdString(r.name()) <<
-             QString::fromStdString(r.valueAsString()) <<
-             QString::fromStdString(r.value_as_string(r.start())) <<
-             QString::fromStdString(r.value_as_string(r.end())) <<
-             QString::number(r.step());
-
+        getData(r,data);
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=(r.empty())?0:1;
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -1182,52 +2028,125 @@ bool VRepeatAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VRepeatAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Repeat";
-    if(d.count() == 7)
+    if(d.count() == dataCount_)
     {
-        t+=" " + d[1] + "<br>";
+        t+=" " + d[SubtypeIndex] + "<br>";
 
-        if(d[1] != "day")
+        if(d[SubtypeIndex] != "day")
         {
-            t+="<b>Name:</b> " + d[2] + "<br>";
-            t+="<b>Value:</b> " + d[3] + "<br>";
-            t+="<b>Start:</b> " + d[4] + "<br>";
-            t+="<b>End:</b> " + d[5] + "<br>";
-            t+="<b>Step:</b> " + d[6];
+            t+="<b>Name:</b> " + d[NameIndex] + "<br>";
+            t+="<b>Value:</b> " + d[ValueIndex] + "<br>";
+            t+="<b>Start:</b> " + d[StartIndex] + "<br>";
+            t+="<b>End:</b> " + d[EndIndex] + "<br>";
+            t+="<b>Step:</b> " + d[StepIndex];
         }
         else
         {
-            t+="<b>Step:</b> " + d[6];
+            t+="<b>Step:</b> " + d[StepIndex];
         }
     }
 
     return t;
 }
 
-bool VRepeatAttribute::exists(const VNode* vnode,QStringList data) const
+int VRepeatAttribute::indexOf(const VNode* vnode,QStringList data) const
 {
     if(vnode->isServer())
-        return false;
+        return -1;
 
     node_ptr node=vnode->node();
     if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    const Repeat& r=node->repeat();
+    if(r.name() == data[NameIndex].toStdString())
+    {
+        if(VRepeat::type(r) == data[SubtypeIndex].toStdString())
+            return 0;
+    }
+
+    return -1;
+}
+
+void VRepeatAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    const Repeat& r=node->repeat();
+    if(!r.empty())
+        nameVec.push_back(r.name());
+}
+
+bool VRepeatAttribute::itemData(const VNode* vnode,int index,QStringList& data)
+{
+    if(vnode->isServer())
         return false;
 
-    if(data.count() != 7 && data[0] != qName_)
+    node_ptr node=vnode->node();
+    if(!node)
         return false;
 
     const Repeat& r=node->repeat();
-    if(r.name() == data[2].toStdString())
+    if(index == 0 && !r.empty())
     {
-        return (VRepeat::type(r) == data[1].toStdString());
+        getData(r,data);
+        return true;
     }
 
     return false;
 }
 
+void VRepeatAttribute::getData(const Repeat& r,QStringList& data)
+{
+    //We try to avoid creating a VRepeat object everytime we are here
+    std::string type=VRepeat::type(r);
+
+    data << qName_ << QString::fromStdString(type) <<
+         QString::fromStdString(r.name()) <<
+         QString::fromStdString(r.valueAsString()) <<
+         QString::fromStdString(r.value_as_string(r.start())) <<
+         QString::fromStdString(r.value_as_string(r.end())) <<
+         QString::number(r.step());
+}
+
+
 //================================
 //Late
 //================================
 
+class VLateAttribute : public VAttributeType
+{
+public:
+    explicit VLateAttribute(const std::string& n);
+    int num(const VNode *node);
+    bool getData(VNode *node,int row,int& size,QStringList& data);
+    QString toolTip(QStringList d) const;
+    int indexOf(const VNode* vnode,QStringList) const;
+    bool itemData(const VNode*,int index,QStringList& data);
+
+private:
+    enum DataIndex {TypeIndex=0,NameIndex=1};
+    void itemNames(const VNode* vnode,std::vector<std::string>& nameVec);
+    void getData(ecf::LateAttr *late,QStringList& data);
+};
+
+
+VLateAttribute::VLateAttribute(const std::string& n) : VAttributeType(n)
+{
+    dataCount_=2;   
+    searchKeyToData_["late_name"]=NameIndex;
+    searchKeyToData_["late_type"]=TypeIndex;
+    searchKeyToData_["name"]=NameIndex;
+}
+
 int VLateAttribute::num(const VNode *vnode)
 {
     if(vnode->isServer())
@@ -1247,21 +2166,21 @@ bool VLateAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
         return false;
 
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("VLateAttribute::getData -->");
+    UiLog().dbg() << "VLateAttribute::getData -->";
 #endif
 
     ecf::LateAttr *late=node->get_late();
     if(row ==0 && late)
     {
-        data << qName_ << QString::fromStdString(late->name());
+        getData(late,data);
 #ifdef _UI_ATTR_DEBUG
-        UserMessage::debug("  data=" + data.join(",").toStdString());
+        UiLog().dbg() << "  data=" << data.join(",");
 #endif
         return true;
     }
     size=(late)?1:0;
 #ifdef _UI_ATTR_DEBUG
-    UserMessage::debug("  size=" + QString::number(size).toStdString());
+    UiLog().dbg() << "  size=" << size;
 #endif
     return false;
 }
@@ -1269,12 +2188,84 @@ bool VLateAttribute::getData(VNode *vnode,int row,int& size,QStringList& data)
 QString VLateAttribute::toolTip(QStringList d) const
 {
     QString t="<b>Type:</b> Late<br>";
-    if(d.count() >=2)
+    if(d.count() == dataCount_)
     {
-        t+="<b>Name:</b> " + d[1];
+        t+="<b>Name:</b> " + d[NameIndex];
     }
     return t;
 }
 
-static SimpleLoader<VAttributeType> loader("attribute");
+int VLateAttribute::indexOf(const VNode* vnode,QStringList data) const
+{
+    if(vnode->isServer())
+        return -1;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return -1;
+
+    if(data.count() != dataCount_ && data[TypeIndex] != qName_)
+        return -1;
+
+    ecf::LateAttr *late=node->get_late();
+    if(late && late->name() == data[NameIndex].toStdString())
+    {
+        return 0;
+    }
+
+    return -1;
+}
+
+void VLateAttribute::itemNames(const VNode* vnode,std::vector<std::string>& nameVec)
+{
+    if(vnode->isServer())
+        return;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return;
+
+    ecf::LateAttr *late=node->get_late();
+    if(late)
+        nameVec.push_back(late->name());
+}
+
+bool VLateAttribute::itemData(const VNode* vnode,int /*index*/,QStringList& data)
+{
+    if(vnode->isServer())
+        return false;
+
+    node_ptr node=vnode->node();
+    if(!node)
+        return false;
+
+    ecf::LateAttr *late=node->get_late();
+    if(late)
+    {
+        getData(late,data);
+        return true;
+    }
+
+    return false;
+}
 
+void VLateAttribute::getData(ecf::LateAttr *late,QStringList& data)
+{
+    if(late)
+        data << qName_ << QString::fromStdString(late->name());
+}
+
+static VMeterAttribute meterAttr("meter");
+static VEventAttribute eventAttr("event");
+static VRepeatAttribute repeatAttr("repeat");
+static VTriggerAttribute triggerAttr("trigger");
+static VLabelAttribute labelAttr("label");
+static VTimeAttribute timeAttr("time");
+static VDateAttribute dateAttr("date");
+static VLimitAttribute limitAttr("limit");
+static VLimiterAttribute limiterAttr("limiter");
+static VLateAttribute lateAttr("late");
+static VVarAttribute varAttr("var");
+static VGenvarAttribute genvarAttr("genvar");
+
+static SimpleLoader<VAttributeType> loader("attribute");
diff --git a/Viewer/src/VAttributeType.hpp b/Viewer/src/VAttributeType.hpp
index e19e403..73732b9 100644
--- a/Viewer/src/VAttributeType.hpp
+++ b/Viewer/src/VAttributeType.hpp
@@ -11,14 +11,16 @@
 #ifndef VATTRIBUTETYPE_HPP_
 #define VATTRIBUTETYPE_HPP_
 
-#include <set>
+#include <map>
 #include <vector>
 #include <string>
 
+#include "VItemTmp.hpp"
 #include "VParam.hpp"
 
 class AttributeFilter;
 class VNode;
+class VAttribute;
 
 class VAttributeType : public VParam
 {
@@ -30,27 +32,53 @@ public:
 
     static VAttributeType* getType(const VNode *vnode,int row,AttributeFilter *filter=0);
     static bool getData(VNode* vnode,int row,VAttributeType* &type,QStringList& data,AttributeFilter *filter=0);
-    static bool getData(const std::string& type,VNode* vnode,int row,QStringList& data,AttributeFilter *filter=0);
+    static bool getData(const std::string& type,VNode* vnode,int row,QStringList& data);
     static int totalNum(const VNode *vnode,AttributeFilter *filter=0);
     static void init(const std::string& parFile);
     static int getLineNum(const VNode *vnode,int row,AttributeFilter *filter=0);
+#if 0
     static int getRow(const VNode *vnode,int row,AttributeFilter *filter=0);
+#endif
+    static VItemTmp_ptr itemForAbsIndex(const VNode *vnode,int absIndex,AttributeFilter *filter);
 
     static VAttributeType* find(const std::string& name);
-
+    static VAttributeType* find(int id);
+    static const std::vector<VAttributeType*>& types() {return types_;}
+    
     //Called from VConfigLoader
     static void load(VProperty*);
 
     virtual QString toolTip(QStringList d) const {return QString();}
-    virtual bool exists(const VNode* vnode,QStringList) const {return false;}
+
+    static int absIndexOf(const VAttribute*,AttributeFilter *filter=0);
+    int indexOf(const VAttribute*);
+    virtual int indexOf(const VNode* vnode,QStringList data) const=0;
+    bool exists(const VNode* vnode,QStringList data) { return (indexOf(vnode,data) != -1); }
+
+    void items(const VNode* vnode,QList<VItemTmp_ptr>& lst);
+    static void items(const std::string& type,const VNode* vnode,QList<VItemTmp_ptr>& lst);
+    VItemTmp_ptr item(const VNode*,const std::string&);
+    virtual bool itemData(const VNode*,int index,QStringList&)=0;
+
+    int id() const {return id_;}
+    int keyToDataIndex(const std::string& key) const;
+    int searchKeyToDataIndex(const std::string& key) const;
+    QStringList searchKeys() const;
 
 protected:
+    virtual void itemNames(const VNode* node,std::vector<std::string>&)=0;
     virtual bool getData(VNode *vnode,int row,int& totalRow,QStringList& data)=0;
     virtual int num(const VNode* vnode)=0;
     virtual int lineNum(const VNode* vnode,int row) {return 1;}
 
+    std::map<std::string,int> keyToData_;
+    std::map<std::string,int> searchKeyToData_;
+    int dataCount_;
+    int id_;
+
 private:
-    static std::map<std::string,VAttributeType*> items_;
+    static std::map<std::string,VAttributeType*> typesMap_;
+    static std::vector<VAttributeType*> types_;
 };
 
 #endif
diff --git a/Viewer/src/VConfig.cpp b/Viewer/src/VConfig.cpp
index 25ce49e..0371ac1 100644
--- a/Viewer/src/VConfig.cpp
+++ b/Viewer/src/VConfig.cpp
@@ -15,6 +15,7 @@
 
 #include "DirectoryHandler.hpp"
 #include "SessionHandler.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 #include "Version.hpp"
@@ -126,7 +127,7 @@ void VConfig::loadInit(const std::string& parFile)
         VProperty *grProp=new VProperty(groupName);
         groups_.push_back(grProp);
 
-        UserMessage::message(UserMessage::DBG,false,std::string("VConfig::loadInit() read config group: ") + groupName);
+        UiLog().dbg() << "VConfig::loadInit() read config group: " << groupName;
 
         //Load the property parameters. It will recursively add all the
         //children properties.
@@ -150,7 +151,7 @@ void VConfig::loadProperty(const boost::property_tree::ptree& pt,VProperty *prop
     	ptree ptProp=it->second;
 
 #ifdef _UI_CONFIG_LOAD_DEBUG
-    	UserMessage::message(UserMessage::DBG,false,"   VConfig::loadProperty() read item: " + name);
+        UiLog().dbg() << "   VConfig::loadProperty() read item: " << name;
 #endif
     	//Default value
     	if(name == "default")
@@ -171,19 +172,19 @@ void VConfig::loadProperty(const boost::property_tree::ptree& pt,VProperty *prop
     			val=prefix.toStdString() + "." + val;
 
 #ifdef _UI_CONFIG_LOAD_DEBUG
-    		UserMessage::message(UserMessage::DBG,false,"   VConfig::loadProperty() line: " + val);
+            UiLog().dbg() << "   VConfig::loadProperty() line: " << val;
 #endif
     		if(VProperty* lineEditProp=find(val))
     		{
 #ifdef _UI_CONFIG_LOAD_DEBUG
-                UserMessage::message(UserMessage::DBG,false,"     --> link found");
+                UiLog().dbg() << "     --> link found";
 #endif
                 chProp->setLink(lineEditProp);
             }
             else
     		{
 #ifdef _UI_CONFIG_LOAD_DEBUG
-                UserMessage::message(UserMessage::DBG,false,"     --> link NOT found");
+                UiLog().dbg() << "     --> link NOT found";
 #endif
             }
     	}
@@ -193,19 +194,19 @@ void VConfig::loadProperty(const boost::property_tree::ptree& pt,VProperty *prop
     		std::string val=ptProp.get_value<std::string>();
 
 #ifdef _UI_CONFIG_LOAD_DEBUG
-            UserMessage::message(UserMessage::DBG,false,"   VConfig::loadProperty() line link: " + val);
+            UiLog().dbg() << "   VConfig::loadProperty() line link: " << val;
 #endif
     		if(VProperty* lineEditProp=find(val))
     		{
 #ifdef _UI_CONFIG_LOAD_DEBUG
-                UserMessage::message(UserMessage::DBG,false,"     --> link found");
+                UiLog().dbg() << "     --> link found";
 #endif
                 prop->setLink(lineEditProp);
     		}
     		else
     		{
 #ifdef _UI_CONFIG_LOAD_DEBUG
-                UserMessage::message(UserMessage::DBG,false,"     --> link NOT found");
+                UiLog().dbg() << "     --> link NOT found";
 #endif
     		}
     	}
diff --git a/Viewer/src/VDir.cpp b/Viewer/src/VDir.cpp
index 15bbfc6..aafd761 100644
--- a/Viewer/src/VDir.cpp
+++ b/Viewer/src/VDir.cpp
@@ -17,13 +17,14 @@
 #include <boost/algorithm/string/predicate.hpp>
 
 
-VDir::VDir(const std::string& path) : path_(path)
+VDir::VDir(const std::string& path) : path_(path), fetchMode_(NoFetchMode)
 {
 }
 
 VDir::VDir(const std::string& path,const std::string& pattern) :
      path_(path),
-     pattern_(pattern)
+     pattern_(pattern),
+     fetchMode_(NoFetchMode)
 {
 	reload();
 }
diff --git a/Viewer/src/VDir.hpp b/Viewer/src/VDir.hpp
index 74c7124..5fa6081 100644
--- a/Viewer/src/VDir.hpp
+++ b/Viewer/src/VDir.hpp
@@ -36,9 +36,10 @@ class VDir
 public:
 	explicit VDir(const std::string& path);
 	VDir(const std::string& path, const std::string& pattern);
-
 	~VDir();
 
+    enum FetchMode {NoFetchMode,LocalFetchMode,ServerFetchMode,LogServerFetchMode};
+
 	const std::string& path() const {return path_;}
     void path(const std::string& path,bool reload=true);
 
@@ -53,11 +54,22 @@ public:
 	void addItem(const std::string&, unsigned int, unsigned int);
 	const std::vector<VDirItem*>& items() const {return items_;}
 
+    void setFetchDate(QDateTime d) {fetchDate_=d;}
+    QDateTime fetchDate() const {return fetchDate_;}
+    void setFetchMode(FetchMode m) {fetchMode_=m;}
+    FetchMode fetchMode() const {return fetchMode_;}
+    void setFetchModeStr(const std::string& fetchMethod) {fetchModeStr_=fetchMethod;}
+    const std::string& fetchModeStr() const {return fetchModeStr_;}
+
 protected:
 	std::string path_;
 	std::string pattern_;
 	std::string where_;
 	std::vector<VDirItem*> items_;
+
+    FetchMode fetchMode_;
+    std::string fetchModeStr_;
+    QDateTime fetchDate_;
 };
 
 class VDir;
diff --git a/Viewer/src/VFile.cpp b/Viewer/src/VFile.cpp
index 209e3ac..a92a8bb 100644
--- a/Viewer/src/VFile.cpp
+++ b/Viewer/src/VFile.cpp
@@ -16,7 +16,7 @@
 
 #include "DirectoryHandler.hpp"
 #include "VFile.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 
 #include <boost/lexical_cast.hpp>
 
@@ -71,13 +71,13 @@ VFile::~VFile()
 {
 	close();
 
-    UserMessage::message(UserMessage::DBG,false,"VFile::~VFile -->");
+    UiLog().dbg() << "VFile::~VFile -->";
     print();
 
 	if(data_)
     {
         delete [] data_;
-        UserMessage::debug("  memory released");
+        UiLog().dbg() << " memory released";
     }
 
     //TODO: add further/better checks
@@ -85,14 +85,14 @@ VFile::~VFile()
        exists() && !path_.empty() && path_ != "/" && path_.size() > 4)
     {
         unlink(path_.c_str());
-        UserMessage::debug("  file deleted from disk");
+        UiLog().dbg() << " file deleted from disk";
     }
     else if(!path_.empty() && exists())
     {
-        UserMessage::debug("  file was kept on disk");
+        UiLog().dbg() << " file was kept on disk";
     }
 
-    UserMessage::debug("<-- VFile::~VFile");
+    UiLog().dbg() << "<-- ~VFile";
 }
 
 bool VFile::exists() const
@@ -147,7 +147,7 @@ void VFile::setStorageMode(StorageMode mode)
 
 bool VFile::write(const std::string& buf,std::string& err)
 {
-    return write(buf.c_str(),buf.size(),err);
+	return write(buf.c_str(),buf.size(),err);
 }
 
 bool VFile::write(const char *buf,size_t len,std::string& err)
@@ -166,6 +166,7 @@ bool VFile::write(const char *buf,size_t len,std::string& err)
 		{
 			memcpy(data_+dataSize_,buf,len);
 			dataSize_+=len;
+			data_[dataSize_] = '\0'; //terminate the string
 			return true;
 		}
 		else
@@ -193,6 +194,7 @@ bool VFile::write(const char *buf,size_t len,std::string& err)
 		    fclose(fp_);
 		    return false;
 		}
+		fflush(fp_);
 	}
 
 	return true;
@@ -260,6 +262,6 @@ void VFile::print()
         str+="disk path: " + path_;
     }
 
-    UserMessage::message(UserMessage::DBG,false,str);
+    UiLog().dbg() << str;
 }
 
diff --git a/Viewer/src/VFile.hpp b/Viewer/src/VFile.hpp
index c510b06..9fcd497 100644
--- a/Viewer/src/VFile.hpp
+++ b/Viewer/src/VFile.hpp
@@ -56,7 +56,7 @@ public:
     void addToLog(const std::string& s) {log_.push_back(s);}
     const std::vector<std::string>& log() const {return log_;}
 
-	bool write(const char *buf,size_t len,std::string& err);
+    bool write(const char *buf,size_t len,std::string& err);
     bool write(const std::string& buf,std::string& err);
 
     void close();
diff --git a/Viewer/src/VFilter.cpp b/Viewer/src/VFilter.cpp
index be5c17a..228d3ad 100644
--- a/Viewer/src/VFilter.cpp
+++ b/Viewer/src/VFilter.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,8 +11,9 @@
 
 #include "NodeQuery.hpp"
 #include "NodeQueryEngine.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VNState.hpp"
+#include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "VIcon.hpp"
 #include "VNode.hpp"
@@ -46,6 +47,8 @@ void VParamSet::init(const std::vector<VParam*>& items)
 	{
 		all_.insert((*it));
 	}
+
+    current_=all_;
 }
 
 bool VParamSet::isSet(VParam* p) const
@@ -117,10 +120,17 @@ void VParamSet::writeSettings(VSettings *vs)
 {
 	std::vector<std::string> array;
 
-	for(std::set<VParam*>::const_iterator it=current_.begin(); it != current_.end(); ++it)
-	{
-		array.push_back((*it)->strName());
-	}
+    if(isComplete())
+    {
+        array.push_back("_ALL_");
+    }
+    else
+    {
+        for(std::set<VParam*>::const_iterator it=current_.begin(); it != current_.end(); ++it)
+        {
+            array.push_back((*it)->strName());
+        }
+    }
 
 	vs->put(settingsId_,array);
 }
@@ -130,15 +140,37 @@ void VParamSet::readSettings(VSettings* vs)
 	current_.clear();
 
 	std::vector<std::string> array;
-	vs->get(settingsId_,array);
+
+    //Try to read the old version (aka V0) of the settings
+    //In this case an empty list means all is selected!
+    if(vs->contains(settingsIdV0_))
+    {
+        vs->get(settingsIdV0_,array);
+        if(array.empty())
+        {
+            current_=all_;
+            return;
+        }
+    }
+    //otherwise read the standard version
+    else
+    {
+        vs->get(settingsId_,array);
+    }
 
 	for(std::vector<std::string>::const_iterator it = array.begin(); it != array.end(); ++it)
 	{
 		std::string name=*it;
-		for(std::set<VParam*>::const_iterator itA=all_.begin(); itA != all_.end(); ++itA)
+        if(name == "_ALL_")
+        {
+            current_=all_;
+            return;
+        }
+
+        for(std::set<VParam*>::const_iterator itA=all_.begin(); itA != all_.end(); ++itA)
 		{
 			if((*itA)->strName() == name)
-					current_.insert(*itA);
+                current_.insert(*itA);
 		}
 	}
 }
@@ -151,8 +183,9 @@ void VParamSet::readSettings(VSettings* vs)
 
 NodeStateFilter::NodeStateFilter() : VParamSet()
 {
-	settingsId_="state";
-	std::vector<VParam*> v=VNState::filterItems();
+    settingsId_="states";
+    settingsIdV0_="state";
+    std::vector<VParam*> v=VNState::filterItems();
 	init(v);
 }
 
@@ -165,8 +198,9 @@ NodeStateFilter::NodeStateFilter() : VParamSet()
 
 AttributeFilter::AttributeFilter() : VParamSet()
 {
-	settingsId_="attribute";
-	std::vector<VParam*> v=VAttributeType::filterItems();
+    settingsId_="attributes";
+    settingsIdV0_="attribute";
+    std::vector<VParam*> v=VAttributeType::filterItems();
 	init(v);
 
 	/*for(std::set<VParam*>::const_iterator it=all_.begin(); it != all_.end(); ++it)
@@ -176,6 +210,31 @@ AttributeFilter::AttributeFilter() : VParamSet()
 	}*/
 }
 
+bool AttributeFilter::matchForceShowAttr(const VNode *n,VAttributeType* t) const
+{
+    if(forceShowAttr_)
+    {
+        if(VAttribute *a=forceShowAttr_->attribute())
+            return (a->parent() == n && a->type() == t);
+    }
+    return false;
+}
+
+void AttributeFilter::setForceShowAttr(const VAttribute* a)
+{
+    forceShowAttr_=VInfoAttribute::create(a->clone());
+}
+
+VAttribute* AttributeFilter::forceShowAttr() const
+{
+    return (forceShowAttr_)?(forceShowAttr_->attribute()):0;
+}
+
+void AttributeFilter::clearForceShowAttr()
+{
+    forceShowAttr_.reset();
+}
+
 //==============================================
 //
 // IconFilter
@@ -184,12 +243,53 @@ AttributeFilter::AttributeFilter() : VParamSet()
 
 IconFilter::IconFilter() : VParamSet()
 {
-	settingsId_="icon";
+    settingsId_="icons";
+    settingsIdV0_="icon";
 	std::vector<VParam*> v=VIcon::filterItems();
 	init(v);
 	current_=all_;
 }
 
+void IconFilter::readSettings(VSettings* vs)
+{
+    VParamSet::readSettings(vs);
+
+    //If the filter list is not complete we need to be sure that a newly added icon type
+    //is automatically enabled in the filter. This is based on the contents of the lastNames icon
+    //file. This file is updated on exit and stores the full list of icon names (existing at exit).
+    //So we can figure out if a new icon type were introduced since the last startup and we can
+    //guarantee that is is always enabled for the first time.
+    if(!isComplete())
+    {
+        const std::vector<std::string>& lastNames=VIcon::lastNames();
+
+        //The lastNames are not found. This must be the first startup after lastNames concept were introduced
+        //or it is a fresh startup after cleaning the config (or the very first one). We enable all the icons.
+        //It could be only a one-time problem for users who already set theit icon filter.
+        if(lastNames.empty())
+        {
+            current_=all_;
+        }
+        else
+        {
+            //Check which icons are not in lastNames
+            for(std::set<VParam*>::const_iterator itA=all_.begin(); itA != all_.end(); ++itA)
+            {
+                //The item is not in lastNames so it must be a newly added icon type. We add it to the filter list
+                if(std::find(lastNames.begin(),lastNames.end(),(*itA)->strName()) == lastNames.end())
+                {
+                    current_.insert(*itA);
+                }
+            }
+        }
+    }
+}
+
+//==============================================
+//
+// NodeFilter
+//
+//==============================================
 
 NodeFilterDef::NodeFilterDef(ServerFilter* serverFilter,Scope scope) :
 	serverFilter_(serverFilter),
@@ -251,7 +351,8 @@ void NodeFilterDef::readSettings(VSettings *vs)
 NodeFilter::NodeFilter(NodeFilterDef* def,ServerHandler* server) :
 	def_(def),
     matchMode_(VectorMatch),
-    server_(server)
+    server_(server),
+    forceShowNode_(0)
 {
     assert(server_);
 
@@ -263,6 +364,21 @@ NodeFilter::~NodeFilter()
 	delete queryEngine_;
 }
 
+void NodeFilter::clear()
+{
+    clearForceShowNode();
+}
+
+void NodeFilter::setForceShowNode(VNode* n)
+{
+    forceShowNode_=n;
+}
+
+void NodeFilter::clearForceShowNode()
+{
+    forceShowNode_=0;
+}
+
 //============================================
 //
 // TreeNodeFilter
@@ -277,31 +393,38 @@ TreeNodeFilter::TreeNodeFilter(NodeFilterDef* def,ServerHandler* server,VTree* t
 
 void TreeNodeFilter::clear()
 {
+    NodeFilter::clear();
     match_=std::vector<VNode*>();
 }
 
 bool TreeNodeFilter::isNull()
 {
-    return def_->nodeState_->isComplete() || def_->nodeState_->isEmpty();
+    //return def_->nodeState_->isComplete() || def_->nodeState_->isEmpty();
+    return def_->nodeState_->isEmpty();
+}
+
+bool TreeNodeFilter::isComplete()
+{
+    return def_->nodeState_->isComplete();
 }
 
 //
 bool TreeNodeFilter::update(const std::vector<VNode*>& topChange,std::vector<VNode*>& topFilterChange)
 {
 #ifdef _UI_VFILTER_DEBUG
-    UserMessage::debug("TreeNodeFilter::update --> " + server_->name());
+    UiLog(server_).dbg() << "TreeNodeFilter::update -->";
 #endif
 
     //nodes_.clear();
 
-    //If all states are visible
+    //If all states are hidden or visible
     if(def_->nodeState_->isComplete() || def_->nodeState_->isEmpty())
     {
         //deallocate the match vector
         match_=std::vector<VNode*>();
         //assert(match_.capacity() == 0);
 #ifdef _UI_VFILTER_DEBUG
-        UserMessage::debug("  no filter is defined!");
+        UiLog(server_).dbg() << " no filter is defined!";
 #endif
         return false;
     }
@@ -365,14 +488,15 @@ bool TreeNodeFilter::update(const std::vector<VNode*>& topChange,std::vector<VNo
                 if(tree_->vnodeAt(i) != match_[i])
                     diffCnt++;
             }
-            UserMessage::debug("  number of differences in filter: " + QString::number(diffCnt).toStdString());
+            UiLog(server_).dbg() << " number of differences in filter: " << diffCnt;
 #endif
 
             //We collect the topmost nodes with changes. It could be different to
             //topChange so we need this step!
             for(size_t i=0; i < topChange.size(); i++)
             {
-                checkState(topChange[i],topFilterChange);
+                assert(topChange[i]->isSuite());
+                collectTopFilterChange(topChange[i],topFilterChange);
             }
 
 #ifdef _UI_VFILTER_DEBUG
@@ -383,9 +507,9 @@ bool TreeNodeFilter::update(const std::vector<VNode*>& topChange,std::vector<VNo
         }
 
 #ifdef _UI_VFILTER_DEBUG
-        UserMessage::debug("  Top level nodes that changed in filter:");
+        UiLog(server_).dbg() << " top level nodes that changed in filter:";
         for(size_t i= 0; i < topFilterChange.size(); i++)
-            UserMessage::debug("     " +  topFilterChange.at(i)->strName());
+            UiLog(server_).dbg() << "  " <<  topFilterChange.at(i)->strName();
 #endif
 
     }
@@ -395,9 +519,13 @@ bool TreeNodeFilter::update(const std::vector<VNode*>& topChange,std::vector<VNo
     }
 
 #ifdef _UI_VFILTER_DEBUG
-    UserMessage::debug("  elapsed time: " + QString::number(timer.elapsed()).toStdString() + " ms");
-    UserMessage::debug("  filter size:" + QString::number(match_.size()).toStdString());
-    UserMessage::debug("  capacity:" + QString::number(match_.capacity()).toStdString());
+    UiLog(server_).dbg() << " elapsed time: " << timer.elapsed() << " ms";
+    UiLog(server_).dbg() << " filter size: " << match_.size();
+    UiLog(server_).dbg() << " capacity:" << match_.capacity();
+#endif
+
+#ifdef _UI_VFILTER_DEBUG
+    UiLog(server_).dbg() << "<-- update";
 #endif
 
     return true;
@@ -410,25 +538,22 @@ bool TreeNodeFilter::update()
     return update(topChange,topFilterChange);
 }
 
-bool TreeNodeFilter::checkState(VNode* n,std::vector<VNode*>& topFilterChange)
+//Finds the top level nodes whose filter status changed
+bool TreeNodeFilter::collectTopFilterChange(VNode* node,std::vector<VNode*>& topFilterChange)
 {
-    int idx=n->index();
+    int idx=node->index();
     if(tree_->vnodeAt(idx) != match_[idx])
     {
-        VNode *pn=n->parent();
-        if(!pn) pn=n;
-
-        if(std::find(topFilterChange.begin(),topFilterChange.end(),pn) == topFilterChange.end())
-            topFilterChange.push_back(pn);
-
+        topFilterChange.push_back(node);
         return true;
     }
-    else
+
+    for(unsigned int i=0; i < node->numOfChildren(); i++)
     {
-         for(unsigned int i=0; i < n->numOfChildren(); i++)
-         {
-            checkState(n->childAt(i),topFilterChange);
-         }
+        if(collectTopFilterChange(node->childAt(i),topFilterChange))
+        {
+            break;
+        }
     }
 
     return false;
@@ -437,8 +562,8 @@ bool TreeNodeFilter::checkState(VNode* n,std::vector<VNode*>& topFilterChange)
 bool TreeNodeFilter::filterState(VNode* node,VParamSet* stateFilter)
 {
     bool ok=false;
-    //Suites always match!!
-    if(node->isSuite() || stateFilter->isSet(VNState::toState(node)))
+
+    if(stateFilter->isSet(VNState::toState(node)) || forceShowNode_ == node)
     {
         ok=true;
     }
@@ -475,14 +600,26 @@ TableNodeFilter::TableNodeFilter(NodeFilterDef* def,ServerHandler* server) :
 {
 }
 
+//When nothing should be shown
 bool TableNodeFilter::isNull()
 {
-	return def_->nodeState_->isComplete();
+    return false;
+    //return def_->nodeState_->isComplete();
+    //return def_->nodeState_->isNull();
+
+}
+
+//When everything should be shown
+bool TableNodeFilter::isComplete()
+{
+    return false;
+    //return def_->nodeState_->isComplete();
 }
 
 void TableNodeFilter::clear()
 {
-	match_.clear();
+    NodeFilter::clear();
+    match_.clear();
     index_.clear();
     matchCount_=0;
 }
@@ -526,7 +663,7 @@ VNode* TableNodeFilter::nodeAt(int index) const
 bool TableNodeFilter::update()
 {
 #ifdef _UI_VFILTER_DEBUG
-    UserMessage::debug("TableNodeFilter::update --> " + server_->name());
+    UiLog(server_).dbg() << "TableNodeFilter::update -->";
 #endif
 
     NodeQuery* q=def_->query_;
@@ -539,7 +676,7 @@ bool TableNodeFilter::update()
         index_=std::vector<int>();
         matchCount_=0;
 #ifdef _UI_VFILTER_DEBUG
-        UserMessage::debug("  no nodes are filtered!");
+        UiLog(server_).dbg() << " no nodes are filtered!";
 #endif
         return true;
     }
@@ -552,7 +689,7 @@ bool TableNodeFilter::update()
         index_=std::vector<int>();
         matchCount_=server_->vRoot()->totalNum();
 #ifdef _UI_VFILTER_DEBUG
-        UserMessage::debug("  all the nodes are filtered!");
+        UiLog(server_).dbg() << " all the nodes are filtered!";
 #endif
         return true;
     }
@@ -586,9 +723,9 @@ bool TableNodeFilter::update()
      }
 
 #ifdef _UI_VFILTER_DEBUG
-    UserMessage::debug("  elapsed time: " + QString::number(timer.elapsed()).toStdString() + " ms");
-    UserMessage::debug("  filter size:" + QString::number(match_.size()).toStdString());
-    UserMessage::debug("  capacity:" + QString::number(match_.capacity()).toStdString());
+    UiLog(server_).dbg() << " elapsed time: " + timer.elapsed() << " ms";
+    UiLog(server_).dbg() << " filter size: " + match_.size();
+    UiLog(server_).dbg() << " capacity: " + match_.capacity();
 #endif
 
     return true;
diff --git a/Viewer/src/VFilter.hpp b/Viewer/src/VFilter.hpp
index e99545b..49625c9 100644
--- a/Viewer/src/VFilter.hpp
+++ b/Viewer/src/VFilter.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -16,6 +16,7 @@
 #include <QObject>
 #include <QStringList>
 
+#include "VInfo.hpp"
 #include "VParam.hpp"
 
 #include "Node.hpp"
@@ -24,6 +25,9 @@ class NodeQuery;
 class NodeFilterEngine;
 class ServerFilter;
 class ServerHandler;
+class VAttribute;
+class VAttributeType;
+class VInfo;
 class VNode;
 class VSettings;
 class VTree;
@@ -36,7 +40,7 @@ Q_OBJECT
 
 public:
 	VParamSet();
-	virtual ~VParamSet() {};
+    virtual ~VParamSet() {}
 
 	const std::set<VParam*>& current() const {return current_;}
 	void setCurrent(const std::set<VParam*>&);
@@ -51,7 +55,7 @@ public:
 	bool isSet(VParam*) const;
 
 	void writeSettings(VSettings* vs);
-	void readSettings(VSettings* vs);
+    void virtual readSettings(VSettings* vs);
 
 Q_SIGNALS:
 	void changed();
@@ -61,7 +65,8 @@ protected:
 
 	std::set<VParam*> all_;
 	std::set<VParam*> current_;
-	std::string settingsId_;
+    std::string settingsId_;
+    std::string settingsIdV0_;
 };
 
 class NodeStateFilter : public VParamSet
@@ -74,12 +79,20 @@ class AttributeFilter : public VParamSet
 {
 public:
 	AttributeFilter();
+    bool matchForceShowAttr(const VNode*,VAttributeType*) const;
+    void setForceShowAttr(const VAttribute* a);
+    void clearForceShowAttr();
+    VAttribute* forceShowAttr() const;
+
+private:
+    VInfo_ptr forceShowAttr_;
 };
 
 class IconFilter : public VParamSet
 {
 public:
-	IconFilter();
+    IconFilter();
+    void readSettings(VSettings* vs);
 };
 
 
@@ -135,11 +148,16 @@ public:
     NodeFilter(NodeFilterDef* def,ServerHandler*);
 	virtual ~NodeFilter();
 
-    virtual void clear()=0;
+    virtual void clear();
     virtual bool isNull()=0;
+    virtual bool isComplete()=0;
     virtual int  matchCount() const = 0;
     virtual bool update()=0;
 
+    VNode* forceShowNode() const {return forceShowNode_;}
+    void setForceShowNode(VNode*);
+    void clearForceShowNode();
+
 protected:
     NodeFilterDef* def_;
     NodeFilterEngine* queryEngine_;
@@ -147,6 +165,7 @@ protected:
     MatchMode matchMode_;
     std::vector<VNode*> match_;
     ServerHandler * server_;
+    VNode* forceShowNode_;
 };
 
 class TreeNodeFilter : public NodeFilter
@@ -156,6 +175,7 @@ public:
 
     void clear();
     bool isNull();
+    bool isComplete();
     int  matchCount() const {return 0;}
     bool update();
     bool update(const std::vector<VNode*>& topChange,
@@ -163,7 +183,7 @@ public:
 
 private:
 	bool filterState(VNode* node,VParamSet* stateFilter);
-    bool checkState(VNode* n,std::vector<VNode*>& topFilterChange);
+    bool collectTopFilterChange(VNode* n,std::vector<VNode*>& topFilterChange);
 
     VTree* tree_;
 };
@@ -175,6 +195,7 @@ public:
 
 	void clear();
     bool isNull();
+    bool isComplete();
     int  matchCount() const {return matchCount_;}
     bool update();
     int indexOf(const VNode*) const;
diff --git a/Viewer/src/VIcon.cpp b/Viewer/src/VIcon.cpp
index 10287e7..e7bc6f5 100644
--- a/Viewer/src/VIcon.cpp
+++ b/Viewer/src/VIcon.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -20,17 +20,21 @@
 #include <unistd.h>
 
 #include "ExprAst.hpp"
+#include "Submittable.hpp"
 
+#include "DirectoryHandler.hpp"
 #include "IconProvider.hpp"
-#include "Submittable.hpp"
 #include "UserMessage.hpp"
 #include "VConfigLoader.hpp"
 #include "VFilter.hpp"
 #include "VNode.hpp"
 #include "VProperty.hpp"
+#include "VConfig.hpp"
+#include "VSettings.hpp"
 
 std::map<std::string,VIcon*> VIcon::items_;
 std::vector<VIcon*> VIcon::itemsVec_;
+std::vector<std::string> VIcon::lastNames_;
 
 //==========================================================
 //
@@ -43,66 +47,80 @@ std::vector<VIcon*> VIcon::itemsVec_;
 class VWaitIcon : public VIcon
 {
 public:
-	explicit VWaitIcon(const std::string& name) : VIcon(name) {};
+    explicit VWaitIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VRerunIcon : public VIcon
 {
 public:
-	explicit VRerunIcon(const std::string& name) : VIcon(name) {};
+    explicit VRerunIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VNodeLogIcon : public VIcon
 {
 public:
-	explicit VNodeLogIcon(const std::string& name) : VIcon(name) {};
+    explicit VNodeLogIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VCompleteIcon : public VIcon
 {
 public:
-	explicit VCompleteIcon(const std::string& name) : VIcon(name) {};
+    explicit VCompleteIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VTimeIcon : public VIcon
 {
 public:
-	explicit VTimeIcon(const std::string& name) : VIcon(name) {};
+    explicit VTimeIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VDateIcon : public VIcon
 {
 public:
-	explicit VDateIcon(const std::string& name) : VIcon(name) {};
+    explicit VDateIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VZombieIcon : public VIcon
 {
 public:
-	explicit VZombieIcon(const std::string& name) : VIcon(name) {};
+    explicit VZombieIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VLateIcon : public VIcon
 {
 public:
-	explicit VLateIcon(const std::string& name) : VIcon(name) {};
+    explicit VLateIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
 class VSlowIcon : public VIcon
 {
 public:
-	explicit VSlowIcon(const std::string& name) : VIcon(name) {};
+    explicit VSlowIcon(const std::string& name) : VIcon(name) {}
 	bool show(VNode*);
 };
 
+class VKilledIcon : public VIcon
+{
+public:
+    explicit VKilledIcon(const std::string& name) : VIcon(name) {}
+    bool show(VNode*);
+};
+
+class VMigratedIcon : public VIcon
+{
+public:
+    explicit VMigratedIcon(const std::string& name) : VIcon(name) {}
+    bool show(VNode*);
+};
+
 //==========================================================
 //
 // Create VIcon instances
@@ -118,7 +136,9 @@ static VTimeIcon timeIcon("time");
 static VDateIcon dateIcon("date");
 static VWaitIcon waitIcon("wait");
 static VZombieIcon zombieIcon("zombie");
+static VKilledIcon killedIcon("killed");
 static VSlowIcon slowIcon("slow");
+static VMigratedIcon migratedIcon("migrated");
 
 //==========================================================
 //
@@ -252,6 +272,34 @@ QString VIcon::shortDescription() const
 
 	return v;
 }
+void VIcon::names(std::vector<std::string>& v)
+{
+    for(std::map<std::string,VIcon*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+        v.push_back(it->first);
+}
+
+void VIcon::saveLastNames()
+{
+    lastNames_.clear();
+    for(std::map<std::string,VIcon*>::const_iterator it=items_.begin(); it != items_.end(); ++it)
+        lastNames_.push_back(it->first);
+
+    std::string iconFile = DirectoryHandler::concatenate(DirectoryHandler::configDir(), "last_icons.txt");
+    VSettings vs(iconFile);
+    vs.clear();
+    vs.put("icons",lastNames_);
+    vs.write();
+}
+
+void VIcon::initLastNames()
+{
+    //It has to be called only once
+    assert(lastNames_.empty());
+    std::string iconFile = DirectoryHandler::concatenate(DirectoryHandler::configDir(), "last_icons.txt");
+    VSettings vs(iconFile);
+    if(vs.read(false))
+        vs.get("icons",lastNames_);
+}
 
 void VIcon::load(VProperty* group)
 {
@@ -420,3 +468,29 @@ bool VSlowIcon::show(VNode *n)
 
 	return n->isFlagSet(ecf::Flag::LATE);
 }
+
+//==========================================================
+// Killed
+//==========================================================
+
+//Node only?
+bool VKilledIcon::show(VNode *n)
+{
+    if(!n || n->isServer())
+        return false;
+
+    return n->isFlagSet(ecf::Flag::KILLED);
+}
+
+//==========================================================
+// Migrated
+//==========================================================
+
+bool VMigratedIcon::show(VNode *n)
+{
+    if(n && (n->isSuite() || n->isFamily()))
+    {
+        return n->isFlagSet(ecf::Flag::MIGRATED);
+    }
+    return false;
+}
diff --git a/Viewer/src/VIcon.hpp b/Viewer/src/VIcon.hpp
index 15793c7..d1f31ca 100644
--- a/Viewer/src/VIcon.hpp
+++ b/Viewer/src/VIcon.hpp
@@ -35,20 +35,26 @@ public:
 	static QVariantList pixmapList(VNode *vnode,VParamSet *filter);
 	static QString toolTip(VNode *vnode,VParamSet *filter);
 	static VIcon* find(const std::string& name);
+    static void names(std::vector<std::string>&);
+    static const std::vector<std::string>& lastNames() {return lastNames_;}
+    static void saveLastNames();
+    static void initLastNames();
+
+    QPixmap pixmap(int size);
 
 	//Called from VConfigLoader
 	static void load(VProperty* group);
 
 protected:
 	void initPixmap();
-	QPixmap pixmap(int size);
 	virtual bool show(VNode*)=0;
 	QString shortDescription() const;
 
 	int pixId_;
 
 	static std::map<std::string,VIcon*> items_;
-	static std::vector<VIcon*> itemsVec_;
+    static std::vector<VIcon*> itemsVec_;
+    static std::vector<std::string> lastNames_;
 };
 
 #endif
diff --git a/Viewer/src/VInfo.cpp b/Viewer/src/VInfo.cpp
index c50070d..b8036be 100644
--- a/Viewer/src/VInfo.cpp
+++ b/Viewer/src/VInfo.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,71 +11,27 @@
 #include "VInfo.hpp"
 
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VAttribute.hpp"
 #include "VAttributeType.hpp"
+#include "VItemPathParser.hpp"
 #include "VNode.hpp"
-//#include "VNState.hpp"
-//#include "VSState.hpp"
 
 #include <boost/lexical_cast.hpp>
 
-#if 0
-
-static std::map<std::string,VInfoAttributeFactory*>* makers = 0;
-
 //#define _UI_VINFO_DEBUG
 
 //========================================
 //
-// VInfoAttributeFactory
-//
-//========================================
-
-
-VInfoAttributeFactory::VInfoAttributeFactory(const std::string& name)
-{
-	if(makers == 0)
-		makers = new std::map<std::string,VInfoAttributeFactory*>;
-
-	// Put in reverse order...
-	(*makers)[name] = this;
-}
-
-VInfoAttributeFactory::~VInfoAttributeFactory()
-{
-	// Not called
-}
-
-VInfoAttribute* VInfoAttributeFactory::create(VAttributeType* att,int attIndex,VNode* node,ServerHandler* server)
-{
-	std::string name=att->name().toStdString();
-
-	std::map<std::string,VInfoAttributeFactory*>::iterator j = makers->find(name);
-	if(j != makers->end())
-		return (*j).second->make(att,attIndex,node,server);
-
-	//Default
-	//return  new MvQTextLine(e,p);
-	//return new MvQLineEditItem(e,p) ;
-	return 0;
-}
-
-#endif
-
-//========================================
-//
 // VInfo
 //
 //========================================
 
-VInfo::VInfo(ServerHandler* server,VNode* node) :
+VInfo::VInfo(ServerHandler* server,VNode* node,VAttribute* attr) :
 	server_(server),
-	node_(node)
-{
-	if(node)
-		nodePath_=node->absNodePath();
-
+    node_(node),
+    attr_(attr)
+{   
 	if(server_)
 		server_->addServerObserver(this);
 }
@@ -83,7 +39,7 @@ VInfo::VInfo(ServerHandler* server,VNode* node) :
 VInfo::~VInfo()
 {
 #ifdef _UI_VINFO_DEBUG
-    UserMessage::debug("VInfo::~VInfo() -->  \n" + boost::lexical_cast<std::string>(this));
+    UiLog().dbg() << "VInfo::~VInfo() --> " << this;
 #endif
     if(server_)
 		server_->removeServerObserver(this);
@@ -92,16 +48,18 @@ VInfo::~VInfo()
 		(*it)->notifyDelete(this);
 
 #ifdef _UI_VINFO_DEBUG
-    UserMessage::debug("<-- VInfo::~VInfo()");
+    UiLog().dbg() << "<-- ~VInfo()";
 #endif
 }
 
-void VInfo::notifyServerDelete(ServerHandler* server)
+void VInfo::notifyServerDelete(ServerHandler* /*server*/)
 {
 	//This function is called from the server destructor. We do not remove this object from the ServerObservers
 
-	server_=NULL;
-	node_=NULL;
+    server_=0;
+    node_=0;
+    if(attr_) delete attr_;
+    attr_=0;
 
 	dataLost();
 }
@@ -119,17 +77,24 @@ void VInfo::dataLost()
 }
 
 void VInfo::notifyBeginServerClear(ServerHandler* server)
-{
-    node_=NULL;
+{    
+    assert(server_==server);
+    node_=0;
+    if(attr_) delete attr_;
+    attr_=0;
 }
 
 void VInfo::notifyEndServerClear(ServerHandler* server)
 {
-    node_=NULL;
+    assert(server_==server);
+    node_=0;
+    if(attr_) delete attr_;
+    attr_=0;
 }
 
 void VInfo::notifyEndServerScan(ServerHandler* server)
 {
+    assert(server_==server);
     regainData();
 }
 
@@ -147,17 +112,47 @@ void VInfo::regainData()
     if(isServer())
     {
         node_=server_->vRoot();
+        return;
     }
-    else
-    {
-        node_=server_->vRoot()->find(nodePath_);
+    else if(isNode())
+    {        
+        VItemPathParser p(storedPath_);
+        if(p.itemType() == VItemPathParser::NodeType)
+        {
+            node_=server_->vRoot()->find(p.node());
+            if(node_)
+                return;
+        }
         if(!node_)
         {
             dataLost();
+            return;
+        }
+    }
+    else if(isAttribute())
+    {
+         VItemPathParser p(storedPath_);
+         if(p.itemType() == VItemPathParser::AttributeType)
+         {
+            node_=server_->vRoot()->find(p.node());
+            if(node_)
+            {
+                attr_=VAttribute::make(node_,p.type(),p.attribute());
+            }
+            if(!node_ || !attr_)
+            {
+                dataLost();
+            }
         }
     }
 }
 
+std::string VInfo::storedNodePath() const
+{
+     VItemPathParser p(storedPath_);
+     return p.node();
+}
+
 void VInfo::addObserver(VInfoObserver* o)
 {
 	std::vector<VInfoObserver*>::iterator it=std::find(observers_.begin(),observers_.end(),o);
@@ -175,16 +170,16 @@ void VInfo::removeObserver(VInfoObserver* o)
 bool VInfo::operator ==(const VInfo& other)
 {
     if(server_ == other.server_ && node_ == other.node_ &&
-            nodePath_ == other.nodePath_)
+            storedPath_ == other.storedPath_)
     {
-        if((!attribute() && other.attribute()) ||
-           (attribute() && !other.attribute()))
+        if((!attr_ && other.attr_) ||
+           (attr_ && !attr_))
             return false;
 
-        else if(attribute() && other.attribute())
+        else if(attr_ && other.attr_)
         {
-            return (attribute()->type() == other.attribute()->type() &&
-                    attribute()->data() == other.attribute()->data());
+            return (attr_->type() == other.attr_->type() &&
+                    attr_->data() == other.attr_->data());
         }
         else
             return true;
@@ -211,6 +206,37 @@ VInfo_ptr VInfo::createParent(VInfo_ptr info)
     return VInfo_ptr();
 }
 
+VInfo_ptr VInfo::createFromPath(ServerHandler* s,const std::string& path)
+{
+    if(!s || path.empty())
+        return VInfo_ptr();
+
+    VItemPathParser p(path);
+
+    if(p.itemType() ==  VItemPathParser::ServerType)
+    {
+        return VInfoServer::create(s);
+    }
+    else if(p.itemType() ==  VItemPathParser::NodeType)
+    {
+        VNode* n=s->vRoot()->find(p.node());
+        return VInfoNode::create(n);
+
+    }
+    else if(p.itemType() ==  VItemPathParser::AttributeType)
+    {
+        if(VNode* n=s->vRoot()->find(p.node()))
+        {
+            if(VAttribute* a=VAttribute::make(n,p.type(),p.attribute()))
+            {
+                return VInfoAttribute::create(a);
+            }           
+        }
+
+    }
+
+    return VInfo_ptr();
+}
 
 //=========================================
 //
@@ -223,7 +249,7 @@ VInfoServer::VInfoServer(ServerHandler *server) : VInfo(server,NULL)
 	if(server_)
 	{
 		node_=server_->vRoot();
-		//server_->addServerObserver(this);
+        storedPath_="";
 	}
 }
 
@@ -232,6 +258,11 @@ VInfo_ptr VInfoServer::create(ServerHandler *server)
 	return VInfo_ptr(new VInfoServer(server));
 }
 
+bool VInfoServer::hasData() const
+{
+    return server_ != 0;
+}
+
 void VInfoServer::accept(VInfoVisitor* v)
 {
 	v->visit(this);
@@ -239,10 +270,7 @@ void VInfoServer::accept(VInfoVisitor* v)
 
 std::string VInfoServer::name()
 {
-	if(server_)
-		return server_->name();
-
-	return std::string();
+    return (server_)?(server_->name()):(std::string());
 }
 
 std::string VInfoServer::path()
@@ -250,6 +278,11 @@ std::string VInfoServer::path()
     return name() + "://";
 }
 
+VItem* VInfoServer::item() const
+{
+    return node_;
+}
+
 //=========================================
 //
 // VInfoNode
@@ -259,8 +292,8 @@ std::string VInfoServer::path()
 
 VInfoNode::VInfoNode(ServerHandler* server,VNode* node) : VInfo(server,node)
 {
-	//if(server_)
-	//	server_->addServerObserver(this);
+    if(node_)
+        storedPath_=VItemPathParser::encode(node_->absNodePath(),"node");
 }
 
 VInfo_ptr VInfoNode::create(VNode *node)
@@ -273,6 +306,11 @@ VInfo_ptr VInfoNode::create(VNode *node)
 	return VInfo_ptr(new VInfoNode(server,node));
 }
 
+bool VInfoNode::hasData() const
+{
+    return server_ != 0 && node_ != 0;
+}
+
 void VInfoNode::accept(VInfoVisitor* v)
 {
 	v->visit(this);
@@ -298,6 +336,27 @@ std::string VInfoNode::path()
     return p;
 }
 
+std::string VInfoNode::serverAlias()
+{
+    std::string p;
+    if(server_)
+       p = server_->name();
+    return p;
+}
+
+std::string VInfoNode::relativePath()
+{
+    std::string p;
+    if(node_ && node_->node())
+        p = node_->absNodePath();
+    return p;
+}
+
+VItem* VInfoNode::item() const
+{
+    return node_;
+}
+
 //=========================================
 //
 // VInfoAttribute
@@ -306,10 +365,10 @@ std::string VInfoNode::path()
 
 
 VInfoAttribute::VInfoAttribute(ServerHandler* server,VNode* node,VAttribute* attr) :
-		VInfo(server,node),
-        attr_(attr)
+        VInfo(server,node,attr)
 {
-
+    if(attr_)
+        storedPath_=VItemPathParser::encode(attr_->fullPath(),attr_->typeName());
 }
 
 VInfoAttribute::~VInfoAttribute()
@@ -318,19 +377,23 @@ VInfoAttribute::~VInfoAttribute()
         delete attr_;
 }
 
+bool VInfoAttribute::hasData() const
+{
+    return server_ != 0 && node_ != 0 && attr_ != 0;
+}
+
 void VInfoAttribute::accept(VInfoVisitor* v)
 {
 	v->visit(this);
 }
 
-VInfo_ptr VInfoAttribute::create(VNode* node,int attIndex)
+VInfo_ptr VInfoAttribute::create(VAttribute* att)
 {
     ServerHandler* server=NULL;
-    VAttribute* att=NULL;
+    VNode* node=att->parent();
     if(node)
     {
         server=node->server();
-        att=new VAttribute(node,attIndex);
     }
 
     return VInfo_ptr(new VInfoAttribute(server,node,att));
@@ -341,9 +404,8 @@ std::string VInfoAttribute::path()
     std::string p;
     if(server_)
        p=server_->name();
-
-    if(node_ && node_->node())
-        p+=":/" + node_->absNodePath();
+    if(attr_)
+        p+=attr_->fullPath();
 
     return p;
 }
@@ -353,33 +415,11 @@ std::string VInfoAttribute::name()
     return (attr_)?attr_->strName():std::string();
 }
 
-
-/*
-VInfoLimit::VInfoLimit(VAttribute* att,int attIndex,VNode* node,ServerHandler *server) :
-		VInfoAttribute(att,attIndex,node,server)
+VItem* VInfoAttribute::item() const
 {
-
+    return attr_;
 }
 
-static VInfoAttributeMaker<VInfoLimit> maker1("limit");
-*/
-
-
-/*static VMeterAttribute meterAttr("meter");
-static VEventAttribute eventAttr("event");
-static VRepeatAttribute repeatAttr("repeat");
-static VTriggerAttribute triggerAttr("trigger");
-static VLabelAttribute labelAttr("label");
-static VTimeAttribute timeAttr("time");
-static VDateAttribute dateAttr("date");
-static VLimitAttribute limitAttr("limit");
-static VLimiterAttribute limiterAttr("limiter");
-static VLateAttribute lateAttr("late");
-static VVarAttribute varAttr("var");
-static VGenvarAttribute genvarAttr("genvar");*/
-
-
-
 
 
 
diff --git a/Viewer/src/VInfo.hpp b/Viewer/src/VInfo.hpp
index 8f8ab82..f8cc705 100644
--- a/Viewer/src/VInfo.hpp
+++ b/Viewer/src/VInfo.hpp
@@ -24,6 +24,7 @@
 class ServerHandler;
 class VAttribute;
 class VNode;
+class VItem;
 
 class VInfoObserver;
 class VInfoVisitor;
@@ -50,14 +51,18 @@ public:
 	virtual bool isNode()  {return false;}
     virtual bool isAttribute()  {return false;}
 	virtual bool isEmpty()  {return true;}
+    virtual bool hasData() const=0;
 
     ServerHandler* server() const {return server_;}
     VNode* node() const {return node_;}
-    virtual VAttribute* attribute() const {return NULL;}
+    VAttribute* attribute() const {return attr_;}
+    virtual VItem* item() const=0;
 
 	virtual std::string name()=0;
     virtual std::string path()=0;
-    const std::string& storedNodePath() const {return nodePath_;}
+    virtual std::string serverAlias() {return "";}
+    virtual std::string relativePath() {return "";}
+    std::string storedNodePath() const;
 
 	virtual void accept(VInfoVisitor*)=0;
 
@@ -79,25 +84,29 @@ public:
     bool operator ==(const VInfo&);
 
     static VInfo_ptr createParent(VInfo_ptr);
+    static VInfo_ptr createFromPath(ServerHandler*,const std::string&);
 
 protected:
-	VInfo(ServerHandler* server,VNode* node);
+    VInfo(ServerHandler* server,VNode* node,VAttribute* attr=0);
 	void dataLost();
 
 	mutable ServerHandler* server_;
-	mutable std::string nodePath_;
-	mutable VNode* node_;
+    mutable VNode* node_;
+    mutable VAttribute* attr_;
+    mutable std::string storedPath_;
 
 	std::vector<VInfoObserver*> observers_;
 };
 
-
 // Implements the info object for server selections
 class VInfoServer : public VInfo, public boost::enable_shared_from_this<VInfo>
 {
 public:
 	bool isServer() {return true;}
     bool isEmpty() {return false;}
+    bool hasData() const;
+    VItem* item() const;
+
     void accept(VInfoVisitor*);   
     std::string name();
     std::string path();
@@ -114,10 +123,15 @@ class VInfoNode: public VInfo, public boost::enable_shared_from_this<VInfo>
 public:
 	bool isNode() {return true;}
 	bool isEmpty() {return false;}
-	void accept(VInfoVisitor*);
+    bool hasData() const;
+    void accept(VInfoVisitor*);
     std::string path();  
 	std::string name();	
-	static VInfo_ptr create(VNode*);
+	std::string serverAlias();
+	std::string relativePath();
+    VItem* item() const;
+
+    static VInfo_ptr create(VNode*);
 
 protected:
 	VInfoNode(ServerHandler*,VNode*);
@@ -132,56 +146,22 @@ public:
     VAttribute* attribute() const {return attr_;}
     bool isAttribute() {return true;}
 	bool isEmpty() {return false;}
-	void accept(VInfoVisitor*);   
+    bool hasData() const;
+    void accept(VInfoVisitor*);
     std::string name();
     std::string path();
+    VItem* item() const;
 
-    static VInfo_ptr create(VNode*,int);
+    static VInfo_ptr create(VAttribute*);
 
 protected:
     VInfoAttribute(ServerHandler*,VNode*,VAttribute*);
-
-    mutable VAttribute* attr_;
-};
-
-//=================================================
-// Factory to make attribute info objects
-//=================================================
-
-#if 0
-
-class VInfoAttributeFactory
-{
-public:
-	explicit VInfoAttributeFactory(const std::string&);
-	virtual ~VInfoAttributeFactory();
-
-    virtual VInfoAttribute* make(VAttributeType*,int,VNode*,ServerHandler* server=0) = 0;
-    static VInfoAttribute* create(VAttributeType* att,int attIndex,VNode* node,ServerHandler* server=0);
-
-private:
-	explicit VInfoAttributeFactory(const VInfoAttributeFactory&);
-	VInfoAttributeFactory& operator=(const VInfoAttributeFactory &);
-
-};
-
-template<class T>
-class  VInfoAttributeMaker : public VInfoAttributeFactory
-{
-    VInfoAttribute* make(VAttributeType* att,int attIndex,VNode* node,ServerHandler* server=0)
-	       { return new T(att,attIndex,node,server); }
-public:
-	 explicit VInfoAttributeMaker(const std::string& name) : VInfoAttributeFactory(name) {}
 };
 
-
-#endif
-
 typedef boost::shared_ptr<VInfoServer>   VInfoServer_ptr;
 typedef boost::shared_ptr<VInfoNode>   VInfoNode_ptr;
 typedef boost::shared_ptr<VInfoAttribute>   VInfoAttribute_ptr;
 
-
 class VInfoVisitor
 {
 public:
@@ -204,68 +184,5 @@ public:
 	virtual void notifyDelete(VInfo*)=0;
 };
 
-/*class VInfoVisitor
-{
-public:
-	VInfoVisitor() {};
-	virtual ~VInfoVisitor() {};
-
-	virtual void visit(boost::shared_ptr<VInfoServer>)=0;
-	virtual void visit(boost::shared_ptr<VInfoNode>)=0;
-	virtual void visit(boost::shared_ptr<VInfoAttribute>)=0;
-};
-*/
-
-
-/*
-#include "ViewNodeInfo.hpp"
-
-#include "ServerHandler.hpp"
-
-ViewNodeInfo::ViewNodeInfo() : node_(NULL),server_(NULL)
-{
-}
-
-ViewNodeInfo::ViewNodeInfo(Node *node,ServerHandler* server) : node_(node), server_(server)
-{
-}
-
-ViewNodeInfo::ViewNodeInfo(ServerHandler* server) : node_(NULL),server_(server)
-{
-
-}
-
-bool ViewNodeInfo::isNode() const
-{
-	return (node_ != NULL);
-}
-
-bool ViewNodeInfo::isServer() const
-{
-	return (node_ == NULL && server_ != NULL);
-}
-
-bool ViewNodeInfo::isEmpty() const
-{
-	return (node_ == NULL && server_ == NULL);
-}
-
-Node* ViewNodeInfo::node() const
-{
-	return node_;
-}
-
-ServerHandler* ViewNodeInfo::server() const
-{
-	if(server_ == NULL && node_)
-	{
-		server_=ServerHandler::find(node_);
-	}
-	return server_;
-}
-*/
-
-
-
 #endif
 
diff --git a/Viewer/src/CustomCommandDialog.cpp b/Viewer/src/VItem.cpp
similarity index 62%
copy from Viewer/src/CustomCommandDialog.cpp
copy to Viewer/src/VItem.cpp
index ebb4572..7619dda 100644
--- a/Viewer/src/CustomCommandDialog.cpp
+++ b/Viewer/src/VItem.cpp
@@ -1,20 +1,28 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
+//
 //============================================================================
 
-#include "CustomCommandDialog.hpp"
+#include "VItem.hpp"
+#include "VNode.hpp"
 
-
-CustomCommandDialog::CustomCommandDialog(QWidget *parent)
+bool VItem::isAncestor(const VItem* n) const
 {
-    setupUi(this);
+    if(n == this)
+        return true;
 
-    // when the user clicks the 'Run' button, we close the dialog with ACCEPT
-    connect(commandDesigner_->runButton(), SIGNAL(clicked()), this, SLOT(accept()));
+    VNode* nd=parent();
+    while(nd)
+    {
+        if(const_cast<VItem*>(n) == nd)
+            return true;
 
+        nd=nd->parent();
+    }
+    return false;
 }
diff --git a/Viewer/src/VItem.hpp b/Viewer/src/VItem.hpp
index adf3f00..eb30dd5 100644
--- a/Viewer/src/VItem.hpp
+++ b/Viewer/src/VItem.hpp
@@ -14,6 +14,7 @@
 #include <cstdlib>
 #include <QString>
 
+
 class ServerHandler;
 class VNode;
 class VServer;
@@ -28,6 +29,7 @@ class VItem
 {
 public:
     VItem(VNode* parent) : parent_(parent) {}
+    virtual ~VItem() {}
 
     VNode* parent() const {return parent_;}
     //virtual ServerHandler* server() const;
@@ -40,14 +42,20 @@ public:
     virtual VAliasNode* isAlias() const {return NULL;}
     virtual VAttribute* isAttribute() const {return NULL;}
 
+    virtual VServer* root() const=0;
     virtual bool isTopLevel() const {return false;}
     virtual std::string strName() const=0;
     virtual QString name() const=0;
+    virtual const std::string& typeName() const=0;
+    virtual std::string fullPath() const=0;
+    virtual bool sameContents(VItem*) const=0;
+    virtual bool isAncestor(const VItem*) const;
 
 protected:
     VNode* parent_;
 };
 
+
 #if 0
 class VItemVisitor
 {
diff --git a/Viewer/src/VItemPathParser.cpp b/Viewer/src/VItemPathParser.cpp
new file mode 100644
index 0000000..80fbed1
--- /dev/null
+++ b/Viewer/src/VItemPathParser.cpp
@@ -0,0 +1,68 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#include "VItemPathParser.hpp"
+
+VItemPathParser::VItemPathParser(const std::string& path) : itemType_(NoType)
+{
+    if(path.empty())
+        return;
+
+    size_t pos;
+    std::string p=path;
+    if(p.find("[") == 0)
+    {
+       pos=p.find("]");
+       if(pos != std::string::npos)
+       {
+           type_=path.substr(1,pos-1);
+           p=path.substr(pos+1);
+       }
+       else
+           return;
+    }
+
+    pos=p.find("://");
+
+    if(pos != std::string::npos)
+    {
+        server_=p.substr(0,pos);
+        p=p.substr(pos+2);
+    }
+
+    if(p.size() == 1 && p.find("/") == 0)
+    {
+        itemType_=ServerType;
+        return;
+    }
+
+    //Here we suppose that the node name cannot contain ":"
+    pos=p.find_first_of(":");
+    if(pos != std::string::npos)
+    {
+        node_=p.substr(0,pos);
+        attribute_=p.substr(pos+1);
+        itemType_=AttributeType;
+    }
+    else
+    {
+        node_=p;
+        itemType_=NodeType;
+    }
+}
+
+std::string VItemPathParser::encode(const std::string& path,const std::string& type)
+{
+    if(type.empty())
+        return path;
+
+    return "[" + type + "]" + path;
+}
+
diff --git a/Viewer/src/VItemPathParser.hpp b/Viewer/src/VItemPathParser.hpp
new file mode 100644
index 0000000..7cf6be3
--- /dev/null
+++ b/Viewer/src/VItemPathParser.hpp
@@ -0,0 +1,41 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================
+
+#ifndef VITEMPATHPARSER_HPP
+#define VITEMPATHPARSER_HPP
+
+#include <string>
+
+class VItemPathParser
+{
+public:
+    VItemPathParser(const std::string& path);
+
+    enum ItemType {ServerType,NodeType,AttributeType,NoType};
+
+    ItemType  itemType() const {return itemType_;}
+    const std::string type() const {return type_;}
+    const std::string server() const {return type_;}
+    const std::string node() const {return node_;}
+    const std::string attribute() const {return attribute_;}
+
+    static std::string encode(const std::string& path,const std::string& type);
+
+protected:
+    ItemType itemType_;
+    std::string type_;
+    std::string server_;
+    std::string node_;
+    std::string attribute_;
+};
+
+
+#endif // VITEMPATHPARSER_HPP
+
diff --git a/Viewer/src/NodeViewBase.cpp b/Viewer/src/VItemTmp.cpp
similarity index 65%
copy from Viewer/src/NodeViewBase.cpp
copy to Viewer/src/VItemTmp.cpp
index b755188..0ed41cf 100644
--- a/Viewer/src/NodeViewBase.cpp
+++ b/Viewer/src/VItemTmp.cpp
@@ -1,15 +1,24 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
 // granted to it by virtue of its status as an intergovernmental organisation
 // nor does it submit to any jurisdiction.
+//
 //============================================================================
 
-#include "NodeViewBase.hpp"
+#include "VItem.hpp"
+#include "VItemTmp.hpp"
+#include "VAttribute.hpp"
 
-NodeViewBase::NodeViewBase(NodeFilterDef* filterDef) : filterDef_(filterDef)
+VItemTmp::~VItemTmp()
 {
+    if(item_ && item_->isAttribute())
+    delete item_;
+}
 
+VAttribute* VItemTmp::attribute() const
+{
+    return (item_)?item_->isAttribute():NULL;
 }
diff --git a/Viewer/src/NodeQueryResultTmp.hpp b/Viewer/src/VItemTmp.hpp
similarity index 54%
copy from Viewer/src/NodeQueryResultTmp.hpp
copy to Viewer/src/VItemTmp.hpp
index 6bb2e00..c6503b7 100644
--- a/Viewer/src/NodeQueryResultTmp.hpp
+++ b/Viewer/src/VItemTmp.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -7,25 +7,32 @@
 // nor does it submit to any jurisdiction.
 //
 //============================================================================
-#ifndef VIEWER_SRC_NODEQUERYRESULTTMP_HPP_
-#define VIEWER_SRC_NODEQUERYRESULTTMP_HPP_
 
-#include <QString>
-#include <QStringList>
+#ifndef VITEMTMP_HPP
+#define VITEMTMP_HPP
+
 #include <boost/shared_ptr.hpp>
 
-class VNode;
+class VAttribute;
+class VItem;
 
-class NodeQueryResultTmp;
-typedef boost::shared_ptr<NodeQueryResultTmp> NodeQueryResultTmp_ptr;
+class VItemTmp;
+typedef boost::shared_ptr<VItemTmp> VItemTmp_ptr;
 
-struct  NodeQueryResultTmp
+class VItemTmp
 {
-	NodeQueryResultTmp() : node_(NULL) {}
-	NodeQueryResultTmp(VNode *node) : node_(node) {}
+public:
+    ~VItemTmp();
+
+    VItem* item() const {return item_;}
+    VAttribute* attribute() const;
+    static VItemTmp_ptr create(VItem* item) {return VItemTmp_ptr(new VItemTmp(item));}
+
+private:
+    VItemTmp(VItem* item) : item_(item) {}
+    VItem* item_;
 
-	VNode* node_;
-	QStringList attr_;
 };
 
-#endif /* VIEWER_SRC_NODEQUERYRESULTTMP_HPP_ */
+#endif // VITEMTMP_HPP
+
diff --git a/Viewer/src/VModelData.cpp b/Viewer/src/VModelData.cpp
index 4428fb6..2d14b81 100644
--- a/Viewer/src/VModelData.cpp
+++ b/Viewer/src/VModelData.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -13,10 +13,12 @@
 #include "NodeQuery.hpp"
 #include "VFilter.hpp"
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "VNode.hpp"
 #include "VTree.hpp"
+#include "UiLog.hpp"
+#include "UIDebug.hpp"
 
 #include <QDebug>
 #include <QMetaMethod>
@@ -110,11 +112,9 @@ void VTreeServer::notifyDefsChanged(ServerHandler* server, const std::vector<ecf
     //TODO: what about node or attr num changes!
 }
 
-void VTreeServer::notifyServerDelete(ServerHandler*)
+void VTreeServer::notifyServerDelete(ServerHandler* s)
 {
-#ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VTreeServer::notifyServerDelete ---> should never be called!!");
-#endif
+    UI_ASSERT(false, "server: " << s->longName());
     Q_ASSERT(0);
 }
 
@@ -123,18 +123,23 @@ void VTreeServer::notifyBeginServerScan(ServerHandler* server,const VServerChang
     //When the server scan begins we must be in inScan mode so that the model should think that
     //this server tree is empty.
     inScan_=true;
-    Q_ASSERT(tree_->numOfChildren() == 0);
+    UI_ASSERT(tree_->numOfChildren() == 0, "num: " << tree_->numOfChildren());
     changeInfo_->clear();
 }
 
 void VTreeServer::notifyEndServerScan(ServerHandler* /*server*/)
 {
+    UI_ASSERT(tree_->numOfChildren() == 0, "num: " << tree_->numOfChildren());
+
     //We still must be in inScan mode so that the model should think
     //that this server tree is empty.
     inScan_=true;
 
+    filter_->clearForceShowNode();
+    attrFilter_->clearForceShowAttr();
+
     //When the server scan ends we need to rebuild the tree.
-    if(filter_->isNull())
+    if(filter_->isComplete())
     {
         tree_->build();
     }
@@ -144,12 +149,13 @@ void VTreeServer::notifyEndServerScan(ServerHandler* /*server*/)
         tree_->build(filter_->match_);
     }
 
+    int num=tree_->attrNum(attrFilter_)+tree_->numOfChildren();
     //Notifies the model of the number of children nodes to be added to the server node.
-    Q_EMIT beginServerScan(this, tree_->attrNum(attrFilter_)+tree_->numOfChildren());
+    Q_EMIT beginServerScan(this, num);
     //We leave the inScan mode. From this moment on the model can see the whole tree in the server.
     inScan_=false;
     //Notifies the model that the scan finished. The model can now relayout its new contents.
-    Q_EMIT endServerScan(this, tree_->attrNum(attrFilter_)+tree_->numOfChildren());
+    Q_EMIT endServerScan(this, num);
 }
 
 void VTreeServer::notifyBeginServerClear(ServerHandler* server)
@@ -158,6 +164,7 @@ void VTreeServer::notifyBeginServerClear(ServerHandler* server)
     changeInfo_->clear();
     tree_->clear();
     filter_->clear();
+    attrFilter_->clearForceShowAttr();
     inScan_=true;
 }
 
@@ -181,91 +188,15 @@ void VTreeServer::notifyServerActivityChanged(ServerHandler* server)
 void VTreeServer::notifyEndServerSync(ServerHandler* server)
 {
 #ifdef _UI_VMODELDATA_DEBUG
-        UserMessage::debug("VTreeServer::notifyEndServerSync --> number of state changes: " + QString::number(changeInfo_->stateChangeSuites().size()).toStdString());
-#endif
-
-    //if there was a state change during the sync
-    if(changeInfo_->stateChangeSuites().size() > 0 && !filter_->isNull())
-	{
-#ifdef _UI_VMODELDATA_DEBUG
-        UserMessage::debug("  Suites changed:");
-        for(size_t i= 0; i < changeInfo_->stateChangeSuites().size(); i++)
-            UserMessage::debug("     " +  changeInfo_->stateChangeSuites().at(i)->strName());
-#endif
-        //Update the filter for the suites with a status change. topFilterChange
-        //will contain the branches where the filter changed. A branch is
-        //defined by the parent of the top level nodes with a filter status change in a given
-        //suite. Suites are always visible (part of the tree) so a branch cannot be a server (root)
-        //but at most a suite.
-        std::vector<VNode*> topFilterChange;
-        filter_->update(changeInfo_->stateChangeSuites(),topFilterChange);
-
-#ifdef _UI_VMODELDATA_DEBUG
-        UserMessage::debug("  Top level nodes that changed in filter:");
-        for(size_t i= 0; i < topFilterChange.size(); i++)
-            UserMessage::debug("     " +  topFilterChange.at(i)->strName());
-#endif
-
-        //A topFilterChange branch cannot be the root (server)
-        for(size_t i=0; i < topFilterChange.size(); i++)
-        {
-            Q_ASSERT(!topFilterChange[i]->isServer());
-        }
-
-        //If something changed in the list of filtered nodes
-        for(size_t i=0; i < topFilterChange.size(); i++)
-        {
-#ifdef _UI_VMODELDATA_DEBUG
-            UserMessage::debug("  Branch: " + topFilterChange[i]->absNodePath());
-#endif
-            //This is the branch where there is a change in the filter
-            VTreeNode* tn=tree_->find(topFilterChange[i]);
-
-            //If the branch is not in tree (not yet filtered) we need to
-            //find it nearest ancestor up in the tree. This must exist because
-            //the suites are always part of the tree.
-            if(!tn)
-            {
-                tn=tree_->findAncestor(topFilterChange[i]);
-                Q_ASSERT(tn);
-                Q_ASSERT(!tn->isRoot());
-            }
-
-#ifdef _UI_VMODELDATA_DEBUG
-            UserMessage::debug("  Branch treeNode: " + tn->vnode()->absNodePath());
+   UiLog(server_).dbg() << "VTreeServer::notifyEndServerSync --> number of state changes: " <<
+                           changeInfo_->stateChangeSuites().size();
 #endif
-            //First, we remove the branch contents
-            if(tn->numOfChildren())
-            {
-                int totalRows=tn->attrNum(attrFilter_) + tn->numOfChildren();
-                Q_EMIT beginFilterUpdateRemove(this,tn,totalRows);
-                tree_->removeChildren(tn);
-                Q_EMIT endFilterUpdateRemove(this,tn,totalRows);
-            }
-
-            //Second, we add the new contents
-            VTreeNode *branch=new VTreeNode(tn->vnode(),0);
-            tree_->buildBranch(filter_->match_,tn,branch);
-            int chNum=branch->numOfChildren();
-
-            Q_EMIT beginFilterUpdateAdd(this,tn,chNum);
-            if(chNum)
-            {
-               tree_->addBranch(tn,branch);
-            }
-            Q_EMIT endFilterUpdateAdd(this,tn,chNum);
-
-            //branch must be empty now
-            Q_ASSERT(branch->numOfChildren() == 0);
-
-            delete branch;
-        }
-    }
 
+    updateFilter(changeInfo_->stateChangeSuites());
     changeInfo_->clear();
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("<-- VTreeServer::notifyEndServerSync");
+    UiLog(server_).dbg() << "<-- notifyEndServerSync";
 #endif
 }
 
@@ -283,6 +214,10 @@ void VTreeServer::notifyBeginNodeChange(const VNode* vnode, const std::vector<ec
 	bool attrNumCh=(std::find(aspect.begin(),aspect.end(),ecf::Aspect::ADD_REMOVE_ATTR) != aspect.end());
 	bool nodeNumCh=(std::find(aspect.begin(),aspect.end(),ecf::Aspect::ADD_REMOVE_NODE) != aspect.end());
 
+#ifdef _UI_VMODELDATA_DEBUG
+    UiLog(server_).dbg() << "VTreeServer::notifyBeginNodeChange -->" << vnode->strName();
+#endif
+
 	//-----------------------------------------------------------------------
 	// The number of attributes changed but the number of nodes is the same!
 	//-----------------------------------------------------------------------
@@ -309,6 +244,16 @@ void VTreeServer::notifyBeginNodeChange(const VNode* vnode, const std::vector<ec
                 node->updateAttrNum(attrFilter_);
                 Q_EMIT endAddRemoveAttributes(this,node,currentNum,cachedNum);
             }
+
+            //This can happen. When we change a trigger expression the change aspect we receive is ADD_REMOVE_ATTR.
+            //In this case we just update all the attributes of the node!
+            else
+            {
+                if(node)
+                {
+                    Q_EMIT attributesChanged(this,node);
+                }
+            }
         }
 	}
 
@@ -344,14 +289,14 @@ void VTreeServer::notifyBeginNodeChange(const VNode* vnode, const std::vector<ec
 			{
                 if(node && node->isAttrInitialised())
                 {
-                        Q_EMIT nodeChanged(this,node);
+                    Q_EMIT nodeChanged(this,node);
                 }
 
                 if(!vnode->isServer())
                     changeInfo_->addStateChange(vnode);
 
 #ifdef _UI_VMODELDATA_DEBUG
-                UserMessage::debug("   node status changed: " + vnode->strName());
+                UiLog(server_).dbg() << " node status changed";
 #endif               
 			}
 
@@ -398,11 +343,11 @@ void VTreeServer::reload()
 
     Q_ASSERT(filter_);
 
-    if(filter_->isNull())
+    filter_->clearForceShowNode();
+    if(filter_->isComplete())
     {
         tree_->build();
     }
-
     else
     {
         filter_->update();
@@ -434,6 +379,310 @@ void VTreeServer::attrFilterChanged()
     Q_EMIT endServerScan(this,num);
 }
 
+
+//This is called when a normal sync (neither reset nor rescan) is finished. We have delayed the update of the
+//filter to this point but now we need to do it.
+void VTreeServer::updateFilter(const std::vector<VNode*>& suitesChanged)
+{
+    //if there was a state change during the sync
+    if(suitesChanged.size() > 0 && !filter_->isNull() && !filter_->isComplete())
+    {
+#ifdef _UI_VMODELDATA_DEBUG
+        UiLog(server_).dbg() << "VTreeServer::updateFilter -->";
+        UiLog(server_).dbg() << " suites changed:";
+        for(size_t i= 0; i < suitesChanged.size(); i++)
+            UiLog(server_).dbg() << "  " << suitesChanged[i]->strName();
+#endif
+        //Update the filter for the suites with a status change. topFilterChange
+        //will contain the branches where the filter changed. A branch is
+        //defined by the top level node with a filter status change in a given
+        //suite. A branch cannot be a server (root) but at most a suite.
+        std::vector<VNode*> topFilterChange;
+        filter_->update(suitesChanged,topFilterChange);
+
+#ifdef _UI_VMODELDATA_DEBUG
+        UiLog(server_).dbg() << " top level nodes that changed in filter:";
+        for(size_t i= 0; i < topFilterChange.size(); i++)
+            UiLog(server_).dbg() << "  " << topFilterChange.at(i)->strName();
+#endif
+
+        //A topFilterChange branch cannot be the root (server)
+        for(size_t i=0; i < topFilterChange.size(); i++)
+        {
+            Q_ASSERT(!topFilterChange[i]->isServer());
+        }
+#ifdef _UI_VMODELDATA_DEBUG
+        UiLog(server_).dbg() << " apply changes to branches";
+#endif
+        //If something changed in the list of filtered nodes
+        for(size_t i=0; i < topFilterChange.size(); i++)
+        {
+#ifdef _UI_VMODELDATA_DEBUG
+            UiLog(server_).dbg() << "  branch: " << topFilterChange[i]->absNodePath();
+#endif
+            //If the filter status of a SUITE has changed
+            if(topFilterChange[i]->isSuite())
+            {
+                VNode *suite=topFilterChange[i];
+                Q_ASSERT(suite);
+
+                //This is the branch where there is a change in the filter
+                VTreeNode* tn=tree_->find(topFilterChange[i]);
+
+                //Remove the suite if it is in the tree
+                if(tn)
+                {
+                    Q_ASSERT(!tn->isRoot());
+
+#ifdef _UI_VMODELDATA_DEBUG
+                    UiLog(server_).dbg() << "  remove suite: " <<  suite->absNodePath();
+#endif
+                    int index=tree_->indexOfTopLevel(tn);
+                    Q_ASSERT(index >=0);
+
+                    Q_EMIT beginFilterUpdateRemoveTop(this,index);
+                    tree_->remove(tn);
+                    Q_EMIT endFilterUpdateRemoveTop(this,index);
+                }
+                //Add the suite if it is NOT in the tree
+                else
+                {
+#ifdef _UI_VMODELDATA_DEBUG
+                    UiLog(server_).dbg() << "  add suite: " << suite->absNodePath();
+#endif
+                    VTreeNode *branch=tree_->makeTopLevelBranch(filter_->match_,suite);
+                    int index=tree_->indexOfTopLevelToInsert(suite);
+                    Q_ASSERT(index >=0);
+
+                    Q_EMIT beginFilterUpdateInsertTop(this,index);
+                    tree_->insertTopLevelBranch(branch,index);
+                    Q_EMIT endFilterUpdateInsertTop(this,index);
+                }
+            }
+
+            //If the top level node that changed is not a suite
+            else
+            {
+                //We need to find the nearest existing parent in the tree
+                VTreeNode* tn=tree_->findAncestor(topFilterChange[i]);
+
+                //This must be at most a suite. It cannot be the root!
+                Q_ASSERT(tn);
+                Q_ASSERT(!tn->isRoot());
+
+#ifdef _UI_VMODELDATA_DEBUG
+                 UiLog(server_).dbg() << "  tree node to update: "  << tn->vnode()->absNodePath();
+#endif
+                //First, we remove the branch contents
+                if(tn->numOfChildren())
+                {
+                    int totalRows=tn->attrNum(attrFilter_) + tn->numOfChildren();
+                    Q_EMIT beginFilterUpdateRemove(this,tn,totalRows);
+                    tree_->removeChildren(tn);
+                    Q_EMIT endFilterUpdateRemove(this,tn,totalRows);
+                }
+
+                //Second, we add the new contents
+                VTreeNode *branch=tree_->makeBranch(filter_->match_,tn);
+                int chNum=branch->numOfChildren();
+
+                Q_EMIT beginFilterUpdateAdd(this,tn,chNum);
+                if(chNum > 0)
+                {
+                    tree_->replaceWithBranch(tn,branch);
+                }
+                Q_EMIT endFilterUpdateAdd(this,tn,chNum);
+
+                //branch must be empty now
+                Q_ASSERT(branch->numOfChildren() == 0);
+                delete branch;
+
+            }
+        }
+    }
+}
+
+//Set the forceShowNode and rerun the filter. The forceShowNode is a node that
+//has to be visible even if it does not match the status filter.
+void VTreeServer::setForceShowNode(const VNode* node)
+{
+    if(filter_->isNull() || tree_->find(node))
+    {
+        clearForceShow(node);
+        return;
+    }
+
+    Q_ASSERT(node);
+
+    //find the suite
+    VNode* s=node->suite();
+    Q_ASSERT(s->isTopLevel());
+    Q_ASSERT(s);
+
+    std::vector<VNode*> sv;
+    sv.push_back(s);
+
+    filter_->setForceShowNode(const_cast<VNode*>(node));
+    updateFilter(sv);
+}
+
+void VTreeServer::setForceShowAttribute(const VAttribute* a)
+{
+    Q_ASSERT(a);
+    VNode* vnode=a->parent();
+    Q_ASSERT(vnode);
+
+    VTreeNode* node=tree_->find(vnode);
+
+    UI_ASSERT(!node || !attrFilter_->isSet(a->type()),
+              "Attr=" << a->name().toStdString() << " type=" << a->typeName());
+
+    //Clear
+    clearForceShow(a);
+
+    //Tell the attribute filter that this attribute must always be visible
+    attrFilter_->setForceShowAttr(a);
+
+    //Tell the tree that this node must always be visible
+    filter_->setForceShowNode(const_cast<VNode*>(vnode));
+
+    //The node is not visible at the moment e.i. not in the tree. We rerun
+    //updatefilter in the nodes's branch. This will add the node to the tree
+    //and will result in displaying the right attributes as well.
+    if(!node)
+    {
+        //find the suite
+        VNode* s=vnode->suite();
+        Q_ASSERT(s->isTopLevel());
+        Q_ASSERT(s);
+
+        std::vector<VNode*> sv;
+        sv.push_back(s);
+
+        updateFilter(sv);
+    }
+    //The attribute is not visible (its type is not filtered)
+    else if(!attrFilter_->isSet(a->type()))
+    {
+        //We only need to handle this case. When the attributes are not yet initialised
+        //the selection in the view will trigger the attribute initialisation. This
+        //will use the filter that we already set to use the attribute (as forceShowAttr).
+        if(node->isAttrInitialised())
+        {
+            //This is the current attribute num using the modified attribute filter
+            int currentNum=vnode->attrNum(attrFilter_);
+
+            //This is the attribute num we store in the tree node
+            //(and display in the tree).
+            int cachedNum=node->attrNum(attrFilter_);
+            Q_ASSERT(cachedNum >= 0);
+            Q_ASSERT(currentNum >= cachedNum);
+
+            Q_EMIT beginAddRemoveAttributes(this,node,currentNum,cachedNum);
+
+            //We update the attribute num in the tree node
+            node->updateAttrNum(attrFilter_);
+
+            //This will trigger rerendering the attributes of the given node
+            //even if currentNum and cachedNum are the same.
+            Q_EMIT endAddRemoveAttributes(this,node,currentNum,cachedNum);
+        }
+    }
+}
+
+void VTreeServer::clearForceShow(const VItem* item)
+{
+    if(!item)
+        return;
+
+    //filter_ is unique for each VTreeServer while attrFilter_ is
+    //shared by the servers!
+    VNode* vnPrev=filter_->forceShowNode();
+    VAttribute* aPrev=attrFilter_->forceShowAttr();
+
+    if(aPrev)
+    {
+        Q_ASSERT(aPrev->parent()->server());
+        //The stored attribute belongs to this server
+        if(aPrev->parent()->server()== server_)
+        {
+            Q_ASSERT(vnPrev);
+            Q_ASSERT(aPrev->parent() == vnPrev);
+        }
+        //Otherwise we pretend it is 0
+        else
+            aPrev=0;
+    }
+
+    if(!vnPrev && !aPrev)
+        return;
+
+    //We need to figure out if item is the same as what we
+    //currently store because in this case there is nothing to do.
+
+    //The server matches
+    if(item->parent()->server() == server_)
+    {
+        //Item is a node and it is the same as we store
+        if(VNode *itn=item->isNode())
+        {
+            if(itn == vnPrev && !aPrev)
+                return;
+        }
+        //Item is an attribute and it is the same as we store
+        if(VAttribute *ita=item->isAttribute())
+        {
+            if(aPrev && aPrev->sameContents(ita))
+            {
+                return;
+            }
+        }
+    }
+
+    //Reload the node status filter
+    filter_->clearForceShowNode();
+
+    VNode* s=vnPrev->suite();
+    Q_ASSERT(s->isTopLevel());
+    Q_ASSERT(s);
+
+    std::vector<VNode*> sv;
+    sv.push_back(s);
+
+    updateFilter(sv);
+
+    //Need to handle the attribute if the tree node is still visible
+    if(aPrev)
+    {
+        attrFilter_->clearForceShowAttr();
+
+        VTreeNode *node=tree_->find(vnPrev);
+        if(node)
+        {
+            Q_ASSERT(node->isAttrInitialised());
+
+            int currentNum=vnPrev->attrNum(attrFilter_);
+
+            //This is the attribute num we store in the tree node
+            //(and display in the tree).
+            int cachedNum=node->attrNum(attrFilter_);
+            Q_ASSERT(cachedNum >= 0);
+
+            Q_ASSERT(currentNum <= cachedNum);
+
+            Q_EMIT beginAddRemoveAttributes(this,node,currentNum,cachedNum);
+
+            //We update the attribute num in the tree node
+            node->updateAttrNum(attrFilter_);
+
+            //This will trigger rerendering the attributes of the given node
+            //even if currentNum and cachedNum are the same.
+            Q_EMIT endAddRemoveAttributes(this,node,currentNum,cachedNum);
+
+        }
+    }
+}
+
 //==========================================
 //
 // VTableServer
@@ -482,12 +731,9 @@ int VTableServer::indexOf(const VNode* node) const
 // ServerObserver methods
 //--------------------------------------------------
 
-void VTableServer::notifyServerDelete(ServerHandler*)
+void VTableServer::notifyServerDelete(ServerHandler* s)
 {
-#ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VTableServer::notifyServerDelete ---> should never be called!!");
-#endif
-    Q_ASSERT(0);
+    UI_ASSERT(false,"server: " << s->longName());
 }
 
 void VTableServer::notifyBeginServerScan(ServerHandler* server,const VServerChange& change)
@@ -515,6 +761,7 @@ void VTableServer::notifyEndServerClear(ServerHandler* server)
 {
     int oriNodeNum=nodeNum();
     filter_->clear();
+    //filter_->clearForceShowNode();
     Q_EMIT endServerClear(this,oriNodeNum);
 }
 
@@ -547,16 +794,18 @@ void VTableServer::notifyEndNodeChange(const VNode* node, const std::vector<ecf:
 void VTableServer::reload()
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VTableServer::reload --> " + server_->name());
+    UiLog(server_).dbg() << "VTableServer::reload -->";
 #endif
 
     int oriNodeNum=nodeNum();
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("    oriNodeNum: " + QString::number(oriNodeNum).toStdString());
+    UiLog(server_).dbg() << " oriNodeNum=" << oriNodeNum;
 #endif
 
     Q_EMIT beginServerClear(this,oriNodeNum);
+    VNode *fsn=filter_->forceShowNode();
     filter_->clear();
+    filter_->setForceShowNode(fsn);
     inScan_=true;
     Q_EMIT endServerClear(this,oriNodeNum);
 
@@ -567,11 +816,59 @@ void VTableServer::reload()
     Q_EMIT endServerScan(this, nodeNum());
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("    nodeNum: " + QString::number(oriNodeNum).toStdString());
-    UserMessage::debug("<-- VTableServer::reload");
+    UiLog(server_).dbg() << " nodeNum: " << oriNodeNum;
+    UiLog(server_).dbg() << "<-- reload";
 #endif
+}
+
+//Set the forceShowNode and rerun the filter. The forceShowNode is a node that
+//has to be visible even if it does not match the filter.
+void VTableServer::setForceShowNode(const VNode* node)
+{
+    if(filter_->indexOf(node) != -1)
+    {
+        clearForceShow(node);
+        return;
+    }
 
+    Q_ASSERT(node);
+
+    filter_->setForceShowNode(const_cast<VNode*>(node));
+    reload();
+}
 
+void VTableServer::setForceShowAttribute(const VAttribute*)
+{
+}
+
+void VTableServer::clearForceShow(const VItem* item)
+{
+    if(!item)
+        return;
+
+    VNode* vnPrev=filter_->forceShowNode();
+    if(!vnPrev)
+        return;
+
+    if(item->parent()->server() == server_)
+    {
+        if(VNode *itn=item->isNode())
+        {
+            if(itn == vnPrev)
+                return;
+        }
+
+        if(VAttribute *ita=item->isAttribute())
+        {
+            if(ita->parent() == vnPrev)
+            {
+                return;
+            }
+        }
+    }
+
+    filter_->clearForceShowNode();
+    reload();
 }
 
 //==========================================
@@ -669,8 +966,7 @@ void VModelData::init()
 void VModelData::clear()
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VModelData::clear --> " +  QString::number((qint64)this,16).toStdString());
-    qDebug() << "   serverFilter_" << serverFilter_;
+    UiLog().dbg() << "VModelData::clear --> " << this << " filter=" << serverFilter_;
 #endif
 
     if(serverFilter_)
@@ -686,7 +982,7 @@ void VModelData::clear()
 	servers_.clear();
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("<-- VModelData::clear");
+    UiLog().dbg() << "<-- clear";
 #endif
 }
 
@@ -786,14 +1082,14 @@ void VModelData::notifyServerFilterAdded(ServerItem* item)
 void VModelData::notifyServerFilterRemoved(ServerItem* item)
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VModelData::notifyServerFilterRemoved --> ");
+    UiLog().dbg() << "VModelData::notifyServerFilterRemoved --> ";
 #endif
 
     if(!item)
 		return;
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("   server=" + item->name());
+    UiLog().dbg() << " server=" << item->longName();
 #endif
 
 	int i=0;
@@ -804,7 +1100,7 @@ void VModelData::notifyServerFilterRemoved(ServerItem* item)
             int nodeNum=(*it)->nodeNum();
 
 #ifdef _UI_VMODELDATA_DEBUG
-            UserMessage::debug("   emit serverRemoveBegin");
+            UiLog().dbg() << " emit serverRemoveBegin()";
 #endif
             //Notifies the model that a change will happen
             Q_EMIT serverRemoveBegin(*it,nodeNum);
@@ -813,20 +1109,17 @@ void VModelData::notifyServerFilterRemoved(ServerItem* item)
 			servers_.erase(it);
 
 #ifdef _UI_VMODELDATA_DEBUG
-            UserMessage::debug("   emit serverRemoveEnd");
+            UiLog().dbg() << " emit serverRemoveEnd()";
 #endif
 			//Notifies the model that the change has finished
             Q_EMIT serverRemoveEnd(nodeNum);
-#ifdef _UI_VMODELDATA_DEBUG
-     UserMessage::debug("<-- VModelData::notifyServerFilterRemoved");
-#endif
             return;
 		}
 		i++;
     }
 
 #ifdef _UI_VMODELDATA_DEBUG
-     UserMessage::debug("<-- VModelData::notifyServerFilterRemoved");
+     UiLog().dbg() << "<-- notifyServerFilterRemoved";
 #endif
 }
 
@@ -838,25 +1131,24 @@ void VModelData::notifyServerFilterChanged(ServerItem* item)
 void VModelData::notifyServerFilterDelete()
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VModelData::notifyServerFilterDelete --> " + QString::number((qint64)this,16).toStdString());
+    UiLog().dbg() << "VModelData::notifyServerFilterDelete --> " << this;
 #endif
 
-    Q_EMIT filterDeleteBegin();
-
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("  filterDeleteBegin emitted");
+    UiLog().dbg() << " emits filterDeleteBegin()";
 #endif
+    Q_EMIT filterDeleteBegin();
 
 	clear();
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("  filterDeleteEnd emitted");
+    UiLog().dbg() << " emits filterDeleteEnd()";
 #endif
 
 	Q_EMIT filterDeleteEnd();
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("<-- VModelData::notifyServerFilterDelete");
+    UiLog().dbg() << "<-- notifyServerFilterDelete";
 #endif
 
 }
@@ -877,7 +1169,7 @@ void VModelData::setActive(bool active)
 void VModelData::reload(bool broadcast)
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VModelData::reload --> ");
+    UiLog().dbg() << "VModelData::reload -->";
 #endif
 
     Q_ASSERT(active_);
@@ -894,24 +1186,34 @@ void VModelData::reload(bool broadcast)
          Q_EMIT filterChangeEnded();
 
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("<-- VModelData::reload");
+    UiLog().dbg() << "<-- reload";
 #endif
 }
 
 void VModelData::slotFilterDefChanged()
 {
 #ifdef _UI_VMODELDATA_DEBUG
-    UserMessage::debug("VModelData::slotFilterDefChanged --> ");
+    UiLog().dbg() << "VModelData::slotFilterDefChanged -->";
 #endif
 
     if(active_)
         reload(true);
 }
 
-bool VModelData::isFilterNull() const
+bool VModelData::isFilterComplete() const
 {
     for(unsigned int i=0; i < servers_.size(); i++)
     {      
+        return servers_.at(i)->filter()->isComplete();
+    }
+
+    return true;
+}
+
+bool VModelData::isFilterNull() const
+{
+    for(unsigned int i=0; i < servers_.size(); i++)
+    {
         return servers_.at(i)->filter()->isNull();
     }
 
@@ -963,6 +1265,18 @@ void VTreeModelData::connectToModel(VModelServer* s)
 
     connect(ts,SIGNAL(endFilterUpdateAdd(VTreeServer*,const VTreeNode*,int)),
             model_,SLOT(slotEndFilterUpdateAdd(VTreeServer*,const VTreeNode*,int)));
+
+    connect(ts,SIGNAL(beginFilterUpdateRemoveTop(VTreeServer*,int)),
+            model_,SLOT(slotBeginFilterUpdateRemoveTop(VTreeServer*,int)));
+
+    connect(ts,SIGNAL(endFilterUpdateRemoveTop(VTreeServer*,int)),
+            model_,SLOT(slotEndFilterUpdateRemoveTop(VTreeServer*,int)));
+
+    connect(ts,SIGNAL(beginFilterUpdateInsertTop(VTreeServer*,int)),
+            model_,SLOT(slotBeginFilterUpdateInsertTop(VTreeServer*,int)));
+
+    connect(ts,SIGNAL(endFilterUpdateInsertTop(VTreeServer*,int)),
+            model_,SLOT(slotEndFilterUpdateInsertTop(VTreeServer*,int)));
 }
 
 void VTreeModelData::add(ServerHandler *server)
@@ -1083,7 +1397,7 @@ int VTableModelData::position(VTableServer* server,const VNode *node) const
 		int totalRow=0;
 		for(unsigned int i=0; i < servers_.size(); i++)
 		{
-			if(servers_.at(i) == server)
+            if(servers_[i] == server)
 			{				
                 int pos=server->tableServer()->indexOf(node);
 				if(pos != -1)
@@ -1096,7 +1410,7 @@ int VTableModelData::position(VTableServer* server,const VNode *node) const
 			}
 			else
 			{
-                totalRow+=server->nodeNum();
+                totalRow+=servers_[i]->nodeNum();
 			}
 		}
 	}
diff --git a/Viewer/src/VModelData.hpp b/Viewer/src/VModelData.hpp
index 70c0eed..3b24457 100644
--- a/Viewer/src/VModelData.hpp
+++ b/Viewer/src/VModelData.hpp
@@ -17,6 +17,7 @@
 #include "NodeObserver.hpp"
 #include "ServerFilter.hpp"
 #include "ServerObserver.hpp"
+#include "VInfo.hpp"
 
 class Node;
 class VNode;
@@ -31,6 +32,7 @@ class ServerHandler;
 class TableNodeFilter;
 class TreeNodeFilter;
 class VParamSet;
+class VAttribute;
 class VAttributeType;
 class VTreeServer;
 class VTableServer;
@@ -105,8 +107,11 @@ public:
      VTree* tree() const {return tree_;}
      VTreeServer* treeServer() const {return const_cast<VTreeServer*>(this);}
      void attrFilterChanged();
+     void setForceShowNode(const VNode* node);
+     void setForceShowAttribute(const VAttribute* node);
+     void clearForceShow(const VItem*);
 
-     //From ServerObserver
+    //From ServerObserver
 	 void notifyDefsChanged(ServerHandler* server, const std::vector<ecf::Aspect::Type>& a);
      void notifyServerDelete(ServerHandler*);
 	 void notifyBeginServerClear(ServerHandler* server);
@@ -130,8 +135,14 @@ Q_SIGNALS:
      void endFilterUpdateRemove(VTreeServer*,const VTreeNode*,int);
      void beginFilterUpdateAdd(VTreeServer*,const VTreeNode*,int);
      void endFilterUpdateAdd(VTreeServer*,const VTreeNode*,int);
+     void beginFilterUpdateRemoveTop(VTreeServer*,int);
+     void endFilterUpdateRemoveTop(VTreeServer*,int);
+     void beginFilterUpdateInsertTop(VTreeServer*,int);
+     void endFilterUpdateInsertTop(VTreeServer*,int);
 
 private:
+     void updateFilter(const std::vector<VNode*>& suitesChanged);
+
      VTree* tree_;
      VTreeChangeInfo* changeInfo_;
      AttributeFilter *attrFilter_;
@@ -152,6 +163,9 @@ public:
      int indexOf(const VNode* node) const;
      NodeFilter* filter() const;
      VTableServer* tableServer() const {return const_cast<VTableServer*>(this);}
+     void setForceShowNode(const VNode* node);
+     void setForceShowAttribute(const VAttribute* node);
+     void clearForceShow(const VItem*);
 
 	 //From ServerObserver
      void notifyDefsChanged(ServerHandler* server, const std::vector<ecf::Aspect::Type>& a) {}
@@ -205,6 +219,7 @@ public:
     VModelServer* server(ServerHandler*) const;
 	int indexOfServer(ServerHandler* s) const;
 	int numOfNodes(int) const;
+    bool isFilterComplete() const;
     bool isFilterNull() const;
 
 	//From ServerFilterObserver
diff --git a/Viewer/src/VNState.cpp b/Viewer/src/VNState.cpp
index e7695ef..ff85da3 100644
--- a/Viewer/src/VNState.cpp
+++ b/Viewer/src/VNState.cpp
@@ -103,16 +103,15 @@ VNState* VNState::toRealState(const VNode *n)
 
 VNState* VNState::toDefaultState(const VNode *n)
 {
-	if(!n || !n->node().get())
+    if(!n || !n->node())
 		return NULL;
 
 	node_ptr node=n->node();
 
-	std::map<NState::State,VNState*>::const_iterator it=stateMap_.find(DState::convert(node->defStatus()));
-	if(it != stateMap_.end())
-			return it->second;
-
-	return NULL;
+    const char *dStateName=DState::toString(node->defStatus());
+    assert(dStateName);
+    std::string dsn(dStateName);
+    return find(dsn);
 }
 
 VNState* VNState::find(const std::string& name)
diff --git a/Viewer/src/VNode.cpp b/Viewer/src/VNode.cpp
index 940c871..3230159 100644
--- a/Viewer/src/VNode.cpp
+++ b/Viewer/src/VNode.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -10,12 +10,18 @@
 
 #include "VNode.hpp"
 
+#include <QDebug>
+
 #include "Node.hpp"
 #include "Variable.hpp"
 
+#include "AstCollateVNodesVisitor.hpp"
 #include "ConnectState.hpp"
 #include "ServerDefsAccess.hpp"
 #include "ServerHandler.hpp"
+#include "TriggerCollector.hpp"
+#include "TriggeredScanner.hpp"
+#include "VAttribute.hpp"
 #include "VAttributeType.hpp"
 #include "VFileInfo.hpp"
 #include "VNState.hpp"
@@ -24,6 +30,94 @@
 
 #include <boost/algorithm/string.hpp>
 
+#define _UI_VNODE_DEBUG
+
+
+// static member of VNode
+std::string VNode::nodeMarkedForMoveRelPath_;
+std::string VNode::nodeMarkedForMoveServerAlias_;
+
+
+//For a given node this class stores all the nodes that this node itself triggers.
+//For memory efficiency we only store the index of the nodes not the pointers themselves.
+class VNodeTriggerData
+{
+public:
+    std::vector<int> data_;
+
+    void get(VNode* node ,TriggerCollector* tc)
+    {
+        VServer* s=node->root();
+        for(size_t i=0; i < data_.size(); i++)
+        {
+            VItemTmp_ptr triggered(VItemTmp::create(s->nodeAt(data_[i])));
+            VItemTmp_ptr nullItem;
+            tc->add(triggered,nullItem,TriggerCollector::Normal);
+        }
+    }
+    void add(VItem* n)
+    {
+        assert(n);
+        VNode* node=n->isNode();
+        assert(node);
+        data_.push_back(node->index());
+    }
+
+    void add(VItem* /*triggered*/,VItem* /*trigger*/)
+    {
+    }
+};
+
+#if 0
+class VNodeTriggerData
+{
+public:
+    std::vector<std::pair<int,int> > data_;
+
+    void get(VNode* node ,TriggerCollector* tc)
+    {
+        VServer* s=node->root();
+
+        for(size_t i=0; i < data_.size(); i++)
+        {
+            VItemTmp_ptr triggered(VItemTmp::create(s->nodeAt(data_[i].first)));
+            VItemTmp_ptr trigger;
+            if(data_[i].second == -2)
+            {
+                trigger=VItemTmp::creaate(node);
+            else
+            {
+                trigger=VItemTmp::create(VAttribute::makeFromId(node,data_[i].second));
+            }
+
+            tc->add(triggered,0,TriggerCollector::Normal,trigger);
+            VItemTmp_ptr nullItem;
+            tc->add(triggered,nullItem,TriggerCollector::Normal);
+        }
+    }
+
+    void add(VItem* n)
+    {
+        assert(n);
+        VNode* node=n->isNode();
+        assert(node);
+        data_.push_back(std::make_pair(node->index(),-2));
+    }
+
+    void add(VItem* triggered,VItem* trigger)
+    {
+        assert(triggered);
+        assert(trigger);
+        VNode* node=triggered->isNode();
+        assert(node);
+        VAttribute* attr=trigger->isAttribute();
+        assert(attr);
+        if(attr->id() >=0)
+            data_.push_back(std::make_pair(node->index(),attr->id()));
+    }
+};
+#endif
+
 //=================================================
 // VNode
 //=================================================
@@ -36,7 +130,8 @@ VNode::VNode(VNode* parent,node_ptr node) :
     attrNum_(-1),
     cachedAttrNum_(-1),
 #endif
-	index_(-1)
+    index_(-1),
+    data_(NULL)
 {
 	if(parent_)
 		parent_->addChild(this);
@@ -45,6 +140,17 @@ VNode::VNode(VNode* parent,node_ptr node) :
 		node_->set_graphic_ptr(this);
 }
 
+VNode::~VNode()
+{
+    if(data_)
+        delete data_;
+}
+
+VServer* VNode::root() const
+{
+    return server()->vRoot();
+}
+
 ServerHandler* VNode::server() const
 {
 	return (parent_)?(parent_->server()):NULL;
@@ -376,11 +482,35 @@ void VNode::genVariables(std::vector<Variable>& genVars) const
 		node_->gen_variables(genVars);
 }
 
+std::string VNode::fullPath() const
+{
+    return absNodePath();
+}
+
 std::string VNode::absNodePath() const
 {
 	return (node_)?node_->absNodePath():"";
 }
 
+
+void VNode::setNodeMarkedForMove(std::string serverAlias, std::string relPath)
+{
+	nodeMarkedForMoveServerAlias_ = serverAlias;
+	nodeMarkedForMoveRelPath_ = relPath;
+}
+
+void VNode::clearNodeMarkedForMove()
+{
+	nodeMarkedForMoveRelPath_.clear();
+	nodeMarkedForMoveServerAlias_.clear();
+}
+
+
+bool VNode::sameContents(VItem* item) const
+{
+    return item == this;
+}
+
 bool VNode::sameName(const std::string& name) const
 {
 	return(strName() == name)?true:false;
@@ -524,7 +654,7 @@ bool VNode::logServer(std::string& host,std::string& port)
 	return false;
 }
 
-
+#if 0
 bool VNode::isAncestor(const VNode* n)
 {
 	if(n == this)
@@ -540,6 +670,7 @@ bool VNode::isAncestor(const VNode* n)
     }
     return false;
 }
+#endif
 
 std::vector<VNode*> VNode::ancestors(SortMode sortMode)
 {
@@ -645,7 +776,7 @@ bool VNode::isFlagSet(ecf::Flag::Type f) const
 
 void VNode::why(std::vector<std::string>& theReasonWhy) const
 {
-	if(node_ && node_.get())
+    if(node_)
 	{
 		node_->bottom_up_why(theReasonWhy);
 	}
@@ -653,7 +784,7 @@ void VNode::why(std::vector<std::string>& theReasonWhy) const
 
 const std::string& VNode::abortedReason() const
 {
-	if(node_ && node_.get())
+    if(node_)
 	{
 		return node_->abortedReason();
 	}
@@ -663,6 +794,28 @@ const std::string& VNode::abortedReason() const
 
 }
 
+void VNode::statusChangeTime(QString& sct) const
+{
+    if(node_)
+    {
+        boost::posix_time::ptime t = node_->state_change_time();
+        std::string s=boost::posix_time::to_simple_string(t);
+        sct=QString::fromStdString(s);
+    }
+}
+
+uint VNode::statusChangeTime() const
+{
+    if(node_)
+    {
+        static  boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
+        boost::posix_time::ptime t = node_->state_change_time();
+        boost::posix_time::time_duration diff(t - epoch);
+        return diff.ticks()/diff.ticks_per_second();
+    }
+    return 0;
+}
+
 QString VNode::toolTip()
 {    
     QString txt="<b>Name</b>: " + name() + "<br>";
@@ -687,6 +840,263 @@ QString VNode::toolTip()
     return txt;
 }   
 
+//===========================================================
+// Triggers
+//===========================================================
+
+void VNode::triggerExpr(std::string& trigger, std::string& complete) const
+{
+    if(node_)
+    {
+        QList<VItemTmp_ptr> v;
+        VAttributeType::items("trigger",this,v);
+        Q_FOREACH(VItemTmp_ptr aItem,v)
+        {
+            VAttribute* a=aItem->attribute();
+            assert(a);
+            std::string t;
+            a->value("trigger_type",t);
+            if(t=="0")
+                a->value("trigger_expression",trigger);
+            else if(t=="1")
+                a->value("trigger_expression",complete);
+        }       
+    }
+}
+
+//Collect the information about all the triggers triggering this node
+void VNode::triggers(TriggerCollector* tlc)
+{
+    VItemTmp_ptr nullItem;
+    //Check the node itself
+    //if(tlr.self())
+    {
+        //find nodes, event, meters and variables triggering this node
+        if(node_ && !node_->isSuite())
+        {
+            std::vector<VItemTmp_ptr> theVec;
+            AstCollateVNodesVisitor astVisitor(theVec);
+
+            //Collect the nodes from ast
+            if(node_->completeAst())
+                node_->completeAst()->accept(astVisitor);
+
+            if(node_->triggerAst())
+                node_->triggerAst()->accept(astVisitor);
+
+            //Add the found items to the collector
+            for(std::vector<VItemTmp_ptr>::iterator it = theVec.begin(); it != theVec.end(); ++it)
+            {
+#ifdef _UI_VNODE_DEBUG
+                //if((*it)->parent() && (*it)->parent()->absNodePath() == "/e_41r2_peter/main")
+                //    qDebug() << "trigger ast:" << (*it)->name() << *it;
+#endif
+                tlc->add(*it,nullItem, TriggerCollector::Normal);
+            }
+        }
+
+        //Check other attributes
+
+        //Limiters
+        QList<VItemTmp_ptr> limiterLst;
+        VAttributeType::items("limiter",this,limiterLst);
+        Q_FOREACH(VItemTmp_ptr aItem, limiterLst)
+        {
+            VAttribute* a=aItem->attribute();
+            assert(a);
+            std::string v;
+            if(a->value("limiter_path",v))
+            {
+                if(VItemTmp_ptr n = findLimit(v, a->strName()))
+                {
+#ifdef _UI_VNODE_DEBUG
+                    //qDebug() << "trigger limit:" << n->name();
+#endif                   
+                    tlc->add(n,nullItem, TriggerCollector::Normal);
+                }
+            }
+        }
+
+        //Date
+        QList<VItemTmp_ptr> dateLst;
+        VAttributeType::items("date",this,dateLst);
+        Q_FOREACH(VItemTmp_ptr a, dateLst)
+        {            
+            tlc->add(a,nullItem,TriggerCollector::Normal);
+        }
+
+        //Time
+        QList<VItemTmp_ptr> timeLst;
+        VAttributeType::items("time",this,timeLst);
+        Q_FOREACH(VItemTmp_ptr a, timeLst)
+        {
+             tlc->add(a,nullItem,TriggerCollector::Normal);
+        }
+
+    }
+
+    if(tlc->scanParents())
+    {
+        VNode* p=parent();
+        while(p)
+        {
+            TriggerParentCollector tpc(p,tlc);
+            p->triggers(&tpc);
+            p = p->parent();
+        }
+    }
+
+    if(tlc->scanKids())
+    {
+        triggersInChildren(this,this,tlc);
+    }
+}
+
+//Collect the triggers triggering node n in the children of parent
+void VNode::triggersInChildren(VNode *n,VNode* p,TriggerCollector* tlc)
+{
+    for(size_t i=0; i < p->children_.size(); i++)
+    {
+        TriggerChildCollector tcc(n,p->children_[i],tlc);
+        p->children_[i]->triggers(&tcc);
+        triggersInChildren(n,p->children_[i],tlc);
+  }
+}
+
+//These are called during the scan for triggered nodes
+void VNode::addTriggeredData(VItem* n)
+{
+    if(!data_)
+        data_=new VNodeTriggerData;
+
+    data_->add(n);
+}
+
+void VNode::addTriggeredData(VItem* triggered,VItem* trigger)
+{
+    if(!data_)
+       data_=new VNodeTriggerData;
+
+    assert(trigger->parent() == this);
+    data_->add(triggered,trigger);
+}
+
+//Collect the information about all the nodes this node or its attributes trigger
+void VNode::triggered(TriggerCollector* tlc,TriggeredScanner* scanner)
+{
+    if(scanner && !root()->triggeredScanned())
+    {
+        unsigned int aNum=VAttribute::totalNum();
+        scanner->start(root());
+        root()->setTriggeredScanned(true);
+        assert(aNum == VAttribute::totalNum());
+    }
+
+    //Get the nodes directly triggered by this node
+    if(data_)
+        data_->get(this,tlc);
+
+    if(tlc->scanParents())
+    {
+        VNode* p=parent();
+        while(p)
+        {
+            TriggerParentCollector tpc(p,tlc);
+            p->triggered(&tpc);
+            p = p->parent();
+        }
+    }
+
+    if(tlc->scanKids())
+    {
+        triggeredByChildren(this,this,tlc);
+    }
+}
+
+void VNode::triggeredByChildren(VNode *n,VNode* p,TriggerCollector* tlc)
+{
+    for(size_t i=0; i < p->children_.size(); i++)
+    {
+        TriggerChildCollector tcc(n,p->children_[i],tlc);
+        p->children_[i]->triggered(&tcc);
+        triggeredByChildren(n,p->children_[i],tlc);
+    }
+}
+
+VItemTmp_ptr VNode::findLimit(const std::string& path, const std::string& name)
+{
+   // if (!strncmp("/", path.c_str(), 1))
+   VItemTmp_ptr nullItem;
+
+#if 0
+   if(!path.empty() && path[0] == '/')
+      if (! (f = serv().top()->find(path)))
+         return &dummy_node::get(path + ":" + name);
+#endif
+
+    //If
+    VNode* n=this;
+    if(!path.empty() && path[0] == '/')
+    {
+        n=server()->vRoot()->find(path);
+        if(!n)
+            return nullItem;
+
+        //if(n && n != this)
+        //    return n->findLimit(path,name);
+    }
+
+    //Find the matching limit in the node
+    QList<VItemTmp_ptr> limit;
+    VAttributeType::items("limit",n,limit);
+    Q_FOREACH(VItemTmp_ptr aItem, limit)
+    {
+       assert(aItem);
+       assert(aItem->item());
+       assert(aItem->item()->isAttribute());
+       if(aItem->item()->strName() == name)
+       {
+           return aItem;
+       }
+    }
+
+    //Find the matching limit in the ancestors
+    VNode* p=n->parent();
+    Q_ASSERT(p);
+    for(int i=0; i < p->numOfChildren(); i++)
+    {
+        VNode* ch=p->childAt(i);
+        if (ch->strName() == path.substr(0, ch->name().size()))
+        {
+            std::string::size_type next = path.find('/');
+            return ch->findLimit(path.substr(next+1, path.size()), name);
+        }
+    }
+
+    return nullItem;
+
+   //return &dummy_node::get(path + ":" + name);
+}
+
+
+const std::string& VSuiteNode::typeName() const
+{
+   static std::string t("suite");
+   return t;
+}
+
+const std::string& VFamilyNode::typeName() const
+{
+   static std::string t("family");
+   return t;
+}
+
+const std::string& VAliasNode::typeName() const
+{
+   static std::string t("alias");
+   return t;
+}
+
 //=================================================
 //
 // VNodeRoot - this represents the server
@@ -696,7 +1106,8 @@ QString VNode::toolTip()
 VServer::VServer(ServerHandler* server) :
 	VNode(0,node_ptr()),
 	server_(server),
-	totalNum_(0)
+    totalNum_(0),
+    triggeredScanned_(false)
 {
 }
 
@@ -730,6 +1141,16 @@ int VServer::totalNumOfTopLevel(int idx) const
 	return -1;
 }
 
+int VServer::totalNumOfTopLevel(const std::string& name) const
+{
+    for(size_t i=0; i < children_.size(); i++)
+    {
+        if(name == children_[i]->strName())
+            return totalNumOfTopLevel(i);
+    }
+    return -1;
+}
+
 //--------------------------------
 // Clear
 //--------------------------------
@@ -761,6 +1182,8 @@ void VServer::clear()
 
 	//Deallocate the nodes vector
 	nodes_=std::vector<VNode*>();
+
+    triggeredScanned_=false;
 }
 
 //Clear the contents of a particular VNode
@@ -1282,6 +1705,12 @@ void VServer::updateCache(defs_ptr defs)
 	cache_.flag_=defs->flag();
 }
 
+const std::string& VServer::typeName() const
+{
+   static std::string t("server");
+   return t;
+}
+
 QString VServer::toolTip()
 {
 	QString txt="<b>Server</b>: " + QString::fromStdString(server_->name()) + "<br>";
diff --git a/Viewer/src/VNode.hpp b/Viewer/src/VNode.hpp
index f1efd0a..3a88d07 100644
--- a/Viewer/src/VNode.hpp
+++ b/Viewer/src/VNode.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -20,14 +20,18 @@
 #include "LogServer.hpp"
 #include "Node.hpp"
 
-class AttributeFilter;
 #include "VItem.hpp"
+#include "VItemTmp.hpp"
 
+class AttributeFilter;
 class IconFilter;
 class ServerHandler;
+class TriggerCollector;
+class TriggeredScanner;
 class VAttributeType;
 class VServer;
 class VServerSettings;
+class VNodeTriggerData;
 
 class VNodeInternalState
 {
@@ -86,10 +90,11 @@ friend class VServer;
 
 public:
 	VNode(VNode* parent,node_ptr);
-    virtual ~VNode() {}
+    virtual ~VNode();
 
 	enum SortMode {ParentToChildSort,ChildToParentSort};
 
+    VServer *root() const;
     virtual ServerHandler* server() const;
     virtual VNode* suite() const;
     node_ptr node() const {return node_;}
@@ -148,8 +153,11 @@ public:
     //generated variables are searched.
     virtual std::string findInheritedVariable(const std::string& key,bool substitute=false) const;
 
+    std::string fullPath() const;
     virtual std::string absNodePath() const;
+
     bool sameName(const std::string& name) const;
+    bool sameContents(VItem* item) const;
     std::string strName() const;
     QString name() const;
     std::string serverName() const;
@@ -168,7 +176,7 @@ public:
     virtual void internalState(VNodeInternalState&) {}
 
     bool hasAccessed() const;
-    bool isAncestor(const VNode* n);
+    //bool isAncestor(const VNode* n) const;
     std::vector<VNode*> ancestors(SortMode sortMode);
     VNode* ancestorAt(int idx,SortMode sortMode);
 
@@ -177,14 +185,29 @@ public:
     int index() const {return index_;}
 
     const std::string& nodeType();
+    //const std::string& typeStr() const;
     virtual QString toolTip();
     
     virtual void why(std::vector<std::string>& theReasonWhy) const;
     const std::string&  abortedReason() const;
+    void statusChangeTime(QString&) const;
+    uint statusChangeTime() const;
 
     LogServer_ptr logServer();
     bool logServer(std::string& host,std::string& port);
 
+    void triggerExpr(std::string&,std::string&) const;
+
+    void triggers(TriggerCollector*);   
+    void triggered(TriggerCollector* tlc,TriggeredScanner* scanner=0);
+    void addTriggeredData(VItem* n);
+    void addTriggeredData(VItem* a,VItem* n);
+
+    static void setNodeMarkedForMove(std::string serverAlias, std::string relPath);
+    static void clearNodeMarkedForMove();
+    static std::string nodeMarkedForMoveRelPath()         {return nodeMarkedForMoveRelPath_;}
+    static std::string nodeMarkedForMoveServerAlias()     {return nodeMarkedForMoveServerAlias_;}
+
 protected:
     void clear();
     void addChild(VNode*);
@@ -198,6 +221,11 @@ protected:
     virtual void check(VServerSettings* conf,const VNodeInternalState&) {}
     void setIndex(int i) {index_=i;}
 
+    VItemTmp_ptr findLimit(const std::string& path, const std::string& name);
+    static void triggersInChildren(VNode *n,VNode* nn,TriggerCollector* tlc);
+    //static void scanForTriggered(VNode *n);
+    static void triggeredByChildren(VNode *n,VNode* parent,TriggerCollector* tlc);
+
     node_ptr node_;
     //VNode* parent_;
     std::vector<VNode*> children_;
@@ -206,6 +234,9 @@ protected:
     mutable short cachedAttrNum_;
 #endif
     int index_;
+    VNodeTriggerData* data_;
+    static std::string nodeMarkedForMoveRelPath_;
+    static std::string nodeMarkedForMoveServerAlias_;
 };
 
 class VSuiteNode : public VNode
@@ -213,6 +244,7 @@ class VSuiteNode : public VNode
 public:
     VSuiteNode(VNode* parent,node_ptr node) : VNode(parent,node) {}
     VSuiteNode* isSuite() const {return const_cast<VSuiteNode*>(this);}
+    const std::string& typeName() const;
 };
 
 class VFamilyNode : public VNode
@@ -220,6 +252,7 @@ class VFamilyNode : public VNode
 public:
     VFamilyNode(VNode* parent,node_ptr node) : VNode(parent,node) {}
     VFamilyNode* isFamily() const {return const_cast<VFamilyNode*>(this);}
+    const std::string& typeName() const;
 };
 
 class VAliasNode : public VNode
@@ -227,12 +260,14 @@ class VAliasNode : public VNode
 public:
     VAliasNode(VNode* parent,node_ptr node) : VNode(parent,node) {}
     VAliasNode* isAlias() const {return const_cast<VAliasNode*>(this);}
+    const std::string& typeName() const;
 };
 
 //This is the root node representing the Server.
 class VServer : public VNode
 {
 	friend class ServerHandler;
+    friend class VNode;
 
 public:
 	explicit VServer(ServerHandler*);
@@ -248,7 +283,8 @@ public:
 
 	int totalNum() const {return totalNum_;}
 	int totalNumOfTopLevel(int) const;
-	int totalNumOfTopLevel(VNode*) const;
+    int totalNumOfTopLevel(VNode*) const;
+    int totalNumOfTopLevel(const std::string&) const;
 
 	VNode* toVNode(const Node* nc) const;
 	void beginUpdate(VNode* node,const std::vector<ecf::Aspect::Type>& aspect,VNodeChange&);
@@ -258,7 +294,8 @@ public:
 	VNode* nodeAt(int) const;
 	const std::vector<VNode*>& nodes() const {return nodes_;}
 
-	QString toolTip();
+    const std::string& typeName() const;
+    QString toolTip();
 
 	//From VNode
 	std::string absNodePath() const {return "/";}
@@ -294,6 +331,8 @@ protected:
 	//Clear contents and rebuild the whole tree.
 	void beginScan(VServerChange&);
 	void endScan();
+    bool triggeredScanned() const {return triggeredScanned_;}
+    void setTriggeredScanned(bool b) {triggeredScanned_=b;}
 
 private:
 	void clear();
@@ -308,6 +347,7 @@ private:
     int totalNum_;
     std::vector<int> totalNumInChild_;
     std::vector<VNode*> nodes_;
+    bool triggeredScanned_;
 
     VServerCache cache_;
     std::vector<Variable> prevGenVars_;
diff --git a/Viewer/src/VReply.cpp b/Viewer/src/VReply.cpp
index 3444bc3..248fa27 100644
--- a/Viewer/src/VReply.cpp
+++ b/Viewer/src/VReply.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -41,6 +41,72 @@ void VReply::appendText(const std::string& txt)
 	text_.append(txt);
 }
 
+std::string VReply::errorText(const std::string& sep) const
+{
+    std::string s;
+    for(size_t i=0; i < errorText_.size(); i++)
+    {
+        if(i != 0) s+=sep;
+        s+=errorText_[i];
+    }
+    return s;
+}
+
+std::string VReply::warningText(const std::string& sep) const
+{
+    std::string s;
+    for(size_t i=0; i < warningText_.size(); i++)
+    {
+        if(i != 0) s+=sep;
+        s+=warningText_[i];
+    }
+    return s;
+}
+
+std::string VReply::infoText(const std::string& sep) const
+{
+    std::string s;
+    for(size_t i=0; i < infoText_.size(); i++)
+    {
+        if(i != 0) s+=sep;
+        s+=infoText_[i];
+    }
+    return s;
+}
+
+void VReply::setErrorText(const std::string& s)
+{
+    errorText_.clear();
+    errorText_.push_back(s);
+}
+
+void VReply::appendErrorText(const std::string& s)
+{
+    errorText_.push_back(s);
+}
+
+void VReply::setWarningText(const std::string& s)
+{
+    warningText_.clear();
+    warningText_.push_back(s);
+}
+
+void  VReply::appendWarningText(const std::string& s)
+{
+    warningText_.push_back(s);
+}
+
+void VReply::setInfoText(const std::string& s)
+{
+    infoText_.clear();
+    infoText_.push_back(s);
+}
+
+void  VReply::appendInfoText(const std::string& s)
+{
+    infoText_.push_back(s);
+}
+
 void VReply::reset()
 {
 	status_=NoStatus;
diff --git a/Viewer/src/VReply.hpp b/Viewer/src/VReply.hpp
index 5c0e7c0..b6b0964 100644
--- a/Viewer/src/VReply.hpp
+++ b/Viewer/src/VReply.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -30,9 +30,10 @@ public:
 	void* sender() const {return sender_;}
 	void setSender(void* s) {sender_=s;}
 
-	const std::string& errorText() const {return errorText_;}
-	const std::string& warningText() const {return warningText_;}
-	const std::string& infoText() const {return infoText_;}
+    std::string errorText(const std::string& sep="") const;
+    const std::vector<std::string>& errorTextVec() const {return errorText_;}
+    std::string warningText(const std::string& sep="") const;
+    std::string infoText(const std::string& sep="") const;
 	const std::string& text() const {return text_;}
 	const std::vector<std::string>& textVec() const {return textVec_;}
 	Status status() const {return status_;}
@@ -49,9 +50,12 @@ public:
 	void text(const std::vector<std::string>& msg);
 	void setTextVec(const std::vector<std::string>& msg) {textVec_=msg;;}
 	void text(const std::string& s) {text_=s;}
-	void setErrorText(const std::string& s) {errorText_=s;}
-	void setWarningText(const std::string& s) {warningText_=s;}
-	void setInfoText(const std::string& s) {infoText_=s;}
+    void setErrorText(const std::string& s);
+    void appendErrorText(const std::string& s);
+    void setWarningText(const std::string& s);
+    void appendWarningText(const std::string& s);
+    void setInfoText(const std::string& s);
+    void appendInfoText(const std::string& s);
 	void fileName(const std::string& s) {fileName_=s;}
 	void fileReadMode(FileReadMode m) {readMode_=m;}
 	void fileReadMethod(const std::string& m) {readMethod_=m;}
@@ -75,9 +79,9 @@ public:
 protected:
 	void* sender_;
 	Status status_;
-	std::string errorText_;
-	std::string warningText_;
-	std::string infoText_;
+    std::vector<std::string> errorText_;
+    std::vector<std::string> warningText_;
+    std::vector<std::string> infoText_;
 	std::string text_;
 	std::vector<std::string> textVec_;
 	std::string fileName_;
diff --git a/Viewer/src/VServerSettings.cpp b/Viewer/src/VServerSettings.cpp
index a7ace20..e6465a5 100644
--- a/Viewer/src/VServerSettings.cpp
+++ b/Viewer/src/VServerSettings.cpp
@@ -17,7 +17,7 @@
 #include "ServerList.hpp"
 #include "SessionHandler.hpp"
 #include "SuiteFilter.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VConfig.hpp"
 #include "VConfigLoader.hpp"
 #include "VProperty.hpp"
@@ -88,7 +88,7 @@ VServerSettings::VServerSettings(ServerHandler* server) :
 		}
 		else
 		{
-			UserMessage::message(UserMessage::DBG, false, std::string("VServerSettings - could not find property: ") + it->second);
+            UiLog().dbg() << "VServerSettings - could not find property: " << it->second;
 			assert(0);
 		}
 	}
diff --git a/Viewer/src/VSettings.cpp b/Viewer/src/VSettings.cpp
index c50f7cc..dca4ceb 100644
--- a/Viewer/src/VSettings.cpp
+++ b/Viewer/src/VSettings.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,10 +11,13 @@
 #include "VSettings.hpp"
 
 #include "DirectoryHandler.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 
 #include <QDebug>
 
+#include <sstream>
+
 #include <boost/algorithm/string/join.hpp>
 #include <boost/property_tree/json_parser.hpp>
 #include <boost/filesystem/path.hpp>
@@ -145,6 +148,17 @@ void VSettings::put(const std::string& key,const std::vector<std::string>& val)
 	pt_.put_child(path_.path(key),array);
 }
 
+void VSettings::put(const std::string& key,const std::vector<int>& val)
+{
+    boost::property_tree::ptree array;
+    for(std::vector<int>::const_iterator it=val.begin(); it != val.end(); ++it)
+    {
+        std::stringstream ss;
+        ss << (*it);
+        array.push_back(std::make_pair("",ss.str()));
+    }
+    pt_.put_child(path_.path(key),array);
+}
 
 // for adding a list of 'structs'
 void VSettings::put(const std::string& key,const std::vector<VSettings>& val)
@@ -180,6 +194,20 @@ void VSettings::get(const std::string& key,std::vector<std::string>& val)
 	}
 }
 
+void VSettings::get(const std::string& key,std::vector<int>& val)
+{
+    boost::optional<boost::property_tree::ptree& > ptArray=pt_.get_child_optional(path_.path(key));
+    if(!ptArray)
+    {
+        return;
+    }
+
+    for(boost::property_tree::ptree::const_iterator it = ptArray.get().begin(); it != ptArray.get().end(); ++it)
+    {
+        val.push_back(it->second.get_value<int>());
+    }
+}
+
 bool VSettings::getAsBool(const std::string& key,bool defaultVal)
 {
 	std::string v=pt_.get<std::string>(path_.path(key),(defaultVal)?"true":"false");
@@ -234,7 +262,7 @@ VComboSettings::VComboSettings(const std::string& file,const std::string& qsFile
 	//QSettings::setPath(QSettings::IniFormat, QSettings::UserScope,"/home/graphics/cgr/.ecflowview");
 	//QSettings::setPath(QSettings::IniFormat, QSettings::UserScope,"/home/graphics/cgr/.ecflowview");
 #ifdef _UI_SETTINGS_DEBUG
-    UserMessage::message(UserMessage::DBG,false,"VComboSettings --> fileName=" + qs_.fileName().toStdString());
+    UiLog().dbg() << "VComboSettings --> fileName=" << qs_.fileName();
 #endif
 }
 
@@ -245,7 +273,7 @@ VComboSettings::~VComboSettings()
 void VComboSettings::clear()
 {
 	VSettings::clear();
-	pt_.clear();
+    qs_.clear();
 }
 
 bool VComboSettings::containsQs(const std::string& key)
diff --git a/Viewer/src/VSettings.hpp b/Viewer/src/VSettings.hpp
index ecb71f8..5ea0038 100644
--- a/Viewer/src/VSettings.hpp
+++ b/Viewer/src/VSettings.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -37,7 +37,7 @@ class VSettings
 public:
 	explicit VSettings(const std::string& file);
 	explicit VSettings(boost::property_tree::ptree pt);
-	virtual ~VSettings() {};
+    virtual ~VSettings() {}
 
 	//bool read(const std::string &fs);
 	//virtual void write(const std::string &fs);
@@ -55,7 +55,8 @@ public:
 	void put(const std::string& key,int val);
 	//void put(const std::string& key,bool val);
 	void put(const std::string& key,const std::string& val);
-	void put(const std::string& key,const std::vector<std::string>& val);
+    void put(const std::string& key,const std::vector<std::string>& val);
+    void put(const std::string& key,const std::vector<int>& val);
 	void put(const std::string& key,const std::vector<VSettings>& val);
 	void putAsBool(const std::string& key,bool val);
 
@@ -64,13 +65,13 @@ public:
 	{
 		return pt_.get<T>(path_.path(key),defaultVal);
 	}
-	void get(const std::string& key,std::vector<std::string>& val);
+    void get(const std::string& key,std::vector<std::string>& val);
+    void get(const std::string& key,std::vector<int>& val);
 	bool getAsBool(const std::string& key,bool defaultVal);
 	void get(const std::string& key,std::vector<VSettings>& val);
 
 	const boost::property_tree::ptree & propertyTree() const {return pt_;}
 
-
 protected:
 	boost::property_tree::ptree pt_;
 	VSettingsPath path_;
@@ -91,7 +92,6 @@ public:
 
 	void write();
 
-
 	bool containsQs(const std::string& key);
 
 	void beginGroup(const std::string&);
diff --git a/Viewer/src/VTaskNode.cpp b/Viewer/src/VTaskNode.cpp
index 5e4acd8..8d00bd2 100644
--- a/Viewer/src/VTaskNode.cpp
+++ b/Viewer/src/VTaskNode.cpp
@@ -177,3 +177,9 @@ void VTaskNode::check(VServerSettings* conf,bool stateChange)
 
 	updatePrev(new_tryNo,new_aborted,new_zombie,new_late);
 }
+
+const std::string& VTaskNode::typeName() const
+{
+   static std::string t("task");
+   return t;
+}
diff --git a/Viewer/src/VTaskNode.hpp b/Viewer/src/VTaskNode.hpp
index 063af05..cb02d45 100644
--- a/Viewer/src/VTaskNode.hpp
+++ b/Viewer/src/VTaskNode.hpp
@@ -31,6 +31,7 @@ public:
     //bool isServer() const {return false;}
     VTaskNode* isTask() const {return const_cast<VTaskNode*>(this);}
 	void internalState(VNodeInternalState&);
+    const std::string& typeName() const;
 
 protected:
 	void check(VServerSettings* conf,const VNodeInternalState&);
diff --git a/Viewer/src/VTree.cpp b/Viewer/src/VTree.cpp
index 7e6340d..ca7b140 100644
--- a/Viewer/src/VTree.cpp
+++ b/Viewer/src/VTree.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -23,7 +23,10 @@
 //==========================================
 
 
-VTreeNode::VTreeNode(VNode* n,VTreeNode* parent) : vnode_(n), parent_(parent), attrNum_(-1)
+VTreeNode::VTreeNode(VNode* n,VTreeNode* parent) :
+    vnode_(n),
+    parent_(parent),
+    attrNum_(-1)
 {
     if(parent_)
         parent_->addChild(this);
@@ -87,16 +90,15 @@ bool VTreeNode::isAttrInitialised() const
     return (attrNum_ != -1);
 }
 
+#if 0
 int VTreeNode::attrRow(int row,AttributeFilter *filter) const
 {
     return VAttributeType::getRow(vnode_,row,filter);
 }
+#endif
 
 int VTreeNode::attrNum(AttributeFilter *filter) const
 {
-    if(!filter)
-       return attrNum_;
-
     if(!isAttrInitialised())
         attrNum_=vnode_->attrNum(filter);
 
@@ -108,6 +110,15 @@ void VTreeNode::updateAttrNum(AttributeFilter *filter)
     attrNum_=vnode_->attrNum(filter);
 }
 
+#if 0
+void VTreeNode::updateAttrNum(AttributeFilter *filter,bool showOneMore)
+{
+    attrNum_=vnode_->attrNum(filter);
+    if(showOneMore)
+        attrNum_++;
+}
+#endif
+
 void VTreeNode::resetAttrNum()
 {
     attrNum_=-1;
@@ -117,13 +128,52 @@ void VTreeNode::resetAttrNum()
     }
 }
 
+void VTreeNode::countChildren() const
+{
+}
+
+void VTreeNode::countChildren(int& num) const
+{
+    for(unsigned int i=0; i < children_.size(); i++)
+    {
+        num++;
+        children_[i]->countChildren(num);
+    }
+}
+
+int VTreeNode::totalNumOfChildren() const
+{
+    int num=0;
+    countChildren(num);
+    return num;
+}
+
+
+
+VTreeSuiteNode::VTreeSuiteNode(VNode* n,VTreeNode* parent) : VTreeNode(n,parent), num_(0)
+{
+}
+
+void VTreeSuiteNode::countChildren() const
+{
+    num_=0;
+    VTreeNode::countChildren(num_);
+}
+
+int VTreeSuiteNode::totalNumOfChildren() const
+{
+    return num_;
+}
+
 //========================================================
 //
 // VTree
 //
 //========================================================
 
-VTree::VTree(VTreeServer* server) : VTreeNode(server->realServer()->vRoot(),0), server_(server)
+VTree::VTree(VTreeServer* server) :
+    VTreeNode(server->realServer()->vRoot(),0),
+    server_(server)
 {
 
 }
@@ -160,7 +210,7 @@ VTreeNode *VTree::findAncestor(const VNode* vn)
         p=p->parent();
     }
 
-    return NULL;
+    return this;
 }
 
 int VTree::totalNumOfTopLevel(VTreeNode* n) const
@@ -177,34 +227,32 @@ int VTree::totalNumOfTopLevel(VTreeNode* n) const
 
 int VTree::totalNumOfTopLevel(int idx) const
 {
-    assert(totalNumInChild_.size() == children_.size());
+    assert(idx >=0 && idx < children_.size());
 
-    if(idx >=0 && idx < totalNumInChild_.size())
-    {
-        return totalNumInChild_.at(idx);
-    }
-
-    return -1;
+    return children_[idx]->totalNumOfChildren();
 }
 
-
-
-#if 0
-VTreeNode* VTree::topLevelNode(int row) const
-{
-    return children_[row];
-}
-
-int VTree::indexOfTopLevelNode(const VTreeNode* node) const
+int VTree::indexOfTopLevel(VTreeNode* node) const
 {
     return indexOfChild(node);
 }
 
-int VTree::topLevelNodeNum() const
+int VTree::indexOfTopLevelToInsert(VNode* suite) const
 {
+    VServer* s=server_->realServer()->vRoot();
+    int suiteIdx=s->indexOfChild(suite);
+    assert(suiteIdx >=0);
+
+    for(unsigned int i=0; i < numOfChildren();i++)
+    {
+        int idx=s->indexOfChild(children_[i]->vnode_);
+        assert(idx >=0);
+        if(suiteIdx < idx)
+            return i;
+    }
+
     return numOfChildren();
 }
-#endif
 
 void VTree::removeChildren(VTreeNode* node)
 {
@@ -213,25 +261,53 @@ void VTree::removeChildren(VTreeNode* node)
         nodeVec_[(*it)->vnode()->index()]=NULL;
         removeChildren(*it);
         delete *it;
+        totalNum_--;
     }
 
     node->children_.clear();
 }
 
-void VTree::buildBranch(const std::vector<VNode*>& filter,VTreeNode* node,VTreeNode* branch)
+void VTree::remove(VTreeNode* node)
+{
+    VTreeNode* p=node->parent();
+    assert(p);
+    std::vector<VTreeNode*>::iterator it=std::find(p->children_.begin(),p->children_.end(),node);
+    assert(it != p->children_.end());
+    if(it != p->children_.end())
+    {
+        removeChildren(node);
+        p->children_.erase(it);
+        delete node;
+        nodeVec_[node->vnode()->index()]=NULL;
+        totalNum_--;
+        assert(totalNum_ >=0);
+    }
+}
+
+
+//----------------------------------------------------------------
+// Build/insert a branch fro the given parentNode
+//----------------------------------------------------------------
+
+VTreeNode* VTree::makeBranch(const std::vector<VNode*>& filter,VTreeNode* parentNode)
 {
-    VNode* vnode=node->vnode();
+    VNode* vnode=parentNode->vnode();
+    VTreeNode *branch=new VTreeNode(vnode,0);
+
     assert(filter[vnode->index()] != NULL);
 
     for(unsigned int i=0; i < vnode->numOfChildren();i++)
     {
         build(branch,vnode->childAt(i),filter);
     }
+
+    return branch;
 }
 
-void VTree::addBranch(VTreeNode* node,VTreeNode* branch)
+void VTree::replaceWithBranch(VTreeNode* node,VTreeNode* branch)
 {
     assert(node->vnode() == branch->vnode());
+    assert(node->numOfChildren() == 0);
 
     for(unsigned int i=0; i < branch->numOfChildren();i++)
     {
@@ -239,9 +315,58 @@ void VTree::addBranch(VTreeNode* node,VTreeNode* branch)
         node->addChild(branch->childAt(i));
     }
 
+    //Update the children count in the toplevel node (suite)
+    VNode* s=node->vnode()->suite();
+    assert(s);
+    VTreeNode *sn=nodeVec_[s->index()];
+    assert(sn);
+    sn->countChildren();
+
+    totalNum_+=branch->totalNumOfChildren();
     branch->children_.clear();
 }
 
+//----------------------------------------------------------------
+// Build/insert a toplevel node (aka suite)
+//----------------------------------------------------------------
+
+VTreeNode* VTree::makeTopLevelBranch(const std::vector<VNode*>& filter,VNode* suite)
+{
+    assert(suite);
+    assert(suite->isSuite());
+    VTreeSuiteNode *branch=new VTreeSuiteNode(suite,0);
+
+    for(unsigned int i=0; i < suite->numOfChildren();i++)
+    {
+        build(branch,suite->childAt(i),filter);
+    }
+
+    branch->countChildren();
+    return branch;
+}
+
+void VTree::insertTopLevelBranch(VTreeNode* branch,int index)
+{
+    VNode* suite=branch->vnode();
+    assert(suite);
+    assert(suite->isSuite());
+    assert(index >=0 && index <=numOfChildren());
+    assert(suite->index() >=0);
+
+    if(index < numOfChildren())
+    {
+        std::vector<VTreeNode*>::iterator it=children_.begin();
+        children_.insert(it+index,branch);
+    }
+    else
+    {
+       children_.push_back(branch);
+    }
+
+    nodeVec_[suite->index()]=branch;
+    branch->parent_=this;
+    totalNum_+=branch->totalNumOfChildren()+1;
+}
 
 void VTree::clear()
 {
@@ -252,9 +377,12 @@ void VTree::clear()
     nodeVec_.clear();
     attrNum_=-1;
     totalNum_=0;
-    totalNumInChild_.clear();
 }
 
+//====================================================
+// Build the tree by using a filter
+//====================================================
+
 void VTree::build(const std::vector<VNode*>& filter)
 {
     clear();
@@ -263,30 +391,66 @@ void VTree::build(const std::vector<VNode*>& filter)
     VTreeNode *nptr=0;
     std::fill(nodeVec_.begin(), nodeVec_.end(), nptr);
 
-    int prevTotalNum=0;
-    for(unsigned int j=0; j < s->numOfChildren();j++)
+    if(filter.empty())
+        return;
+
+    assert(filter.size() == nodeVec_.size());
+
+    //int prevTotalNum=0;
+    for(unsigned int i=0; i < s->numOfChildren();i++)
+    {
+        build(this,s->childAt(i),filter);
+#if 0
+        if(build(this,s->childAt(i),filter))
+        {
+            //totalNumInChild_.push_back(totalNum_-prevTotalNum-1);
+            //prevTotalNum=totalNum_;
+        }
+#endif
+    }
+
+    for(unsigned int i=0; i < numOfChildren();i++)
     {
-        build(this,s->childAt(j),filter);
-        totalNumInChild_.push_back(totalNum_-prevTotalNum-1);
-        prevTotalNum=totalNum_;
+        children_[i]->countChildren();
+        totalNum_+=children_[i]->totalNumOfChildren()+1;
     }
 }
 
-void VTree::build(VTreeNode* parent,VNode* node,const std::vector<VNode*>& filter)
+bool VTree::build(VTreeNode* parent,VNode* node,const std::vector<VNode*>& filter)
 {
      if(filter[node->index()])
      {
-         VTreeNode *n=new VTreeNode(node,parent);
-         totalNum_++;
+         VTreeNode *n=0;
+         if(node->isSuite())
+             n=new VTreeSuiteNode(node,parent);
+         else
+             n=new VTreeNode(node,parent);
+
+         assert(n);
+
+         //if(count)
+         //{
+         //    totalNum_++;
+         //}
+
          nodeVec_[node->index()]=n;
 
          for(unsigned int j=0; j < node->numOfChildren();j++)
          {
              build(n,node->childAt(j),filter);
          }
+
+         return true;
      }
+
+     return false;
 }
 
+//====================================================
+// Build the tree by adding all the nodes to it
+// (no filter is defined)
+//====================================================
+
 void VTree::build()
 {
     clear();
@@ -295,20 +459,28 @@ void VTree::build()
     VTreeNode *nptr=0;
     std::fill(nodeVec_.begin(), nodeVec_.end(), nptr);
 
-    int prevTotalNum=0;
-    for(unsigned int j=0; j < s->numOfChildren();j++)
+    //int prevTotalNum=0;
+    for(unsigned int i=0; i < s->numOfChildren();i++)
     {     
-        build(this,s->childAt(j));
-        totalNumInChild_.push_back(totalNum_-prevTotalNum-1);
-        prevTotalNum=totalNum_;
+        build(this,s->childAt(i));
+        children_[i]->countChildren();
+        totalNum_+=children_[i]->totalNumOfChildren()+1;
+        //totalNumInChild_.push_back(totalNum_-prevTotalNum-1);
+        //prevTotalNum=totalNum_;
     }
 }
 
 void VTree::build(VTreeNode* parent,VNode* vnode)
 {
-    VTreeNode *n=new VTreeNode(vnode,parent);
+    VTreeNode *n=0;
+    if(vnode->isSuite())
+        n=new VTreeSuiteNode(vnode,parent);
+    else
+        n=new VTreeNode(vnode,parent);
+
+    assert(n);
     nodeVec_[vnode->index()]=n;
-    totalNum_++;
+    //totalNum_++;
 
     //Preallocates the children. With this we will only use the memory we really need.
     if(vnode->numOfChildren() > 0)
diff --git a/Viewer/src/VTree.hpp b/Viewer/src/VTree.hpp
index cc79f2a..daca6a9 100644
--- a/Viewer/src/VTree.hpp
+++ b/Viewer/src/VTree.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2015 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -15,6 +15,7 @@
 #include <QStringList>
 
 class VNode;
+class VAttribute;
 class VAttributeType;
 class AttributeFilter;
 class VTreeServer;
@@ -22,6 +23,7 @@ class VTree;
 
 class VTreeNode
 {
+    friend class VTree;
 public:
     VTreeNode(VNode* vnode,VTreeNode* parent);
     virtual ~VTreeNode();
@@ -37,20 +39,40 @@ public:
     virtual VTree* root() const;
     virtual VTreeServer* server() const;
 
+#if 0
     int attrRow(int row,AttributeFilter *filter) const;
-    int attrNum(AttributeFilter* filter=0) const;
+#endif
+    int attrNum(AttributeFilter* filter) const;
     bool isAttrInitialised() const;
     void updateAttrNum(AttributeFilter* filter=0);
     void resetAttrNum();
 
     virtual bool isTopLevel() const {if(parent_) return (parent_->parent())?false:true; return false;}
     virtual bool isRoot() const {return false;}
+    virtual int totalNumOfChildren() const;
 
 public:
     VNode* vnode_;
     std::vector<VTreeNode*> children_;
     VTreeNode *parent_;
     mutable short attrNum_;
+
+protected:
+    virtual void countChildren() const;
+    void countChildren(int&) const;
+
+};
+
+class VTreeSuiteNode : public VTreeNode
+{
+    friend class VTree;
+public:
+    VTreeSuiteNode(VNode* vnode,VTreeNode* parent);
+    virtual int totalNumOfChildren() const;
+
+protected:
+    void countChildren() const;
+    mutable int num_;
 };
 
 class VTree : public VTreeNode
@@ -71,8 +93,9 @@ public:
      int totalNum() const {return totalNum_;}
      int totalNumOfTopLevel(VTreeNode*) const;
      int totalNumOfTopLevel(int i) const;
-     VNode* vnodeAt(int index) const;
-
+     int indexOfTopLevel(VTreeNode*) const;
+     int indexOfTopLevelToInsert(VNode* suite) const;
+     VNode* vnodeAt(int index) const;     
      const std::vector<VTreeNode*>& nodeVec() const {return nodeVec_;}
 
 protected:
@@ -80,17 +103,19 @@ protected:
      void build(const std::vector<VNode*>& filter);
      void build();
      void removeChildren(VTreeNode*);
-     void buildBranch(const std::vector<VNode*>& filter,VTreeNode* node,VTreeNode* branch);
-     void addBranch(VTreeNode* node,VTreeNode* branch);
+     void remove(VTreeNode*);
+     VTreeNode* makeBranch(const std::vector<VNode*>& filter,VTreeNode* parentNode);
+     void replaceWithBranch(VTreeNode* node,VTreeNode* branch);
+     VTreeNode* makeTopLevelBranch(const std::vector<VNode*>& filter,VNode* suite);
+     void insertTopLevelBranch(VTreeNode* branch,int index);   
 
 private:
-     void build(VTreeNode* parent,VNode* vnode,const std::vector<VNode*>& filter);
+     bool build(VTreeNode* parent,VNode* vnode,const std::vector<VNode*>& filter);
      void build(VTreeNode* parent,VNode* vnode);
 
      VTreeServer* server_;
      std::vector<VTreeNode*> nodeVec_;
      int totalNum_;
-     std::vector<int> totalNumInChild_;
 };
 
 #endif // VTREENODE_HPP
diff --git a/Viewer/src/VariableItemWidget.cpp b/Viewer/src/VariableItemWidget.cpp
index 84b0db2..7a5801e 100644
--- a/Viewer/src/VariableItemWidget.cpp
+++ b/Viewer/src/VariableItemWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -11,6 +11,7 @@
 
 #include <QClipboard>
 #include <QDebug>
+#include <QHeaderView>
 #include <QItemSelectionModel>
 #include <QMessageBox>
 #include <QPushButton>
@@ -20,12 +21,14 @@
 #include "IconProvider.hpp"
 #include "LineEdit.hpp"
 #include "SessionHandler.hpp"
+#include "UiLog.hpp"
 #include "UserMessage.hpp"
 #include "VariableModel.hpp"
 #include "VariableModelData.hpp"
 #include "VariableSearchLine.hpp"
 #include "VConfig.hpp"
 #include "VProperty.hpp"
+#include "WidgetNameProvider.hpp"
 
 #define _UI_VARIABLEITEMWIDGET_DEBUG
 
@@ -109,12 +112,14 @@ VariablePropDialog::VariablePropDialog(VariableModelDataHandler *data,int define
     messageLabel_->hide();
 
     readSettings();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 VariablePropDialog::~VariablePropDialog()
 {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariablePropDialog::~VariablePropDialog -->");
+    UiLog().dbg() << "VariablePropDialog::~VariablePropDialog -->";
 #endif
     Q_ASSERT(data_);
     data_->removeObserver(this);
@@ -340,6 +345,8 @@ VariableAddDialog::VariableAddDialog(VariableModelDataHandler *data,QWidget *par
     nameEdit_->setFocus();
 
     readSettings();
+
+    WidgetNameProvider::nameChildren(this);
 }
 
 VariableAddDialog::VariableAddDialog(VariableModelDataHandler *data,QString name, QString value,QWidget *parent) :
@@ -599,6 +606,13 @@ VariableItemWidget::VariableItemWidget(QWidget *parent) : shadowProp_(0)
     varView->setSelectionBehavior(QAbstractItemView::SelectRows);
     varView->setSelectionMode(QAbstractItemView::SingleSelection);
 
+    //varView->setSelectionMode(QAbstractItemView::ExtendedSelection);
+
+#if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0)
+    varView->header()->setSectionResizeMode(1,QHeaderView::ResizeToContents);
+    varView->header()->setStretchLastSection(false);
+#endif
+
     //Shadowed variables
     bool showShadowed = true;
     //We do not want to observe it!
@@ -709,6 +723,8 @@ void VariableItemWidget::reload(VInfo_ptr info)
         actionAdd->setToolTip(tr("Add new variable to ") +
                            "<b>" + QString::fromStdString(data_->data(0)->name()) + "</b>");
     }
+
+    checkActionState();
 }
 
 void VariableItemWidget::clearContents()
@@ -722,7 +738,7 @@ void VariableItemWidget::clearContents()
 void VariableItemWidget::slotItemSelected(const QModelIndex& idx,const QModelIndex& prevIdx)
 {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariableItemWidget::slotItemSelected -->");
+    UiLog().dbg() << "VariableItemWidget::slotItemSelected -->";
     qDebug() << "  current:" << idx << "prev:" << prevIdx;
     qDebug() << "  in view:" << varView->currentIndex();
 #endif
@@ -743,7 +759,7 @@ void VariableItemWidget::checkActionState()
 	QModelIndex vIndex=varView->currentIndex();
 	QModelIndex index=sortModel_->mapToSource(vIndex);
 
-    if(suspended_)
+    if(suspended_ || !info_)
     {
          actionAdd->setEnabled(false);
          actionProp->setEnabled(false);
@@ -756,7 +772,6 @@ void VariableItemWidget::checkActionState()
 	//The index is invalid (no selection)
 	if(!index.isValid())
 	{
-		actionAdd->setEnabled(false);
 		actionProp->setEnabled(false);
         actionDelete->setEnabled(false);
         actionCopy->setEnabled(false);
@@ -768,13 +783,11 @@ void VariableItemWidget::checkActionState()
 		if(model_->isVariable(index))
 		{
 			if(frozen_)
-			{
-				actionAdd->setEnabled(false);
+			{				
 				actionDelete->setEnabled(false);
 			}
 			else
-			{
-				actionAdd->setEnabled(true);
+			{				
                 int block=-1;
                 if(model_->indexToData(index,block))
                 {
@@ -794,13 +807,11 @@ void VariableItemWidget::checkActionState()
 		else
 		{
 			if(frozen_)
-			{
-				actionAdd->setEnabled(false);
+			{				
 				actionDelete->setEnabled(false);
 			}
 			else
-			{
-				actionAdd->setEnabled(true);
+			{				
 				actionDelete->setEnabled(false);
 			}
             actionProp->setEnabled(false);
@@ -808,6 +819,15 @@ void VariableItemWidget::checkActionState()
             actionCopyFull->setEnabled(false);
 		}
 	}
+
+    if(frozen_)
+    {
+        actionAdd->setEnabled(false);
+    }
+    else
+    {
+        actionAdd->setEnabled(true);
+    }
 }
 
 void VariableItemWidget::editItem(const QModelIndex& index)
@@ -817,7 +837,7 @@ void VariableItemWidget::editItem(const QModelIndex& index)
 	bool genVar;
 
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariableItemWidget::editItem -->");
+    UiLog().dbg() << "VariableItemWidget::editItem -->";
     qDebug() << "   index:" << index;
 #endif
 
@@ -831,7 +851,7 @@ void VariableItemWidget::editItem(const QModelIndex& index)
     VariableModelData* data=model_->indexToData(vIndex,block);
 
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::qdebug("   block=" + QString::number(block));
+    UiLog().dbg() << "   block=" << block;
 #endif
 
     //Get the data from the model
@@ -854,7 +874,7 @@ void VariableItemWidget::editItem(const QModelIndex& index)
 	}
 
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("<-- VariableItemWidget::editItem");
+    UiLog().dbg() << "<-- editItem";
 #endif
 
 }
@@ -1054,14 +1074,14 @@ void VariableItemWidget::toClipboard(QString txt) const
 void VariableItemWidget::slotFilterTextChanged(QString text)
 {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariableItemWidget::slotFilterTextChanged -->");
+    UiLog().dbg() << "VariableItemWidget::slotFilterTextChanged -->";
     qDebug() << "selected before:" <<   varView->currentIndex();
 #endif
     sortModel_->setMatchText(text);
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
     qDebug() << "selected after:" <<   varView->currentIndex();
     qDebug() << sortModel_->data(varView->currentIndex());
-    //UserMessage::debug("<-- VariableItemWidget::slotFilterTextChanged");
+    //UiLog().dbg() << "<-- slotFilterTextChanged";
 #endif
 }
 
@@ -1069,7 +1089,7 @@ void VariableItemWidget::slotFilterTextChanged(QString text)
 void VariableItemWidget::nodeChanged(const VNode* node, const std::vector<ecf::Aspect::Type>& aspect)
 {                
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariableItemWidget::nodeChanged -->");
+    UiLog().dbg() << "VariableItemWidget::nodeChanged -->";
     qDebug() << "selected before:" <<   varView->currentIndex();
 #endif
 
@@ -1078,34 +1098,34 @@ void VariableItemWidget::nodeChanged(const VNode* node, const std::vector<ecf::A
     if(data_->nodeChanged(node,aspect))
     {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-        UserMessage::debug("   reselect currentIndex!");
+        UiLog().dbg() << " reselect currentIndex!";
 #endif
         //After any change we need to reselect the current row. See issue ECFLOW-613.
         reselectCurrent();
     }
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
     qDebug() << "selected after:" <<   varView->currentIndex();
-    UserMessage::debug("<-- VariableItemWidget::nodeChanged");
+    UiLog().dbg() << "<-- nodeChanged";
 #endif
 }
 
 void VariableItemWidget::defsChanged(const std::vector<ecf::Aspect::Type>& aspect)
 {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-    UserMessage::debug("VariableItemWidget::defsChanged -->");
+    UiLog().dbg() << "VariableItemWidget::defsChanged -->";
     qDebug() << "selected before:" <<   varView->currentIndex();
 #endif
     if(data_->defsChanged(aspect))
     {
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
-        UserMessage::debug("   reselect currentIndex!");
+        UiLog().dbg() << " reselect currentIndex!";
 #endif
         //After any change we need to reselect the current row. See issue ECFLOW-613.
         reselectCurrent();
     }
 #ifdef _UI_VARIABLEITEMWIDGET_DEBUG
     qDebug() << "selected after:" <<   varView->currentIndex();
-    UserMessage::debug("<-- VariableItemWidget::defsChanged");
+    UiLog().dbg() << "<-- defsChanged";
 #endif
 }
 
diff --git a/Viewer/src/VariableItemWidget.hpp b/Viewer/src/VariableItemWidget.hpp
index 123a0d8..8aef7cd 100644
--- a/Viewer/src/VariableItemWidget.hpp
+++ b/Viewer/src/VariableItemWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
diff --git a/Viewer/src/VariableItemWidget.ui b/Viewer/src/VariableItemWidget.ui
index 4c5eca9..25bc480 100644
--- a/Viewer/src/VariableItemWidget.ui
+++ b/Viewer/src/VariableItemWidget.ui
@@ -17,16 +17,7 @@
    <property name="spacing">
     <number>2</number>
    </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
+   <property name="margin">
     <number>0</number>
    </property>
    <item>
@@ -72,7 +63,7 @@
         <string/>
        </property>
        <property name="icon">
-        <iconset>
+        <iconset resource="viewer.qrc">
          <normaloff>:/viewer/show_shadowed.svg</normaloff>:/viewer/show_shadowed.svg</iconset>
        </property>
        <property name="checkable">
@@ -128,7 +119,7 @@
   </layout>
   <action name="actionAdd">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/images/add.svg</normaloff>:/viewer/images/add.svg</iconset>
    </property>
    <property name="text">
@@ -143,7 +134,7 @@
   </action>
   <action name="actionProp">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/edit.svg</normaloff>:/viewer/edit.svg</iconset>
    </property>
    <property name="text">
@@ -158,8 +149,8 @@
   </action>
   <action name="actionDelete">
    <property name="icon">
-    <iconset>
-     <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
+    <iconset resource="viewer.qrc">
+     <normaloff>:/viewer/close.svg</normaloff>:/viewer/close.svg</iconset>
    </property>
    <property name="text">
     <string>&Delete variable</string>
@@ -173,7 +164,7 @@
   </action>
   <action name="actionExport">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/filesave.svg</normaloff>:/viewer/filesave.svg</iconset>
    </property>
    <property name="text">
@@ -188,7 +179,7 @@
   </action>
   <action name="actionCopy">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/editcopy.svg</normaloff>:/viewer/editcopy.svg</iconset>
    </property>
    <property name="text">
@@ -203,7 +194,7 @@
   </action>
   <action name="actionPaste">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/editpaste.svg</normaloff>:/viewer/editpaste.svg</iconset>
    </property>
    <property name="text">
@@ -218,7 +209,7 @@
   </action>
   <action name="actionFilter">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/filter_decor.svg</normaloff>:/viewer/filter_decor.svg</iconset>
    </property>
    <property name="text">
@@ -230,7 +221,7 @@
   </action>
   <action name="actionSearch">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/search_decor.svg</normaloff>:/viewer/search_decor.svg</iconset>
    </property>
    <property name="text">
@@ -256,6 +247,8 @@
    <header location="global">VariableView.hpp</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="viewer.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Viewer/src/VariableModel.cpp b/Viewer/src/VariableModel.cpp
index 163c950..c9adcb5 100644
--- a/Viewer/src/VariableModel.cpp
+++ b/Viewer/src/VariableModel.cpp
@@ -10,10 +10,9 @@
 #include "VariableModel.hpp"
 
 #include <QColor>
-#include <QDebug>
 
 #include "ServerHandler.hpp"
-#include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VariableModelData.hpp"
 
 QColor VariableModel::varCol_=QColor(40,41,42);
@@ -242,7 +241,7 @@ bool VariableModel::variable(const QModelIndex& idx, QString& name,QString& valu
 bool VariableModel::alterVariable(const QModelIndex& index, QString name,QString value)
 {
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    qDebug() << "DEBUG :" << "VariableModel::alterVariable --> index" <<  index  << " name=" <<
+    UiLog().dbg() << "VariableModel::alterVariable --> " <<  index  << " name=" <<
                      name << " value=" <<  value;
 #endif
 
@@ -262,7 +261,7 @@ bool VariableModel::alterVariable(const QModelIndex& index, QString name,QString
     identify(index,block,row);
 
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    qDebug() << "   block=" <<  block << " row=" << row;
+    UiLog().dbg() << "   block=" <<  block << " row=" << row;
 #endif
 
     if(block == -1 || row == -1)
@@ -279,7 +278,7 @@ bool VariableModel::alterVariable(const QModelIndex& index, QString name,QString
 #endif
 
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    UserMessage::debug("<-- VariableModel::alterVariable");
+    UiLog().dbg() << "<-- alterVariable";
 #endif
     return false;
 }
@@ -530,13 +529,13 @@ void VariableModel::slotAddRemoveEnd(int diff)
 void VariableModel::slotDataChanged(int block)
 {
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    UserMessage::debug("VariableModel::slotDataChanged -->");
+    UiLog().dbg() << "VariableModel::slotDataChanged -->";
 #endif
     QModelIndex blockIndex0=index(block,0);
 	QModelIndex blockIndex1=index(block,1);
 
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    qDebug() << "   emit dataChanged:" << blockIndex0 << blockIndex1;
+    UiLog().dbg() << " emit dataChanged:" << " " << blockIndex0 << " " << blockIndex1;
 #endif
 	Q_EMIT dataChanged(blockIndex0,blockIndex1);
 
@@ -544,7 +543,7 @@ void VariableModel::slotDataChanged(int block)
     Q_EMIT filterChanged();
 
 #ifdef _UI_VARIABLEMODEL_DEBUG
-    UserMessage::debug("<-- VariableModel::slotDataChanged");
+    UiLog().dbg() << "<-- slotDataChanged";
 #endif
 }
 
@@ -591,28 +590,19 @@ void VariableSortModel::setMatchText(QString txt)
 
 	if(matchMode_ == FilterMode)
 	{
-#ifdef _UI_VARIABLEMODEL_DEBUG
-        //qDebug() << "before";
-        //print(QModelIndex());
-#endif
 		//reload the filter model
 		invalidate();
-#ifdef _UI_VARIABLEMODEL_DEBUG
-        //qDebug() << "after";
-        //print(QModelIndex());
-#endif
-
 	}
 }
 
 void VariableSortModel::print(const QModelIndex idx)
 {
     if(rowCount(idx) > 0)
-        qDebug() << "-->" << idx << mapToSource(idx) << data(idx);
+        UiLog().dbg() << "--> " << idx << " " << mapToSource(idx) << " " << data(idx);
     else
-        qDebug() << idx << mapToSource(idx) << data(idx);
+        UiLog().dbg() << idx << " " << mapToSource(idx) << " " << data(idx);
 
-    if(rowCount(idx) > 0) qDebug() << "children:";
+    if(rowCount(idx) > 0)  UiLog().dbg() << "children: ";
     for(int i=0; i < rowCount(idx); i++)
     {
         print(index(i,0,idx));
@@ -628,7 +618,7 @@ void VariableSortModel::slotFilterChanged()
 void VariableSortModel::slotRerunFilter()
 {
 #ifdef _UI_VARIABLEMODEL_DEBUG
-   UserMessage::debug("VariableSortModel::slotRerunFilter-->");
+   UiLog().dbg() << "VariableSortModel::slotRerunFilter-->";
 #endif
    invalidate();
 }
@@ -704,9 +694,7 @@ QVariant VariableSortModel::data(const QModelIndex& idx,int role) const
     {
         int col2=(idx.column()==0)?1:0;
         QModelIndex idx2=index(idx.row(),col2,idx.parent());
-            
-        //qDebug() << idx << idx2;
-        
+
         if(matchLst_.contains(idx) || matchLst_.contains(idx2))
             return QColor(169,210,176);
     }
diff --git a/Viewer/src/VariableModelData.cpp b/Viewer/src/VariableModelData.cpp
index b69070b..2aeaf73 100644
--- a/Viewer/src/VariableModelData.cpp
+++ b/Viewer/src/VariableModelData.cpp
@@ -11,18 +11,18 @@
 
 #include "ServerHandler.hpp"
 #include "UserMessage.hpp"
+#include "UiLog.hpp"
 #include "VariableModelDataObserver.hpp"
 #include "VNode.hpp"
 #include "VNState.hpp"
 
-#include <QDebug>
 #include <QString>
 
 static std::string defaultStr("");
 
 QStringList VariableModelData::readOnlyVars_;
 
-#define _UI_VARIABLEMODELDATA_DEBBUG
+#define _UI_VARIABLEMODELDATA_DEBUG
 
 //==========================================
 //
@@ -37,8 +37,8 @@ VariableModelData::VariableModelData(VInfo_ptr info) :
 
 	if(readOnlyVars_.isEmpty())
 	{
-		readOnlyVars_ << "ECF_NODE" << "ECF_PORT" << "ECF_PID" << "ECF_VERSION" <<
-				"ECF_LISTS";
+		readOnlyVars_ << "ECF_NODE" << "ECF_HOST" << "ECF_PORT" << "ECF_PID"
+		      << "ECF_VERSION" << "ECF_LISTS";
 	}
 }
 
@@ -333,19 +333,19 @@ void VariableModelData::latestVars(std::vector<Variable>& v,std::vector<Variable
 
 bool VariableModelData::updateShadowed(std::set<std::string>& names)
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelData::updateShadowed -->  node=" + name());
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelData::updateShadowed --> node=" << name();
 #endif
 
     std::set<std::string> ori=shadowed_;
     shadowed_.clear();
     bool changed=false;
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("   ori shadowed:");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << " ori shadowed:";
     for(std::set<std::string>::const_iterator it=ori.begin(); it != ori.end(); ++it)
     {
-        UserMessage::debug("      " + *it);
+         UiLog().dbg() << "  "  << *it;
     }
 #endif
 
@@ -368,18 +368,18 @@ bool VariableModelData::updateShadowed(std::set<std::string>& names)
         names.insert(genVars_[i].name());
     }
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("   shadowed:");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << " shadowed:";
     for(std::set<std::string>::const_iterator it=shadowed_.begin(); it != shadowed_.end(); ++it)
     {
-        UserMessage::debug("      " + *it);
+        UiLog().dbg() << "  " <<  *it;
     }
 
-    UserMessage::qdebug("   changed: " + QString::number(changed));
+    UiLog().dbg() << " changed: " << changed;
 #endif
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("<-- VariableModelData::updateShadowed");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "<-- updateShadowed";
 #endif
 
     return changed;
@@ -423,29 +423,27 @@ int VariableModelData::checkUpdateDiff(std::vector<Variable>& v,std::vector<Vari
 //variables are the same but some of their names or values have been changed.
 bool VariableModelData::update(const std::vector<Variable>& v,const std::vector<Variable>& vg)
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelData::update -->");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelData::update -->";
 #endif
 
 #if 0
     if(info_ && info_->node() && v.empty() && vg.empty())
 	{
-        latestVars(v,vg);
-
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("   call latestVars");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << " call latestVars";
 #endif
-
+        latestVars(v,vg);
 	}
 #endif
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("   new list of variables:");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << " new list of variables:";
     for(size_t i=0; i < v.size(); i++)
-        UserMessage::debug("     " + v[i].name() + "=" + v[i].theValue());
-    UserMessage::debug("   new list of generated variables:");
+         UiLog().dbg() << "  " <<  v[i].name() << "=" << v[i].theValue();
+    UiLog().dbg() << "   new list of generated variables:";
     for(size_t i=0; i < vg.size(); i++)
-        UserMessage::debug("     " + vg[i].name() + "=" + vg[i].theValue());
+        UiLog().dbg() << "  " << vg[i].name() << "=" << vg[i].theValue();
 #endif
 
     //We must have the same number of variables
@@ -455,10 +453,10 @@ bool VariableModelData::update(const std::vector<Variable>& v,const std::vector<
     if(v.size() != vars_.size() || vg.size() != genVars_.size())
     {
         changed=true;
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::qdebug("   variables size changed! var: " + QString::number(vars_.size()) +
-                            " -> " +  QString::number(v.size()) + "gen var: " +
-                            QString::number(genVars_.size()) + " -> " +  QString::number(vg.size()));
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << " variables size changed! var: " << vars_.size() <<
+                            " -> " <<  v.size() << "gen var: " <<
+                            genVars_.size() << " -> " <<  vg.size();
 #endif
     }
     else
@@ -467,9 +465,9 @@ bool VariableModelData::update(const std::vector<Variable>& v,const std::vector<
         {
             if(vars_[i].name() != v[i].name() || vars_[i].theValue() != v[i].theValue())
             {                
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-                UserMessage::debug("   variable changed! name: " + vars_[i].name() + " -> " +
-                           v[i].name()  + " value: " +   vars_[i].theValue() + " -> " +   v[i].theValue());
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+                UiLog().dbg() << "   variable changed! name: " << vars_[i].name() << " -> " <<
+                           v[i].name()  << " value: " <<   vars_[i].theValue() << " -> " <<  v[i].theValue();
 #endif
                 changed=true;
                 break;
@@ -482,11 +480,10 @@ bool VariableModelData::update(const std::vector<Variable>& v,const std::vector<
             {
                 if(genVars_[i].name() != vg[i].name() || genVars_[i].theValue() != vg[i].theValue())
                 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-                    UserMessage::debug("   generated variable changed! name: " + genVars_[i].name() + " -> " +
-                           vg[i].name()  + " value: " +   genVars_[i].theValue() + " -> " +   vg[i].theValue());
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+                    UiLog().dbg() << "   generated variable changed! name: " << genVars_[i].name() << " -> " <<
+                           vg[i].name()  << " value: " <<   genVars_[i].theValue() << " -> " << vg[i].theValue();
 #endif
-
                     changed=true;
                     break;
                 }
@@ -498,13 +495,13 @@ bool VariableModelData::update(const std::vector<Variable>& v,const std::vector<
 	{
 		vars_=v;
 		genVars_=vg;        
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::debug("   updated vars and genvars");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << "   updated vars and genvars";
 #endif
 	}
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("<-- VariableModelData::update");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "<-- update";
 #endif
 
 	return changed;
@@ -580,8 +577,8 @@ void VariableModelDataHandler::reload()
 
 bool VariableModelDataHandler::updateShadowed()
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelDataHandler::updateShadowed -->");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelDataHandler::updateShadowed -->";
 #endif
 
     bool shadowChanged=false;
@@ -603,11 +600,11 @@ bool VariableModelDataHandler::updateShadowed()
             shadowChanged=true;
     }
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("   names:");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "   names:";
     for(std::set<std::string>::const_iterator it=names_.begin(); it != names_.end(); ++it)
     {
-        UserMessage::debug("      " + *it);
+        UiLog().dbg() << "      " + *it;
     }
 #endif
 
@@ -653,8 +650,8 @@ VariableModelData* VariableModelDataHandler::data(int index) const
 //It is called when a node changed.
 bool VariableModelDataHandler::nodeChanged(const VNode* node, const std::vector<ecf::Aspect::Type>& aspect)
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelDataHandler::nodeChanged -->");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelDataHandler::nodeChanged -->";
 #endif
     int dataIndex=-1;
 	for(unsigned int i=0; i < data_.size(); i++)
@@ -666,15 +663,15 @@ bool VariableModelDataHandler::nodeChanged(const VNode* node, const std::vector<
 		}
 	}
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::qdebug("   dataIndex=" + QString::number(dataIndex));
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << " dataIndex=" << dataIndex;
 #endif
     Q_ASSERT(dataIndex != -1);
 
     bool retVal=updateVariables(dataIndex);
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-            UserMessage::debug("<-- VariableModelDataHandler::nodeChanged");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+            UiLog().dbg() << "<-- nodeChanged";
 #endif
     if(retVal)
         broadcastUpdate();
@@ -685,14 +682,14 @@ bool VariableModelDataHandler::nodeChanged(const VNode* node, const std::vector<
 //It is called when the server defs was changed
 bool VariableModelDataHandler::defsChanged(const std::vector<ecf::Aspect::Type>& aspect)
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelDataHandler::defsChanged -->");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelDataHandler::defsChanged -->";
 #endif
 
     if(data_.size() == 0)
     {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::debug("<-- VariableModelDataHandler::defsChanged");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << "<-- defsChanged";
 #endif
         return false;
     }
@@ -705,8 +702,8 @@ bool VariableModelDataHandler::defsChanged(const std::vector<ecf::Aspect::Type>&
 
     bool retVal=updateVariables(dataIndex);
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("<-- VariableModelDataHandler::defsChanged");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "<-- defsChanged";
 #endif
 
     if(retVal)
@@ -718,8 +715,8 @@ bool VariableModelDataHandler::defsChanged(const std::vector<ecf::Aspect::Type>&
 //It is called when the server defs was changed
 bool VariableModelDataHandler::updateVariables(int dataIndex)
 {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-    UserMessage::debug("VariableModelDataHandler::updateVariables -->");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+    UiLog().dbg() << "VariableModelDataHandler::updateVariables -->";
 #endif
 
     bool retVal=false;
@@ -736,8 +733,8 @@ bool VariableModelDataHandler::updateVariables(int dataIndex)
     //If the number of the variables is not the same as we store we reset the given block in the model
     if(cntDiff != 0)
     {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::qdebug("    cntDiff=" + QString::number(cntDiff));
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << "    cntDiff=" << cntDiff;
 #endif
         const int numNew=v.size()+vg.size();
 
@@ -754,16 +751,16 @@ bool VariableModelDataHandler::updateVariables(int dataIndex)
         //Check if the shadowed list of variables changed
         if(updateShadowed())
         {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-            UserMessage::qdebug("   emit rerunFilter");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+            UiLog().dbg() << "   emit rerunFilter()";
 #endif
             Q_EMIT rerunFilter();
         }
         //The shadowed list did not change
         else
         {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-            UserMessage::qdebug("   emit dataChanged");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+            UiLog().dbg() << "   emit dataChanged";
 #endif
             //Update the data item in the model
             Q_EMIT dataChanged(dataIndex);
@@ -774,8 +771,8 @@ bool VariableModelDataHandler::updateVariables(int dataIndex)
     //Check if some variables' name or value changed
     else
     {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::debug("   Change: NODE_VARIABLE");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << "   Change: NODE_VARIABLE";
 #endif
         //At this point we must have the same number of vars
         const int numNew=v.size()+vg.size();
@@ -787,8 +784,8 @@ bool VariableModelDataHandler::updateVariables(int dataIndex)
         //Update the names/values
         if(data_.at(dataIndex)->update(v,vg))
         {
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-            UserMessage::debug("   Variable name or value changed");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+            UiLog().dbg() << "   Variable name or value changed";
 #endif
             //At this point the stored variables are already updated
             if(nameChanged)
@@ -810,8 +807,8 @@ bool VariableModelDataHandler::updateVariables(int dataIndex)
         retVal=true;
     }
 
-#ifdef _UI_VARIABLEMODELDATA_DEBBUG
-        UserMessage::debug("<-- VariableModelDataHandler::updateVariables");
+#ifdef _UI_VARIABLEMODELDATA_DEBUG
+        UiLog().dbg() << "<-- updateVariables";
 #endif
 
     return retVal;
diff --git a/Viewer/src/VariableView.cpp b/Viewer/src/VariableView.cpp
index 7d7efe3..ba099ee 100644
--- a/Viewer/src/VariableView.cpp
+++ b/Viewer/src/VariableView.cpp
@@ -14,6 +14,7 @@
 #include <QImageReader>
 #include <QItemSelectionModel>
 #include <QPainter>
+#include <QHeaderView>
 
 #include "IconProvider.hpp"
 #include "VariableModel.hpp"
@@ -25,7 +26,7 @@
 //
 //========================================================
 
-VariableDelegate::VariableDelegate(QWidget *parent) : QStyledItemDelegate(parent)
+VariableDelegate::VariableDelegate(QTreeView *parent) : QStyledItemDelegate(parent), view_(parent)
 {
     selectPen_=QPen(QColor(8,117,182));
     selectBrush_=QBrush(QColor(65,139,212));
@@ -78,6 +79,8 @@ void VariableDelegate::paint(QPainter *painter,const QStyleOptionViewItem &optio
     	{
             painter->fillRect(bgRect,bg);
     	}
+        //alternating row colour?
+        else {}
     }
 
     //Paint selection. This should be transparent.
@@ -87,12 +90,12 @@ void VariableDelegate::paint(QPainter *painter,const QStyleOptionViewItem &optio
         QRect selectRect;
         if(hasChild)
         {
-            selectRect=option.rect.adjusted(0,1,0,-1);
+            selectRect=bgRect.adjusted(0,1,0,-1);
             painter->fillRect(selectRect,selectBrushBlock_);
         }
         else
         {
-            selectRect=option.rect.adjusted(0,1,0,-1);
+            selectRect=bgRect.adjusted(0,1,0,-1);
 
             //For the first column we extend the selection
             //rect to left edge.
@@ -253,6 +256,14 @@ QSize VariableDelegate::sizeHint(const QStyleOptionViewItem & option, const QMod
 
 	size+=QSize(0,2);
 
+    //We need to starcth the second column to the right edge of the viewport
+    if(index.column() == 1)
+    {
+        int w1=view_->header()->sectionSize(0);
+        int w=view_->viewport()->size().width();
+        if(w1+size.width() < w)
+            size.setWidth(w-w1+1);
+    }
     return size;
 }
 
@@ -272,7 +283,7 @@ VariableView::VariableView(QWidget* parent) : TreeView(parent)
 	setRootIsDecorated(true);
 	setAllColumnsShowFocus(true);
 	setUniformRowHeights(true);
-	setAlternatingRowColors(true);
+    //setAlternatingRowColors(true);
     setSortingEnabled(true);
 
 	//Context menu
@@ -302,16 +313,3 @@ void VariableView::drawBranches(QPainter* painter,const QRect& rect,const QModel
 		QTreeView::drawBranches(painter,rect,index);
 	}
 }
-
-/*
-void VariableView::slotSelectItem(const QModelIndex&)
-{
-
-}
-
-void VariableView::reload(VInfo_ptr info)
-{
-	//model_->setData(info);
-	//expandAll();
-}
-*/
diff --git a/Viewer/src/VariableView.hpp b/Viewer/src/VariableView.hpp
index 835a55e..c079d9f 100644
--- a/Viewer/src/VariableView.hpp
+++ b/Viewer/src/VariableView.hpp
@@ -26,7 +26,7 @@ class VariableDelegate : public QStyledItemDelegate
     friend class VariableView;
 
 public:
-    explicit VariableDelegate(QWidget *parent=0);
+    explicit VariableDelegate(QTreeView *parent);
     void paint(QPainter *painter,const QStyleOptionViewItem &option,
                    const QModelIndex& index) const;
     QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index ) const;
@@ -39,6 +39,8 @@ protected:
     QPixmap lockPix_;
     int genVarPixId_;
     int shadowGenVarPixId_;
+    QTreeView* view_;
+
 };
 
 class VariableView : public TreeView
@@ -48,6 +50,7 @@ public:
 
 protected:
     void drawBranches(QPainter* painter,const QRect& rect,const QModelIndex& index ) const;
+
     VariableDelegate *delegate_;
 };
 
diff --git a/Viewer/src/ViewerMain.cpp b/Viewer/src/ViewerMain.cpp
index f3e39ad..0ecaf6a 100644
--- a/Viewer/src/ViewerMain.cpp
+++ b/Viewer/src/ViewerMain.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF. 
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0 
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
 // In applying this licence, ECMWF does not waive the privileges and immunities 
@@ -15,12 +15,14 @@
 #include <QDebug>
 #include <QFile>
 #include <QStyleFactory>
+#include <QPixmap>
 
 #include "File.hpp"
 #include "MainWindow.hpp"
 #include "ServerHandler.hpp"
 #include "MenuHandler.hpp"
 #include "InfoPanelHandler.hpp"
+#include "InputEventLog.hpp"
 #include "DirectoryHandler.hpp"
 #include "Highlighter.hpp"
 #include "NodeQueryHandler.hpp"
@@ -28,9 +30,11 @@
 #include "Palette.hpp"
 #include "ServerList.hpp"
 #include "VConfig.hpp"
+#include "VIcon.hpp"
 #include "VServerSettings.hpp"
 #include "SessionHandler.hpp"
 #include "SessionDialog.hpp"
+#include "UiLog.hpp"
 
 int main(int argc, char **argv)
 {
@@ -44,6 +48,8 @@ int main(int argc, char **argv)
     //Init qt
     QApplication app(argc, argv);
 
+    app.setWindowIcon(QPixmap(":/viewer/logo_small.png"));
+
     QStringList styleLst=QStyleFactory::keys();
 
     //Set the style
@@ -67,7 +73,8 @@ int main(int argc, char **argv)
     //app.setFont(font);
 
     //Initialise the config and other paths
-    DirectoryHandler::init(std::string(argv[0]));  // we need to tell the Directory class where we started from
+    std::string exe(argv[0]);
+    DirectoryHandler::init(exe);  // we need to tell the Directory class where we started from
 
     //Set the stylesheet
     std::string styleSheetFileName="viewer.qss";
@@ -98,7 +105,8 @@ int main(int argc, char **argv)
     std::string queryDir = DirectoryHandler::concatenate(DirectoryHandler::configDir(), "query");
     NodeQueryHandler::instance()->init(queryDir);
 
-    //Initialise the server list
+    //Initialise the server list. This will update the server list
+    //from the central the system server list
     ServerList::instance()->init();
 
     //Load the global configurations
@@ -120,6 +128,9 @@ int main(int argc, char **argv)
 		      "ecflowview_palette.json")); 
 
 
+    //Initialise the list containing all the icon names existed on last exit
+    VIcon::initLastNames();
+
 	// startup - via the session manager, or straight to the main window?
 	bool startMainWindow = true;
 
@@ -129,6 +140,10 @@ int main(int argc, char **argv)
 		if (sessionDialog.exec() != QDialog::Accepted)
 			startMainWindow = false;
 	}
+	else
+	{
+		SessionHandler::setTemporarySessionIfReqested(); // user starts with -ts command-line switch?
+	}
 
 	if (startMainWindow)
 	{
@@ -138,6 +153,12 @@ int main(int argc, char **argv)
 		//Show all the windows
 		MainWindow::showWindows();
 
+        //Start input event logging
+        InputEventLog::instance()->start();
+
+        //Enable (daily) truncation for ui log
+        UiLog::enableTruncation();
+
 		return app.exec();
 	}
 	else
diff --git a/Viewer/src/WhyItemWidget.cpp b/Viewer/src/WhyItemWidget.cpp
index f8201f1..7e2679e 100644
--- a/Viewer/src/WhyItemWidget.cpp
+++ b/Viewer/src/WhyItemWidget.cpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -9,12 +9,14 @@
 
 #include "WhyItemWidget.hpp"
 
+#include <QDebug>
+
 #include "Node.hpp"
 
 #include "VConfig.hpp"
+#include "VItemPathParser.hpp"
 #include "VNode.hpp"
 
-
 //========================================================
 //
 // WhyItemWidget
@@ -26,10 +28,18 @@ WhyItemWidget::WhyItemWidget(QWidget *parent) : CodeItemWidget(parent)
 	messageLabel_->hide();
 	fileLabel_->hide();
 	textEdit_->setShowLineNumbers(false);
+    textEdit_->setHyperlinkEnabled(true);
 
 	//Editor font
 	textEdit_->setFontProperty(VConfig::instance()->find("panel.why.font"));
 
+    //Set css for the text formatting
+    QString cssDoc="a:link { text-decoration:none; color: #0645AD;}";
+    textEdit_->document()->setDefaultStyleSheet(cssDoc);
+
+
+    connect(textEdit_,SIGNAL(hyperlinkActivated(QString)),
+            this,SLOT(anchorClicked(QString)));
 }
 
 WhyItemWidget::~WhyItemWidget()
@@ -54,7 +64,8 @@ void WhyItemWidget::reload(VInfo_ptr info)
 
     if(info_)
 	{
-		textEdit_->setPlainText(why());
+        //textEdit_->setPlainText(why());
+        textEdit_->appendHtml(why());
 	}
 }
 
@@ -82,11 +93,63 @@ QString WhyItemWidget::why() const
 		}
 	}
 
-	for (std::vector<std::string>::const_iterator it=theReasonWhy.begin(); it != theReasonWhy.end(); ++it)
-		s+=QString::fromStdString(*it) + "\n";
+    s=makeHtml(theReasonWhy);
+    return s;
+}
 
+
+QString WhyItemWidget::makeHtml(const std::vector<std::string>& rawTxt) const
+{
+    QString s;
+    for(std::vector<std::string>::const_iterator it=rawTxt.begin(); it != rawTxt.end(); ++it)
+    {
+        QString line=QString::fromStdString(*it);
+        QRegExp rx("'\\S+:(\\S+)'");
+        if(rx.indexIn(line) > -1 && rx.captureCount() == 1)
+        {
+            QString path=rx.cap(1);
+            rx=QRegExp("'(\\S+):");
+            QString type,typeOri;
+            if(rx.indexIn(line) > -1 && rx.captureCount() == 1)
+            {
+                typeOri=rx.cap(1);
+                type=typeOri.toLower();
+            }
+
+            QString anchor=QString::fromStdString(VItemPathParser::encode(path.toStdString(),type.toStdString()));
+            line.replace("\'" + typeOri + ":"," " + typeOri + " ");
+            line.replace(path + "'","<a href=\'" + anchor  + "\'>" + path +"</a>");
+
+        }
+        else
+        {
+            rx=QRegExp("\\s+(/\\S+)\\b");
+            if(rx.indexIn(line) > -1 && rx.captureCount() == 1)
+            {
+                QString path=rx.cap(1);
+                rx=QRegExp("(SUITE|FAMILY|TASK|ALIAS)");
+                QString type;
+                if(rx.indexIn(line) > -1 && rx.captureCount() == 1)
+                {
+                    type=rx.cap(1);
+                }
+
+                QString anchor=QString::fromStdString(VItemPathParser::encode(path.toStdString(),type.toStdString()));
+                line.replace(path,"<a href=\'" + anchor  + "\'>" + path +"</a>");
+            }
+        }
+
+
+
+        s+=line+"<br>";
+    }
     return s;
 }
 
+void WhyItemWidget::anchorClicked(QString link)
+{
+    linkSelected(link.toStdString());
+}
+
 static InfoPanelItemMaker<WhyItemWidget> maker1("why");
 
diff --git a/Viewer/src/WhyItemWidget.hpp b/Viewer/src/WhyItemWidget.hpp
index 3988066..b1e3d3d 100644
--- a/Viewer/src/WhyItemWidget.hpp
+++ b/Viewer/src/WhyItemWidget.hpp
@@ -1,5 +1,5 @@
 //============================================================================
-// Copyright 2014 ECMWF.
+// Copyright 2016 ECMWF.
 // This software is licensed under the terms of the Apache Licence version 2.0
 // which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 // In applying this licence, ECMWF does not waive the privileges and immunities
@@ -21,6 +21,8 @@ class VNode;
 
 class WhyItemWidget : public CodeItemWidget, public InfoPanelItem
 {
+Q_OBJECT
+
 public:
 	explicit WhyItemWidget(QWidget *parent=0);
 	~WhyItemWidget();
@@ -32,11 +34,15 @@ public:
     void nodeChanged(const VNode*, const std::vector<ecf::Aspect::Type>&) {}
     void defsChanged(const std::vector<ecf::Aspect::Type>&) {}
 
+protected Q_SLOTS:
+    void anchorClicked(QString link);
+
 protected:
     void updateState(const ChangeFlags&) {}
 
 private:
-	QString why() const;
+    QString why() const;
+    QString makeHtml(const std::vector<std::string>&) const;
 };
 
 #endif
diff --git a/Viewer/src/WidgetNameProvider.cpp b/Viewer/src/WidgetNameProvider.cpp
new file mode 100644
index 0000000..96adf87
--- /dev/null
+++ b/Viewer/src/WidgetNameProvider.cpp
@@ -0,0 +1,116 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#include "WidgetNameProvider.hpp"
+
+#include <QAbstractButton>
+#include <QAbstractScrollArea>
+#include <QAction>
+#include <QDialogButtonBox>
+#include <QList>
+#include <QScrollArea>
+#include <QStackedWidget>
+#include <QTabWidget>
+#include <QTabBar>
+#include <QToolBar>
+
+void WidgetNameProvider::nameChildren(QWidget* w)
+{
+    nameButtons(w->actions());
+
+    Q_FOREACH(QToolBar* tb,w->findChildren<QToolBar*>(QString(),Qt::FindDirectChildrenOnly))
+    {
+        nameButtons(tb->actions());
+    }
+
+    Q_FOREACH(QDialogButtonBox* bb,w->findChildren<QDialogButtonBox*>(QString()))
+    {
+        nameButtons(bb);
+    }
+
+    Q_FOREACH(QTabWidget* t,w->findChildren<QTabWidget*>(QString()))
+    {
+        nameTabWidget(t);
+    }
+
+    Q_FOREACH(QAbstractScrollArea* sa,w->findChildren<QAbstractScrollArea*>(QString()))
+    {
+        nameViewport(sa->viewport());
+    }
+}
+
+
+void WidgetNameProvider::nameButtons(QList<QAction*> acLst)
+{
+    Q_FOREACH(QAction *ac,acLst)
+    {
+        Q_FOREACH(QWidget* w,ac->associatedWidgets())
+        {
+            if(w->objectName().isEmpty())
+            {
+                w->setObjectName(ac->objectName());
+            }
+        }
+    }
+}
+
+void WidgetNameProvider::nameButtons(QDialogButtonBox* bb)
+{
+    Q_FOREACH(QAbstractButton* pb, bb->buttons())
+    {
+        if(pb->objectName().isEmpty())
+        {
+            QString t=pb->text();
+            pb->setObjectName(t.remove("&"));
+        }
+    }
+}
+
+void WidgetNameProvider::nameTabWidget(QTabWidget* t)
+{
+    Q_FOREACH(QTabBar* tb,t->findChildren<QTabBar*>(QString(),Qt::FindDirectChildrenOnly))
+    {
+        nameTabBar(tb);
+    }
+
+    Q_FOREACH(QStackedWidget* tb,t->findChildren<QStackedWidget*>(QString(),Qt::FindDirectChildrenOnly))
+    {
+        nameStacked(tb);
+    }
+}
+
+void WidgetNameProvider::nameTabBar(QTabBar* t)
+{
+    if(t->objectName().isEmpty() ||
+       t->objectName() == "qt_tabwidget_tabbar")
+    {
+        t->setObjectName("bar");
+    }
+}
+
+void WidgetNameProvider::nameStacked(QStackedWidget* t)
+{
+    if(t->objectName().isEmpty() ||
+       t->objectName() == "qt_tabwidget_stackedwidget")
+    {
+        t->setObjectName("stacked");
+    }
+}
+
+void WidgetNameProvider::nameViewport(QWidget* t)
+{
+    if(!t)
+        return;
+
+    if(t->objectName().isEmpty() ||
+       t->objectName() == "qt_scrollarea_viewport")
+    {
+        t->setObjectName("viewport");
+    }
+}
diff --git a/Viewer/src/WidgetNameProvider.hpp b/Viewer/src/WidgetNameProvider.hpp
new file mode 100644
index 0000000..a4094df
--- /dev/null
+++ b/Viewer/src/WidgetNameProvider.hpp
@@ -0,0 +1,38 @@
+//============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//============================================================================
+
+#ifndef WIDGETNAME_HPP
+#define WIDGETNAME_HPP
+
+#include <QList>
+
+class QAction;
+class QDialogButtonBox;
+class QStackedWidget;
+class QToolBar;
+class QTabBar;
+class QTabWidget;
+class QWidget;
+
+class WidgetNameProvider
+{
+public:
+    static void nameChildren(QWidget* w);
+
+private:
+    static void nameButtons(QList<QAction*>);
+    static void nameButtons(QDialogButtonBox* bb);
+    static void nameTabWidget(QTabWidget* t);
+    static void nameTabBar(QTabBar* t);
+    static void nameStacked(QStackedWidget* t);
+    static void nameViewport(QWidget* t);
+};
+
+#endif // WIDGETNAME_HPP
+
diff --git a/Viewer/src/ZombieItemWidget.ui b/Viewer/src/ZombieItemWidget.ui
index 83a237d..416da5f 100644
--- a/Viewer/src/ZombieItemWidget.ui
+++ b/Viewer/src/ZombieItemWidget.ui
@@ -26,16 +26,7 @@
    <property name="spacing">
     <number>1</number>
    </property>
-   <property name="leftMargin">
-    <number>0</number>
-   </property>
-   <property name="topMargin">
-    <number>0</number>
-   </property>
-   <property name="rightMargin">
-    <number>0</number>
-   </property>
-   <property name="bottomMargin">
+   <property name="margin">
     <number>0</number>
    </property>
    <item>
@@ -155,7 +146,7 @@
         <string>...</string>
        </property>
        <property name="icon">
-        <iconset>
+        <iconset resource="viewer.qrc">
          <normaloff>:/viewer/sync.svg</normaloff>:/viewer/sync.svg</iconset>
        </property>
        <property name="autoRaise">
@@ -199,7 +190,7 @@
   </layout>
   <action name="actionTerminate">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/terminate.svg</normaloff>:/viewer/terminate.svg</iconset>
    </property>
    <property name="text">
@@ -208,7 +199,7 @@
   </action>
   <action name="actionRescue">
    <property name="icon">
-    <iconset>
+    <iconset resource="viewer.qrc">
      <normaloff>:/viewer/rescue.svg</normaloff>:/viewer/rescue.svg</iconset>
    </property>
    <property name="text">
@@ -222,8 +213,8 @@
   </action>
   <action name="actionDelete">
    <property name="icon">
-    <iconset>
-     <normaloff>:/viewer/images/close.svg</normaloff>:/viewer/images/close.svg</iconset>
+    <iconset resource="viewer.qrc">
+     <normaloff>:/viewer/close.svg</normaloff>:/viewer/close.svg</iconset>
    </property>
    <property name="text">
     <string>Delete</string>
@@ -242,6 +233,8 @@
    <header>TreeView.hpp</header>
   </customwidget>
  </customwidgets>
- <resources/>
+ <resources>
+  <include location="viewer.qrc"/>
+ </resources>
  <connections/>
 </ui>
diff --git a/Viewer/src/trigger.css b/Viewer/src/trigger.css
new file mode 100644
index 0000000..7307ec0
--- /dev/null
+++ b/Viewer/src/trigger.css
@@ -0,0 +1,85 @@
+/*============================================================================
+// Copyright 2016 ECMWF.
+// This software is licensed under the terms of the Apache Licence version 2.0
+// which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+// In applying this licence, ECMWF does not waive the privileges and immunities
+// granted to it by virtue of its status as an intergovernmental organisation
+// nor does it submit to any jurisdiction.
+//
+//============================================================================*/
+
+p
+{
+    border:3px;
+    border-style:solid;
+    border-color:#FF0000;
+    padding: 1em;
+}
+
+a:link
+{
+    text-decoration:none;
+    color: #0645AD;
+}
+
+a:hover
+{
+    text-decoration:bold;
+    color: #0645AD;
+}
+
+a:link.chp
+{
+    text-decoration:none;
+    color: #1a1f20;
+    font-weight: bold;
+}
+
+th
+{
+    padding-left: 4px;
+    padding-top: 4px;
+    padding-bottom: 4px;
+    background-color: #5f6e95;
+    color: #ffffff;
+    font-size: 12px;
+    text-align: left;
+}
+
+td.trigger_title {
+    padding-left: 2px;
+    padding-top: 1px;
+    padding-bottom: 1px;
+    background-color: #5f6e95;
+    color: #ffffff;
+}
+
+td.direct_title {
+    padding-left: 2px;
+    padding-top: 1px;
+    padding-bottom: 1px;
+    background-color: #5f6e95;
+    color: #ffffff;
+}
+
+td.title {
+    padding-left: 2px;
+    padding-top: 1px;
+    padding-bottom: 1px;
+    background-color: #d9e0ef;
+    /*background-color: #98a7c2;*/
+    color: #1a1f20;
+}
+
+td.trigger {
+    padding-left: 2px;
+    padding-top: 2px;
+    padding-bottom: 10px;
+    /*background-color: #5f6e95;
+    color: #ffffff;*/
+}
+td
+{
+    background-color: #F9F9F9;
+    color: #000000;
+}
diff --git a/Viewer/src/viewer.qrc b/Viewer/src/viewer.qrc
index 353537d..d647748 100644
--- a/Viewer/src/viewer.qrc
+++ b/Viewer/src/viewer.qrc
@@ -13,7 +13,9 @@
     <file alias="icon_calendar.svg">../images/icon_calendar.svg</file>   
     <file alias="icon_clock.svg">../images/icon_clock.svg</file>     
     <file alias="icon_complete.svg">../images/icon_complete.svg</file>   
+    <file alias="icon_killed.svg">../images/icon_killed.svg</file>
     <file alias="icon_late.svg">../images/icon_late.svg</file>
+    <file alias="icon_children_hidden.svg">../images/icon_children_hidden.svg</file>
     <file alias="icon_node_log.svg">../images/icon_node_log.svg</file>
     <file alias="icon_rerun.svg">../images/icon_rerun.svg</file>
     <file alias="icon_slow.svg">../images/icon_slow.svg</file>   
@@ -22,7 +24,7 @@
     <file>../images/arrow_up.svg</file>
     <file>../images/arrow_down.svg</file>
     <file>../images/add.svg</file>
-    <file>../images/close.svg</file>
+    <file alias="close.svg">../images/close.svg</file>
     <file>../images/configure.svg</file>
     <file>../images/exit.svg</file>
     <file alias="add_tab.svg">../images/add_tab.svg</file> 
@@ -32,7 +34,9 @@
     <file alias="case_sensitive.svg">../images/case_sensitive.svg</file>
     <file alias="colour.svg">../images/colour.svg</file>
     <file alias="directory_arrow.svg">../images/directory_arrow.svg</file>
-    <file alias="dock_config.svg">../images/dock_config.svg</file>   
+    <file alias="dock_chain_closed.svg">../images/dock_chain_closed.svg</file>
+    <file alias="dock_chain_open.svg">../images/dock_chain_open.svg</file>
+    <file alias="dock_config.svg">../images/dock_config.svg</file>
     <file alias="dock_menu_indicator.png">../images/dock_menu_indicator.png</file>
     <file alias="drawer_open.svg">../images/drawer_open.svg</file>
     <file alias="drawer_close.svg">../images/drawer_close.svg</file>
@@ -43,6 +47,7 @@
     <file alias="favourite.svg">../images/favourite.svg</file>
     <file alias="favourite_empty.svg">../images/favourite_empty.svg</file>
     <file alias="filesave.svg">../images/filesave.svg</file>
+    <file alias="filesaveas.svg">../images/filesaveas.svg</file>
     <file alias="filter_decor.svg">../images/filter_decor.svg</file> 
     <file alias="filter_edit.svg">../images/filter_edit.svg</file>
     <file alias="filter.svg">../images/filter.svg</file>
@@ -57,8 +62,11 @@
     <file alias="large_file_search.svg">../images/large_file_search.svg</file>
     <file alias="log_info.svg">../images/log_info.svg</file>
     <file alias="log_error.svg">../images/log_error.svg</file>
+    <file alias="logo.png">../images/logo.png</file>
+    <file alias="logo_small.png">../images/logo_small.png</file>
     <file alias="manage_server.svg">../images/manage_server.svg</file>
     <file alias="manual.svg">../images/manual.svg</file>
+    <file alias="menu_arrow_down.svg">../images/menu_arrow_down.svg</file>
     <file alias="node_log.svg">../images/node_log.svg</file>
     <file alias="notification.svg">../images/notification.svg</file>
     <file alias="output.svg">../images/output.svg</file>
@@ -66,6 +74,7 @@
     <file alias="path_arrow.svg">../images/path_arrow.svg</file>
     <file alias="reload.svg">../images/reload.svg</file>
     <file alias="reload_one.svg">../images/reload_one.svg</file>
+    <file alias="remove.svg">../images/remove.svg</file>
     <file alias="rescue.svg">../images/rescue.svg</file>
     <file alias="reset_to_default.svg">../images/reset_to_default.svg</file>
     <file alias="script.svg">../images/script.svg</file>
@@ -77,17 +86,23 @@
     <file alias="spinning_wheel.gif">../images/spinning_wheel.gif</file>
     <file alias="splash_screen.png">../images/splash_screen.png</file>
     <file alias="status.svg">../images/status.svg</file>
+    <file alias="system.svg">../images/system.svg</file>
     <file alias="submit.svg">../images/submit.svg</file>
+    <file alias="submit_round.svg">../images/submit_round.svg</file>
     <file alias="sync.svg">../images/sync.svg</file>
+    <file alias="sync_black.svg">../images/sync_black.svg</file>
     <file alias="terminate.svg">../images/terminate.svg</file>
+    <file alias="tip.svg">../images/tip.svg</file>
     <file alias="tree_branch_end.png">../images/tree_branch_end.png</file>
     <file alias="tree_branch_more.png">../images/tree_branch_more.png</file>
     <file alias="tree_vline.png">../images/tree_vline.png</file>
+    <file alias="trigger.svg">../images/trigger.svg</file>
     <file alias="unknown.svg">../images/unknown.svg</file>
     <file alias="unselect_all.svg">../images/unselect_all.svg</file>
     <file alias="variable.svg">../images/variable.svg</file>
     <file alias="warning.svg">../images/warning.svg</file>
     <file alias="why.svg">../images/why.svg</file>
     <file alias="zombie.svg">../images/zombie.svg</file>
+    <file alias="trigger.css">trigger.css</file>
   </qresource>
 </RCC>
diff --git a/bin/ecbuild b/bin/ecbuild
index d1ffff4..da2d7b9 100755
--- a/bin/ecbuild
+++ b/bin/ecbuild
@@ -2,8 +2,8 @@
 
 set -eua
 
-CMAKE_MIN_REQUIRED=2.8.10
-CMAKE_BUILD_VERSION=3.4.1
+CMAKE_MIN_REQUIRED=2.8.11
+CMAKE_BUILD_VERSION=3.5.2
 
 usage()
 {
@@ -93,10 +93,10 @@ Available values for "option":
           that this is only accelerating fresh builds, as cmake internally
           caches also. Therefore this option is *not* recommended.
 
-    --build-cmake
-          Automatically download and build CMake version $CMAKE_BUILD_VERSION if the CMake
-          version found does not meet the minimum requirements (version $CMAKE_MIN_REQUIRED
-          is required). Requires an internet connection and may take a while.
+    --build-cmake[=<prefix>]
+          Automatically download and build CMake version $CMAKE_BUILD_VERSION.
+          Requires an internet connection and may take a while. If no prefix
+          is given, install into $PWD.
 
     --dryrun
           Don't actually execute the cmake call, just print what would have
@@ -275,7 +275,7 @@ while test $# -gt 0; do
     case "$1" in
     --*=*)
       opt=`echo "$1" | sed 's/=.*//'`
-      val=`echo "$1" | sed 's/--[_a-zA-Z0-9]*=//'`
+      val=`echo "$1" | sed 's/--[_a-zA-Z0-9-]*=//'`
       ;;
     --*)
       opt=$1
@@ -336,6 +336,9 @@ while test $# -gt 0; do
         ;;
       --build-cmake)
         build_cmake="yes"
+        if [[ -n $val ]]; then
+          cmake_prefix="$val"
+        fi
         ;;
       --)
         shift
@@ -358,41 +361,25 @@ src=${srcARG:=""}
 cmake=${cmakebin:=cmake}
 dryrun=${dryrun:=no}
 build_cmake=${build_cmake:=""}
+cmake_prefix=${cmake_prefix:=$PWD}
 cmake_found=""
 cmake_version_sufficient=""
 
 
 # Check that version $1 satisfies $2
 # CMake versions have no more than 4 fields
-# (adapted from http://stackoverflow.com/a/25731924/396967)
+# Version sort (sort -V) is not available on all platforms
 version_gte() {
-    [  "$2" = "$(echo -e "$1\n$2" | sort -t '.' -k 1,1 -k 2,2 -k 3,3 -k 4,4 -g | head -n1)" ]
+  [ "$2" = "$(echo -e "$1\n$2" | sort -t '.' -k 1,1 -k 2,2 -k 3,3 -k 4,4 -g | head -n1)" ]
 }
 
-# Check if the cmake version is sufficient
-check_cmake() {
-  # Check if cmake is available
-  if $(command -v $cmake >/dev/null 2>&1); then
-    cmake_found="yes"
-    cmake_version=$($cmake --version | head -n1 | awk '{ print $3 }')
-    echo "Found CMake version $cmake_version" >& 2
-    if version_gte $cmake_version $CMAKE_MIN_REQUIRED; then
-      cmake_version_sufficient="yes"
-    fi
-  fi
-}
-check_cmake
 # Use already built CMake if any
-if [[ ! $cmake_version_sufficient && -x bin/cmake ]]; then
-  echo "Using already built CMake in $PWD/bin/cmake" >&2
-  cmake=bin/cmake
-  check_cmake
-fi
-
+if [[ -x "${cmake_prefix}/bin/cmake" ]]; then
+  echo "Using already built CMake in ${cmake_prefix}/bin/cmake" >&2
+  cmake="${cmake_prefix}/bin/cmake"
 # Build CMake if requested and no sufficient version found
-if [[ ! $cmake_version_sufficient && $build_cmake ]]; then
-  echo "CMake version $CMAKE_MIN_REQUIRED is required but only $cmake_version was found." >&2
-  echo "Building CMake version ${CMAKE_BUILD_VERSION} ..." >&2
+elif [[ $build_cmake ]]; then
+  echo "Building CMake version ${CMAKE_BUILD_VERSION} and installing into ${cmake_prefix} ..." >&2
   tarball=cmake-${CMAKE_BUILD_VERSION}.tar.gz
   if [[ ! -r $tarball ]]; then
     url=http://www.cmake.org/files/v${CMAKE_BUILD_VERSION:0:3}/$tarball
@@ -411,10 +398,19 @@ if [[ ! $cmake_version_sufficient && $build_cmake ]]; then
   (
     mkdir -p build_cmake
     cd build_cmake
-    ../cmake-${CMAKE_BUILD_VERSION}/bootstrap --prefix=.. && make && make install
+    ../cmake-${CMAKE_BUILD_VERSION}/bootstrap --prefix="${cmake_prefix}" && make && make install
   )
-  cmake=bin/cmake
-  check_cmake
+  cmake="${cmake_prefix}/bin/cmake"
+fi
+
+# Check if the cmake version is sufficient
+if $(command -v $cmake >/dev/null 2>&1); then
+  cmake_found="yes"
+  cmake_version=$($cmake --version | head -n1 | awk '{ print $3 }')
+  echo "Found CMake version $cmake_version" >& 2
+  if version_gte $cmake_version $CMAKE_MIN_REQUIRED; then
+    cmake_version_sufficient="yes"
+  fi
 fi
 
 # Fail if we don't have a sufficient CMake
diff --git a/boost-build.jam b/boost-build.jam
index bada444..909e2fa 100644
--- a/boost-build.jam
+++ b/boost-build.jam
@@ -16,7 +16,7 @@
 #         $(BOOST_ROOT)/tools/build/v2
 # However for version >= 1.56, boost build is found in:
 #         $(BOOST_ROOT)/tools/build/src
-# This allows both to be searched.
+# This allows both to be searched
 # ---------------------------------------------------------------------------
 local rule if-has-file ( file + : dir * )
 {
diff --git a/build_scripts/boost_build.sh b/build_scripts/boost_build.sh
index e941265..b79661d 100755
--- a/build_scripts/boost_build.sh
+++ b/build_scripts/boost_build.sh
@@ -26,7 +26,7 @@ echo "BOOST_ROOT=$BOOST_ROOT"
 #
 SITE_CONFIG_LOCATION=$BOOST_ROOT/tools/build/v2/site-config.jam
 BOOST_VERSION="$(basename $BOOST_ROOT)"
-if [ "$BOOST_VERSION" = boost_1_56_0 -o "$BOOST_VERSION" = boost_1_57_0 -o "$BOOST_VERSION" = boost_1_58_0 ] ; then
+if [ "$BOOST_VERSION" = boost_1_56_0 -o "$BOOST_VERSION" = boost_1_57_0 -o "$BOOST_VERSION" = boost_1_58_0 -o "$BOOST_VERSION" = boost_1_61_0 ] ; then
    SITE_CONFIG_LOCATION=$BOOST_ROOT/tools/build/src/site-config.jam
 fi
 
@@ -59,7 +59,7 @@ test_uname ()
 # On *CRAY* we can have 3 compilers we will use the versioned for CRAY and INTEL library
 layout=tagged
 
-CXXFLAGS=
+CXXFLAGS=-d2     # dummy argument, since CXXFLAGS is quoted
 if test_uname Linux ; then
   X64=$(uname -m)
   if [ "$X64" = x86_64 ]
@@ -80,10 +80,19 @@ if test_uname Linux ; then
     else
       if [ $tool = gcc ] ; then
   
+  
       		cp $WK/build_scripts/site_config/site-config-Linux64.jam $SITE_CONFIG_LOCATION 
-      		# for boost 1.53 and > gcc 4.8 get a lot warning messages use suppress
-      		#CXXFLAGS=-no-unused-local-typedefs 
       		
+            # for boost 1.53 and > gcc 4.3 -Wno-unused-local-typedefs  : not valid
+            # for boost 1.53 and > gcc 4.8 -Wno-unused-local-typedefs  : get a lot warning messages , suppress
+            # for boost 1.53 and > gcc 6.1 -Wno-deprecated-declarations: std::auto_ptr deprecated messages, suppress
+            compiler=$(gcc -dumpversion)
+            if [ $compiler = "4.3" ] ; then
+                CXXFLAGS=-d2    #  dummy argument, since CXXFLAGS is quoted
+            else 
+                CXXFLAGS=cxxflags=-Wno-unused-local-typedefs
+                #CXXFLAGS="cxxflags=-Wno-unused-local-typedefs,-Wno-deprecated-declarations"
+       		fi
   	  elif [ $tool = intel ] ; then
   
       		cp $WK/build_scripts/site_config/site-config-Linux64-intel.jam $SITE_CONFIG_LOCATION 
@@ -130,28 +139,28 @@ echo "using compiler $tool with build $1 variants "
 # ========================================================================
 # Note: boost thread *ONLY* need to test multi-threaded server See: define ECFLOW_MT
 # ========================================================================
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-system variant=debug -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-date_time variant=debug -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-filesystem variant=debug  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-program_options variant=debug -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-serialization  variant=debug -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-test variant=debug  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-thread variant=debug  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-regex variant=debug  -j2   # ecflowUi
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-system variant=debug -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-date_time variant=debug -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-filesystem variant=debug  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-program_options variant=debug -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-serialization  variant=debug -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-test variant=debug  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-thread variant=debug  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-regex variant=debug  -j2   # ecflowUi
  
 
 
 # ========================================================================
 # Note: boost thread *ONLY* need to test multi-threaded server See: define ECFLOW_MT
 # ========================================================================
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-system variant=release -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-date_time variant=release  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-filesystem variant=release   -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-program_options variant=release -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-serialization  variant=release -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-test variant=release  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-thread variant=release  -j2
-./bjam --build-dir=./tmpBuildDir toolset=$tool $CXXFLAGS stage link=static --layout=$layout --with-regex variant=release  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-system variant=release -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-date_time variant=release  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-filesystem variant=release   -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-program_options variant=release -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-serialization  variant=release -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-test variant=release  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-thread variant=release  -j2
+./bjam --build-dir=./tmpBuildDir toolset=$tool "$CXXFLAGS" stage link=static --layout=$layout --with-regex variant=release  -j2
 
 
 # Allow python to be disabled  
@@ -169,10 +178,10 @@ else
    #
    # To prebuild the boost python, hence we need to do the following: For now build both variants, keeps cmake happy! (i.e when finding libs)
    #
-   ./bjam toolset=$tool link=shared variant=debug   $CXXFLAGS stage --layout=$layout threading=multi --with-python -d2 -j2
-   ./bjam toolset=$tool link=shared variant=release $CXXFLAGS stage --layout=$layout threading=multi --with-python -d2 -j2
-   ./bjam toolset=$tool link=static variant=debug   $CXXFLAGS stage --layout=$layout threading=multi --with-python -d2 -j2
-   ./bjam toolset=$tool link=static variant=release $CXXFLAGS stage --layout=$layout threading=multi --with-python -d2 -j2
+   ./bjam toolset=$tool link=shared variant=debug   "$CXXFLAGS" stage --layout=$layout threading=multi --with-python -d2 -j2
+   ./bjam toolset=$tool link=shared variant=release "$CXXFLAGS" stage --layout=$layout threading=multi --with-python -d2 -j2
+   ./bjam toolset=$tool link=static variant=debug   "$CXXFLAGS" stage --layout=$layout threading=multi --with-python -d2 -j2
+   ./bjam toolset=$tool link=static variant=release "$CXXFLAGS" stage --layout=$layout threading=multi --with-python -d2 -j2
 fi
 
  
diff --git a/build_scripts/migrate.sh b/build_scripts/migrate.sh
index d655051..6a3b47b 100644
--- a/build_scripts/migrate.sh
+++ b/build_scripts/migrate.sh
@@ -1,7 +1,7 @@
 
 
 prepare_migration() {
-   use ecflow
+   module load ecflow
    while read nick host port
    do
      LOG="--host=$host --port=$port"
diff --git a/build_scripts/test.sh b/build_scripts/test.sh
index aad518a..351ddfc 100755
--- a/build_scripts/test.sh
+++ b/build_scripts/test.sh
@@ -11,23 +11,24 @@
 # Run all the ecflow tests, note use !/bin/bash to keep rpm happy, it uses bash
 #===================================================================
 
-if [ "$#" -gt 3 ] ; then
+if [ "$#" -gt 4 ] ; then
    echo "Maximum of 3 arguments expected"
-   echo " arg1-mode    (optional) default = debug,    valid values = [ debug | release ]"
+   echo " arg1-mode    (optional) default = release  [ release | debug | profile ]"
    echo " arg2-compiler(optional) default = linux/gcc-$(gcc -dumpversion)"
-   echo " arg3-safe    (optional) default = no, valid values = [ no | safe ],"
-   echo "                                   safe means only run deterministic tests"
+   echo " arg3-safe    (optional) default = no  [ no | safe ] safe means only run deterministic tests"
+   echo " arg5-ssl     (optional) default = off [ off | ssl ] ssl means test ssl version of ecflow"
    exit 1
 fi
 
-mode=debug
+mode=release
 compiler_arg=
 safe=no
+ssl=off
 while [ "$#" -ne 0 ] ; do   
    if [ "$1" = debug -o "$1" = release -o "$1" = profile ] ; then
       mode=$1
-   elif [ "$1" = safe ] ; then  
-      safe=yes
+   elif [ "$1" = safe ] ; then safe=yes ;
+   elif [ "$1" = ssl ] ;  then ssl=on ;
    else
       compiler_arg=$1
    fi
@@ -40,7 +41,7 @@ if [ ${#mode} -eq 0 ] ; then
    exit 1
 fi
 
-echo "mode=$mode compiler=$compiler_arg safe=$safe"
+echo "mode=$mode compiler=$compiler_arg safe=$safe ssl=$ssl"
 #exit 1;
 
 #======================================================================
@@ -98,37 +99,46 @@ if test_uname Linux ; then
       compiler=$compiler_arg
    fi
 
+   exe_path=$compiler/$mode
+   
+   OPEN_SSL=
+   if [ "$ssl" = on ] ; then
+      exe_path="$exe_path/ssl-on"
+      OPEN_SSL="ssl=on"
+   fi
+   
    echo "*****************************************"
-   echo "Testing: variant=$mode compiler=$compiler"
+   echo "Testing: $exe_path"
    echo "*****************************************"
 
-   ACore/bin/$compiler/$mode/u_acore  --log_level=message $TEST_OPTS
-   ANattr/bin/$compiler/$mode/u_anattr  --log_level=message $TEST_OPTS
-   ANode/bin/$compiler/$mode/u_anode  --log_level=message $TEST_OPTS
-   AParser/bin/$compiler/$mode/u_aparser  --log_level=message $TEST_OPTS
-   if [ "$safe" = no ] ; then
-      AParser/bin/$compiler/$mode/perf_aparser          --log_level=message $TEST_OPTS
-   fi
-   Base/bin/$compiler/$mode/u_base     --log_level=message $TEST_OPTS
-   Client/bin/$compiler/$mode/s_client     --log_level=message $TEST_OPTS
-   Server/bin/$compiler/$mode/u_server       --log_level=message $TEST_OPTS
-   CSim/bin/$compiler/$mode/c_csim  --log_level=message $TEST_OPTS
+   ACore/bin/$exe_path/u_acore      --log_level=message $TEST_OPTS
+   ANattr/bin/$exe_path/u_anattr    --log_level=message $TEST_OPTS
+   ANode/bin/$exe_path/u_anode      --log_level=message $TEST_OPTS
+   AParser/bin/$exe_path/u_aparser  --log_level=message $TEST_OPTS
    if [ "$safe" = no ] ; then
-      Test/bin/$compiler/$mode/s_test  --log_level=message $TEST_OPTS
-      Test/bin/$compiler/$mode/s_test_zombies  --log_level=message $TEST_OPTS
+      AParser/bin/$exe_path/perf_aparser --log_level=message $TEST_OPTS
    fi
+   Base/bin/$exe_path/u_base         --log_level=message $TEST_OPTS
    
    if [ "$safe" = no ] ; then
       # run python/C++ test
       cd Pyext
-      $BOOST_ROOT/bjam $TOOLSET $CXXFLAGS variant=$mode test-all $TEST_OPTS
+      $BOOST_ROOT/bjam $TOOLSET $CXXFLAGS variant=$mode $OPEN_SSL test-all $TEST_OPTS
       cd ..
    fi
    
+   Client/bin/$exe_path/s_client     --log_level=message $TEST_OPTS
+   Server/bin/$exe_path/u_server     --log_level=message $TEST_OPTS
+   CSim/bin/$exe_path/c_csim         --log_level=message $TEST_OPTS
+   if [ "$safe" = no ] ; then
+      Test/bin/$exe_path/s_test          --log_level=message $TEST_OPTS
+      Test/bin/$exe_path/s_test_zombies  --log_level=message $TEST_OPTS
+   fi
+   
    if [ x$DISPLAY = x  ]; then
        echo "DISPLAY variable is not defined, ecflowview is not tested..."
    else
-       view/bin/$compiler/$mode/test-view  --log_level=message $TEST_OPTS
+       view/bin/$exe_path/test-view  --log_level=message $TEST_OPTS
    fi
    
 elif test_uname HP-UX ; then
@@ -142,6 +152,13 @@ elif test_uname HP-UX ; then
       AParser/bin/acc/$mode/threading-multi/perf_aparser  --log_level=message $TEST_OPTS
    fi
    Base/bin/acc/$mode/threading-multi/u_base  --log_level=message $TEST_OPTS
+   if [ "$safe" = no ] ; then
+      # run python/C++ test, use test to bypass 'with' statement tests
+      cd Pyext
+      $BOOST_ROOT/bjam variant=$mode test $TEST_OPTS
+      cd ..
+   fi
+   exit 1
    Client/bin/acc/$mode/threading-multi/s_client  --log_level=message $TEST_OPTS
    Server/bin/acc/$mode/threading-multi/u_server  --log_level=message $TEST_OPTS
    CSim/bin/acc/$mode/threading-multi/c_csim  --log_level=message $TEST_OPTS
@@ -150,13 +167,6 @@ elif test_uname HP-UX ; then
       Test/bin/acc/$mode/threading-multi/s_test_zombies  --log_level=message $TEST_OPTS
    fi
    
-   if [ "$safe" = no ] ; then
-      # run python/C++ test, use test to bypass 'with' statement tests
-      cd Pyext
-      $BOOST_ROOT/bjam variant=$mode test $TEST_OPTS
-      cd ..
-   fi
-
 elif test_uname AIX ; then
 
    echo "Testing: $ARCH variant=$mode"
@@ -169,6 +179,12 @@ elif test_uname AIX ; then
       AParser/bin/vacpp/$mode/threading-multi/perf_aparser  --log_level=message $TEST_OPTS
    fi
    Base/bin/vacpp/$mode/threading-multi/u_base  --log_level=message $TEST_OPTS
+   if [ "$safe" = no ] ; then
+      # run python/C++ test
+      cd Pyext
+      $BOOST_ROOT/bjam variant=$mode test-all $TEST_OPTS
+      cd ..
+   fi
    Client/bin/vacpp/$mode/threading-multi/s_client  --log_level=message $TEST_OPTS
    Server/bin/vacpp/$mode/threading-multi/u_server  --log_level=message $TEST_OPTS
    CSim/bin/vacpp/$mode/threading-multi/c_csim  --log_level=message $TEST_OPTS
@@ -176,11 +192,4 @@ elif test_uname AIX ; then
       Test/bin/vacpp/$mode/threading-multi/s_test  --log_level=message $TEST_OPTS
       Test/bin/vacpp/$mode/threading-multi/s_test_zombies  --log_level=message $TEST_OPTS
    fi
-
-   if [ "$safe" = no ] ; then
-      # run python/C++ test
-      cd Pyext
-      $BOOST_ROOT/bjam variant=$mode test-all $TEST_OPTS
-      cd ..
-   fi
 fi
diff --git a/build_scripts/val.sh b/build_scripts/val.sh
index 94127aa..8ab7bb9 100755
--- a/build_scripts/val.sh
+++ b/build_scripts/val.sh
@@ -31,8 +31,8 @@ echo "valgrind: variant=$mode compiler=$compiler"
 #
 # Use valgrind which is newer than standard installation
 #
-# Note: To valgrind the server, start it separately on a different shell and define ECF_NODE=localhost
-# export ECF_NODE=localhost
+# Note: To valgrind the server, start it separately on a different shell and define ECF_HOST=localhost
+# export ECF_HOST=localhost
 # valgrind Server/bin/$compiler/$mode/ecflow_server --interval=3
 # Then restart this shell
    
diff --git a/build_scripts/wait_for_server_reply.sh b/build_scripts/wait_for_server_reply.sh
new file mode 100755
index 0000000..3f1c768
--- /dev/null
+++ b/build_scripts/wait_for_server_reply.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+# wait for server to start
+set +e # ignore error 
+count=0
+while [ 1 ] ; do   
+    sleep 3
+    ecflow_client --ping 2> /dev/null
+    if [[ $? == 0 ]] ; then
+        echo "server up and running"
+        break;
+    fi
+    count=$((count + 1))
+    #echo $count
+    if [ "$count" -gt "2" ] ; then
+        echo "Timed out after 60 seconds"
+        exit 1
+    fi
+done
+set -e  # re-enable error 
+
+ 
\ No newline at end of file
diff --git a/cmake.sh b/cmake.sh
index f203263..7015e94 100755
--- a/cmake.sh
+++ b/cmake.sh
@@ -10,19 +10,27 @@ umask 0022
 # ====================================================================
 show_error_and_exit() {
    echo "cmake.sh expects at least one argument"
-   echo " cmake.sh debug || release [clang] [san] [make] [verbose] [test] [package_source] [debug]"
+   echo " cmake.sh debug || release [clang] [san] [make] [verbose] [test] [stest] [no_gui] [package_source] [debug]"
    echo "  "
    echo "   make           - run make after cmake"
+   echo "   ecbuild        - Use git cloned ecbuild over the module loaded ecbuild(default)"
+   echo "   install        - install to /usr/local/apps/eflow.  defaults is /var/tmp/$USER/install/cmake/ecflow"
    echo "   test           - run all the tests"
    echo "   test_safe      - only run deterministic tests"
    echo "   ctest          - all ctest -R <test> -V"
    echo "   san            - is short for clang thread sanitiser"
+   echo "   no_gui         - Don't build the gui"
+   echo "   ssl            - build using openssl"
+   echo "   secure_user    - enable password for client server"
+   echo "   log            - enable debug output"
    echo "   package_source - produces ecFlow-<version>-Source.tar.gz file, for users"
    echo "                    copies the tar file to $SCRATCH"
    echo "   copy_tarball   - copies ecFlow-<version>-Source.tar.gz to /tmp/$USER/tmp/. and untars file"
    exit 1
 }
 
+install_arg=
+ecbuild_arg=
 copy_tarball_arg=
 package_source_arg=
 make_arg=
@@ -36,6 +44,11 @@ mode_arg=release
 verbose_arg=
 ctest_arg=
 clean_arg=
+no_gui_arg=
+python3_arg=
+ssl_arg=
+secure_user_arg=
+log_arg=
 while [[ "$#" != 0 ]] ; do   
    if [[ "$1" = debug || "$1" = release ]] ; then
       mode_arg=$1
@@ -55,23 +68,22 @@ while [[ "$#" != 0 ]] ; do
          shift
       done
       break
-   elif  [[ "$1" = clang ]] ; then
-      clang_arg=$1
-   elif  [[ "$1" = intel ]] ; then
-      intel_arg=$1
-   elif  [[ "$1" = clean ]] ; then
-      clean_arg=$1
-   elif  [[ "$1" = san ]] ; then
-      clang_sanitiser_arg=$1
-   elif  [[ "$1" = package_source ]] ; then
-      package_source_arg=$1
-   elif  [[ "$1" = copy_tarball ]] ; then
-      copy_tarball_arg=$1
-   elif  [[ "$1" = test ]] ; then
-      test_arg=$1
-   elif  [[ "$1" = test_safe ]] ; then
-      test_safe_arg=$1
-   elif [[ "$1" = ctest ]] ;     then  
+   elif [[ "$1" = no_gui ]] ; then no_gui_arg=$1 ;
+   elif [[ "$1" = ssl ]]   ; then ssl_arg=$1 ;
+   elif [[ "$1" = secure_user ]]   ; then secure_user_arg=$1 ;
+   elif [[ "$1" = ecbuild ]] ; then ecbuild_arg=$1 ;
+   elif [[ "$1" = install ]] ; then install_arg=$1 ;
+   elif [[ "$1" = log ]]   ; then log_arg=$1 ;
+   elif [[ "$1" = clang ]] ; then clang_arg=$1 ;
+   elif [[ "$1" = intel ]] ; then intel_arg=$1 ;
+   elif [[ "$1" = clean ]] ; then clean_arg=$1 ;
+   elif [[ "$1" = san ]]   ; then clang_sanitiser_arg=$1 ;
+   elif [[ "$1" = package_source ]] ; then package_source_arg=$1 ;
+   elif [[ "$1" = copy_tarball ]] ; then copy_tarball_arg=$1 ;
+   elif [[ "$1" = test ]] ;  then test_arg=$1 ;
+   elif [[ "$1" = test_safe ]] ; then test_safe_arg=$1 ;
+   elif [[ "$1" = python3 ]] ;   then python3_arg=$1 ;
+   elif [[ "$1" = ctest ]] ; then  
       ctest_arg=$1 ; 
       shift
       while [[ "$#" != 0 ]] ; do
@@ -96,13 +108,17 @@ echo "clang_arg=$clang_arg"
 echo "clang_sanitiser_arg=$clang_sanitiser_arg"
 echo "mode_arg=$mode_arg"
 echo "verbose_arg=$verbose_arg"
+echo "python3_arg=$python3_arg"
+echo "no_gui_arg=$no_gui_arg"
+echo "ecbuild_arg=$ecbuild_arg"
 set -x # echo script lines as they are executed
 
 # ==================== modules ================================================
 # To load module automatically requires Korn shell, system start scripts
 
 module load cmake/3.3.2
-module load ecbuild/2.2.0
+module load ecbuild/2.5.0
+
 cmake_extra_options=""
 if [[ "$clang_arg" = clang ]] ; then
 	module unload gnu
@@ -115,17 +131,36 @@ if [[ "$clang_sanitiser_arg" = san ]] ; then
 	cmake_extra_options="$cmake_extra_options -DCMAKE_C_FLAGS=-fsanitize=thread"
 fi
 if [[ "$ARCH" = cray ]] ; then
-    cmake_extra_options="$cmake_extra_options -DENABLE_UI=OFF"
+
+    # disable new UI, no QT on cray
+    # Use the cray wrappers, these will add the correct flags.
+    # Assumes we have CRAY_ADD_RPATH=yes
+    cmake_extra_options="$cmake_extra_options -DENABLE_UI=OFF -DCMAKE_C_COMPILER=cc -DCMAKE_CXX_COMPILER=CC -DCMAKE_Fortran_COMPILER=ftn"
     
     if [[ $intel_arg = intel ]] ; then
         module swap PrgEnv-cray PrgEnv-intel
     else
     	module swap PrgEnv-cray PrgEnv-gnu
     fi
+    module unload atp
+    module load boost/1.53.0
+    export CRAY_ADD_RPATH=yes
+    export ECFLOW_CRAY_BATCH=1
+fi
+
+if [[ "$python3_arg" = python3 ]] ; then
+    # Need to wait for ecbuild to fix print error, meanwhile use local ecbuild to test python3
+    cmake_extra_options="$cmake_extra_options -DPYTHON_EXECUTABLE=/usr/local/apps/python3/3.5.1-01/bin/python3.5"
 fi
 
+# ===================================================================================
 # boost
-#module load boost/1.59.0
+# if OS_VERSION not defined , default to empty string
+: ${OS_VERSION:=""}
+
+if [[ "$OS_VERSION" = "leap42" ]] ; then
+    module load boost/1.53.0
+fi
 
 # ====================================================================================  
 cmake_build_type=
@@ -193,18 +228,62 @@ fi
 # -DCMAKE_PYTHON_INSTALL_PREFIX should *only* used when using python setup.py (CMAKE_PYTHON_INSTALL_TYPE=setup)
 #   *AND* for testing python install to local directory
 #
+# GNU 4.8+ -Wno-unused-local-typedefs   -> get round warning in boost headers
+# GNU 6.1  -Wno-deprecated-declarations -> auto_ptr deprecated warning, mostly in boost headers  
+
+ssl_options=
+if [[ $ssl_arg = ssl ]] ; then
+    ssl_options="-DENABLE_SSL=ON"
+fi
+
+secure_user_options=
+if [[ $secure_user_arg = secure_user ]] ; then
+    secure_user_options="-DENABLE_SECURE_USER=ON"
+fi
+
+log_options=
+if [[ $log_arg = log ]] ; then
+    log_options="-DECBUILD_LOG_LEVEL=DEBUG"
+fi
 
-ecbuild $source_dir \
+gui_options=
+if [[ $no_gui_arg = no_gui ]] ; then
+    gui_options="-DENABLE_GUI=OFF -DENABLE_UI=OFF -DENABLE_ALL_TESTS=ON"
+fi
+
+if [[ $package_source_arg = package_source ]] ; then
+    # for packaging we build GUI by default, and do not run all tests
+    gui_options=  
+fi
+
+install_prefix=/var/tmp/$USER/install/cmake/ecflow/$release.$major.$minor
+if [[ $install_arg = install ]] ; then
+    install_prefix=/usr/local/apps/ecflow/$release.$major.$minor
+fi
+
+ecbuild=ecbuild
+if [[ $ecbuild_arg = ecbuild ]] ; then
+   ecbuild=$workspace/ecbuild/bin/ecbuild
+fi
+
+$ecbuild $source_dir \
             -DCMAKE_BUILD_TYPE=$cmake_build_type \
-            -DCMAKE_INSTALL_PREFIX=/var/tmp/$USER/install/cmake/ecflow/$release.$major.$minor \
-            -DCMAKE_PYTHON_INSTALL_TYPE=local \
+            -DCMAKE_INSTALL_PREFIX=$install_prefix  \
             -DENABLE_WARNINGS=ON \
-            -DENABLE_ALL_TESTS=ON \
             -DCMAKE_CXX_FLAGS="-Wno-unused-local-typedefs" \
+            -DCMAKE_PYTHON_INSTALL_TYPE=local \
             -DCMAKE_PREFIX_PATH="/usr/local/apps/qt/5.5.0/5.5/gcc_64/" \
-            ${cmake_extra_options}
-            #-DCMAKE_PYTHON_INSTALL_PREFIX=/var/tmp/$USER/install/cmake/ecflow/$release.$major.$minor/lib/python2.7/site-packages/ecflow
-            #-DCMAKE_MODULE_PATH=$workspace/ecbuild/cmake \
+            -DENABLE_STATIC_BOOST_LIBS=ON \
+            ${cmake_extra_options} \
+            ${gui_options} \
+            ${ssl_options} \
+            ${secure_user_options} \
+            ${log_options}
+            #-DENABLE_ALL_TESTS=ON
+            #-DENABLE_GUI=ON       -DENABLE_UI=ON                    
+            #-DENABLE_SERVER=OFF \
+            #-DCMAKE_PYTHON_INSTALL_PREFIX=/var/tmp/$USER/install/python/ecflow/$release.$major.$minor \
+            #-DCMAKE_CXX_FLAGS="'-Wno-unused-local-typedefs -Wno-deprecated'"
         
 # =============================================================================================
 if [[ "$make_arg" != "" ]] ; then
diff --git a/cmake/CheckFortranCompilerFlag.cmake b/cmake/CheckFortranCompilerFlag.cmake
deleted file mode 100644
index 5408691..0000000
--- a/cmake/CheckFortranCompilerFlag.cmake
+++ /dev/null
@@ -1,37 +0,0 @@
-# - Check whether the CXX compiler supports a given flag.
-# CHECK_CXX_COMPILER_FLAG(FLAG VARIABLE)
-#
-#  FLAG - the compiler flag
-#  VARIABLE - variable to store the result
-
-# Copyright (c) 2006, Alexander Neundorf, <neundorf at kde.org>
-#
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
-
-INCLUDE(CheckFortranSourceCompiles)
-
-MACRO (CHECK_FORTRAN_COMPILER_FLAG _FLAG _RESULT)
-   SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
-   SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
-   CHECK_FORTRAN_SOURCE_COMPILES("program main\nend program\n" ${_RESULT}
-     # Some compilers do not fail with a bad flag
-     FAIL_REGEX "command line option .* is valid for .* but not for C\\\\+\\\\+" # GNU
-     FAIL_REGEX "unrecognized .*option"                     # GNU
-     FAIL_REGEX "unknown .*option"                          # Clang
-     FAIL_REGEX "invalid value"                             # Clang
-     FAIL_REGEX "ignoring unknown option"                   # MSVC
-     FAIL_REGEX "warning D9002"                             # MSVC, any lang
-     FAIL_REGEX "option.*not supported"                     # Intel
-     FAIL_REGEX "invalid argument .*option"                 # Intel
-     FAIL_REGEX "ignoring option .*argument required"       # Intel
-     FAIL_REGEX "[Uu]nknown option"                         # HP
-     FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
-     FAIL_REGEX "command option .* is not recognized"       # XL
-     FAIL_REGEX "not supported in this configuration; ignored"       # AIX
-     FAIL_REGEX "File with unknown suffix passed to linker" # PGI
-     FAIL_REGEX "WARNING: unknown flag:"                    # Open64
-     )
-   SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
-ENDMACRO (CHECK_FORTRAN_COMPILER_FLAG)
diff --git a/cmake/CheckFortranSourceCompiles.cmake b/cmake/CheckFortranSourceCompiles.cmake
deleted file mode 100644
index d3dc968..0000000
--- a/cmake/CheckFortranSourceCompiles.cmake
+++ /dev/null
@@ -1,94 +0,0 @@
-# - Check if given Fortran source compiles and links into an executable
-# CHECK_FORTRAN_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>])
-#  <code>       - source code to try to compile, must define 'main'
-#  <var>        - variable to store whether the source code compiled
-#  <fail-regex> - fail if test output matches this regex
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
-#
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
-
-#=============================================================================
-# Copyright 2005-2009 Kitware, Inc.
-# Fortran version, 2013, James Tappin
-#
-# Distributed under the OSI-approved BSD License (the "License");
-# see accompanying file Copyright.txt for details.
-#
-# This software is distributed WITHOUT ANY WARRANTY; without even the
-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# See the License for more information.
-#=============================================================================
-# (To distribute this file outside of CMake, substitute the full
-#  License text for the above reference.)
-
-
-
-macro(CHECK_FORTRAN_SOURCE_COMPILES SOURCE VAR)
-
-if( ${VAR} MATCHES "^${VAR}$" )
-    set(_FAIL_REGEX)
-    set(_key)
-    foreach(arg ${ARGN})
-      if("${arg}" MATCHES "^(FAIL_REGEX)$")
-        set(_key "${arg}")
-      elseif(_key)
-        list(APPEND _${_key} "${arg}")
-      else()
-        ecbuild_critical("Unknown argument:\n  ${arg}\n")
-      endif()
-    endforeach()
-    set(MACRO_CHECK_FUNCTION_DEFINITIONS
-      "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    if(CMAKE_REQUIRED_LIBRARIES)
-      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES
-        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
-    else()
-      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES)
-    endif()
-    if(CMAKE_REQUIRED_INCLUDES)
-      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES
-        "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    else()
-      set(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES)
-    endif()
-    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90"
-      "${SOURCE}\n")
-
-    ecbuild_debug("Performing Test ${VAR}")
-    try_compile(${VAR}
-      ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90
-      COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
-      ${CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES}
-      CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES}"
-      OUTPUT_VARIABLE OUTPUT)
-
-    foreach(_regex ${_FAIL_REGEX})
-      if("${OUTPUT}" MATCHES "${_regex}")
-        set(${VAR} 0)
-      endif()
-    endforeach()
-
-    if(${VAR})
-      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      ecbuild_debug("Performing Test ${VAR} - Success")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Fortran SOURCE FILE Test ${VAR} succeded with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    else()
-      ecbuild_debug("Performing Test ${VAR} - Failed")
-      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
-      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
-        "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
-        "${OUTPUT}\n"
-        "Source file was:\n${SOURCE}\n")
-    endif()
-  endif()
-endmacro()
-
diff --git a/cmake/FindAEC.cmake b/cmake/FindAEC.cmake
index 767544f..717b2b5 100644
--- a/cmake/FindAEC.cmake
+++ b/cmake/FindAEC.cmake
@@ -3,24 +3,31 @@
 # This software is licensed under the terms of the Apache Licence Version 2.0
 # which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
 # In applying this licence, ECMWF does not waive the privileges and immunities
-# granted to it by virtue of its status as an intergovernmental organisation nor
-# does it submit to any jurisdiction.
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
 
 # - Try to find AEC (Adaptive Entropy Coding library)
 # See https://www.dkrz.de/redmine/projects/aec/wiki
 
 # Once done this will define
-#  AEC_FOUND - System has AEC
+#  AEC_FOUND        - System has AEC
 #  AEC_INCLUDE_DIRS - The AEC include directories
-#  AEC_LIBRARIES - The libraries needed to use AEC
-
-if( DEFINED AEC_PATH )
-    find_path( AEC_INCLUDE_DIR szlib.h    PATHS ${AEC_PATH}/include PATH_SUFFIXES aec NO_DEFAULT_PATH )
-    find_library( AEC_LIBRARY  NAMES aec  PATHS ${AEC_PATH}/lib     PATH_SUFFIXES aec NO_DEFAULT_PATH )
-endif()
-
-find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES aec )
-find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES aec )
+#  AEC_LIBRARIES    - The libraries needed to use AEC
+#
+# The following paths will be searched with priority if set in CMake or env
+#
+#  AEC_DIR          - prefix path of the AEC installation
+#  AEC_PATH         - prefix path of the AEC installation
+
+find_path( AEC_INCLUDE_DIR szlib.h
+           PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
+           PATH_SUFFIXES include include/aec NO_DEFAULT_PATH )
+find_path( AEC_INCLUDE_DIR szlib.h PATH_SUFFIXES include include/aec )
+
+find_library( AEC_LIBRARY  NAMES aec
+              PATHS ${AEC_DIR} ${AEC_PATH} ENV AEC_DIR ENV AEC_PATH
+              PATH_SUFFIXES lib lib64 lib/aec lib64/aec NO_DEFAULT_PATH )
+find_library( AEC_LIBRARY NAMES aec PATH_SUFFIXES lib lib64 lib/aec lib64/aec )
 
 set( AEC_LIBRARIES    ${AEC_LIBRARY} )
 set( AEC_INCLUDE_DIRS ${AEC_INCLUDE_DIR} )
diff --git a/cmake/contrib/FindFFTW.cmake b/cmake/FindFFTW.cmake
similarity index 96%
rename from cmake/contrib/FindFFTW.cmake
rename to cmake/FindFFTW.cmake
index 5ef46df..b76afa5 100644
--- a/cmake/contrib/FindFFTW.cmake
+++ b/cmake/FindFFTW.cmake
@@ -56,12 +56,6 @@
 #
 ##############################################################################
 
-#============================================#
-#                                            #
-#    From Eigen3, modified by W Deconinck    #
-#                                            #
-#============================================#
-
 if( (NOT FFTW_ROOT) AND EXISTS $ENV{FFTW_ROOT} )
   set( FFTW_ROOT ${FFTW_ROOT} )
 endif()
diff --git a/cmake/FindGeoTIFF.cmake b/cmake/FindGeoTIFF.cmake
index 83c868c..126bc46 100644
--- a/cmake/FindGeoTIFF.cmake
+++ b/cmake/FindGeoTIFF.cmake
@@ -1,38 +1,46 @@
-###############################################################################
+# (C) Copyright 1996-2016 ECMWF.
 #
-# CMake module to search for GeoTIFF library
-#
-# On success, the macro sets the following variables:
-# GEOTIFF_FOUND       = if the library found
-# GEOTIFF_LIBRARIES   = full path to the library
-# GEOTIFF_INCLUDE_DIR = where to find the library headers 
-# also defined, but not for general use are
-# GEOTIFF_LIBRARY, where to find the PROJ.4 library.
-#
-# Copyright (c) 2009 Mateusz Loskot <mateusz at loskot.net>
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+# - Try to find the GeoTIFF includes and library
+# This module defines
 #
-# Module source: http://github.com/mloskot/workshop/tree/master/cmake/
+#  GEOTIFF_FOUND         - System has GeoTIFF
+#  GEOTIFF_INCLUDE_DIRS  - the GeoTIFF include directories
+#  GEOTIFF_LIBRARIES     - the libraries needed to use GeoTIFF
 #
-# Redistribution and use is allowed according to the terms of the BSD license.
-# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
+# The following paths will be searched with priority if set in CMake or env
 #
-###############################################################################
+#  GEOTIFF_DIR   - root folder of the GeoTIFF installation
+#  GEOTIFF_PATH  - root folder of the GeoTIFF installation
 
-SET(GEOTIFF_NAMES geotiff)
+find_path( GEOTIFF_INCLUDE_DIR geotiff.h
+           PATHS ${GEOTIFF_PATH} ENV GEOTIFF_PATH
+                 ${GEOTIFF_DIR}  ENV GEOTIFF_DIR
+           PATH_SUFFIXES include include/libgeotiff
+           NO_DEFAULT_PATH )
+find_path( GEOTIFF_INCLUDE_DIR  openjpeg.h
+           PATH_SUFFIXES include include/libgeotiff )
 
+find_library( GEOTIFF_LIBRARY NAMES geotiff
+              PATHS ${GEOTIFF_PATH} ENV GEOTIFF_PATH
+                    ${GEOTIFF_DIR}  ENV GEOTIFF_DIR
+              PATH_SUFFIXES lib lib64
+              NO_DEFAULT_PATH )
+find_library( GEOTIFF_LIBRARY NAMES geotiff )
 
-    FIND_PATH(GEOTIFF_INCLUDE_DIR geotiff.h PATH_PREFIXES geotiff 
-         PATHS /usr/local/include/libgeotiff /usr/include/libgeotiff)
+set( GEOTIFF_LIBRARIES    ${GEOTIFF_LIBRARY} )
+set( GEOTIFF_INCLUDE_DIRS ${GEOTIFF_INCLUDE_DIR} )
 
-    FIND_LIBRARY(GEOTIFF_LIBRARY NAMES ${GEOTIFF_NAMES})
+include(FindPackageHandleStandardArgs)
 
-
-IF(GEOTIFF_FOUND)
-  SET(GEOTIFF_LIBRARIES ${GEOTIFF_LIBRARY})
-ENDIF()
-
-# Handle the QUIET and REQUIRED arguments and set GEOTIFF_FOUND to TRUE
+# handle the QUIETLY and REQUIRED arguments and set GEOTIFF_FOUND to TRUE
 # if all listed variables are TRUE
-# Note: capitalisation of the package name must be the same as in the file name
-INCLUDE(FindPackageHandleStandardArgs)
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(GEOTiff DEFAULT_MSG GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR)
+find_package_handle_standard_args( GeoTIFF DEFAULT_MSG
+                                   GEOTIFF_LIBRARY GEOTIFF_INCLUDE_DIR )
+
+mark_as_advanced( GEOTIFF_INCLUDE_DIR GEOTIFF_LIBRARY )
diff --git a/cmake/FindMKL.cmake b/cmake/FindMKL.cmake
index 1123234..5941179 100644
--- a/cmake/FindMKL.cmake
+++ b/cmake/FindMKL.cmake
@@ -15,6 +15,7 @@
 #
 # The following paths will be searched with priority if set in CMake or env
 #
+#  MKLROOT           - root directory of the MKL installation
 #  MKL_PATH          - root directory of the MKL installation
 #  MKL_ROOT          - root directory of the MKL installation
 
@@ -34,9 +35,9 @@ else()
 
 endif()
 
-# Search with priority for MKL_ROOT and MKL_PATH if set in CMake or env
+# Search with priority for MKLROOT, MKL_PATH and MKL_ROOT if set in CMake or env
 find_path(MKL_INCLUDE_DIR mkl.h
-          PATHS ${MKL_PATH} ${MKL_ROOT} ENV MKL_PATH MKL_ROOT
+          PATHS ${MKLROOT} ${MKL_PATH} ${MKL_ROOT} ENV MKLROOT ENV MKL_PATH ENV MKL_ROOT
           PATH_SUFFIXES include NO_DEFAULT_PATH)
 find_path(MKL_INCLUDE_DIR mkl.h
           PATH_SUFFIXES include)
@@ -53,8 +54,6 @@ if( MKL_INCLUDE_DIR ) # use include dir to find libs
     set( __libsfx "" )
   endif()
 
-  message( STATUS "ICC_LIB_PATH ${ICC_LIB_PATH}" )
-
   find_library( MKL_LIB_INTEL         NAMES mkl_intel${__libsfx} PATHS ${MKL_LIB_PATH} )
   find_library( ${__mkl_lib_par}      NAMES ${__mkl_lib_name} PATHS ${MKL_LIB_PATH} )
   find_library( MKL_LIB_CORE          NAMES mkl_core PATHS ${MKL_LIB_PATH} )
diff --git a/cmake/FindOpenJPEG.cmake b/cmake/FindOpenJPEG.cmake
index 805f091..c660238 100644
--- a/cmake/FindOpenJPEG.cmake
+++ b/cmake/FindOpenJPEG.cmake
@@ -1,33 +1,45 @@
 # (C) Copyright 1996-2016 ECMWF.
-# 
+#
 # This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
-# In applying this licence, ECMWF does not waive the privileges and immunities 
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
-# - Try to find the OpenJPEG includes and library
+# - Try to find the OpenJPEG includes and library (version 1.5.x or 2.1.x)
 # This module defines
+#
 #  OPENJPEG_FOUND         - System has OpenJPEG
 #  OPENJPEG_INCLUDE_DIRS  - the OpenJPEG include directories
 #  OPENJPEG_LIBRARIES     - the libraries needed to use OpenJPEG
 #
-# also defined internally:
-#  OPENJPEG_LIBRARY, where to find the OpenJPEG library.
-#  OPENJPEG_INCLUDE_DIR, where to find the openjpeg.h header
-
-IF( NOT DEFINED OPENJPEG_PATH AND NOT "$ENV{OPENJPEG_PATH}" STREQUAL "" )
-  SET( OPENJPEG_PATH "$ENV{OPENJPEG_PATH}" )
-ENDIF()
-
-# TODO: This only works for OpenJPEG v1.x.y and not for v2 which has a different API, library name etc
-if( DEFINED OPENJPEG_PATH )
-        find_path(OPENJPEG_INCLUDE_DIR openjpeg.h PATHS ${OPENJPEG_PATH}/include PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
-        find_library(OPENJPEG_LIBRARY  openjpeg   PATHS ${OPENJPEG_PATH}/lib     PATH_SUFFIXES openjpeg  NO_DEFAULT_PATH)
-endif()
-
-find_path(OPENJPEG_INCLUDE_DIR  openjpeg.h PATH_SUFFIXES openjpeg )
-find_library( OPENJPEG_LIBRARY  openjpeg   PATH_SUFFIXES openjpeg )
+# The following paths will be searched with priority if set in CMake or env
+#
+#  OPENJPEG_DIR   - root folder of the OpenJPEG installation
+#  OPENJPEG_PATH  - root folder of the OpenJPEG installation
+
+# Note: OpenJPEG has a version-specific subdirectory in the include
+# e.g. include/openjpeg-2.0 or include/openjpeg-2.1.
+# Only version 1.5.x and 2.1.x are supported.
+# The library name is different for 1.x (libopenjpeg) and 2.x (libopenjp2).
+
+set( _suff include include/openjpeg include/openjpeg-1.5 include/openjpeg-2.1 )
+find_path( OPENJPEG_INCLUDE_DIR openjpeg.h
+           PATHS ${OPENJPEG_PATH} ENV OPENJPEG_PATH
+                 ${OPENJPEG_DIR}  ENV OPENJPEG_DIR
+           PATH_SUFFIXES ${_suff}
+           NO_DEFAULT_PATH )
+find_path( OPENJPEG_INCLUDE_DIR  openjpeg.h
+           PATH_SUFFIXES ${_suff} )
+unset( _suff )
+
+find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2
+              PATHS ${OPENJPEG_PATH} ENV OPENJPEG_PATH
+                    ${OPENJPEG_DIR}  ENV OPENJPEG_DIR
+              PATH_SUFFIXES lib lib/openjpeg
+              NO_DEFAULT_PATH )
+find_library( OPENJPEG_LIBRARY NAMES openjpeg openjp2
+              PATH_SUFFIXES lib lib/openjpeg )
 
 set( OPENJPEG_LIBRARIES    ${OPENJPEG_LIBRARY} )
 set( OPENJPEG_INCLUDE_DIRS ${OPENJPEG_INCLUDE_DIR} )
@@ -39,4 +51,4 @@ include(FindPackageHandleStandardArgs)
 find_package_handle_standard_args(OpenJPEG  DEFAULT_MSG
                                   OPENJPEG_LIBRARY OPENJPEG_INCLUDE_DIR)
 
-mark_as_advanced(OPENJPEG_INCLUDE_DIR OPENJPEG_LIBRARY )
+mark_as_advanced( OPENJPEG_INCLUDE_DIR OPENJPEG_LIBRARY )
diff --git a/cmake/VERSION.cmake b/cmake/VERSION.cmake
index a65cc6d..d9d8705 100644
--- a/cmake/VERSION.cmake
+++ b/cmake/VERSION.cmake
@@ -1,7 +1,7 @@
 set( ECBUILD_MAJOR_VERSION "2" )
-set( ECBUILD_MINOR_VERSION "2" )
+set( ECBUILD_MINOR_VERSION "5" )
 set( ECBUILD_PATCH_VERSION "0" )
 
-set( ECBUILD_VERSION_STR  "2.2.0" )
+set( ECBUILD_VERSION_STR  "2.5.0" )
 
 set( ECBUILD_MACRO_VERSION "${ECBUILD_MAJOR_VERSION}.${ECBUILD_MINOR_VERSION}" )
diff --git a/cmake/compiler_flags/Cray_C.cmake b/cmake/compiler_flags/Cray_C.cmake
index 76779f9..f487cf4 100644
--- a/cmake/compiler_flags/Cray_C.cmake
+++ b/cmake/compiler_flags/Cray_C.cmake
@@ -6,9 +6,8 @@
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
 
-set( CMAKE_C_FLAGS_ALL            "-hlist=amid"                                                                    CACHE STRING "Common flags for all build-types" FORCE )
-set( CMAKE_C_FLAGS_RELEASE        "${CMAKE_C_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release C flags"                  FORCE )
-set( CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info C flags"  FORCE )
-set( CMAKE_C_FLAGS_PRODUCTION     "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production C flags"               FORCE )
-set( CMAKE_C_FLAGS_BIT            "${CMAKE_C_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C flags"         FORCE )
-set( CMAKE_C_FLAGS_DEBUG          "${CMAKE_C_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug Cflags"                     FORCE )
+set( CMAKE_C_FLAGS_RELEASE        "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"        CACHE STRING "Release C flags"                  FORCE )
+set( CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG"                     CACHE STRING "Release-with-debug-info C flags"  FORCE )
+set( CMAKE_C_FLAGS_PRODUCTION     "-O2 -hfp1 -G2"                                 CACHE STRING "Production C flags"               FORCE )
+set( CMAKE_C_FLAGS_BIT            "-O2 -hfp1 -G2 -hflex_mp=conservative -DNDEBUG" CACHE STRING "Bit-reproducible C flags"         FORCE )
+set( CMAKE_C_FLAGS_DEBUG          "-O0 -G0"                                       CACHE STRING "Debug Cflags"                     FORCE )
diff --git a/cmake/compiler_flags/Cray_CXX.cmake b/cmake/compiler_flags/Cray_CXX.cmake
index d599bff..a2a6632 100644
--- a/cmake/compiler_flags/Cray_CXX.cmake
+++ b/cmake/compiler_flags/Cray_CXX.cmake
@@ -6,9 +6,8 @@
 # granted to it by virtue of its status as an intergovernmental organisation
 # nor does it submit to any jurisdiction.
 
-set( CMAKE_CXX_FLAGS_ALL            "-hlist=amid"                                                                      CACHE STRING "Common flags for all build-types"  FORCE )
-set( CMAKE_CXX_FLAGS_RELEASE        "${CMAKE_CXX_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release C++ flags"                 FORCE )
-set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info C++ flags" FORCE )
-set( CMAKE_CXX_FLAGS_PRODUCTION     "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production C++ flags"              FORCE )
-set( CMAKE_CXX_FLAGS_BIT            "${CMAKE_CXX_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible C++ flags"        FORCE )
-set( CMAKE_CXX_FLAGS_DEBUG          "${CMAKE_CXX_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug CXX flags"                   FORCE )
+set( CMAKE_CXX_FLAGS_RELEASE        "-O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"        CACHE STRING "Release C++ flags"                 FORCE )
+set( CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -hfp1 -Gfast -DNDEBUG"                     CACHE STRING "Release-with-debug-info C++ flags" FORCE )
+set( CMAKE_CXX_FLAGS_PRODUCTION     "-O2 -hfp1 -G2"                                 CACHE STRING "Production C++ flags"              FORCE )
+set( CMAKE_CXX_FLAGS_BIT            "-O2 -hfp1 -G2 -hflex_mp=conservative -DNDEBUG" CACHE STRING "Bit-reproducible C++ flags"        FORCE )
+set( CMAKE_CXX_FLAGS_DEBUG          "-O0 -G0"                                       CACHE STRING "Debug CXX flags"                   FORCE )
diff --git a/cmake/compiler_flags/Cray_Fortran.cmake b/cmake/compiler_flags/Cray_Fortran.cmake
index b2c23de..34b96e4 100644
--- a/cmake/compiler_flags/Cray_Fortran.cmake
+++ b/cmake/compiler_flags/Cray_Fortran.cmake
@@ -7,9 +7,9 @@
 # nor does it submit to any jurisdiction.
 
 # -emf activates .mods and uses lower case
-set( CMAKE_Fortran_FLAGS_ALL            "-emf"                                                                                 CACHE STRING "Common flags for all build-types"      FORCE )
-set( CMAKE_Fortran_FLAGS_RELEASE        "${CMAKE_Fortran_FLAGS_ALL} -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release Fortran flags"                 FORCE )
-set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
-set( CMAKE_Fortran_FLAGS_PRODUCTION     "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2"                                             CACHE STRING "Production Fortran flags"              FORCE )
-set( CMAKE_Fortran_FLAGS_BIT            "${CMAKE_Fortran_FLAGS_ALL} -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible Fortran flags"        FORCE )
-set( CMAKE_Fortran_FLAGS_DEBUG          "${CMAKE_Fortran_FLAGS_ALL} -O0 -G0"                                                   CACHE STRING "Debug Fortran flags"                   FORCE )
+# -rmoid produces a listing file
+set( CMAKE_Fortran_FLAGS_RELEASE        "-emf -rmoid -O3 -hfp3 -hscalar3 -hvector3 -DNDEBUG"                    CACHE STRING "Release Fortran flags"                 FORCE )
+set( CMAKE_Fortran_FLAGS_RELWITHDEBINFO "-emf -rmoid -O2 -hfp1 -Gfast -DNDEBUG"                                 CACHE STRING "Release-with-debug-info Fortran flags" FORCE )
+set( CMAKE_Fortran_FLAGS_PRODUCTION     "-emf -rmoid -O2 -hfp1 -G2"                                             CACHE STRING "Production Fortran flags"              FORCE )
+set( CMAKE_Fortran_FLAGS_BIT            "-emf -rmoid -O2 -hfp1 -G2 -hflex_mp=conservative -hadd_paren -DNDEBUG" CACHE STRING "Bit-reproducible Fortran flags"        FORCE )
+set( CMAKE_Fortran_FLAGS_DEBUG          "-emf -rmoid -O0 -G0"                                                   CACHE STRING "Debug Fortran flags"                   FORCE )
diff --git a/cmake/contrib/CMakeCheckCompilerFlagCommonPatterns.cmake b/cmake/contrib/CMakeCheckCompilerFlagCommonPatterns.cmake
new file mode 100644
index 0000000..1b5178d
--- /dev/null
+++ b/cmake/contrib/CMakeCheckCompilerFlagCommonPatterns.cmake
@@ -0,0 +1,33 @@
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
+
+
+# Do NOT include this module directly into any of your code. It is meant as
+# a library for Check*CompilerFlag.cmake modules. It's content may change in
+# any way between releases.
+
+macro (CHECK_COMPILER_FLAG_COMMON_PATTERNS _VAR)
+   set(${_VAR}
+     FAIL_REGEX "[Uu]nrecogni[sz]ed .*option"               # GNU, NAG
+     FAIL_REGEX "unknown .*option"                          # Clang
+     FAIL_REGEX "optimization flag .* not supported"        # Clang
+     FAIL_REGEX "unknown argument ignored"                  # Clang (cl)
+     FAIL_REGEX "ignoring unknown option"                   # MSVC, Intel
+     FAIL_REGEX "warning D9002"                             # MSVC, any lang
+     FAIL_REGEX "option.*not supported"                     # Intel
+     FAIL_REGEX "invalid argument .*option"                 # Intel
+     FAIL_REGEX "ignoring option .*argument required"       # Intel
+     FAIL_REGEX "ignoring option .*argument is of wrong type" # Intel
+     FAIL_REGEX "[Uu]nknown option"                         # HP
+     FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
+     FAIL_REGEX "command option .* is not recognized"       # XL
+     FAIL_REGEX "command option .* contains an incorrect subargument" # XL
+     FAIL_REGEX "not supported in this configuration. ignored"       # AIX
+     FAIL_REGEX "File with unknown suffix passed to linker" # PGI
+     FAIL_REGEX "[Uu]nknown switch"                         # PGI
+     FAIL_REGEX "WARNING: unknown flag:"                    # Open64
+     FAIL_REGEX "Incorrect command line option:"            # Borland
+     FAIL_REGEX "Warning: illegal option"                   # SunStudio 12
+     FAIL_REGEX "[Ww]arning: Invalid suboption"             # Fujitsu
+   )
+endmacro ()
diff --git a/cmake/contrib/CheckFortranCompilerFlag.cmake b/cmake/contrib/CheckFortranCompilerFlag.cmake
index 6a35c8e..8519fcc 100644
--- a/cmake/contrib/CheckFortranCompilerFlag.cmake
+++ b/cmake/contrib/CheckFortranCompilerFlag.cmake
@@ -1,25 +1,53 @@
-# File taken from CMake Bug Report: http://public.kitware.com/Bug/print_bug_page.php?bug_id=12459
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
 
-# - Check whether the Fortan compiler supports a given flag.
-# CHECK_FORTRAN_COMPILER_FLAG(<flag> <var>)
-#  <flag> - the compiler flag
-#  <var>  - variable to store the result
-# This internally calls the check_fortran_source_compiles macro.  See help
-# for CheckFortranSourceCompiles for a listing of variables that can
-# modify the build.
+#.rst:
+# CheckFortranCompilerFlag
+# ------------------------
+#
+# Check whether the Fortran compiler supports a given flag.
+#
+# CHECK_Fortran_COMPILER_FLAG(<flag> <var>)
+#
+# ::
+#
+#   <flag> - the compiler flag
+#   <var>  - variable to store the result
+#            Will be created as an internal cache variable.
+#
+# This internally calls the check_fortran_source_compiles macro and
+# sets CMAKE_REQUIRED_DEFINITIONS to <flag>.  See help for
+# CheckFortranSourceCompiles for a listing of variables that can
+# otherwise modify the build.  The result only tells that the compiler
+# does not give an error message when it encounters the flag.  If the
+# flag has any effect or even a specific one is beyond the scope of
+# this module.
 
-INCLUDE(CheckFortranSourceCompiles)
+include(CheckFortranSourceCompiles)
+include(CMakeCheckCompilerFlagCommonPatterns)
 
-MACRO (CHECK_FORTRAN_COMPILER_FLAG _FLAG _RESULT)
-   SET(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
-   SET(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
-   CHECK_FORTRAN_SOURCE_COMPILES("end" ${_RESULT}
-     # Some compilers do not fail with a bad flag
-     FAIL_REGEX "unrecognized .*option"                     # GNU
-     FAIL_REGEX "ignoring unknown option"                   # MSVC
-     FAIL_REGEX "[Uu]nknown option"                         # HP
-     FAIL_REGEX "[Ww]arning: [Oo]ption"                     # SunPro
-     FAIL_REGEX "command option .* is not recognized"       # XL
-     )
-   SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
-ENDMACRO (CHECK_FORTRAN_COMPILER_FLAG)
+macro (CHECK_Fortran_COMPILER_FLAG _FLAG _RESULT)
+  set(SAFE_CMAKE_REQUIRED_DEFINITIONS "${CMAKE_REQUIRED_DEFINITIONS}")
+  set(CMAKE_REQUIRED_DEFINITIONS "${_FLAG}")
+
+  # Normalize locale during test compilation.
+  set(_CheckFortranCompilerFlag_LOCALE_VARS LC_ALL LC_MESSAGES LANG)
+  foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS})
+    set(_CheckFortranCompilerFlag_SAVED_${v} "$ENV{${v}}")
+    set(ENV{${v}} C)
+  endforeach()
+  CHECK_COMPILER_FLAG_COMMON_PATTERNS(_CheckFortranCompilerFlag_COMMON_PATTERNS)
+  CHECK_Fortran_SOURCE_COMPILES("       program test\n       stop\n       end program" ${_RESULT}
+    # Some compilers do not fail with a bad flag
+    FAIL_REGEX "command line option .* is valid for .* but not for Fortran" # GNU
+    ${_CheckFortranCompilerFlag_COMMON_PATTERNS}
+    )
+  foreach(v ${_CheckFortranCompilerFlag_LOCALE_VARS})
+    set(ENV{${v}} ${_CheckFortranCompilerFlag_SAVED_${v}})
+    unset(_CheckFortranCompilerFlag_SAVED_${v})
+  endforeach()
+  unset(_CheckFortranCompilerFlag_LOCALE_VARS)
+  unset(_CheckFortranCompilerFlag_COMMON_PATTERNS)
+
+  set (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")
+endmacro ()
diff --git a/cmake/contrib/CheckFortranSourceCompiles.cmake b/cmake/contrib/CheckFortranSourceCompiles.cmake
index 500aee6..c42254c 100644
--- a/cmake/contrib/CheckFortranSourceCompiles.cmake
+++ b/cmake/contrib/CheckFortranSourceCompiles.cmake
@@ -1,61 +1,106 @@
-# File taken from CMake Bug Report: http://public.kitware.com/Bug/print_bug_page.php?bug_id=12459
+# Distributed under the OSI-approved BSD 3-Clause License.  See accompanying
+# file Copyright.txt or https://cmake.org/licensing for details.
 
-# - Check if the source code provided in the SOURCE argument compiles.
-# CHECK_FORTRAN_SOURCE_COMPILES(SOURCE VAR)
-# - macro which checks if the source code compiles
-#  SOURCE   - source code to try to compile
-#  VAR      - variable to store whether the source code compiled
+#.rst:
+# CheckFortranSourceCompiles
+# --------------------------
 #
-# The following variables may be set before calling this macro to
-# modify the way the check is run:
+# Check if given Fortran source compiles and links into an executable::
 #
-#  CMAKE_REQUIRED_FLAGS = string of compile command line flags
-#  CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
-#  CMAKE_REQUIRED_INCLUDES = list of include directories
-#  CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+#   CHECK_Fortran_SOURCE_COMPILES(<code> <var> [FAIL_REGEX <fail-regex>]
+#                                 [SRC_EXT <ext>])
+#
+# The arguments are:
+#
+# ``<code>``
+#   Source code to try to compile.  It must define a PROGRAM entry point.
+# ``<var>``
+#   Variable to store whether the source code compiled.
+#   Will be created as an internal cache variable.
+# ``FAIL_REGEX <fail-regex>``
+#   Fail if test output matches this regex.
+# ``SRC_EXT <ext>``
+#   Use source extension ``.<ext>`` instead of the default ``.F``.
+#
+# The following variables may be set before calling this macro to modify
+# the way the check is run::
+#
+#   CMAKE_REQUIRED_FLAGS = string of compile command line flags
+#   CMAKE_REQUIRED_DEFINITIONS = list of macros to define (-DFOO=bar)
+#   CMAKE_REQUIRED_INCLUDES = list of include directories
+#   CMAKE_REQUIRED_LIBRARIES = list of libraries to link
+#   CMAKE_REQUIRED_QUIET = execute quietly without messages
 
-MACRO(CHECK_FORTRAN_SOURCE_COMPILES SOURCE VAR)
-  IF("${VAR}" MATCHES "^${VAR}$")
-    SET(MACRO_CHECK_FUNCTION_DEFINITIONS
+macro(CHECK_Fortran_SOURCE_COMPILES SOURCE VAR)
+  if(NOT DEFINED "${VAR}")
+    set(_FAIL_REGEX)
+    set(_SRC_EXT)
+    set(_key)
+    foreach(arg ${ARGN})
+      if("${arg}" MATCHES "^(FAIL_REGEX|SRC_EXT)$")
+        set(_key "${arg}")
+      elseif(_key)
+        list(APPEND _${_key} "${arg}")
+      else()
+        message(FATAL_ERROR "Unknown argument:\n  ${arg}\n")
+      endif()
+    endforeach()
+    if(NOT _SRC_EXT)
+      set(_SRC_EXT F)
+    endif()
+    set(MACRO_CHECK_FUNCTION_DEFINITIONS
       "-D${VAR} ${CMAKE_REQUIRED_FLAGS}")
-    IF(CMAKE_REQUIRED_LIBRARIES)
-      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES
-        "-DLINK_LIBRARIES:STRING=${CMAKE_REQUIRED_LIBRARIES}")
-    ELSE(CMAKE_REQUIRED_LIBRARIES)
-      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES)
-    ENDIF(CMAKE_REQUIRED_LIBRARIES)
-    IF(CMAKE_REQUIRED_INCLUDES)
-      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES
+    if(CMAKE_REQUIRED_LIBRARIES)
+      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES
+        LINK_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES})
+    else()
+      set(CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES)
+    endif()
+    if(CMAKE_REQUIRED_INCLUDES)
+      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES
         "-DINCLUDE_DIRECTORIES:STRING=${CMAKE_REQUIRED_INCLUDES}")
-    ELSE(CMAKE_REQUIRED_INCLUDES)
-      SET(CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES)
-    ENDIF(CMAKE_REQUIRED_INCLUDES)
-    FILE(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90"
+    else()
+      set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES)
+    endif()
+    file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}"
       "${SOURCE}\n")
 
-    MESSAGE(STATUS "Performing Test ${VAR}")
-    TRY_COMPILE(${VAR}
+    if(NOT CMAKE_REQUIRED_QUIET)
+      message(STATUS "Performing Test ${VAR}")
+    endif()
+    try_compile(${VAR}
       ${CMAKE_BINARY_DIR}
-      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.f90
+      ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/src.${_SRC_EXT}
       COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
+      ${CHECK_Fortran_SOURCE_COMPILES_ADD_LIBRARIES}
       CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
-      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_LIBRARIES}"
-      "${CHECK_FORTRAN_SOURCE_COMPILES_ADD_INCLUDES}"
+      "${CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES}"
       OUTPUT_VARIABLE OUTPUT)
-    IF(${VAR})
-      SET(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
-      MESSAGE(STATUS "Performing Test ${VAR} - Success")
-      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
-        "Performing Fortran SOURCE FILE Test ${VAR} succeded with the following output:\n"
+
+    foreach(_regex ${_FAIL_REGEX})
+      if("${OUTPUT}" MATCHES "${_regex}")
+        set(${VAR} 0)
+      endif()
+    endforeach()
+
+    if(${VAR})
+      set(${VAR} 1 CACHE INTERNAL "Test ${VAR}")
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(STATUS "Performing Test ${VAR} - Success")
+      endif()
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeOutput.log
+        "Performing Fortran SOURCE FILE Test ${VAR} succeeded with the following output:\n"
         "${OUTPUT}\n"
         "Source file was:\n${SOURCE}\n")
-    ELSE(${VAR})
-      MESSAGE(STATUS "Performing Test ${VAR} - Failed")
-      SET(${VAR} 0 CACHE INTERNAL "Test ${VAR}")
-      FILE(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
+    else()
+      if(NOT CMAKE_REQUIRED_QUIET)
+        message(STATUS "Performing Test ${VAR} - Failed")
+      endif()
+      set(${VAR} "" CACHE INTERNAL "Test ${VAR}")
+      file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log
         "Performing Fortran SOURCE FILE Test ${VAR} failed with the following output:\n"
         "${OUTPUT}\n"
         "Source file was:\n${SOURCE}\n")
-    ENDIF(${VAR})
-  ENDIF("${VAR}" MATCHES "^${VAR}$")
-ENDMACRO(CHECK_FORTRAN_SOURCE_COMPILES)
+    endif()
+  endif()
+endmacro()
diff --git a/cmake/contrib/FindNetCDF4.cmake b/cmake/contrib/FindNetCDF4.cmake
index 6bba4e0..70e54af 100644
--- a/cmake/contrib/FindNetCDF4.cmake
+++ b/cmake/contrib/FindNetCDF4.cmake
@@ -149,11 +149,11 @@ else()
     set( NETCDF_F90_INCLUDE_NAMES netcdf.mod typesizes.mod ${NETCDF_C_INCLUDE_NAMES} )
 
     set( NETCDF_C_LIBRARY_NAMES netcdf)
-    set( NETCDF_CXX_LIBRARY_NAMES netcdf_c++ ${NETCDF_C_LIBRARY_NAMES} )
+    set( NETCDF_CXX_LIBRARY_NAMES netcdf_c++ netcdf_c++4 ${NETCDF_C_LIBRARY_NAMES} )
     set( NETCDF_FORTRAN_LIBRARY_NAMES netcdff ${NETCDF_C_LIBRARY_NAMES})
     set( NETCDF_F90_LIBRARY_NAMES ${NETCDF_FORTRAN_LIBRARY_NAMES} )
 
-    set( NETCDF_REQUIRED netcdf.h netcdfcpp.h netcdf.mod typesizes.mod netcdf netcdff netcdf_c++)
+    set( NETCDF_REQUIRED netcdf.h netcdfcpp.h netcdf.mod typesizes.mod netcdf netcdff netcdf_c++ netcdf_c++4)
 
     foreach( LANGUAGE ${NETCDF_LANGUAGE_BINDINGS} )
         ecbuild_debug("FindNetCDF4: looking for ${LANGUAGE} language bindings")
diff --git a/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
index 2a11e04..ac7f456 100644
--- a/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
+++ b/cmake/contrib/GreatCMakeCookOff/AddCPP11Flags.cmake
@@ -29,6 +29,7 @@ endif(CMAKE_VERSION VERSION_LESS 2.8.9)
 
 check_cxx_compiler_flag(-std=c++11 has_std_cpp11)
 check_cxx_compiler_flag(-std=c++0x has_std_cpp0x)
+check_cxx_compiler_flag(-hstd=c++11 has_hstd_cpp11)
 if(MINGW) 
   check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
   check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
@@ -37,10 +38,12 @@ if(has_std_gnupp11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
 elseif(has_std_gnupp0x)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++0x")
-elseif(has_std_cpp11) 
+elseif(has_std_cpp11)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
 elseif(has_std_cpp0x)
   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
+elseif(has_hstd_cpp11)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -hstd=c++11")
 endif(has_std_gnupp11)
 
 if(MSVC) 
diff --git a/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
index 71fa610..593b62f 100644
--- a/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
+++ b/cmake/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake
@@ -1,14 +1,14 @@
 # Checks for C++11 features
-# 
+#
 # USAGE: There are two functions
 #
-# cxx11_find_all_features(OUTPUT_VARIABLE) 
+# cxx11_find_all_features(OUTPUT_VARIABLE)
 # This function returns a variable with all possible features.
 #
 # cxx11_feature_check([feature feature] [REQUIRED [feature feature]])
 # If no arguments are provided, then checks all available features
 # Features appeacing before REQUIRED are optional.
-# If arguments are provided and those features are available, sets 
+# If arguments are provided and those features are available, sets
 # the variable HAS_CXX11_FEATURENAME, where FEATURENAME is the input in capital letters.
 # Fails if required feature are not available
 #
@@ -17,65 +17,66 @@
 # Original script by Rolf Eike Beer
 # Modifications by Andreas Weis
 # Further Modifications by RSDT at UCL
+# Adapted to ecBuild by Florian Rathgeber <florian.rathgeber at ecmwf.int>
 
 set(CPP11_FEATURE_CHECK_DIR ${CMAKE_CURRENT_LIST_DIR}/cpp11 CACHE INTERNAL "c++11 file directory")
 
 MACRO(cxx11_check_single_feature FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
-	IF (NOT DEFINED ${RESULT_VAR})
+  IF (NOT DEFINED ${RESULT_VAR})
     SET(_bindir "${CMAKE_BINARY_DIR}/cxx11_feature_tests/cxx11_${FEATURE_NAME}")
 
-		IF (${FEATURE_NUMBER})
+    IF (${FEATURE_NUMBER})
       SET(_SRCFILE_BASE ${CPP11_FEATURE_CHECK_DIR}/${FEATURE_NAME}-N${FEATURE_NUMBER})
-			SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
-		ELSE (${FEATURE_NUMBER})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
+    ELSE (${FEATURE_NUMBER})
       SET(_SRCFILE_BASE ${CPP11_FEATURE_CHECK_DIR}/${FEATURE_NAME})
-			SET(_LOG_NAME "\"${FEATURE_NAME}\"")
-		ENDIF (${FEATURE_NUMBER})
-		MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME}")
-
-		SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
-		SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
-		SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
-
-		IF (CROSS_COMPILING)
-			try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
-			IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-				try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
-			ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-		ELSE (CROSS_COMPILING)
-			try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
-					"${_bindir}" "${_SRCFILE}")
-			IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-				SET(${RESULT_VAR} TRUE)
-			ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-				SET(${RESULT_VAR} FALSE)
-			ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
-			IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-				try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
-						"${_bindir}_fail" "${_SRCFILE_FAIL}")
-				IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-					SET(${RESULT_VAR} TRUE)
-				ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-					SET(${RESULT_VAR} FALSE)
-				ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
-			ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
-		ENDIF (CROSS_COMPILING)
-		IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
-			try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
-			IF (_TMP_RESULT)
-				SET(${RESULT_VAR} FALSE)
-			ELSE (_TMP_RESULT)
-				SET(${RESULT_VAR} TRUE)
-			ENDIF (_TMP_RESULT)
-		ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
-
-		IF (${RESULT_VAR})
-			MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- works")
-		ELSE (${RESULT_VAR})
-			MESSAGE(STATUS "Checking C++11 support for ${_LOG_NAME} -- not supported")
-		ENDIF (${RESULT_VAR})
-		SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
-	ENDIF (NOT DEFINED ${RESULT_VAR})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\"")
+    ENDIF (${FEATURE_NUMBER})
+    ecbuild_info("Checking C++11 support for ${_LOG_NAME}")
+
+    SET(_SRCFILE "${_SRCFILE_BASE}.cpp")
+    SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.cpp")
+    SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.cpp")
+
+    IF (CROSS_COMPILING)
+      try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ELSE (CROSS_COMPILING)
+      try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+          "${_bindir}" "${_SRCFILE}")
+      IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} TRUE)
+      ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} FALSE)
+      ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+            "${_bindir}_fail" "${_SRCFILE_FAIL}")
+        IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} TRUE)
+        ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} FALSE)
+        ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ENDIF (CROSS_COMPILING)
+    IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+      try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
+      IF (_TMP_RESULT)
+        SET(${RESULT_VAR} FALSE)
+      ELSE (_TMP_RESULT)
+        SET(${RESULT_VAR} TRUE)
+      ENDIF (_TMP_RESULT)
+    ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+
+    IF (${RESULT_VAR})
+      ecbuild_info("Checking C++11 support for ${_LOG_NAME} -- works")
+    ELSE (${RESULT_VAR})
+      ecbuild_info("Checking C++11 support for ${_LOG_NAME} -- not supported")
+    ENDIF (${RESULT_VAR})
+    SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "C++11 support for ${_LOG_NAME}")
+  ENDIF (NOT DEFINED ${RESULT_VAR})
 ENDMACRO(cxx11_check_single_feature)
 
 # Find list of all features
@@ -138,12 +139,12 @@ macro(_figure_out_cxx11_feature current_feature)
       list(REMOVE_ITEM ALL_FEATURE_FILES ${filename})
     endif()
   endforeach()
-  
+
   list(LENGTH ALL_FEATURE_FILES NFILES)
   if(NOT ${NFILES} EQUAL 1)
-    message(FATAL_ERROR "[c++11] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
+    ecbuild_critical("[c++11] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
   endif(NOT ${NFILES} EQUAL 1)
-  
+
   # Now we know which file corresponds to option.
   get_filename_component(basename ${ALL_FEATURE_FILES} NAME_WE)
   # If has feature number, extract it
@@ -165,18 +166,18 @@ function(cxx11_feature_check)
   # Parses input to this function.
   parse_input_features("${ALL_CPP11_FEATURES}" OPTIONALS REQUIRED ERRORS ${ARGN})
   if(NOT ${ERRORS} STREQUAL "")
-    message(STATUS "[c++11] The following features are unknown: ${ERRORS}.")
+    ecbuild_info("[c++11] The following features are unknown: ${ERRORS}.")
   endif()
 
   # MinGW has not implemented std::random_device fully yet. Unfortunately, this can only be detected
   # by running a program which tries to call std::random_device. However that generates an error that
-  # is *not* caught by CMake's try_run. 
+  # is *not* caught by CMake's try_run.
   if(MSYS)
     list(REMOVE_ITEM OPTIONALS "random_device")
     list(FIND REQUIRED "random_device" feature_was_found)
     if(NOT feature_was_found EQUAL "-1")
-      message(FATAL_ERROR "[c++1] MSYS does not implement Random devices fully.\n"
-                          "       It cannot be required on this system.")
+      ecbuild_critical("[c++1] MSYS does not implement Random devices fully.\n"
+                       "       It cannot be required on this system.")
     endif()
   endif()
 
@@ -190,7 +191,7 @@ function(cxx11_feature_check)
     _figure_out_cxx11_feature(${current_feature})
     set(VARNAME HAS_CXX11_${UPPER_OPTIONAL})
     if(NOT ${VARNAME})
-      message(FATAL_ERROR "[c++11] Required feature ${current_feature} is not available.")
+      ecbuild_critical("[c++11] Required feature ${current_feature} is not available.")
     endif(NOT ${VARNAME})
   endforeach(current_feature ${REQUIRED})
 
diff --git a/cmake/ecbuild-config-version.cmake b/cmake/ecbuild-config-version.cmake
index 655d394..735aaf1 100644
--- a/cmake/ecbuild-config-version.cmake
+++ b/cmake/ecbuild-config-version.cmake
@@ -1,4 +1,4 @@
-set(PACKAGE_VERSION "2.2.0")
+set(PACKAGE_VERSION "2.5.0")
 
 # check whether the requested PACKAGE_FIND_VERSION is compatible
 
diff --git a/cmake/ecbuild-config.cmake b/cmake/ecbuild-config.cmake
index 9e63c3d..260664d 100644
--- a/cmake/ecbuild-config.cmake
+++ b/cmake/ecbuild-config.cmake
@@ -28,9 +28,9 @@ set( ECBUILD_TPL_INCLUDE_DIRS  "" )
 set( ECBUILD_TPL_DEFINITIONS   "" )
 set( ECBUILD_TPL_LIBRARIES     "" )
 
-set( ECBUILD_VERSION           "2.2.0" )
-set( ECBUILD_GIT_SHA1          "2aab713da140125a8d6a6d4620ff314740e82562" )
-set( ECBUILD_GIT_SHA1_SHORT    "2aab713" )
+set( ECBUILD_VERSION           "2.5.0" )
+set( ECBUILD_GIT_SHA1          "7ec05b00ab6843a69d6dff1f0c0450ca894b409b" )
+set( ECBUILD_GIT_SHA1_SHORT    "7ec05b0" )
 
 ### export include paths as absolute paths
 
diff --git a/cmake/ecbuild_add_c_flags.cmake b/cmake/ecbuild_add_c_flags.cmake
index e6923a9..098c254 100644
--- a/cmake/ecbuild_add_c_flags.cmake
+++ b/cmake/ecbuild_add_c_flags.cmake
@@ -16,7 +16,8 @@
 #
 #   ecbuild_add_c_flags( <flag1> [ <flag2> ... ]
 #                        [ BUILD <build> ]
-#                        [ NAME <name> ] )
+#                        [ NAME <name> ]
+#                        [ NO_FAIL ] )
 #
 # Options
 # -------
@@ -27,6 +28,9 @@
 # NAME : optional
 #   name of the check (if omitted, checks are enumerated)
 #
+# NO_FAIL : optional
+#   do not fail if the flag cannot be added
+#
 ##############################################################################
 
 macro( ecbuild_add_c_flags m_c_flags )
@@ -34,7 +38,7 @@ macro( ecbuild_add_c_flags m_c_flags )
   set( _flags ${m_c_flags} )
 
   if( _flags AND CMAKE_C_COMPILER_LOADED )
-    set( options )
+    set( options NO_FAIL )
     set( single_value_args BUILD NAME )
     set( multi_value_args )
 
@@ -75,8 +79,10 @@ macro( ecbuild_add_c_flags m_c_flags )
           set( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_flags}" )
           ecbuild_debug( "C FLAG [${_flags}] added" )
         endif()
+      elseif( _PAR_NO_FAIL )
+        ecbuild_info( "Unrecognised C flag [${_flags}] -- skipping" )
       else()
-        ecbuild_warn( "Unrecognised C flag [${_flags}] -- skipping" )
+        ecbuild_error( "Unrecognised C flag [${_flags}]" )
       endif()
     endif()
     unset( _flags )
diff --git a/cmake/ecbuild_add_cxx_flags.cmake b/cmake/ecbuild_add_cxx_flags.cmake
index 63c442e..5104880 100644
--- a/cmake/ecbuild_add_cxx_flags.cmake
+++ b/cmake/ecbuild_add_cxx_flags.cmake
@@ -16,7 +16,8 @@
 #
 #   ecbuild_add_cxx_flags( <flag1> [ <flag2> ... ]
 #                          [ BUILD <build> ]
-#                          [ NAME <name> ] )
+#                          [ NAME <name> ]
+#                          [ NO_FAIL ] )
 #
 # Options
 # -------
@@ -27,13 +28,16 @@
 # NAME : optional
 #   name of the check (if omitted, checks are enumerated)
 #
+# NO_FAIL : optional
+#   do not fail if the flag cannot be added
+#
 ##############################################################################
 
 macro( ecbuild_add_cxx_flags m_cxx_flags )
 
   set( _flags ${m_cxx_flags} )
   if( _flags AND CMAKE_CXX_COMPILER_LOADED )
-    set( options )
+    set( options NO_FAIL )
     set( single_value_args BUILD NAME )
     set( multi_value_args )
 
@@ -75,8 +79,10 @@ macro( ecbuild_add_cxx_flags m_cxx_flags )
           set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${_flags}" )
           ecbuild_debug( "C++ FLAG [${_flags}] added" )
         endif()
-      else()
+      elseif( _PAR_NO_FAIL )
         ecbuild_info( "Unrecognised CXX flag [${_flags}] -- skipping" )
+      else()
+        ecbuild_error( "Unrecognised CXX flag [${_flags}]" )
       endif()
     endif()
     unset( _flags )
diff --git a/cmake/ecbuild_add_executable.cmake b/cmake/ecbuild_add_executable.cmake
index 4572832..424059e 100644
--- a/cmake/ecbuild_add_executable.cmake
+++ b/cmake/ecbuild_add_executable.cmake
@@ -26,7 +26,7 @@
 #                           [ PERSISTENT <file1> [<file2> ...] ]
 #                           [ GENERATED <file1> [<file2> ...] ]
 #                           [ DEPENDS <target1> [<target2> ...] ]
-#                           [ CONDITION <condition1> [<condition2> ...] ]
+#                           [ CONDITION <condition> ]
 #                           [ NOINSTALL ]
 #                           [ VERSION <version> | AUTO_VERSION ]
 #                           [ CFLAGS <flag1> [<flag2> ...] ]
@@ -232,66 +232,10 @@ macro( ecbuild_add_executable )
     #   ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-    #   ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+    #   ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-    # add local flags
-
-    if( ${_PAR_TARGET}_c_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
-                              ${_PAR_TARGET}_c
-                              "${_PAR_CFLAGS}"
-                              "${${_PAR_TARGET}_c_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_cxx_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
-                              ${_PAR_TARGET}_cxx
-                              "${_PAR_CXXFLAGS}"
-                              "${${_PAR_TARGET}_cxx_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CXXFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_f_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
-                              ${_PAR_TARGET}_f
-                              "${_PAR_FFLAGS}"
-                              "${${_PAR_TARGET}_f_srcs}" )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_FFLAGS )
-
-        ecbuild_debug("ecbuild_add_executable(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}  PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-
-      endif()
-    endif()
+    # Override compilation flags on a per source file basis
+    ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
 
     # define VERSION if requested
     if( DEFINED _PAR_VERSION )
diff --git a/cmake/ecbuild_add_fortran_flags.cmake b/cmake/ecbuild_add_fortran_flags.cmake
index 86cea83..0d3b544 100644
--- a/cmake/ecbuild_add_fortran_flags.cmake
+++ b/cmake/ecbuild_add_fortran_flags.cmake
@@ -17,7 +17,8 @@
 #
 #   ecbuild_add_fortran_flags( <flag1> [ <flag2> ... ]
 #                              [ BUILD <build> ]
-#                              [ NAME <name> ] )
+#                              [ NAME <name> ]
+#                              [ NO_FAIL ] )
 #
 # Options
 # -------
@@ -29,6 +30,9 @@
 # NAME : optional
 #   name of the check (if omitted, checks are enumerated)
 #
+# NO_FAIL : optional
+#   do not fail if the flag cannot be added
+#
 ##############################################################################
 
 include( CheckFortranCompilerFlag )
@@ -38,7 +42,7 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
 
   if( _flags AND CMAKE_Fortran_COMPILER_LOADED )
 
-    set( options )
+    set( options NO_FAIL )
     set( single_value_args BUILD NAME )
     set( multi_value_args )
 
@@ -60,7 +64,14 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
 
       math( EXPR N_FortranFLAG '${N_FortranFLAG}+1' )
 
-      if( NOT ECBUILD_TRUST_FLAGS )
+      if( ECBUILD_TRUST_FLAGS )
+        set( _flag_ok 1 )
+      # Due to a bug in CMake < 3.0, check_fortran_compiler_flag ALWAYS fails with ifort
+      # see https://cmake.org/Bug/view.php?id=14507
+      elseif( CMAKE_MAJOR_VERSION LESS 3 AND CMAKE_Fortran_COMPILER_ID MATCHES "Intel" )
+        set( _flag_ok 1 )
+        ecbuild_warn( "Not testing Fortran flags due to a bug in CMake < 3.0 with ifort" )
+      else()
         if( DEFINED _PAR_NAME )
           check_fortran_compiler_flag( ${_flags} ${_PAR_NAME} )
           set( _flag_ok ${${_PAR_NAME}} )
@@ -68,8 +79,6 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
           check_fortran_compiler_flag( ${_flags} Fortran_FLAG_TEST_${N_FortranFLAG} )
           set( _flag_ok ${Fortran_FLAG_TEST_${N_FortranFLAG}} )
         endif()
-      else()
-        set( _flag_ok 1 )
       endif()
 
       if( _flag_ok )
@@ -80,8 +89,10 @@ macro( ecbuild_add_fortran_flags m_fortran_flags )
           set( CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${_flags}" )
           ecbuild_debug( "Fortran FLAG [${_flags}] added" )
         endif()
-      else()
+      elseif( _PAR_NO_FAIL )
         ecbuild_info( "Unrecognised Fortran flag [${_flags}] -- skipping" )
+      else()
+        ecbuild_error( "Unrecognised Fortran flag [${_flags}]" )
       endif()
     endif()
 
diff --git a/cmake/ecbuild_add_library.cmake b/cmake/ecbuild_add_library.cmake
index 48602a4..a7f8001 100644
--- a/cmake/ecbuild_add_library.cmake
+++ b/cmake/ecbuild_add_library.cmake
@@ -29,13 +29,14 @@
 #                        [ PERSISTENT <file1> [<file2> ...] ]
 #                        [ GENERATED <file1> [<file2> ...] ]
 #                        [ DEPENDS <target1> [<target2> ...] ]
-#                        [ CONDITION <condition1> [<condition2> ...] ]
+#                        [ CONDITION <condition> ]
 #                        [ NOINSTALL ]
 #                        [ HEADER_DESTINATION <path> ]
 #                        [ INSTALL_HEADERS LISTED|ALL ]
 #                        [ INSTALL_HEADERS_LIST <header1> [<header2> ...] ]
 #                        [ INSTALL_HEADERS_REGEX <pattern> ]
 #                        [ VERSION <version> | AUTO_VERSION ]
+#                        [ SOVERSION <soversion> | AUTO_SOVERSION ]
 #                        [ CFLAGS <flag1> [<flag2> ...] ]
 #                        [ CXXFLAGS <flag1> [<flag2> ...] ]
 #                        [ FFLAGS <flag1> [<flag2> ...] ]
@@ -123,10 +124,16 @@
 #   regular expression to match extra headers to install
 #
 # VERSION : optional, AUTO_VERSION or LIBS_VERSION is used if not specified
-#   version to use as library version
+#   build version of the library
 #
 # AUTO_VERSION : optional, ignored if VERSION is specified
-#   automatically version the library with the package version
+#   use MAJOR.MINOR package version as build version of the library
+#
+# SOVERSION : optional, AUTO_SOVERSION or LIBS_SOVERSION is used if not specified
+#   ABI version of the library
+#
+# AUTO_SOVERSION : optional, ignored if SOVERSION is specified
+#   use MAJOR package version as ABI version of the library
 #
 # CFLAGS : optional
 #   list of C compiler flags to use for all C source files
@@ -147,8 +154,8 @@
 
 function( ecbuild_add_library_impl )
 
-  set( options NOINSTALL AUTO_VERSION )
-  set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS INSTALL_HEADERS_REGEX LINKER_LANGUAGE HEADER_DESTINATION VERSION OUTPUT_NAME )
+  set( options NOINSTALL AUTO_VERSION AUTO_SOVERSION )
+  set( single_value_args TARGET TYPE COMPONENT INSTALL_HEADERS INSTALL_HEADERS_REGEX LINKER_LANGUAGE HEADER_DESTINATION VERSION SOVERSION OUTPUT_NAME )
   set( multi_value_args  SOURCES SOURCES_GLOB SOURCES_EXCLUDE_REGEX OBJECTS TEMPLATES LIBS INCLUDES PRIVATE_INCLUDES PUBLIC_INCLUDES DEPENDS PERSISTENT DEFINITIONS INSTALL_HEADERS_LIST CFLAGS CXXFLAGS FFLAGS GENERATED CONDITION )
 
   cmake_parse_arguments( _PAR "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
@@ -330,19 +337,32 @@ function( ecbuild_add_library_impl )
 
     # define VERSION if requested
     if( DEFINED _PAR_VERSION )
-      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${_PAR_VERSION}")
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set build version to ${_PAR_VERSION}")
       set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${_PAR_VERSION}" )
     else()
       if( _PAR_AUTO_VERSION OR LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]")
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION} (auto)")
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set build version to ${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION} (auto)")
         set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${${PNAME}_MAJOR_VERSION}.${${PNAME}_MINOR_VERSION}" )
-      endif()
-      if( LIBS_VERSION AND NOT LIBS_VERSION MATCHES "[Aa][Uu][Tt][Oo]" )
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set version to ${LIBS_VERSION}")
+      elseif( DEFINED LIBS_VERSION )
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set build version to ${LIBS_VERSION}")
         set_target_properties( ${_PAR_TARGET} PROPERTIES VERSION "${LIBS_VERSION}" )
       endif()
     endif()
 
+    # define SOVERSION if requested
+    if( DEFINED _PAR_SOVERSION )
+      ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set ABI version to ${_PAR_SOVERSION}")
+      set_target_properties( ${_PAR_TARGET} PROPERTIES SOVERSION "${_PAR_SOVERSION}" )
+    else()
+      if( _PAR_AUTO_SOVERSION OR LIBS_SOVERSION MATCHES "[Aa][Uu][Tt][Oo]")
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set ABI version to ${${PNAME}_MAJOR_VERSION} (auto)")
+        set_target_properties( ${_PAR_TARGET} PROPERTIES SOVERSION "${${PNAME}_MAJOR_VERSION}" )
+      elseif( DEFINED LIBS_SOVERSION )
+        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): set ABI version to ${LIBS_SOVERSION}")
+        set_target_properties( ${_PAR_TARGET} PROPERTIES SOVERSION "${LIBS_SOVERSION}" )
+      endif()
+    endif()
+
     # filter sources
 
     if( _PAR_SOURCES )
@@ -352,66 +372,10 @@ function( ecbuild_add_library_impl )
     #   ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
     #   ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-    #   ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
-
-    # add local flags
-
-    if( ${_PAR_TARGET}_c_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_C_SOURCE_FLAGS
-                              ${_PAR_TARGET}_c
-                              "${_PAR_CFLAGS}"
-                              "${${_PAR_TARGET}_c_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file C flags from ${${_PAR_TARGET}_C_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_C_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-
-      endif()
-    endif()
+    #   ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-    if( ${_PAR_TARGET}_cxx_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_CXX_SOURCE_FLAGS
-                              ${_PAR_TARGET}_cxx
-                              "${_PAR_CXXFLAGS}"
-                              "${${_PAR_TARGET}_cxx_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file CXX flags from ${${_PAR_TARGET}_CXX_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_CXX_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_CXXFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-
-      endif()
-    endif()
-
-    if( ${_PAR_TARGET}_f_srcs )
-
-      if( ECBUILD_SOURCE_FLAGS )
-        ecbuild_source_flags( ${_PAR_TARGET}_Fortran_SOURCE_FLAGS
-                              ${_PAR_TARGET}_f
-                              "${_PAR_FFLAGS}"
-                              "${${_PAR_TARGET}_f_srcs}" )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): setting source file Fortran flags from ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS}")
-        include( ${${_PAR_TARGET}_Fortran_SOURCE_FLAGS} )
-
-      elseif( DEFINED _PAR_FFLAGS )
-
-        ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}  PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-
-      endif()
-    endif()
+    # Override compilation flags on a per source file basis
+    ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
 
     if( DEFINED _PAR_GENERATED )
       ecbuild_debug("ecbuild_add_library(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
diff --git a/cmake/ecbuild_add_option.cmake b/cmake/ecbuild_add_option.cmake
index c270517..fd8076e 100644
--- a/cmake/ecbuild_add_option.cmake
+++ b/cmake/ecbuild_add_option.cmake
@@ -19,8 +19,8 @@
 #                       [ DESCRIPTION <description> ]
 #                       [ PURPOSE <purpose> ]
 #                       [ REQUIRED_PACKAGES <package1> [<package2> ...] ]
-#                       [ CONDITION <condition1> [<condition2> ...] ]
-#                       [ ADVANCED ] )
+#                       [ CONDITION <condition> ]
+#                       [ ADVANCED ] [ NO_TPL ] )
 #
 # Options
 # -------
@@ -66,6 +66,9 @@
 # ADVANCED : optional
 #   mark the feature as advanced
 #
+# NO_TPL : optional
+#   do not add any ``REQUIRED_PACKAGES`` to the list of third party libraries
+#
 # Usage
 # -----
 #
@@ -84,7 +87,7 @@
 
 macro( ecbuild_add_option )
 
-  set( options ADVANCED )
+  set( options ADVANCED NO_TPL )
   set( single_value_args FEATURE DEFAULT DESCRIPTION TYPE PURPOSE )
   set( multi_value_args  REQUIRED_PACKAGES CONDITION )
 
@@ -129,17 +132,16 @@ macro( ecbuild_add_option )
     set( _${_p_FEATURE}_condition TRUE )
   endif()
 
-  # check if user provided value
-
-  get_property( _in_cache CACHE ENABLE_${_p_FEATURE} PROPERTY VALUE )
+  # Check if user explicitly enabled/disabled the feature in cache
+  get_property( _in_cache CACHE ENABLE_${_p_FEATURE} PROPERTY VALUE SET )
 
   # A feature set to REQUIRE is always treated as explicitly enabled
   if( ENABLE_${_p_FEATURE} MATCHES "REQUIRE" )
     set( ENABLE_${_p_FEATURE} ON CACHE BOOL "" FORCE )
     ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} was required")
     set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" FORCE )
-  elseif( NOT "${ENABLE_${_p_FEATURE}}" STREQUAL "" AND _in_cache )
-    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} was found in cache")
+  elseif( NOT ENABLE_${_p_FEATURE} STREQUAL "" AND _in_cache )
+    ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE}=${ENABLE_${_p_FEATURE}} was found in cache")
     set( ${_p_FEATURE}_user_provided_input 1 CACHE BOOL "" )
   else()
     ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} not found in cache")
@@ -159,13 +161,9 @@ macro( ecbuild_add_option )
                           TYPE ${_p_TYPE}
                           PURPOSE "${_p_PURPOSE}" )
 
-  ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE} = ${ENABLE_${_p_FEATURE}}")
-  set( _do_search ${ENABLE_${_p_FEATURE}} )
-  if( _p_FEATURE STREQUAL "OMP" )
-    set( _do_search TRUE )
-  endif()
+  ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ENABLE_${_p_FEATURE}=${ENABLE_${_p_FEATURE}}")
 
-  if( _do_search  )
+  if( ENABLE_${_p_FEATURE} )
     ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): feature enabled")
 
     set( HAVE_${_p_FEATURE} 1 )
@@ -196,6 +194,7 @@ macro( ecbuild_add_option )
         string( TOUPPER ${pkgname} pkgUPPER )
         string( TOLOWER ${pkgname} pkgLOWER )
 
+        set( __help_msg "Provide ${pkgname} location with -D${pkgUPPER}_PATH=/..." )
         if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
 
           ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): ${pkgname} has already been found")
@@ -205,7 +204,7 @@ macro( ecbuild_add_option )
 
           if( pkgproject )
 
-            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for ecbuild project ${pkgname}")
+            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for ecbuild project ${pkgname} - ecbuild_use_package( ${pkglist} )")
             ecbuild_use_package( ${pkglist} )
 
           else()
@@ -213,7 +212,7 @@ macro( ecbuild_add_option )
             if( pkgname STREQUAL "MPI" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args "MPI" )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for MPI")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for MPI - ecbuild_find_mpi( ${_find_args} )")
               ecbuild_find_mpi( ${_find_args} )
             elseif( pkgname STREQUAL "OMP" )
               set( _find_args ${pkglist} )
@@ -221,20 +220,21 @@ macro( ecbuild_add_option )
               if( NOT ENABLE_${_p_FEATURE} )
                 list( APPEND _find_args STUBS )
               endif()
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for OpenMP")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for OpenMP - ecbuild_find_omp( ${_find_args} )")
               ecbuild_find_omp( ${_find_args} )
             elseif( pkgname STREQUAL "Python" OR pkgname STREQUAL "PYTHON" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args ${pkgname} )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for Python - ecbuild_find_python( ${_find_args} )")
               ecbuild_find_python( ${_find_args} )
+              set( __help_msg "Specify the location of the Python interpreter with -DPYTHON_EXECUTABLE=/..." )
             elseif( pkgname STREQUAL "LEXYACC" )
               set( _find_args ${pkglist} )
               list( REMOVE_ITEM _find_args ${pkgname} )
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for lex-yacc")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for lex-yacc - ecbuild_find_lexyacc( ${_find_args} )")
               ecbuild_find_lexyacc( ${_find_args} )
             else()
-              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname}")
+              ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): searching for package ${pkgname} - find_package( ${pkglist} )")
               find_package( ${pkglist} )
             endif()
 
@@ -242,14 +242,6 @@ macro( ecbuild_add_option )
 
         endif()
 
-        # if found append to list of third-party libraries (to be forward to other packages )
-        if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
-
-          list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${pkgname} )
-          list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
-
-        endif()
-
         # ecbuild_debug_var( ${pkgname}_FOUND  )
         # ecbuild_debug_var( ${pkgLOWER}_FOUND )
         # ecbuild_debug_var( ${pkgUPPER}_FOUND )
@@ -258,8 +250,17 @@ macro( ecbuild_add_option )
 
         if( ${pkgname}_FOUND OR ${pkgUPPER}_FOUND OR ${pkgLOWER}_FOUND )
           ecbuild_info( "Found package ${pkgname} required for feature ${_p_FEATURE}" )
+
+          # append to list of third-party libraries (to be forward to other packages )
+          # unless the NO_TPL option was given
+          if( NOT _p_NO_TPL )
+            ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): appending ${pkgname} to ${PROJECT_NAME_CAPS}_TPLS")
+            list( APPEND ${PROJECT_NAME_CAPS}_TPLS ${pkgname} )
+            list( REMOVE_DUPLICATES ${PROJECT_NAME_CAPS}_TPLS )
+          endif()
+
         else()
-          ecbuild_info( "Could not find package ${pkgname} required for feature ${_p_FEATURE} -- Provide ${pkgname} location with -D${pkgUPPER}_PATH=/..." )
+          ecbuild_info( "Could NOT find package ${pkgname} required for feature ${_p_FEATURE} -- ${__help_msg}" )
           set( HAVE_${_p_FEATURE} 0 )
           list( APPEND _failed_to_find_packages ${pkgname} )
         endif()
@@ -279,14 +280,16 @@ macro( ecbuild_add_option )
     else() # if user provided input and we cannot satisfy FAIL otherwise WARN
 
       if( ${_p_FEATURE}_user_provided_input )
-        if( _${_p_FEATURE}_condition )
-          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
+        if( NOT _${_p_FEATURE}_condition )
+          string(REPLACE ";" " " _condition_msg "${_p_CONDITION}")
+          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following condition was not met: ${_condition_msg}" )
         else()
-          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following condition was not met: ${_p_CONDITION}" )
+          ecbuild_critical( "Feature ${_p_FEATURE} cannot be enabled -- following required packages weren't found: ${_failed_to_find_packages}" )
         endif()
       else()
-        if( _${_p_FEATURE}_condition )
-          ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following condition was not met: ${_p_CONDITION}" )
+        if( NOT _${_p_FEATURE}_condition )
+          string(REPLACE ";" " " _condition_msg "${_p_CONDITION}")
+          ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following condition was not met: ${_condition_msg}" )
         else()
           ecbuild_info( "Feature ${_p_FEATURE} was not enabled (also not requested) -- following required packages weren't found: ${_failed_to_find_packages}" )
         endif()
@@ -296,13 +299,13 @@ macro( ecbuild_add_option )
 
     endif()
 
-  else( _do_search )
+  else()
 
     ecbuild_debug("ecbuild_add_option(${_p_FEATURE}): feature disabled")
     set( HAVE_${_p_FEATURE} 0 )
     ecbuild_set_feature( ${_p_FEATURE} ENABLED OFF )
 
-  endif( _do_search )
+  endif()
 
 
   if( ${_p_ADVANCED} )
diff --git a/cmake/ecbuild_add_test.cmake b/cmake/ecbuild_add_test.cmake
index 2097683..1dcf2c6 100644
--- a/cmake/ecbuild_add_test.cmake
+++ b/cmake/ecbuild_add_test.cmake
@@ -19,6 +19,7 @@
 #                     [ OBJECTS <obj1> [<obj2> ...] ]
 #                     [ COMMAND <executable> ]
 #                     [ TYPE EXE|SCRIPT|PYTHON ]
+#                     [ LABELS <label1> [<label2> ...] ]
 #                     [ ARGS <argument1> [<argument2> ...] ]
 #                     [ RESOURCES <file1> [<file2> ...] ]
 #                     [ TEST_DATA <file1> [<file2> ...] ]
@@ -33,7 +34,7 @@
 #                     [ GENERATED <file1> [<file2> ...] ]
 #                     [ DEPENDS <target1> [<target2> ...] ]
 #                     [ TEST_DEPENDS <target1> [<target2> ...] ]
-#                     [ CONDITION <condition1> [<condition2> ...] ]
+#                     [ CONDITION <condition> ]
 #                     [ ENVIRONMENT <variable1> [<variable2> ...] ]
 #                     [ WORKING_DIRECTORY <path> ]
 #                     [ CFLAGS <flag1> [<flag2> ...] ]
@@ -63,6 +64,22 @@
 #   :SCRIPT: run command or script, default if COMMAND is provided
 #   :PYTHON: run a Python script (requires the Python interpreter to be found)
 #
+# LABELS : optional
+#   list of labels to assign to the test
+#
+#   The project name in lower case is always added as a label. Additional
+#   labels are assigned depending on the type of test:
+#
+#   :executable: for type ``EXE``
+#   :script:     for type ``SCRIPT``
+#   :python:     for type ``PYTHON``
+#   :boost:      uses Boost unit test
+#   :mpi:        if ``MPI`` is set
+#   :openmp:     if ``OMP`` is set
+#
+#   This allows selecting tests to run via ``ctest -L <regex>`` or tests
+#   to exclude via ``ctest -LE <regex>``.
+#
 # ARGS : optional
 #   list of arguments to pass to TARGET or COMMAND when running the test
 #
@@ -76,9 +93,9 @@
 #   use the Boost Unit Test Framework
 #
 # MPI : optional
-#   number of MPI tasks to use.
+#   Run with MPI using the given number of MPI tasks.
 #
-#   If greater than 1, and MPI is not available, the test is disabled.
+#   If greater than 1, and ``MPIEXEC`` is not available, the test is disabled.
 #
 # OMP : optional
 #   number of OpenMP threads per MPI task to use.
@@ -138,7 +155,7 @@ macro( ecbuild_add_test )
 
   set( options           BOOST )
   set( single_value_args TARGET ENABLED COMMAND TYPE LINKER_LANGUAGE MPI OMP WORKING_DIRECTORY )
-  set( multi_value_args  SOURCES OBJECTS LIBS INCLUDES TEST_DEPENDS DEPENDS ARGS
+  set( multi_value_args  SOURCES OBJECTS LIBS INCLUDES TEST_DEPENDS DEPENDS LABELS ARGS
                          PERSISTENT DEFINITIONS RESOURCES TEST_DATA CFLAGS
                          CXXFLAGS FFLAGS GENERATED CONDITION ENVIRONMENT )
 
@@ -150,21 +167,31 @@ macro( ecbuild_add_test )
 
   set( _TEST_DIR ${CMAKE_CURRENT_BINARY_DIR} )
 
-  # Check for MPI
-  if(_PAR_MPI)
-    if( (_PAR_MPI GREATER 1) AND ( (NOT MPI_FOUND) OR (NOT MPIEXEC) ) )
-      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${_PAR_MPI} MPI ranks requested but MPI not available - disabling test")
+  # Undocumented flag for disabling all MPI tests for test environment without suitable MPI(EXEC)
+  if( _PAR_MPI AND ECBUILD_DISABLE_MPI_TESTS )
+    ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ECBUILD_DISABLE_MPI_TESTS set - disabling test")
+    set( _PAR_ENABLED 0 )
+  elseif( _PAR_MPI )
+    # Check for MPIEXEC if it not set
+    find_program( MPIEXEC NAMES mpiexec mpirun lamexec srun
+                  DOC "Executable for running MPI programs." )
+    if( MPIEXEC )
+      set(MPIEXEC_NUMPROC_FLAG "-np" CACHE STRING "Flag used by MPI to specify the number of processes for MPIEXEC")
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): Running using ${MPIEXEC} on ${_PAR_MPI} MPI rank(s)")
+      set( _PAR_LABELS mpi ${_PAR_LABELS} )
+    elseif( _PAR_MPI GREATER 1 )
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): ${_PAR_MPI} MPI ranks requested but MPIEXEC not available - disabling test")
       set( _PAR_ENABLED 0 )
-    elseif( (_PAR_MPI EQUAL 1) AND (NOT MPI_FOUND) )
-      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): 1 MPI rank requested but MPI not available - disabling MPI")
-      set( _PAR_MPI 0 )
     else()
-      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): Running using ${_PAR_MPI} MPI rank(s)")
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): 1 MPI rank requested but MPIEXEC not available - running sequentially")
+      set( _PAR_MPI 0 )
     endif()
   endif()
 
   # Check for OMP
-  if( NOT DEFINED _PAR_OMP )
+  if( DEFINED _PAR_OMP )
+    set( _PAR_LABELS openmp ${_PAR_LABELS} )
+  else()
     set( _PAR_OMP 1 )
   endif()
   list( APPEND _PAR_ENVIRONMENT "OMP_NUM_THREADS=${_PAR_OMP}" )
@@ -181,11 +208,13 @@ macro( ecbuild_add_test )
   # command implies script
   if( DEFINED _PAR_COMMAND )
     set( _PAR_TYPE "SCRIPT" )
+    set( _PAR_LABELS script ${_PAR_LABELS} )
   endif()
 
   # default of TYPE
   if( NOT _PAR_TYPE AND DEFINED _PAR_TARGET )
     set( _PAR_TYPE "EXE" )
+    set( _PAR_LABELS executable ${_PAR_LABELS} )
     if( NOT _PAR_SOURCES )
       ecbuild_critical("The call to ecbuild_add_test() defines a TARGET without SOURCES.")
     endif()
@@ -194,6 +223,7 @@ macro( ecbuild_add_test )
   if( _PAR_TYPE MATCHES "PYTHON" )
     if( PYTHONINTERP_FOUND )
       set( _PAR_COMMAND ${PYTHON_EXECUTABLE} )
+      set( _PAR_LABELS python ${_PAR_LABELS} )
     else()
       ecbuild_warn( "Requested a python test but python interpreter not found - disabling test\nPYTHON_EXECUTABLE: [${PYTHON_EXECUTABLE}]" )
       set( _PAR_ENABLED 0 )
@@ -233,6 +263,7 @@ macro( ecbuild_add_test )
   if( _PAR_BOOST AND ENABLE_TESTS AND _${_PAR_TARGET}_condition )
 
     if( HAVE_BOOST_UNIT_TEST )
+      set( _PAR_LABELS boost ${_PAR_LABELS} )
       if( BOOST_UNIT_TEST_FRAMEWORK_HEADER_ONLY )
         include_directories( ${ECBUILD_BOOST_HEADER_DIRS} )
         include_directories( ${Boost_INCLUDE_DIRS}  ) # temporary until we ship Boost Unit Test with ecBuild
@@ -322,25 +353,14 @@ macro( ecbuild_add_test )
       # filter sources
       ecbuild_separate_sources( TARGET ${_PAR_TARGET} SOURCES ${_PAR_SOURCES} )
 
-      # add local flags
-      if( DEFINED _PAR_CFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_c_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_CFLAGS}" )
-      endif()
-      if( DEFINED _PAR_CXXFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use C++ flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_cxx_srcs} PROPERTIES COMPILE_FLAGS "${_PAR_CXXFLAGS}" )
-      endif()
-      if( DEFINED _PAR_FFLAGS )
-        ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): use Fortran flags ${_PAR_CFLAGS}")
-        set_source_files_properties( ${${_PAR_TARGET}_f_srcs}   PROPERTIES COMPILE_FLAGS "${_PAR_FFLAGS}" )
-      endif()
+      # Override compilation flags on a per source file basis
+      ecbuild_target_flags( ${_PAR_TARGET} "${_PAR_CFLAGS}" "${_PAR_CXXFLAGS}" "${_PAR_FFLAGS}" )
+
       if( DEFINED _PAR_GENERATED )
         ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): mark as generated ${_PAR_GENERATED}")
         set_source_files_properties( ${_PAR_GENERATED} PROPERTIES GENERATED 1 )
       endif()
 
-
       # modify definitions to compilation ( -D... )
       get_property( _target_defs TARGET ${_PAR_TARGET} PROPERTY COMPILE_DEFINITIONS )
 
@@ -405,7 +425,7 @@ macro( ecbuild_add_test )
 
     # Wrap with MPIEXEC
     if( _PAR_MPI )
-      
+
       set( MPIEXEC_TASKS ${MPIEXEC_NUMPROC_FLAG} ${_PAR_MPI} )
       if( DEFINED MPIEXEC_NUMTHREAD_FLAG )
         set( MPIEXEC_THREADS ${MPIEXEC_NUMTHREAD_FLAG} ${_PAR_OMP} )
@@ -442,6 +462,12 @@ macro( ecbuild_add_test )
 
       endif()
 
+      # Add lower case project name to custom test labels
+      set( _PAR_LABELS ${PROJECT_NAME_LOWCASE} ${_PAR_LABELS} )
+      list( REMOVE_DUPLICATES _PAR_LABELS )
+      ecbuild_debug("ecbuild_add_test(${_PAR_TARGET}): assign labels ${_PAR_LABELS}")
+      set_property( TEST ${_PAR_TARGET} APPEND PROPERTY LABELS "${_PAR_LABELS}" )
+
       if( DEFINED _PAR_ENVIRONMENT )
         set_property( TEST ${_PAR_TARGET} APPEND PROPERTY ENVIRONMENT "${_PAR_ENVIRONMENT}" )
       endif()
diff --git a/cmake/ecbuild_bundle.cmake b/cmake/ecbuild_bundle.cmake
index 83b0bba..aee900c 100644
--- a/cmake/ecbuild_bundle.cmake
+++ b/cmake/ecbuild_bundle.cmake
@@ -20,7 +20,9 @@ include(ecbuild_git)
 # =========================
 #
 # Initialise the ecBuild environment for a bundle. *Must* be called *before*
-# any call to ecbuild_bundle.
+# any call to ``ecbuild_bundle``. ::
+#
+#   ecbuild_bundle_initialize()
 #
 ##############################################################################
 
@@ -159,7 +161,9 @@ endmacro()
 # =======================
 #
 # Finalise the ecBuild environment for a bundle. *Must* be called *after* the
-# last call to ecbuild_bundle.
+# last call to ``ecbuild_bundle``. ::
+#
+#   ecbuild_bundle_finalize()
 #
 ##############################################################################
 
diff --git a/cmake/ecbuild_check_cxx11.cmake b/cmake/ecbuild_check_cxx11.cmake
index 390462b..9552389 100644
--- a/cmake/ecbuild_check_cxx11.cmake
+++ b/cmake/ecbuild_check_cxx11.cmake
@@ -23,110 +23,116 @@
 # Options
 # -------
 #
-# FEATURES : optional, checks for all features if omitted
-#   list of features to check for
+# FEATURES : optional
+#   list of optional features to check for
 #
 # REQUIRED : optional
 #   list of required features to check for
 #
 # PRINT : optional
-#   print a summary of features check for, found and not found
+#   print a summary of features checked for, found and not found
+#
+# Note
+# ----
+#
+# If neither ``FEATURES`` nor ``REQUIRED`` are given, check for all features.
 #
 ##############################################################################
 
 function( ecbuild_check_cxx11 )
 
-	# parse parameters
+  # parse parameters
 
-	set( options PRINT )
-	set( single_value_args )
-	set( multi_value_args   FEATURES REQUIRED )
+  set( options PRINT )
+  set( single_value_args )
+  set( multi_value_args   FEATURES REQUIRED )
 
-	cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
-	if(_PAR_UNPARSED_ARGUMENTS)
-		ecbuild_critical("Unknown keywords given to ecbuild_check_cxx11(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
-	endif()
+  if(_PAR_UNPARSED_ARGUMENTS)
+    ecbuild_critical("Unknown keywords given to ecbuild_check_cxx11(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
 
-	include( ${ECBUILD_MACROS_DIR}/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake )
+  include( ${ECBUILD_MACROS_DIR}/contrib/GreatCMakeCookOff/CheckCXX11Features.cmake )
 
-	cxx11_find_all_features( ALL_FEATURES ) # list all available features to check
+  cxx11_find_all_features( ALL_FEATURES ) # list all available features to check
 
-	# Save CXX flags
-	set( CXX_FLAGS_SNASHOT ${CMAKE_CXX_FLAGS} )
+  # Save CXX flags
+  set( CXX_FLAGS_SNASHOT ${CMAKE_CXX_FLAGS} )
 
-	# Add C++11 flags
-	include( ${ECBUILD_MACROS_DIR}/ecbuild_get_cxx11_flags.cmake )
-	ecbuild_get_cxx11_flags( CXX11_FLAGS )
-	set( CMAKE_CXX_FLAGS "${CXX11_FLAGS} ${CMAKE_CXX_FLAGS}" )
+  # Add C++11 flags
+  include( ${ECBUILD_MACROS_DIR}/ecbuild_get_cxx11_flags.cmake )
+  ecbuild_get_cxx11_flags( CXX11_FLAGS )
+  ecbuild_debug( "ecbuild_check_cxx11: detected C++11 flag as ${CXX11_FLAGS}" )
+  set( CMAKE_CXX_FLAGS "${CXX11_FLAGS} ${CMAKE_CXX_FLAGS}" )
 
-	if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then search for all features
+  if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then search for all features
 
-		cxx11_feature_check()
+    cxx11_feature_check()
 
-	else()
+  else()
 
-		foreach( _f ${_p_FEATURES} )
-			cxx11_feature_check( ${_f} )
-		endforeach()
+    foreach( _f ${_p_FEATURES} )
+      cxx11_feature_check( ${_f} )
+    endforeach()
 
-		foreach( _f ${_p_REQUIRED} )
-			cxx11_feature_check( REQUIRED ${_f} )
-		endforeach()
+    foreach( _f ${_p_REQUIRED} )
+      cxx11_feature_check( REQUIRED ${_f} )
+    endforeach()
 
-	endif()
+  endif()
 
-	# Restore CXX flags
-	set( CMAKE_CXX_FLAGS ${CXX_FLAGS_SNAPSHOT} )
+  # Restore CXX flags
+  set( CMAKE_CXX_FLAGS ${CXX_FLAGS_SNAPSHOT} )
 
-	if( _p_FEATURES OR _p_REQUIRED )
-		set( CXX11_CHECKED_FEATURES ${_p_FEATURES} ${_p_REQUIRED} )
-	else()
-		set( CXX11_CHECKED_FEATURES ${ALL_FEATURES} )
-	endif()
+  if( _p_FEATURES OR _p_REQUIRED )
+    set( CXX11_CHECKED_FEATURES ${_p_FEATURES} ${_p_REQUIRED} )
+  else()
+    set( CXX11_CHECKED_FEATURES ${ALL_FEATURES} )
+  endif()
 
-	foreach( f ${CXX11_CHECKED_FEATURES} )
-		string( TOUPPER ${f} FEAT )
-		if( HAS_CXX11_${FEAT} )
-		   list( APPEND CXX11_SUPPORTED_FEATURES ${f} )
-		else()
-		   list( APPEND CXX11_NOT_SUPPORTED_FEATURES ${f} )
-		endif()
-	endforeach()
+  foreach( f ${CXX11_CHECKED_FEATURES} )
+    string( TOUPPER ${f} FEAT )
+    if( HAS_CXX11_${FEAT} )
+       list( APPEND CXX11_SUPPORTED_FEATURES ${f} )
+    else()
+       list( APPEND CXX11_NOT_SUPPORTED_FEATURES ${f} )
+    endif()
+  endforeach()
 
   if( CXX11_CHECKED_FEATURES )
     list( SORT CXX11_CHECKED_FEATURES )
-	endif()
-	if( CXX11_SUPPORTED_FEATURES )
-		list( SORT CXX11_SUPPORTED_FEATURES )
-	endif()
-	if( CXX11_NOT_SUPPORTED_FEATURES )
-		list( SORT CXX11_NOT_SUPPORTED_FEATURES )
-	endif()
-
-	set( CXX11_CHECKED_FEATURES       ${CXX11_CHECKED_FEATURES}       PARENT_SCOPE )
-	set( CXX11_SUPPORTED_FEATURES     ${CXX11_SUPPORTED_FEATURES}     PARENT_SCOPE )
-	set( CXX11_NOT_SUPPORTED_FEATURES ${CXX11_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
-
-	if( _p_PRINT )
-		if( CXX11_CHECKED_FEATURES )
-			join( CXX11_CHECKED_FEATURES " " CXX11_CHECKED_FEATURES_STR )
-			ecbuild_info( "Checked C++11 features: ${CXX11_CHECKED_FEATURES_STR}" )
-		else()
-			ecbuild_info( "Checked no C++11 features" )
-		endif()
-		if( CXX11_SUPPORTED_FEATURES )
-			join( CXX11_SUPPORTED_FEATURES " " CXX11_SUPPORTED_FEATURES_STR )
-			ecbuild_info( "Found C++11 features: ${CXX11_SUPPORTED_FEATURES_STR}" )
-		else()
-			ecbuild_info( "Found no C++11 features" )
-		endif()
-		if( CXX11_NOT_SUPPORTED_FEATURES )
-			join( CXX11_NOT_SUPPORTED_FEATURES " " CXX11_NOT_SUPPORTED_FEATURES_STR )
-			ecbuild_info( "Not found C++11 features: ${CXX11_NOT_SUPPORTED_FEATURES_STR}" )
-		else()
-			ecbuild_info( "Found all checked C++11 features" )
-		endif()
-	endif()
+  endif()
+  if( CXX11_SUPPORTED_FEATURES )
+    list( SORT CXX11_SUPPORTED_FEATURES )
+  endif()
+  if( CXX11_NOT_SUPPORTED_FEATURES )
+    list( SORT CXX11_NOT_SUPPORTED_FEATURES )
+  endif()
+
+  set( CXX11_CHECKED_FEATURES       ${CXX11_CHECKED_FEATURES}       PARENT_SCOPE )
+  set( CXX11_SUPPORTED_FEATURES     ${CXX11_SUPPORTED_FEATURES}     PARENT_SCOPE )
+  set( CXX11_NOT_SUPPORTED_FEATURES ${CXX11_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
+
+  if( _p_PRINT )
+    if( CXX11_CHECKED_FEATURES )
+      join( CXX11_CHECKED_FEATURES " " CXX11_CHECKED_FEATURES_STR )
+      ecbuild_info( "Checked C++11 features: ${CXX11_CHECKED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Checked no C++11 features" )
+    endif()
+    if( CXX11_SUPPORTED_FEATURES )
+      join( CXX11_SUPPORTED_FEATURES " " CXX11_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Found C++11 features: ${CXX11_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found no C++11 features" )
+    endif()
+    if( CXX11_NOT_SUPPORTED_FEATURES )
+      join( CXX11_NOT_SUPPORTED_FEATURES " " CXX11_NOT_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Not found C++11 features: ${CXX11_NOT_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found all checked C++11 features" )
+    endif()
+  endif()
 
 endfunction( ecbuild_check_cxx11 )
diff --git a/cmake/ecbuild_check_fortran.cmake b/cmake/ecbuild_check_fortran.cmake
new file mode 100644
index 0000000..5612134
--- /dev/null
+++ b/cmake/ecbuild_check_fortran.cmake
@@ -0,0 +1,126 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_check_fortran
+# =====================
+#
+# Check for Fortran features. ::
+#
+#   ecbuild_check_fortran( [ FEATURES <feature1> [ <feature2> ... ] ]
+#                          [ REQUIRED <feature1> [ <feature2> ... ] ]
+#                          [ PRINT ] )
+#
+# Options
+# -------
+#
+# FEATURES : optional
+#   list of optional features to check for
+#
+# REQUIRED : optional
+#   list of required features to check for, fails if not detected
+#
+# PRINT : optional
+#   print a summary of features checked for, found and not found
+#
+# Note
+# ----
+#
+# If neither ``FEATURES`` nor ``REQUIRED`` are given, check for all features.
+#
+##############################################################################
+
+function( ecbuild_check_fortran )
+
+  # parse parameters
+
+  set( options PRINT )
+  set( single_value_args )
+  set( multi_value_args   FEATURES REQUIRED )
+
+  cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
+
+  if(_PAR_UNPARSED_ARGUMENTS)
+    ecbuild_critical("Unknown keywords given to ecbuild_check_fortran(): \"${_PAR_UNPARSED_ARGUMENTS}\"")
+  endif()
+
+  include( ${ECBUILD_MACROS_DIR}/fortran_features/CheckFortranFeatures.cmake )
+
+  fortran_find_all_features( ALL_FEATURES ) # list all available features to check
+
+  if( NOT _p_FEATURES AND NOT _p_REQUIRED ) # no input, then search for all features
+
+    fortran_feature_check()
+
+  else()
+
+    foreach( _f ${_p_FEATURES} )
+      fortran_feature_check( ${_f} )
+    endforeach()
+
+    foreach( _f ${_p_REQUIRED} )
+      fortran_feature_check( REQUIRED ${_f} )
+    endforeach()
+
+  endif()
+
+  if( _p_FEATURES OR _p_REQUIRED )
+    set( Fortran_CHECKED_FEATURES ${_p_FEATURES} ${_p_REQUIRED} )
+  else()
+    set( Fortran_CHECKED_FEATURES ${ALL_FEATURES} )
+  endif()
+
+  foreach( f ${Fortran_CHECKED_FEATURES} )
+    string( TOUPPER ${f} FEAT )
+    if( HAS_Fortran_${FEAT} )
+       list( APPEND Fortran_SUPPORTED_FEATURES ${f} )
+       set( EC_HAVE_Fortran_${FEAT} 1 PARENT_SCOPE )
+    else()
+       list( APPEND Fortran_NOT_SUPPORTED_FEATURES ${f} )
+       set( EC_HAVE_Fortran_${FEAT} 0 PARENT_SCOPE )
+    endif()
+  endforeach()
+
+  if( Fortran_CHECKED_FEATURES )
+    list( SORT Fortran_CHECKED_FEATURES )
+  endif()
+  if( Fortran_SUPPORTED_FEATURES )
+    list( SORT Fortran_SUPPORTED_FEATURES )
+  endif()
+  if( Fortran_NOT_SUPPORTED_FEATURES )
+    list( SORT Fortran_NOT_SUPPORTED_FEATURES )
+  endif()
+
+  set( Fortran_CHECKED_FEATURES       ${Fortran_CHECKED_FEATURES}       PARENT_SCOPE )
+  set( Fortran_SUPPORTED_FEATURES     ${Fortran_SUPPORTED_FEATURES}     PARENT_SCOPE )
+  set( Fortran_NOT_SUPPORTED_FEATURES ${Fortran_NOT_SUPPORTED_FEATURES} PARENT_SCOPE )
+
+  if( _p_PRINT )
+    if( Fortran_CHECKED_FEATURES )
+      join( Fortran_CHECKED_FEATURES " " Fortran_CHECKED_FEATURES_STR )
+      ecbuild_info( "Checked Fortran features: ${Fortran_CHECKED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Checked no Fortran features" )
+    endif()
+    if( Fortran_SUPPORTED_FEATURES )
+      join( Fortran_SUPPORTED_FEATURES " " Fortran_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Found Fortran features: ${Fortran_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found no Fortran features" )
+    endif()
+    if( Fortran_NOT_SUPPORTED_FEATURES )
+      join( Fortran_NOT_SUPPORTED_FEATURES " " Fortran_NOT_SUPPORTED_FEATURES_STR )
+      ecbuild_info( "Not found Fortran features: ${Fortran_NOT_SUPPORTED_FEATURES_STR}" )
+    else()
+      ecbuild_info( "Found all checked Fortran features" )
+    endif()
+  endif()
+
+endfunction( ecbuild_check_fortran )
diff --git a/cmake/ecbuild_check_fortran_source_return.cmake b/cmake/ecbuild_check_fortran_source_return.cmake
index 6b007df..175f4ef 100644
--- a/cmake/ecbuild_check_fortran_source_return.cmake
+++ b/cmake/ecbuild_check_fortran_source_return.cmake
@@ -52,7 +52,6 @@
 
 macro( ecbuild_check_fortran_source_return SOURCE )
 
-    ecbuild_warn( "This macro ecbuild_check_fortran_source has never been tested" )
     set( options )
     set( single_value_args VAR  OUTPUT )
     set( multi_value_args  INCLUDES LIBS DEFINITIONS )
@@ -93,15 +92,15 @@ macro( ecbuild_check_fortran_source_return SOURCE )
         if( __add_libs )
             set(CHECK_Fortran_SOURCE_COMPILES_ADD_INCLUDES "-DINCLUDE_DIRECTORIES:STRING=${__add_incs}")
         endif()
-    
+
         # write the source file
-    
-        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f" "${SOURCE}\n" )
+
+        file( WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.F90" "${SOURCE}\n" )
 
         ecbuild_debug( "Performing Test ${_PAR_VAR}" )
         try_run( ${_PAR_VAR}_EXITCODE ${_PAR_VAR}_COMPILED
           ${CMAKE_BINARY_DIR}
-          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.f
+          ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/test_${_PAR_VAR}.F90
           COMPILE_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
           CMAKE_FLAGS -DCOMPILE_DEFINITIONS:STRING=${MACRO_CHECK_FUNCTION_DEFINITIONS}
           -DCMAKE_SKIP_RPATH:BOOL=${CMAKE_SKIP_RPATH}
@@ -142,9 +141,9 @@ macro( ecbuild_check_fortran_source_return SOURCE )
     
           ecbuild_debug("Performing Test ${_PAR_VAR} - Failed")
           file(APPEND ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeError.log 
-            "Performing C SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
+            "Performing Fortran SOURCE FILE Test ${_PAR_VAR} failed with the following compile output:\n"
             "${compile_OUTPUT}\n" 
-            "Performing C SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
+            "Performing Fortran SOURCE FILE Run ${_PAR_VAR} failed with the following run output:\n"
             "${run_OUTPUT}\n" 
             "Return value: ${${_PAR_VAR}_EXITCODE}\n"
             "Source file was:\n${SOURCE}\n")
diff --git a/cmake/ecbuild_check_functions.cmake b/cmake/ecbuild_check_functions.cmake
index 7b850e9..73f5cb5 100644
--- a/cmake/ecbuild_check_functions.cmake
+++ b/cmake/ecbuild_check_functions.cmake
@@ -20,6 +20,8 @@ if( ENABLE_OS_FUNCTIONS_TEST )
     ecbuild_cache_check_symbol_exists( ftruncate    "sys/types.h;unistd.h"            EC_HAVE_FTRUNCATE  )
     ecbuild_cache_check_symbol_exists( open         "sys/types.h;sys/stat.h;fcntl.h"  EC_HAVE_OPEN   )
     ecbuild_cache_check_symbol_exists( fopen        "stdio.h"                         EC_HAVE_FOPEN  )
+    ecbuild_cache_check_symbol_exists( fmemopen     "stdio.h"                         EC_HAVE_FMEMOPEN )
+    ecbuild_cache_check_symbol_exists( funopen      "stdio.h"                         EC_HAVE_FUNOPEN )
     ecbuild_cache_check_symbol_exists( flock        "sys/file.h"                      EC_HAVE_FLOCK  )
     ecbuild_cache_check_symbol_exists( mmap         "sys/mman.h"                      EC_HAVE_MMAP   )
 
@@ -167,6 +169,15 @@ if( ENABLE_OS_FUNCTIONS_TEST )
 #    ecbuild_debug_var(EC_HAVE_PROCFS)
 #    ecbuild_debug_var(EC_HAVE_PROCFS_OUTPUT)
 
+    #### check support for DL library #############
+
+    ecbuild_cache_check_include_files( dlfcn.h  EC_HAVE_DLFCN_H )
+
+    cmake_push_check_state(RESET)
+    set(CMAKE_REQUIRED_LIBRARIES ${CMAKE_DL_LIBS} )
+    ecbuild_cache_check_c_source_compiles( "#define _GNU_SOURCE\n#include <dlfcn.h>\nint main(){ void* addr; Dl_info info; dladdr(addr, &info); }\n" EC_HAVE_DLADDR )
+    cmake_pop_check_state()
+
 endif()
 
 
diff --git a/cmake/ecbuild_check_os.cmake b/cmake/ecbuild_check_os.cmake
index 7bbb344..8d325dc 100644
--- a/cmake/ecbuild_check_os.cmake
+++ b/cmake/ecbuild_check_os.cmake
@@ -245,33 +245,41 @@ set( EC_OS_NAME "UNKNOWN" )
 
 if( UNIX )
 
-	### APPLE ###
+  ### APPLE ###
 
-	if( APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
-		set( EC_OS_NAME "macosx" )
-	endif()
-
-	### Linux ###
-
-	if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
-
-		set( EC_OS_NAME "linux" )
+  if( APPLE AND ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" )
+    set( EC_OS_NAME "macosx" )
+  endif()
 
-		# recent linkers default to --enable-new-dtags
-		# which then adds both RPATH and RUNPATH to executables
-		# thus invalidating RPATH setting, and making LD_LIBRARY_PATH take precedence
-		# to be sure, use tool 'readelf -a <exe> | grep PATH' to see what paths are built-in
-		# see:
-		#  * http://blog.qt.digia.com/blog/2011/10/28/rpath-and-runpath
-		#  * http://www.cmake.org/Wiki/CMake_RPATH_handling
-		#  * man ld
-		#  * http://blog.tremily.us/posts/rpath
-		#  * http://fwarmerdam.blogspot.co.uk/2010/12/rpath-runpath-and-ldlibrarypath.html
-		set(CMAKE_EXE_LINKER_FLAGS     "${CMAKE_EXE_LINKER_FLAGS}    -Wl,--disable-new-dtags")
-		set(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--disable-new-dtags")
-		set(CMAKE_MODULE_LINKER_FLAGS  "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--disable-new-dtags")
+  ### Linux ###
+
+  if( ${CMAKE_SYSTEM_NAME} MATCHES "Linux" )
+
+    set( EC_OS_NAME "linux" )
+
+    # The following option allows enabling the new dtags linker option
+    # (when set to OFF). ONLY SET TO OFF IF YOU KNOW WHAT YOU ARE DOING AND
+    # NEVER WHEN BUILDING PRODUCTION SOFTWARE. YOU HAVE BEEN WARNED!
+    option( ECBUILD_DISABLE_NEW_DTAGS "Set the linker flag --disable-new-dtags" ON )
+    mark_as_advanced( ECBUILD_DISABLE_NEW_DTAGS )
+
+    if( ECBUILD_DISABLE_NEW_DTAGS )
+      # recent linkers default to --enable-new-dtags
+      # which then adds both RPATH and RUNPATH to executables
+      # thus invalidating RPATH setting, and making LD_LIBRARY_PATH take precedence
+      # to be sure, use tool 'readelf -a <exe> | grep PATH' to see what paths are built-in
+      # see:
+      #  * http://blog.qt.digia.com/blog/2011/10/28/rpath-and-runpath
+      #  * http://www.cmake.org/Wiki/CMake_RPATH_handling
+      #  * man ld
+      #  * http://blog.tremily.us/posts/rpath
+      #  * http://fwarmerdam.blogspot.co.uk/2010/12/rpath-runpath-and-ldlibrarypath.html
+      set(CMAKE_EXE_LINKER_FLAGS     "${CMAKE_EXE_LINKER_FLAGS}    -Wl,--disable-new-dtags")
+      set(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--disable-new-dtags")
+      set(CMAKE_MODULE_LINKER_FLAGS  "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--disable-new-dtags")
+    endif()
 
-	endif()
+  endif()
 
 	### Solaris ###
 
diff --git a/cmake/ecbuild_compiler_flags.cmake b/cmake/ecbuild_compiler_flags.cmake
index b97eb2c..0e3fe1e 100644
--- a/cmake/ecbuild_compiler_flags.cmake
+++ b/cmake/ecbuild_compiler_flags.cmake
@@ -12,7 +12,7 @@
 # ecbuild_compiler_flags
 # ======================
 #
-# Set default compiler flags for a given language. ::
+# Set compiler specific default compilation flags for a given language. ::
 #
 #   ecbuild_compiler_flags( <lang> )
 #
@@ -35,53 +35,171 @@
 
 macro( ecbuild_compiler_flags _lang )
 
+  # Set compiler and language specific default flags - OVERWRITES variables in CMake cache
   if( CMAKE_${_lang}_COMPILER_LOADED )
-
-    ecbuild_debug( "try include ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake ")
-
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): try include ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake ")
     include( ${ECBUILD_MACROS_DIR}/compiler_flags/${CMAKE_${_lang}_COMPILER_ID}_${_lang}.cmake OPTIONAL )
-
-    ecbuild_debug_var( CMAKE_${_lang}_FLAGS )
-
-    foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
-      ecbuild_debug_var( CMAKE_${_lang}_FLAGS_${_btype} )
-    endforeach()
-
   endif()
 
+  # Apply user or toolchain specified compilation flag overrides (NOT written to cache)
+
   foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
     if( DEFINED ECBUILD_${_lang}_FLAGS_${_btype} )
+      ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_FLAGS_${_btype} with ${ECBUILD_${_lang}_FLAGS_${_btype}}")
       set( CMAKE_${_lang}_FLAGS_${_btype} ${ECBUILD_${_lang}_FLAGS_${_btype}} )
     endif()
     mark_as_advanced( CMAKE_${_lang}_FLAGS_${_btype} )
   endforeach()
 
   if( DEFINED ECBUILD_${_lang}_FLAGS )
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_FLAGS with ${ECBUILD_${_lang}_FLAGS}")
     set( CMAKE_${_lang}_FLAGS "${ECBUILD_${_lang}_FLAGS}" )
   endif()
 
   mark_as_advanced( CMAKE_${_lang}_FLAGS )
 
   if( DEFINED ECBUILD_${_lang}_LINK_FLAGS )
+    ecbuild_debug( "ecbuild_compiler_flags(${_lang}): overriding CMAKE_${_lang}_LINK_FLAGS with ${ECBUILD_${_lang}_LINK_FLAGS}")
     set( CMAKE_${_lang}_LINK_FLAGS "${ECBUILD_${_lang}_LINK_FLAGS}" )
   endif()
 
   mark_as_advanced( CMAKE_${_lang}_LINK_FLAGS )
 
+  ecbuild_debug_var( CMAKE_${_lang}_FLAGS )
+  foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
+    ecbuild_debug_var( CMAKE_${_lang}_FLAGS_${_btype} )
+  endforeach()
+
 endmacro()
 
-#-----------------------------------------------------------------------------------------------------------------------
+##############################################################################
+#.rst:
+#
+# Using custom compilation flags
+# ==============================
+#
+# If compilation flags need to be controlled on a per source file basis,
+# ecBuild supports defining custom rules in a CMake or JSON file.
+#
+# When using this approach, *default compilation flags are NOT loaded*!
+#
+# Overriding compilation flags on a per source file basis using CMake rules
+# -------------------------------------------------------------------------
+#
+# Compiler flags can be overridden on a per source file basis by setting the
+# CMake variable ``ECBUILD_COMPILE_FLAGS`` to the *full path* of a CMake file
+# defining the override rules. If set, ``<PNAME>_ECBUILD_COMPILE_FLAGS``
+# takes precendence and ``ECBUILD_COMPILE_FLAGS`` is ignored, allowing for
+# rules that only apply to a subproject (e.g. in a bundle).
+#
+# Flags can be overridden in 3 different ways:
+#
+# 1.  By defining project specific flags for a language and (optionally)
+#     build type e.g. ::
+#
+#       set(<PNAME>_Fortran_FLAGS "...") # common flags for all build types
+#       set(<PNAME>_Fortran_FLAGS_DEBUG "...") # only for DEBUG build type
+#
+# 2.  By defining source file specific flags which are *combined* with the
+#     project and target specific flags ::
+#
+#       set_source_files_properties(<source>
+#         PROPERTIES COMPILE_FLAGS "..."  # common flags for all build types
+#                    COMPILE_FLAGS_DEBUG "...") # only for DEBUG build type
+#
+# 3.  By defining source file specific flags which *override* the project and
+#     target specific flags ::
+#
+#       set_source_files_properties(<source>
+#         PROPERTIES OVERRIDE_COMPILE_FLAGS "..."
+#                    OVERRIDE_COMPILE_FLAGS_DEBUG "...")
+#
+# See ``examples/override-compile-flags`` in the ecBuild source tree for a
+# complete example using this technique.
+#
+# Overriding compilation flags on a per source file basis using JSON rules
+# ------------------------------------------------------------------------
+#
+# Compiler flags can be overridden on a per source file basis by setting the
+# CMake variable ``ECBUILD_SOURCE_FLAGS`` to the *full path* of a JSON file
+# defining the override rules. If set, ``<PNAME>_ECBUILD_SOURCE_FLAGS``
+# takes precendence and ``ECBUILD_SOURCE_FLAGS`` is ignored, allowing for
+# rules that only apply to a subproject (e.g. in a bundle).
+#
+# The JSON file lists shell glob patterns and the rule to apply to each source
+# file matching the pattern, defined as an array ``[op, flag1, ...]``
+# containing an operator followed by one or more flags. Valid operators are:
+#
+# :+: Add the flags to the default compilation flags for matching files
+# :=: Set the flags for matching files, disregarding default compilation flags
+# :/: Remove the flags from the default compilation flags for matching files
+#
+# Rules can be nested to e.g. only apply to a subdirectory by setting the rule
+# to a dictionary, which will only apply to source files matching its pattern.
+#
+# An example JSON file demonstrating different rule types is given below: ::
+#
+#   {
+#     "*"       : [ "+", "-g0" ],
+#     "*.cxx"   : [ "+", "-cxx11" ],
+#     "*.f90"   : [ "+", "-pipe" ],
+#     "foo.c"   : [ "+", "-O0" ],
+#     "foo.cc"  : [ "+", "-O2", "-pipe" ],
+#     "bar/*": {
+#       "*.f90" : [ "=", "-O1" ]
+#     },
+#     "baz/*": {
+#       "*.f90" : [ "/", "-pipe" ],
+#       "*.f90" : [ "/", "-O2" ],
+#       "*.f90" : [ "+", "-O3" ]
+#     }
+#   }
+#
+# See ``examples/override-compile-flags`` in the ecBuild source tree for a
+# complete example using this technique.
+#
+##############################################################################
 
-### OVERRIDE Compiler FLAGS (we override because CMake forcely defines them) -- see ecbuild_compiler_flags() macro
+# Custom (project specific) compilation flags enabled?
+foreach( _flags COMPILE SOURCE )
+  if( ${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS )
+    if ( ECBUILD_${_flags}_FLAGS )
+      ecbuild_debug( "Override ECBUILD_${_flags}_FLAGS (${ECBUILD_${_flags}_FLAGS}) with ${PROJECT_NAME} specific flags (${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS})" )
+    else()
+      ecbuild_debug( "Use ${PROJECT_NAME} specific ECBUILD_${_flags}_FLAGS (${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS})" )
+    endif()
+    set( ECBUILD_${_flags}_FLAGS ${${PROJECT_NAME_CAPS}_ECBUILD_${_flags}_FLAGS} )
+  endif()
+  # Ensure ECBUILD_${_flags}_FLAGS is a valid file path
+  if( DEFINED ECBUILD_${_flags}_FLAGS AND NOT EXISTS ${ECBUILD_${_flags}_FLAGS} )
+    ecbuild_warn( "ECBUILD_${_flags}_FLAGS points to non-existent file ${ECBUILD_${_flags}_FLAGS} and will be ignored" )
+    unset( ECBUILD_${_flags}_FLAGS )
+    unset( ECBUILD_${_flags}_FLAGS CACHE )
+  endif()
+endforeach()
+if( ECBUILD_COMPILE_FLAGS )
+  include( "${ECBUILD_COMPILE_FLAGS}" )
+endif()
 
 foreach( _lang C CXX Fortran )
   if( CMAKE_${_lang}_COMPILER_LOADED )
-    ecbuild_compiler_flags( ${_lang} )
+
+    # Clear default compilation flags potentially inherited from parent scope
+    # when using custom compilation flags
+    if( ECBUILD_SOURCE_FLAGS OR ECBUILD_COMPILE_FLAGS )
+      set(CMAKE_${_lang}_FLAGS "")
+      foreach(_btype ALL RELEASE RELWITHDEBINFO PRODUCTION BIT DEBUG)
+        set(CMAKE_${_lang}_FLAGS_${_btype} "")
+      endforeach()
+    # Load default compilation flags only if custom compilation flags not enabled
+    else()
+      ecbuild_compiler_flags( ${_lang} )
+    endif()
+
   endif()
 endforeach()
 
-### OVERRIDE Linker FLAGS per object type (we override because CMake forcely defines them)
-
+# Apply user or toolchain specified linker flag overrides per object type (NOT written to cache)
 foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
 
   foreach( _obj EXE SHARED MODULE )
@@ -91,7 +209,3 @@ foreach( _btype NONE DEBUG BIT PRODUCTION RELEASE RELWITHDEBINFO )
   endforeach()
 
 endforeach()
-
-#-----------------------------------------------------------------------------------------------------------------------
-
-mark_as_advanced( CMAKE_C_FLAGS_BIT )
diff --git a/cmake/ecbuild_config.h.in b/cmake/ecbuild_config.h.in
index eef9b85..df9eb91 100644
--- a/cmake/ecbuild_config.h.in
+++ b/cmake/ecbuild_config.h.in
@@ -40,6 +40,8 @@
 #cmakedefine EC_HAVE_FTRUNCATE
 #cmakedefine EC_HAVE_OPEN
 #cmakedefine EC_HAVE_FOPEN
+#cmakedefine EC_HAVE_FMEMOPEN
+#cmakedefine EC_HAVE_FUNOPEN
 #cmakedefine EC_HAVE_FLOCK
 #cmakedefine EC_HAVE_MMAP
 
@@ -127,6 +129,12 @@
 #cmakedefine EC_ATTRIBUTE_CONSTRUCTOR_INITS_ARGV
 #cmakedefine EC_HAVE_PROCFS
 
+
+/* --- dl library support --- */
+
+#cmakedefine EC_HAVE_DLFCN_H
+#cmakedefine EC_HAVE_DLADDR
+
 /* --- c compiler support --- */
 
 #cmakedefine EC_HAVE_C_INLINE
diff --git a/cmake/ecbuild_declare_project.cmake b/cmake/ecbuild_declare_project.cmake
index 1c2e93b..c95e8e3 100644
--- a/cmake/ecbuild_declare_project.cmake
+++ b/cmake/ecbuild_declare_project.cmake
@@ -28,24 +28,27 @@
 # :<PNAME>_MINOR_VERSION:  minor version number
 # :<PNAME>_PATCH_VERSION:  patch version number
 # :INSTALL_BIN_DIR:        relative install directory for executables
-#                          (default: ``bin``)
 # :INSTALL_LIB_DIR:        relative install directory for libraries
-#                          (default: ``lib``)
 # :INSTALL_INCLUDE_DIR:    relative install directory for include files
-#                          (default: ``include``)
 # :INSTALL_DATA_DIR:       relative install directory for data
-#                          (default: ``share/<project_name>``)
 # :INSTALL_CMAKE_DIR:      relative install directory for CMake files
-#                          (default: ``share/<project_name>/cmake``)
+#
+# Customising install locations
+# -----------------------------
 #
 # The relative installation directories of components can be customised by
 # setting the following CMake variables on the command line or in cache:
 #
-# :<PNAME>_INSTALL_BIN_DIR:     directory for installing executables
-# :<PNAME>_INSTALL_LIB_DIR:     directory for installing libraries
-# :<PNAME>_INSTALL_INCLUDE_DIR: directory for installing include files
-# :<PNAME>_INSTALL_DATA_DIR:    directory for installing data
-# :<PNAME>_INSTALL_CMAKE_DIR:   directory for installing CMake files
+# :INSTALL_BIN_DIR:        directory for installing executables
+#                          (default: ``bin``)
+# :INSTALL_LIB_DIR:        directory for installing libraries
+#                          (default: ``lib``)
+# :INSTALL_INCLUDE_DIR:    directory for installing include files
+#                          (default: ``include``)
+# :INSTALL_DATA_DIR:       directory for installing data
+#                          (default: ``share/<project_name>``)
+# :INSTALL_CMAKE_DIR:      directory for installing CMake files
+#                          (default: ``share/<project_name>/cmake``)
 #
 # Using *relative* paths is recommended, which are interpreted relative to the
 # ``CMAKE_INSTALL_PREFIX``. Using absolute paths makes the build
@@ -109,11 +112,22 @@ macro( ecbuild_declare_project )
 
   # install dirs for this project
 
-  set( INSTALL_BIN_DIR bin )
-  set( INSTALL_LIB_DIR lib )
-  set( INSTALL_INCLUDE_DIR include )
-  set( INSTALL_DATA_DIR share/${PROJECT_NAME} )
-  set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake )
+  # Use defaults unless values are already present in cache
+  if( NOT INSTALL_BIN_DIR )
+    set( INSTALL_BIN_DIR bin )
+  endif()
+  if( NOT INSTALL_LIB_DIR )
+    set( INSTALL_LIB_DIR lib )
+  endif()
+  if( NOT INSTALL_INCLUDE_DIR )
+    set( INSTALL_INCLUDE_DIR include )
+  endif()
+  if( NOT INSTALL_DATA_DIR )
+    set( INSTALL_DATA_DIR share/${PROJECT_NAME} )
+  endif()
+  if( NOT INSTALL_CMAKE_DIR )
+    set( INSTALL_CMAKE_DIR share/${PROJECT_NAME}/cmake )
+  endif()
 
   mark_as_advanced( INSTALL_BIN_DIR )
   mark_as_advanced( INSTALL_LIB_DIR )
@@ -121,10 +135,11 @@ macro( ecbuild_declare_project )
   mark_as_advanced( INSTALL_DATA_DIR )
   mark_as_advanced( INSTALL_CMAKE_DIR )
 
-  # overrides of install dirs
+  # overrides of install dirs (deprecated in ecBuild 2.4.0)
 
   foreach( p LIB BIN INCLUDE DATA CMAKE )
     if( ${PNAME}_INSTALL_${p}_DIR )
+      ecbuild_deprecate( "Use of ${PNAME}_INSTALL_${p}_DIR is deprecated and will be removed in a future release. Use INSTALL_${p}_DIR instead." )
       set( INSTALL_${p}_DIR ${${PNAME}_INSTALL_${p}_DIR} )
     endif()
   endforeach()
diff --git a/cmake/ecbuild_define_paths.cmake b/cmake/ecbuild_define_paths.cmake
index 856903d..6584b26 100644
--- a/cmake/ecbuild_define_paths.cmake
+++ b/cmake/ecbuild_define_paths.cmake
@@ -1,8 +1,8 @@
 # (C) Copyright 1996-2016 ECMWF.
-# 
+#
 # This software is licensed under the terms of the Apache Licence Version 2.0
-# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0. 
-# In applying this licence, ECMWF does not waive the privileges and immunities 
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
 # granted to it by virtue of its status as an intergovernmental organisation nor
 # does it submit to any jurisdiction.
 
@@ -15,17 +15,22 @@ file( MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/lib )
 
 # setup library building rpaths (both in build dir and then when installed)
 
-set( CMAKE_INSTALL_RPATH_USE_LINK_PATH   TRUE  ) # add the automatic parts to RPATH which point to dirs outside build tree
+# add the automatic parts to RPATH which point to dirs outside build tree
+set( CMAKE_INSTALL_RPATH_USE_LINK_PATH   TRUE  )
 
 # use RPATHs for the build tree
 set( CMAKE_SKIP_BUILD_RPATH              FALSE  )
 
-if( ENABLE_RELATIVE_RPATHS )
-    # when building, use the install RPATH immedietly
-	set( CMAKE_BUILD_WITH_INSTALL_RPATH      TRUE  )
+# If INSTALL_LIB_DIR is set to anything other than lib, the relative install
+# RPATH is wrong in the build tree
+if( ENABLE_RELATIVE_RPATHS AND (NOT INSTALL_LIB_DIR OR INSTALL_LIB_DIR STREQUAL "lib") )
+  # when building, use the install RPATH immediately (we don't want to relink)
+  set( CMAKE_BUILD_WITH_INSTALL_RPATH      TRUE  )
+  ecbuild_debug( "Building with install RPATH" )
 else()
-    # when building, don't use the install RPATH yet, but later on when installing
-    set( CMAKE_BUILD_WITH_INSTALL_RPATH      FALSE  ) 
+  # when building, don't use the install RPATH yet, but later on when installing
+  set( CMAKE_BUILD_WITH_INSTALL_RPATH      FALSE  )
+  ecbuild_debug( "Not building with install RPATH, need to relink when installing" )
 endif()
 
 # Always include srcdir and builddir in include path
diff --git a/cmake/ecbuild_download_resource.cmake b/cmake/ecbuild_download_resource.cmake
index 3b2f90e..5d394f5 100644
--- a/cmake/ecbuild_download_resource.cmake
+++ b/cmake/ecbuild_download_resource.cmake
@@ -25,6 +25,7 @@ function( ecbuild_download_resource _p_OUT _p_URL )
   if( NOT EXISTS ${_p_OUT} )
 
     find_program( CURL_PROGRAM curl )
+    mark_as_advanced(CURL_PROGRAM)
     if( CURL_PROGRAM )
       execute_process( COMMAND ${CURL_PROGRAM} --silent --show-error --fail --output ${_p_OUT} ${_p_URL}
                        WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} RESULT_VARIABLE CMD_RESULT )
diff --git a/cmake/ecbuild_find_lexyacc.cmake b/cmake/ecbuild_find_lexyacc.cmake
index 628488f..5c13269 100644
--- a/cmake/ecbuild_find_lexyacc.cmake
+++ b/cmake/ecbuild_find_lexyacc.cmake
@@ -48,7 +48,10 @@ macro( ecbuild_find_lexyacc )
 
   if( NOT SKIP_BISON )
 
-    find_package( BISON 2.3 )
+    find_package( BISON )
+    if(BISON_FOUND AND BISON_VERSION VERSION_LESS 2.3 )
+        ecbuild_critical( "Bison found with version ${BISON_VERSION} is less than 2.3.\nPlease define BISON_EXECUTABLE to an appropriate version or define SKIP_BISON to try finding Yacc instead" )
+    endif()
     find_package( FLEX )
 
   endif()
diff --git a/cmake/ecbuild_find_omp.cmake b/cmake/ecbuild_find_omp.cmake
index 47c05c2..914da24 100644
--- a/cmake/ecbuild_find_omp.cmake
+++ b/cmake/ecbuild_find_omp.cmake
@@ -30,7 +30,7 @@ macro( lookup_omp_flags )
   #ifdef _OPENMP
     #pragma omp parallel
     {
-      int id = omp_get_thread_num();
+      (void)omp_get_thread_num();
     }
     return 0;
   #else
@@ -53,7 +53,7 @@ macro( lookup_omp_flags )
     #pragma omp parallel
     {
       // This pragma should have passed compilation
-      int id = 0;
+      (void)0;
     }
     return 0;
   #endif
diff --git a/cmake/ecbuild_find_python.cmake b/cmake/ecbuild_find_python.cmake
index 48ba28f..d3cf377 100644
--- a/cmake/ecbuild_find_python.cmake
+++ b/cmake/ecbuild_find_python.cmake
@@ -28,6 +28,10 @@
 # NO_LIBS : optional
 #   only search for the Python interpreter, not the libraries
 #
+# Unless ``NO_LIBS`` is set, the ``python-config`` utility, if found, is used
+# to determine the Python include directories, libraries and link line. Set the
+# CMake variable ``PYTHON_NO_CONFIG`` to use CMake's FindPythonLibs instead.
+#
 # Output variables
 # ----------------
 #
@@ -62,38 +66,34 @@ function( ecbuild_find_python )
     if(_p_UNPARSED_ARGUMENTS)
       ecbuild_critical("Unknown keywords given to ecbuild_find_python(): \"${_p_UNPARSED_ARGUMENTS}\"")
     endif()
+    if( _p_REQUIRED )
+      set( _p_REQUIRED REQUIRED )
+    else()
+      unset( _p_REQUIRED )
+    endif()
 
     # find python executable
 
-    find_package( PythonInterp )
-
-    if( NOT PYTHONINTERP_FOUND AND _p_REQUIRED )
-        ecbuild_error( "Failed to find any Python interpreter (REQUIRED)" )
+    # Search first without specifying the version, since doing so gives preference to the specified
+    # version even though a never version of the interpreter may be available
+    find_package( PythonInterp ${_p_REQUIRED} )
+
+    # If no suitable version was found, search again with the version specified
+    if( PYTHONINTERP_FOUND AND _p_VERSION )
+      if( _p_VERSION VERSION_GREATER "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" )
+        ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}, however version ${_p_VERSION} is required. Searching again..." )
+        unset( PYTHONINTERP_FOUND )
+        unset( PYTHON_EXECUTABLE )
+        unset( PYTHON_EXECUTABLE CACHE )
+        unset( PYTHON_VERSION_MAJOR )
+        unset( PYTHON_VERSION_MINOR )
+        unset( PYTHON_VERSION_PATCH )
+        unset( PYTHON_VERSION_STRING )
+        find_package( PythonInterp "${_p_VERSION}" ${_p_REQUIRED} )
+      endif()
     endif()
 
-    # find python version
-    # execute_process( COMMAND ${PYTHON_EXECUTABLE} -V ERROR_VARIABLE _version  RESULT_VARIABLE _return ERROR_STRIP_TRAILING_WHITESPACE)
-    # if( NOT _return )
-    #    string(REGEX REPLACE ".*([0-9]+)\\.([0-9]+)\\.([0-9]+)" "\\1.\\2.\\3" PYTHON_VERSION ${_version} )
-    # endif()
-    # endif()
-
-    # ecbuild_debug( "Python version ${PYTHON_VERSION_STRING}" )
-    # ecbuild_debug_var(PYTHON_VERSION_MAJOR)
-    # ecbuild_debug_var(PYTHON_VERSION_MINOR)
-    # ecbuild_debug_var(PYTHON_VERSION_PATCH)
-
-    if( PYTHONINTERP_FOUND AND DEFINED _p_VERSION )
-        if( _p_VERSION VERSION_GREATER "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" )
-            set( PYTHONINTERP_FOUND 0 )
-            set( PYTHON_EXECUTABLE "PYTHON_EXECUTABLE-NOTFOUND" )
-            if( _p_REQUIRED )
-                ecbuild_critical( "Required python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}" )
-            else()
-                ecbuild_warn( "Looking for python version at least ${_p_VERSION} but found only ${PYTHON_VERSION_STRING}\nMarking Python as NOTFOUND" )
-            endif()
-        endif()
-    endif()
+    set( __required_vars PYTHONINTERP_FOUND )
 
     if( PYTHONINTERP_FOUND )
         ecbuild_debug( "ecbuild_find_python: Found Python interpreter version ${PYTHON_VERSION_STRING} at ${PYTHON_EXECUTABLE}" )
@@ -101,18 +101,27 @@ function( ecbuild_find_python )
         # find where python site-packages are ...
 
         if( PYTHON_EXECUTABLE )
-            execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
+            execute_process(COMMAND ${PYTHON_EXECUTABLE} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())" OUTPUT_VARIABLE PYTHON_SITE_PACKAGES OUTPUT_STRIP_TRAILING_WHITESPACE)
         endif()
         ecbuild_debug( "ecbuild_find_python: PYTHON_SITE_PACKAGES=${PYTHON_SITE_PACKAGES}" )
-
     endif()
+
     if( PYTHONINTERP_FOUND AND NOT _p_NO_LIBS )
+        list( APPEND __required_vars PYTHONLIBS_FOUND PYTHON_LIBS_WORKING )
+
         # find python config
 
         if( PYTHON_EXECUTABLE AND EXISTS ${PYTHON_EXECUTABLE}-config )
             set(PYTHON_CONFIG_EXECUTABLE ${PYTHON_EXECUTABLE}-config CACHE PATH "" FORCE)
         else()
-            find_program( PYTHON_CONFIG_EXECUTABLE NAMES python-config python-config${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR} )
+            get_filename_component( __python_bin_dir ${PYTHON_EXECUTABLE} PATH )
+            find_program( PYTHON_CONFIG_EXECUTABLE
+                          NO_CMAKE_PATH NO_CMAKE_SYSTEM_PATH
+                          NO_CMAKE_ENVIRONMENT_PATH NO_SYSTEM_ENVIRONMENT_PATH
+                          HINTS ${__python_bin_dir}
+                          NAMES python${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}-config
+                                python${PYTHON_VERSION_MAJOR}-config
+                                python-config )
         endif()
 
         ecbuild_debug_var( PYTHON_CONFIG_EXECUTABLE )
@@ -122,31 +131,58 @@ function( ecbuild_find_python )
         # The OpenBSD python packages have python-config's
         # that don't reliably report linking flags that will work.
 
-        if( PYTHON_CONFIG_EXECUTABLE AND NOT ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" )
+        if( PYTHON_CONFIG_EXECUTABLE AND NOT ( PYTHON_NO_CONFIG OR ${CMAKE_SYSTEM_NAME} STREQUAL "OpenBSD" ) )
             ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using ${PYTHON_CONFIG_EXECUTABLE}" )
 
-            execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --ldflags
-                            OUTPUT_VARIABLE PYTHON_LIBRARIES
-                            OUTPUT_STRIP_TRAILING_WHITESPACE
-                            ERROR_QUIET)
+            if( NOT PYTHON_LIBRARY )
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --prefix
+                              OUTPUT_VARIABLE PYTHON_PREFIX
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
+
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --ldflags
+                              OUTPUT_VARIABLE PYTHON_LIBRARY
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
+
+              # Prepend -L and and set the RPATH to the lib directory under the
+              # Python install prefix unless it is a standard system prefix path
+              if( PYTHON_LIBRARY AND PYTHON_PREFIX AND NOT CMAKE_SYSTEM_PREFIX_PATH MATCHES ${PYTHON_PREFIX} )
+                set( PYTHON_LIBRARY "-L${PYTHON_PREFIX}/lib -Wl,-rpath,${PYTHON_PREFIX}/lib ${PYTHON_LIBRARY}" )
+              endif()
+
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
+            endif()
+
+            if(DEFINED PYTHON_INCLUDE_PATH AND NOT DEFINED PYTHON_INCLUDE_DIR)
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_PATH}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
+            elseif( NOT PYTHON_INCLUDE_DIR )
+              execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --includes
+                              OUTPUT_VARIABLE PYTHON_INCLUDE_DIR
+                              OUTPUT_STRIP_TRAILING_WHITESPACE
+                              ERROR_QUIET)
 
-            execute_process(COMMAND "${PYTHON_CONFIG_EXECUTABLE}" --includes
-                            OUTPUT_VARIABLE PYTHON_INCLUDE_DIRS
-                            OUTPUT_STRIP_TRAILING_WHITESPACE
-                            ERROR_QUIET)
+              string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
+              string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}")
 
-            string(REGEX REPLACE "^[-I]" "" PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
-            string(REGEX REPLACE "[ ]-I" " " PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIRS}")
+              separate_arguments(PYTHON_INCLUDE_DIR)
+              set( PYTHON_INCLUDE_DIR "${PYTHON_INCLUDE_DIR}" CACHE PATH
+                   "Path to where Python.h is found" FORCE )
 
-            separate_arguments(PYTHON_INCLUDE_DIRS)
+            endif()
+
+            set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
+            set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
+
+            find_package_handle_standard_args( PythonLibs DEFAULT_MSG
+                                               PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES )
 
         else() # revert to finding pythonlibs the standard way (cmake macro)
-            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package(PythonLibs)" )
+            ecbuild_debug( "ecbuild_find_python: Searching for Python include directories and libraries using find_package( PythonLibs ${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH} ${_p_REQUIRED} )" )
 
-            find_package(PythonLibs)
-            if( PYTHON_INCLUDE_PATH AND NOT PYTHON_INCLUDE_DIRS )
-              set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_PATH}")
-            endif()
+            find_package( PythonLibs "${PYTHON_VERSION_MAJOR}.${PYTHON_VERSION_MINOR}.${PYTHON_VERSION_PATCH}" ${_p_REQUIRED} )
 
         endif()
 
@@ -159,25 +195,18 @@ function( ecbuild_find_python )
             try_compile( PYTHON_LIBS_WORKING ${CMAKE_CURRENT_BINARY_DIR}
                          ${__test_python}
                          CMAKE_FLAGS "-DINCLUDE_DIRECTORIES=${PYTHON_INCLUDE_DIRS}"
-                         LINK_LIBRARIES ${PYTHON_LIBRARIES} )
-
-            # set output variables
-
-            find_package_handle_standard_args( PythonLibs DEFAULT_MSG
-                                               PYTHON_INCLUDE_DIRS PYTHON_LIBRARIES PYTHON_LIBS_WORKING )
-            ecbuild_debug( "ecbuild_find_python: PYTHON_INCLUDE_DIRS=${PYTHON_INCLUDE_DIRS}" )
-            ecbuild_debug( "ecbuild_find_python: PYTHON_LIBRARIES=${PYTHON_LIBRARIES}" )
-
-        endif()
+                         LINK_LIBRARIES ${PYTHON_LIBRARIES}
+                         OUTPUT_VARIABLE __try_compile_output )
+            if( NOT PYTHON_LIBS_WORKING )
+              ecbuild_debug( "ecbuild_find_python: trying to link executable with Python libraries failed\n${__try_compile_output}" )
+            endif()
 
-        # Also set PYTHON_FOUND and Python_FOUND for compatibility with ecbuild_add_option
-        if( PYTHONLIBS_FOUND )
-          set( PYTHON_FOUND 1 )
-          set( Python_FOUND 1 )
         endif()
 
     endif()
 
+    find_package_handle_standard_args( Python DEFAULT_MSG ${__required_vars} )
+
     ecbuild_debug_var( PYTHONINTERP_FOUND )
     ecbuild_debug_var( PYTHON_FOUND )
     ecbuild_debug_var( PYTHON_EXECUTABLE )
diff --git a/cmake/ecbuild_generate_fortran_interfaces.cmake b/cmake/ecbuild_generate_fortran_interfaces.cmake
index d586248..93c7414 100644
--- a/cmake/ecbuild_generate_fortran_interfaces.cmake
+++ b/cmake/ecbuild_generate_fortran_interfaces.cmake
@@ -12,7 +12,7 @@
 # ecbuild_generate_fortran_interfaces
 # ===================================
 #
-# Generates interfaces form the Fortran source files. ::
+# Generates interfaces from the Fortran source files. ::
 #
 #   ecbuild_generate_fortran_interfaces()
 #
diff --git a/cmake/ecbuild_get_cxx11_flags.cmake b/cmake/ecbuild_get_cxx11_flags.cmake
index 47d0e1a..a97fe11 100644
--- a/cmake/ecbuild_get_cxx11_flags.cmake
+++ b/cmake/ecbuild_get_cxx11_flags.cmake
@@ -23,7 +23,7 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
 
   include(CheckCXXCompilerFlag)
 
-  # On older cmake versions + newer compilers, 
+  # On older cmake versions + newer compilers,
   # the given version of CheckCXXCompilerFlags does not quite work.
   if(CMAKE_VERSION VERSION_LESS 2.8.9)
     macro (CHECK_CXX_COMPILER_FLAG _FLAG _RESULT)
@@ -52,7 +52,8 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
 
   check_cxx_compiler_flag(-std=c++11 has_std_cpp11)
   check_cxx_compiler_flag(-std=c++0x has_std_cpp0x)
-  if(MINGW) 
+  check_cxx_compiler_flag(-hstd=c++11 has_hstd_cpp11)
+  if(MINGW)
     check_cxx_compiler_flag(-std=gnu++11 has_std_gnupp11)
     check_cxx_compiler_flag(-std=gnu++0x has_std_gnupp0x)
   endif(MINGW)
@@ -60,7 +61,9 @@ function( ecbuild_get_cxx11_flags CXX11_FLAGS )
     set(${CXX11_FLAGS} "-std=gnu++11" PARENT_SCOPE)
   elseif(has_std_gnupp0x)
     set(${CXX11_FLAGS} "-std=gnu++0x" PARENT_SCOPE)
-  elseif(has_std_cpp11) 
+  elseif(has_hstd_cpp11)
+    set(${CXX11_FLAGS} "-hstd=c++11" PARENT_SCOPE)
+  elseif(has_std_cpp11)
     set(${CXX11_FLAGS} "-std=c++11" PARENT_SCOPE)
   elseif(has_std_cpp0x)
     set(${CXX11_FLAGS} "-std=c++0x" PARENT_SCOPE)
diff --git a/cmake/ecbuild_get_test_data.cmake b/cmake/ecbuild_get_test_data.cmake
index c19a760..42185f1 100644
--- a/cmake/ecbuild_get_test_data.cmake
+++ b/cmake/ecbuild_get_test_data.cmake
@@ -20,6 +20,7 @@ function( _download_test_data _p_NAME _p_DIRNAME )
   #endif()
 
   find_program( CURL_PROGRAM curl )
+  mark_as_advanced(CURL_PROGRAM)
 
   if( CURL_PROGRAM )
 
@@ -240,6 +241,7 @@ endfunction(ecbuild_get_test_data)
 #   ecbuild_get_test_multidata( NAMES <name1> [ <name2> ... ]
 #                               TARGET <target>
 #                               [ DIRNAME <dir> ]
+#                               [ LABELS <label1> [<label2> ...] ]
 #                               [ EXTRACT ]
 #                               [ NOCHECK ] )
 #
@@ -257,6 +259,14 @@ endfunction(ecbuild_get_test_data)
 # DIRNAME : optional, defaults to <project>/<relative path to current dir>
 #   directory in which the test data resides
 #
+# LABELS : optional
+#   list of labels to assign to the test
+#
+#   Lower case project name and ``download_data`` are always added as labels.
+#
+#   This allows selecting tests to run via ``ctest -L <regex>`` or tests
+#   to exclude via ``ctest -LE <regex>``.
+#
 # EXTRACT : optional
 #   extract downloaded files (supported archives: tar, zip, tar.gz, tar.bz2)
 #
@@ -302,7 +312,7 @@ function( ecbuild_get_test_multidata )
 
     set( options EXTRACT NOCHECK )
     set( single_value_args TARGET DIRNAME )
-    set( multi_value_args  NAMES )
+    set( multi_value_args  NAMES LABELS )
 
     cmake_parse_arguments( _p "${options}" "${single_value_args}" "${multi_value_args}"  ${_FIRST_ARG} ${ARGN} )
 
@@ -385,6 +395,9 @@ endfunction()\n\n" )
 
     if( ENABLE_TESTS )
       add_test(  NAME ${_p_TARGET} COMMAND ${CMAKE_COMMAND} -P ${_script} )
+      set( _p_LABELS ${PROJECT_NAME_LOWCASE} download_data ${_p_LABELS} )
+      list( REMOVE_DUPLICATES _p_LABELS )
+      set_property( TEST ${_p_TARGET} APPEND PROPERTY LABELS "${_p_LABELS}" )
     endif()
 
 endfunction(ecbuild_get_test_multidata)
diff --git a/cmake/ecbuild_install_project.cmake b/cmake/ecbuild_install_project.cmake
index 2ba472e..5e26bea 100644
--- a/cmake/ecbuild_install_project.cmake
+++ b/cmake/ecbuild_install_project.cmake
@@ -233,6 +233,18 @@ macro( ecbuild_install_project )
         endif()
     endforeach()
 
+    # Deduplicate TPL includes, libs and definitions
+    # The same TPL may indirectly be pulled in multiple times!
+    if( ${PNAME}_TPL_INCLUDE_DIRS )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_INCLUDE_DIRS )
+    endif()
+    if( ${PNAME}_TPL_LIBRARIES )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_LIBRARIES )
+    endif()
+    if( ${PNAME}_TPL_DEFINITIONS )
+      list( REMOVE_DUPLICATES ${PNAME}_TPL_DEFINITIONS )
+    endif()
+
     # Generate the project .cmake config files
     # All variables here must be (sub)project specific in order to work within bundles
     if ( NOT ECBUILD_SKIP_${PNAME}_EXPORT )
@@ -278,8 +290,6 @@ macro( ecbuild_install_project )
            set( CONF_TPL_LIBRARIES ${${PNAME}_TPL_LIBRARIES} )
         endif()
 
-        # project-config.cmake @ build tree
-
         set( CONF_TPLS ${${PNAME}_TPLS} )
 
         set( CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}" "${PROJECT_BINARY_DIR}" )
@@ -288,18 +298,11 @@ macro( ecbuild_install_project )
         endif()
 
         set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
+        if( ${PNAME}_TPL_INCLUDE_DIRS )
+            set( CONF_TPL_INCLUDE_DIRS ${${PNAME}_TPL_INCLUDE_DIRS} )
+        endif()
+
+        # Generate <project>-import.cmake (if it exists)
 
         set( CONF_IMPORT_FILE "${LNAME}-import.cmake" )
 
@@ -323,11 +326,17 @@ macro( ecbuild_install_project )
           ecbuild_debug( "No ${CONF_IMPORT_FILE} found in ${PROJECT_SOURCE_DIR}" )
         endif()
 
+        # Generate <project>-config.cmake for use from the build tree
+
         set( _lname_config "${PROJECT_BINARY_DIR}/${LNAME}-config.cmake")
 
+        # Include directories (may) reference source and build tree and the
+        # config file is marked as coming from a build tree
         set( _is_build_dir_export ON )
         configure_file( "${_template_config}" "${_lname_config}" @ONLY )
 
+        # Generate <project>-config.cmake.tpls (if there are any TPLs)
+
         file( REMOVE ${_lname_config}.tpls.in )
 
         foreach( _tpl ${${PNAME}_TPLS} )
@@ -360,28 +369,13 @@ macro( ecbuild_install_project )
             install( FILES "${_lname_config}.tpls" DESTINATION "${INSTALL_CMAKE_DIR}" )
         endif()
 
-        # project-config.cmake @ install tree
+        # Generate <project>-config.cmake for use in the install tree
 
+        # Compute path to the include dir relative to the project's CMake dir
+        # where <project>-config.cmake is installed to
         file( RELATIVE_PATH REL_INCLUDE_DIR "${${PNAME}_FULL_INSTALL_CMAKE_DIR}" "${${PNAME}_FULL_INSTALL_INCLUDE_DIR}" )
         set( CONF_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
 
-        set( CONF_TPL_INCLUDE_DIRS "" )
-        foreach( _tpl ${${PNAME}_TPLS} )
-            string( TOUPPER ${_tpl} TPL )
-            if( ${TPL}_FULL_INSTALL_INCLUDE_DIR )
-                 list( APPEND CONF_TPL_INCLUDE_DIRS "\${${PNAME}_CMAKE_DIR}/${REL_INCLUDE_DIR}" )
-            endif()
-            if( ${_tpl}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIRS} )
-            elseif( ${_tpl}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${_tpl}_INCLUDE_DIR} )
-            elseif( ${TPL}_INCLUDE_DIRS )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIRS} )
-            elseif( ${TPL}_INCLUDE_DIR )
-                list( APPEND CONF_TPL_INCLUDE_DIRS ${${TPL}_INCLUDE_DIR} )
-            endif()
-        endforeach()
-
         set( _is_build_dir_export OFF )
         configure_file( "${_template_config}" "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" @ONLY )
         install( FILES "${PROJECT_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${LNAME}-config.cmake" DESTINATION "${INSTALL_CMAKE_DIR}" )
diff --git a/cmake/ecbuild_log.cmake b/cmake/ecbuild_log.cmake
index ec99495..32a1398 100644
--- a/cmake/ecbuild_log.cmake
+++ b/cmake/ecbuild_log.cmake
@@ -20,7 +20,9 @@
 # :ecbuild_warn:      logs a ``WARNING`` message if log level <= ``WARN``
 # :ecbuild_error:     logs a ``SEND_ERROR`` message if log level <= ``ERROR``
 # :ecbuild_critical:  logs a ``FATAL_ERROR`` message if log level <= ``CRITICAL``
-# :ecbuild_deprecate: logs a ``DEPRECATION`` message
+# :ecbuild_deprecate: logs a ``DEPRECATION`` message as a warning
+#                     enable CMAKE_ERROR_DEPRECATED to raise an error instead
+#                     disable CMAKE_WARN_DEPRECATED to hide deprecations
 #
 # Furthermore there are auxilliary functions for outputting CMake variables,
 # CMake lists and environment variables if the log level is ``DEBUG``:
@@ -50,10 +52,6 @@
 # ECBUILD_NO_COLOUR : bool
 #   if set, does not colour log output (by default log output is coloured)
 #
-# ECBUILD_NO_DEPRECATIONS : bool
-#   if set, does not output deprecation messages (only set this if you *really*
-#   know what you are doing!)
-#
 # Usage
 # -----
 #
@@ -64,7 +62,7 @@
 #
 ##############################################################################
 
-# Define colour escape sequences (https://stackoverflow.com/a/19578320/396967)
+# Define colour escape sequences (not available on Windows)
 if(NOT (WIN32 OR ECBUILD_NO_COLOUR))
   string(ASCII 27 Esc)
   set(ColourReset "${Esc}[m")
@@ -113,6 +111,9 @@ endif()
 if( NOT DEFINED ECBUILD_LOG_FILE )
   set( ECBUILD_LOG_FILE ${CMAKE_BINARY_DIR}/ecbuild.log )
 endif()
+if( NOT DEFINED CMAKE_ERROR_DEPRECATED AND NOT DEFINED CMAKE_WARN_DEPRECATED )
+  set( CMAKE_WARN_DEPRECATED ON )
+endif()
 
 ##############################################################################
 
@@ -167,7 +168,15 @@ endfunction( ecbuild_error )
 function( ecbuild_deprecate )
   string(REPLACE ";" " " MSG ${ARGV})
   ecbuild_log(DEPRECATION "${MSG}")
-  if( NOT ECBUILD_NO_DEPRECATIONS )
+  # DEPRECATION message type was only introduced in CMake 3.0, provide
+  # consistent behaviour for CMake < 3.0
+  if( CMAKE_VERSION VERSION_LESS 3.0 )
+    if( CMAKE_ERROR_DEPRECATED )
+      message(FATAL_ERROR "${BoldRed}DEPRECATION - ${MSG}${ColourReset}")
+    elseif( CMAKE_WARN_DEPRECATED )
+      message(WARNING "${Yellow}DEPRECATION - ${MSG}${ColourReset}")
+    endif()
+  else()
     message(DEPRECATION "${BoldRed}${MSG}${ColourReset}")
   endif()
 endfunction( ecbuild_deprecate )
diff --git a/cmake/ecbuild_pkgconfig.cmake b/cmake/ecbuild_pkgconfig.cmake
index 6f62977..d839a86 100644
--- a/cmake/ecbuild_pkgconfig.cmake
+++ b/cmake/ecbuild_pkgconfig.cmake
@@ -275,7 +275,7 @@ endfunction(ecbuild_pkgconfig_include)
 # ---------------
 #
 # The following CMake variables are used as default values for some of the
-# options listed above, where ``PNAME`` is the project name in upper case: ::
+# options listed above, where ``PNAME`` is the project name in upper case:
 #
 # :<PNAME>_LIBRARIES:    list of libraries to export
 # :<PNAME>_DESCRIPTION:  package description
diff --git a/cmake/ecbuild_print_summary.cmake b/cmake/ecbuild_print_summary.cmake
index 4cf05cc..6fc70d0 100644
--- a/cmake/ecbuild_print_summary.cmake
+++ b/cmake/ecbuild_print_summary.cmake
@@ -59,6 +59,11 @@ macro( ecbuild_print_summary )
     ecbuild_info( "build type       : [${CMAKE_BUILD_TYPE}]" )
     ecbuild_info( "timestamp        : [${EC_BUILD_TIMESTAMP}]" )
     ecbuild_info( "install prefix   : [${CMAKE_INSTALL_PREFIX}]" )
+    ecbuild_info( "  bin dir        : [${${PNAME}_FULL_INSTALL_BIN_DIR}]" )
+    ecbuild_info( "  lib dir        : [${${PNAME}_FULL_INSTALL_LIB_DIR}]" )
+    ecbuild_info( "  include dir    : [${${PNAME}_FULL_INSTALL_INCLUDE_DIR}]" )
+    ecbuild_info( "  data dir       : [${${PNAME}_FULL_INSTALL_DATA_DIR}]" )
+    ecbuild_info( "  cmake dir      : [${${PNAME}_FULL_INSTALL_CMAKE_DIR}]" )
     if( EC_LINK_DIR )
       ecbuild_info( "links prefix     : [${EC_LINK_DIR}]" )
     endif()
@@ -66,7 +71,8 @@ macro( ecbuild_print_summary )
 
     foreach( lang ${langs} )
       ecbuild_info( "${lang} -- ${CMAKE_${lang}_COMPILER_ID} ${CMAKE_${lang}_COMPILER_VERSION}"  )
-      ecbuild_info( "    compiler   : ${CMAKE_${lang}_COMPILER} ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+      ecbuild_info( "    compiler   : ${CMAKE_${lang}_COMPILER}" )
+      ecbuild_info( "    flags      : ${CMAKE_${lang}_FLAGS} ${CMAKE_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}} ${${PNAME}_${lang}_FLAGS} ${${PNAME}_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
       ecbuild_info( "    link flags : ${CMAKE_${lang}_LINK_FLAGS}" )
     endforeach()
 
diff --git a/cmake/ecbuild_remove_fortran_flags.cmake b/cmake/ecbuild_remove_fortran_flags.cmake
index 74c8832..3a80316 100644
--- a/cmake/ecbuild_remove_fortran_flags.cmake
+++ b/cmake/ecbuild_remove_fortran_flags.cmake
@@ -10,9 +10,9 @@
 #.rst:
 #
 # ecbuild_remove_fortran_flags
-# =========================
+# ============================
 #
-# Remove Fortran compiler flags from CMAKE_Fortran_FLAGS. ::
+# Remove Fortran compiler flags from ``CMAKE_Fortran_FLAGS``. ::
 #
 #   ecbuild_remove_fortran_flags( <flag1> [ <flag2> ... ] [ BUILD <build> ] )
 #
@@ -58,4 +58,3 @@ macro( ecbuild_remove_fortran_flags m_flags )
   unset( _flags )
 
 endmacro()
-
diff --git a/cmake/ecbuild_separate_sources.cmake b/cmake/ecbuild_separate_sources.cmake
index b56db63..00722ae 100644
--- a/cmake/ecbuild_separate_sources.cmake
+++ b/cmake/ecbuild_separate_sources.cmake
@@ -32,10 +32,11 @@
 # If any file of the following group of extensions is present in the list of
 # sources, the corresponding CMake variable is set:
 #
-# :<target>_h_srcs:   list of sources with extension .h, .hxx, .hh, .hpp, .H
-# :<target>_c_srcs:   list of sources with extension .c
-# :<target>_cxx_srcs: list of sources with extension .cc, .cxx, .cpp, .C
-# :<target>_f_srcs:   list of sources with extension .f, .F, .for, f77, .f90, .f95
+# :<target>_h_srcs:       source files with extension .h, .hxx, .hh, .hpp, .H
+# :<target>_c_srcs:       source files with extension .c
+# :<target>_cxx_srcs:     source files with extension .cc, .cxx, .cpp, .C
+# :<target>_fortran_srcs: source files with extension .f, .F, .for, f77, .f90,
+#                                                     .f95, .F77, .F90, .F95
 #
 ##############################################################################
 
@@ -60,32 +61,33 @@ macro( ecbuild_separate_sources )
 	endif()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.h|\\.hxx|\\.hh|\\.hpp|\\.H)")
+		if(${src} MATCHES "(\\.h$|\\.hxx$|\\.hh$|\\.hpp$|\\.H$)")
 			list( APPEND ${_PAR_TARGET}_h_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.c)")
+		if(${src} MATCHES "(\\.c$)")
 			list( APPEND ${_PAR_TARGET}_c_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.cc|\\.cxx|\\.cpp|\\.C)")
+		if(${src} MATCHES "(\\.cc$|\\.cxx$|\\.cpp$|\\.C$)")
 			list( APPEND ${_PAR_TARGET}_cxx_srcs ${src} )
 		endif()
 	endforeach()
 
 	foreach( src ${_PAR_SOURCES} )
-		if(${src} MATCHES "(\\.f|\\.F|\\.for|\\.f77|\\.f90|\\.f95)")
-			list( APPEND ${_PAR_TARGET}_f_srcs ${src} )
+		if(${src} MATCHES "(\\.f$|\\.F$|\\.for$|\\.f77$|\\.f90$|\\.f95$|\\.f03$|\\.f08$|\\.F77$|\\.F90$|\\.F95$|\\.F03$|\\.F08$)")
+			list( APPEND ${_PAR_TARGET}_fortran_srcs ${src} )
 		endif()
 	endforeach()
+	set_source_files_properties( ${${_PAR_TARGET}_fortran_srcs} PROPERTIES LANGUAGE Fortran )
 
 #    ecbuild_debug_var( ${_PAR_TARGET}_h_srcs )
 #    ecbuild_debug_var( ${_PAR_TARGET}_c_srcs )
 #    ecbuild_debug_var( ${_PAR_TARGET}_cxx_srcs )
-#    ecbuild_debug_var( ${_PAR_TARGET}_f_srcs )
+#    ecbuild_debug_var( ${_PAR_TARGET}_fortran_srcs )
 
-endmacro( ecbuild_separate_sources  )
+endmacro( ecbuild_separate_sources )
diff --git a/cmake/ecbuild_source_flags.cmake b/cmake/ecbuild_source_flags.cmake
index 2414765..a281f1d 100644
--- a/cmake/ecbuild_source_flags.cmake
+++ b/cmake/ecbuild_source_flags.cmake
@@ -23,8 +23,12 @@ function( ecbuild_source_flags OUT TARGET DEFAULT_FLAGS SOURCES )
   endif()
   execute_process( COMMAND ${PYTHON_EXECUTABLE} ${__gen_source_flags}
                            ${ECBUILD_SOURCE_FLAGS} ${OUTFILE} "${DEFAULT_FLAGS}"
-                           ${SOURCES} "${__debug}" )
+                           ${SOURCES} "${__debug}"
+                   RESULT_VARIABLE __res )
 
+  if( __res GREATER 0 )
+    ecbuild_error( "ecbuild_source_flags: failed generating source flags for target ${TARGET} from ${ECBUILD_SOURCE_FLAGS}" )
+  endif()
   set( ${OUT} ${OUTFILE} PARENT_SCOPE )
 
 endfunction()
diff --git a/cmake/ecbuild_system.cmake b/cmake/ecbuild_system.cmake
index a4361f7..f02113e 100644
--- a/cmake/ecbuild_system.cmake
+++ b/cmake/ecbuild_system.cmake
@@ -187,6 +187,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
     include( ecbuild_add_cxx_flags )
     include( ecbuild_add_cxx11_flags )
     include( ecbuild_get_cxx11_flags )
+    include( ecbuild_check_fortran )
     include( ecbuild_add_fortran_flags )
     include( ecbuild_add_test )
     include( ecbuild_add_resources )
@@ -211,6 +212,7 @@ if( PROJECT_NAME STREQUAL CMAKE_PROJECT_NAME )
     include( ecbuild_git )
     include( ecbuild_enable_fortran )
     include( ecbuild_source_flags )
+    include( ecbuild_target_flags )
     include( ecbuild_bundle )
     include( ecbuild_pkgconfig )
     include( ecbuild_cache )
diff --git a/cmake/ecbuild_target_flags.cmake b/cmake/ecbuild_target_flags.cmake
new file mode 100644
index 0000000..4c589af
--- /dev/null
+++ b/cmake/ecbuild_target_flags.cmake
@@ -0,0 +1,91 @@
+# (C) Copyright 1996-2016 ECMWF.
+#
+# This software is licensed under the terms of the Apache Licence Version 2.0
+# which can be obtained at http://www.apache.org/licenses/LICENSE-2.0.
+# In applying this licence, ECMWF does not waive the privileges and immunities
+# granted to it by virtue of its status as an intergovernmental organisation
+# nor does it submit to any jurisdiction.
+
+##############################################################################
+#.rst:
+#
+# ecbuild_target_flags
+# ====================
+#
+# Override compiler flags for a given target. ::
+#
+#   ecbuild_target_flags( <target> <c_flags> <cxx_flags> <fortran_flags> )
+#
+# Required arguments:
+#
+# :target:        Target name
+# :c_flags:       Target specific C flags (can be empty)
+# :cxx_flags:     Target specific CXX flags (can be empty)
+# :fortran_flags: Target specific Fortran flags (can be empty)
+#
+# There are 3 cases, only the first applicable case takes effect:
+#
+# 1.  Use custom rules from user specified ``ECBUILD_COMPILE_FLAGS`` file and
+#     append target specific flags.
+#
+# 2.  Use JSON rules from user specified ``ECBUILD_SOURCE_FLAGS`` file and
+#     append target specific flags.
+#
+# 3.  Only the target specific flags are applied to all matching source files.
+#
+##############################################################################
+
+function( ecbuild_target_flags target c_flags cxx_flags fortran_flags )
+
+  get_property( languages GLOBAL PROPERTY ENABLED_LANGUAGES )
+
+  foreach( lang ${languages} )
+
+    string( TOLOWER ${lang} l )
+
+    if( ${target}_${l}_srcs )
+
+      # 1) Override compile flags from user specified CMake file
+      if( ECBUILD_COMPILE_FLAGS )
+
+        # Project specific flags for current language and optionally build type
+        set( pflags "${${PNAME}_${lang}_FLAGS} ${${PNAME}_${lang}_FLAGS_${CMAKE_BUILD_TYPE_CAPS}}" )
+
+        foreach( src ${${target}_${l}_srcs} )
+          get_property( oflags SOURCE ${src} PROPERTY OVERRIDE_COMPILE_FLAGS )
+          get_property( oflags_btype SOURCE ${src} PROPERTY OVERRIDE_COMPILE_FLAGS_${CMAKE_BUILD_TYPE_CAPS} )
+          # Override compile flags for source file?
+          if( oflags OR oflags_btype )
+            set_source_files_properties( ${src} PROPERTIES COMPILE_FLAGS "${oflags} ${oflags_btype}" )
+            ecbuild_debug( "ecbuild_target_flags(${target}): overriding flags for ${src} with '${oflags} ${oflags_btype}'" )
+          # Otherwise append source file specific flags to project specific and target specific flags
+          else()
+            get_property( flags SOURCE ${src} PROPERTY COMPILE_FLAGS )
+            get_property( flags_btype SOURCE ${src} PROPERTY COMPILE_FLAGS_${CMAKE_BUILD_TYPE_CAPS} )
+            set_source_files_properties( ${src} PROPERTIES COMPILE_FLAGS "${pflags} ${${l}_flags} ${flags} ${flags_btype}" )
+            ecbuild_debug( "ecbuild_target_flags(${target}): setting flags for ${src} to '${pflags} ${${l}_flags} ${flags} ${flags_btype}'" )
+          endif()
+        endforeach()
+
+      # 2) Override compile flags from user specified JSON file
+      elseif( ECBUILD_SOURCE_FLAGS )
+        ecbuild_source_flags( ${target}_${lang}_SOURCE_FLAGS
+                              ${target}_${l}
+                              "${${l}_flags}"
+                              "${${target}_${l}_srcs}" )
+
+        ecbuild_debug("ecbuild_target_flags(${target}): setting source file ${lang} flags from ${${target}_${lang}_SOURCE_FLAGS}")
+        include( ${${target}_${lang}_SOURCE_FLAGS} )
+
+      # 3) Use target specific compile flags
+      elseif( ${l}_flags )
+
+        set_source_files_properties( ${${target}_${l}_srcs} PROPERTIES COMPILE_FLAGS "${${l}_flags}" )
+        ecbuild_debug("ecbuild_target_flags(${target}): setting flags for '${${target}_${l}_srcs}' to '${${l}_flags}'")
+
+      endif()
+    endif()
+
+  endforeach()
+
+endfunction()
diff --git a/cmake/ecbuild_use_package.cmake b/cmake/ecbuild_use_package.cmake
index 6bd2bed..c88bca8 100644
--- a/cmake/ecbuild_use_package.cmake
+++ b/cmake/ecbuild_use_package.cmake
@@ -177,6 +177,7 @@ macro( ecbuild_use_package )
       # add as a subproject
 
       set( ${pkgUPPER}_subproj_dir_ ${${pkgUPPER}_subproj_dir_} CACHE PATH "Path to ${_p_PROJECT} source directory" )
+      mark_as_advanced( ${pkgUPPER}_subproj_dir_ )
 
       set( ECBUILD_PROJECTS ${ECBUILD_PROJECTS} ${_p_PROJECT} CACHE INTERNAL "" )
 
diff --git a/cmake/fortran_features/CheckFortranFeatures.cmake b/cmake/fortran_features/CheckFortranFeatures.cmake
new file mode 100644
index 0000000..992964f
--- /dev/null
+++ b/cmake/fortran_features/CheckFortranFeatures.cmake
@@ -0,0 +1,167 @@
+###############################################################################
+# checks
+set(Fortran_FEATURE_CHECK_DIR ${CMAKE_CURRENT_LIST_DIR} CACHE INTERNAL "fortran file directory")
+
+MACRO(fortran_check_single_feature FEATURE_NAME FEATURE_NUMBER RESULT_VAR)
+  IF (NOT DEFINED ${RESULT_VAR})
+    SET(_bindir "${CMAKE_BINARY_DIR}/fortran_feature_tests/fortran_${FEATURE_NAME}")
+
+    IF (${FEATURE_NUMBER})
+      SET(_SRCFILE_BASE ${Fortran_FEATURE_CHECK_DIR}/${FEATURE_NAME}-N${FEATURE_NUMBER})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\" (N${FEATURE_NUMBER})")
+    ELSE (${FEATURE_NUMBER})
+      SET(_SRCFILE_BASE ${Fortran_FEATURE_CHECK_DIR}/${FEATURE_NAME})
+      SET(_LOG_NAME "\"${FEATURE_NAME}\"")
+    ENDIF (${FEATURE_NUMBER})
+    ecbuild_info("Checking Fortran support for ${_LOG_NAME}")
+
+    SET(_SRCFILE "${_SRCFILE_BASE}.F90")
+    SET(_SRCFILE_FAIL "${_SRCFILE_BASE}_fail.F90")
+    SET(_SRCFILE_FAIL_COMPILE "${_SRCFILE_BASE}_fail_compile.F90")
+
+    IF (CROSS_COMPILING)
+      try_compile(${RESULT_VAR} "${_bindir}" "${_SRCFILE}")
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_compile(${RESULT_VAR} "${_bindir}_fail" "${_SRCFILE_FAIL}")
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ELSE (CROSS_COMPILING)
+      try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+          "${_bindir}" "${_SRCFILE}")
+      IF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} TRUE)
+      ELSE (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+        SET(${RESULT_VAR} FALSE)
+      ENDIF (_COMPILE_RESULT_VAR AND NOT _RUN_RESULT_VAR)
+      IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+        try_run(_RUN_RESULT_VAR _COMPILE_RESULT_VAR
+            "${_bindir}_fail" "${_SRCFILE_FAIL}")
+        IF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} TRUE)
+        ELSE (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+          SET(${RESULT_VAR} FALSE)
+        ENDIF (_COMPILE_RESULT_VAR AND _RUN_RESULT_VAR)
+      ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL})
+    ENDIF (CROSS_COMPILING)
+    IF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+      try_compile(_TMP_RESULT "${_bindir}_fail_compile" "${_SRCFILE_FAIL_COMPILE}")
+      IF (_TMP_RESULT)
+        SET(${RESULT_VAR} FALSE)
+      ELSE (_TMP_RESULT)
+        SET(${RESULT_VAR} TRUE)
+      ENDIF (_TMP_RESULT)
+    ENDIF (${RESULT_VAR} AND EXISTS ${_SRCFILE_FAIL_COMPILE})
+
+    IF (${RESULT_VAR})
+      ecbuild_info("Checking Fortran support for ${_LOG_NAME} -- works")
+    ELSE (${RESULT_VAR})
+      ecbuild_info("Checking Fortran support for ${_LOG_NAME} -- not supported")
+    ENDIF (${RESULT_VAR})
+    SET(${RESULT_VAR} ${${RESULT_VAR}} CACHE INTERNAL "Fortran support for ${_LOG_NAME}")
+  ENDIF (NOT DEFINED ${RESULT_VAR})
+ENDMACRO(fortran_check_single_feature)
+
+# Find list of all features
+function(fortran_find_all_features outvar)
+  FILE(GLOB ALL_Fortran_FEATURE_FILES "${Fortran_FEATURE_CHECK_DIR}/*.F90")
+  set(OUTPUT_VARIABLES)
+  foreach(filename ${ALL_Fortran_FEATURE_FILES})
+    get_filename_component(filename ${filename} NAME_WE)
+    string(REGEX REPLACE "_fail_compile" "" filename "${filename}")
+    string(REGEX REPLACE "_fail" "" filename "${filename}")
+    string(REGEX REPLACE "-N[0-9]*" "" filename "${filename}")
+    set(OUTPUT_VARIABLES ${OUTPUT_VARIABLES} ${filename})
+  endforeach()
+  list(REMOVE_DUPLICATES OUTPUT_VARIABLES)
+  set(${outvar} ${OUTPUT_VARIABLES} PARENT_SCOPE)
+endfunction()
+
+# Parses input and separates into arguments before REQUIRED and after REQUIRED.
+# Arguments before REQUIRED are OPTIONALS.
+# Arguments after REQUIRED are REQUIRED.
+# If no arguments, then sets output OPTIONALS to ALLFEATURES.
+function(parse_input_features ALLFEATURES OPTIONALS REQUIRED ERRORS)
+
+  if("${ARGN}" STREQUAL "")
+    set(${OPTIONALS} ${ALLFEATURES} PARENT_SCOPE)
+    set(${REQUIRED} "" PARENT_SCOPE)
+  else()
+    set(REQUIRED_FEATURES)
+    set(OPTIONAL_FEATURES)
+    set(UNKNOWN_FEATURES)
+    set(result_type OPTIONAL_FEATURES)
+    foreach(feature ${ARGN})
+      if(${feature} STREQUAL "REQUIRED")
+        set(result_type REQUIRED_FEATURES)
+      else()
+        list(FIND ALLFEATURES ${feature} feature_was_found)
+
+        if(feature_was_found EQUAL -1)
+          list(APPEND UNKNOWN_FEATURES ${feature})
+        else()
+          list(APPEND ${result_type} ${feature})
+        endif()
+
+      endif(${feature} STREQUAL "REQUIRED")
+    endforeach()
+
+    set(${OPTIONALS} ${OPTIONAL_FEATURES} PARENT_SCOPE)
+    set(${REQUIRED} ${REQUIRED_FEATURES} PARENT_SCOPE)
+    set(${ERRORS} ${UNKNOWN_FEATURES} PARENT_SCOPE)
+  endif("${ARGN}" STREQUAL "")
+endfunction(parse_input_features)
+
+# Figures out name and number of feature
+# then calls macro that does the work
+macro(_figure_out_fortran_feature current_feature)
+  # Find set of files that match current_feature, excepting _fail and _fail_compile.
+  file(GLOB ALL_FEATURE_FILES "${Fortran_FEATURE_CHECK_DIR}/${current_feature}*.F90")
+  foreach(filename ${ALL_FEATURE_FILES})
+    if(filename MATCHES "_fail")
+      list(REMOVE_ITEM ALL_FEATURE_FILES ${filename})
+    endif()
+  endforeach()
+
+  list(LENGTH ALL_FEATURE_FILES NFILES)
+  if(NOT ${NFILES} EQUAL 1)
+    ecbuild_critical("[Fortran] Expected to find only one feature. Found ${NFILES} -- ${ALL_FEATURE_FILES}.")
+  endif(NOT ${NFILES} EQUAL 1)
+
+  # Now we know which file corresponds to option.
+  get_filename_component(basename ${ALL_FEATURE_FILES} NAME_WE)
+  # If has feature number, extract it
+  set(number "")
+  if(basename MATCHES "-N[0-9]*$")
+    string(REGEX REPLACE "${current_feature}-N" "" number "${basename}")
+  endif()
+  # Then call macro
+  string(TOUPPER ${current_feature} UPPER_OPTIONAL)
+  set(VARNAME HAS_Fortran_${UPPER_OPTIONAL})
+  fortran_check_single_feature(${current_feature} "${number}" ${VARNAME})
+endmacro(_figure_out_fortran_feature)
+
+function(fortran_feature_check)
+
+  # find all features
+  fortran_find_all_features(ALL_Fortran_FEATURES)
+
+  # Parses input to this function.
+  parse_input_features("${ALL_Fortran_FEATURES}" OPTIONALS REQUIRED ERRORS ${ARGN})
+  if(NOT ${ERRORS} STREQUAL "")
+    ecbuild_info("[Fortran] The following features are unknown: ${ERRORS}.")
+  endif()
+
+  # Check optional features
+  foreach(current_feature ${OPTIONALS})
+    _figure_out_fortran_feature(${current_feature})
+  endforeach(current_feature ${ARGN})
+
+  # Check required features
+  foreach(current_feature ${REQUIRED})
+    _figure_out_fortran_feature(${current_feature})
+    set(VARNAME HAS_Fortran_${UPPER_OPTIONAL})
+    if(NOT ${VARNAME})
+      ecbuild_critical("[Fortran] Required feature ${current_feature} is not available.")
+    endif(NOT ${VARNAME})
+  endforeach(current_feature ${REQUIRED})
+
+endfunction(fortran_feature_check)
diff --git a/cmake/fortran_features/c_size_t.F90 b/cmake/fortran_features/c_size_t.F90
new file mode 100644
index 0000000..3c47136
--- /dev/null
+++ b/cmake/fortran_features/c_size_t.F90
@@ -0,0 +1,8 @@
+program test_c_sizeof
+use, intrinsic :: iso_c_binding, only : c_size_t, c_int, c_long
+
+write(0,*) "c_int    = ",c_int
+write(0,*) "c_long   = ",c_long
+write(0,*) "c_size_t = ",c_size_t
+
+end program
\ No newline at end of file
diff --git a/cmake/fortran_features/c_sizeof.F90 b/cmake/fortran_features/c_sizeof.F90
new file mode 100644
index 0000000..fc1be41
--- /dev/null
+++ b/cmake/fortran_features/c_sizeof.F90
@@ -0,0 +1,3 @@
+program test_c_sizeof
+use, intrinsic :: iso_c_binding, only : c_sizeof
+end program
\ No newline at end of file
diff --git a/cmake/fortran_features/derivedtype_interface.F90 b/cmake/fortran_features/derivedtype_interface.F90
new file mode 100644
index 0000000..d59a1c3
--- /dev/null
+++ b/cmake/fortran_features/derivedtype_interface.F90
@@ -0,0 +1,54 @@
+module constructor
+
+implicit none
+
+TYPE :: AnimalType
+  private
+  integer :: m_age
+contains
+  procedure :: age
+  procedure :: speak
+ENDTYPE
+
+! Declare constructor as interface with same name as type
+interface AnimalType
+  module procedure AnimalType__ctor
+end interface
+
+contains
+
+function AnimalType__ctor(age) result(self)
+  type(AnimalType) :: self
+  integer :: age
+  write(0,'(A)') "Constructor Animal"
+  self%m_age = age
+end function
+
+function age(self)
+  class(AnimalType), intent(inout) :: self
+  integer :: age
+  age = self%m_age
+end function
+
+subroutine speak(self)
+  class(AnimalType), intent(in) :: self
+  write(0,'(A)') "Animal::speak not overridden"
+end subroutine
+
+end module
+
+! ------------------------------------------------------------------------
+
+program test_constructor
+use constructor
+implicit none
+
+  type(AnimalType) :: animal
+
+  animal = AnimalType(8)
+
+  write(0,'(A,I0)') "age = ",animal%age()
+
+  call animal%speak()
+
+end program
diff --git a/cmake/fortran_features/derivedtype_io.F90 b/cmake/fortran_features/derivedtype_io.F90
new file mode 100644
index 0000000..47a98b0
--- /dev/null
+++ b/cmake/fortran_features/derivedtype_io.F90
@@ -0,0 +1,42 @@
+module write_module
+
+implicit none
+
+TYPE :: AnimalType
+  integer :: m_age
+  integer :: m_paws
+contains
+  procedure :: writetype
+  generic :: write(formatted) => writetype
+ENDTYPE
+
+contains
+
+subroutine writetype(animal, unit, iotype, v_list, iostat, iomsg)
+  ! Argument names here from the std, but you can name them differently.
+  class(AnimalType), intent(in) :: animal ! Object to write.
+  integer, intent(in) :: unit             ! Internal unit to write to.
+  character(*), intent(in) :: iotype      ! LISTDIRECTED or DTxxx
+  integer, intent(in) :: v_list(:)        ! parameters from fmt spec.
+  integer, intent(out) :: iostat          ! non zero on error, etc.
+  character(*), intent(inout) :: iomsg    ! define if iostat non zero.
+
+  write (unit, "(A)", IOSTAT=iostat, IOMSG=iomsg) &
+      "I am a dog"
+end subroutine writetype
+
+end module
+
+! ------------------------------------------------------------------------
+
+program test_write
+use write_module
+implicit none
+
+  type(AnimalType) :: animal
+
+  animal = AnimalType(8,4)
+
+  write(0,'(A,DT)') 'Custom writing: ',animal
+
+end program
diff --git a/cmake/fortran_features/finalization.F90 b/cmake/fortran_features/finalization.F90
new file mode 100644
index 0000000..5bacd5f
--- /dev/null
+++ b/cmake/fortran_features/finalization.F90
@@ -0,0 +1,141 @@
+module final_module
+
+implicit none
+
+integer :: final_counted = 0
+integer :: destroy_counted = 0
+
+TYPE :: AnimalType
+  character(len=20), private :: m_kind = "unidentified"
+  logical :: constructed = .false.
+contains
+  procedure :: speak
+  final :: AnimalType__dtor
+ENDTYPE
+
+interface AnimalType
+  module procedure AnimalType__ctor
+end interface
+
+interface assignment(=)
+  module procedure AnimalType__assignment
+end interface
+
+contains
+
+subroutine speak(self)
+  class(AnimalType), intent(in) :: self
+  write(0,'(2A)') "I am a ",self%m_kind
+end subroutine
+
+subroutine AnimalType__dtor(self)
+  type(AnimalType), intent(inout) :: self
+
+  write(0,'(2A)') "Final animal ",self%m_kind
+  final_counted = final_counted + 1
+
+  ! Destruction guard needed for portability
+  if( self%constructed ) then
+    write(0,'(2A)') "    Destroy animal ",self%m_kind
+    destroy_counted = destroy_counted + 1
+  endif
+end subroutine
+
+function AnimalType__ctor(animaltype_) result(self)
+  type(AnimalType) :: self
+  character(len=*) :: animaltype_
+  self%m_kind = animaltype_
+  write(0,'(3A,I0)') "Constructing animal ",self%m_kind, " -- address = ",loc(self)
+  self%constructed = .true.
+end function
+
+subroutine AnimalType__assignment(animal_out,animal_in)
+  type(AnimalType), intent(out) :: animal_out
+  class(AnimalType), intent(in) :: animal_in
+  write(0,'(3A,I0,A,I0)') '   Copying ',animal_in%m_kind, " -- from address ", loc(animal_in), " to address ", loc(animal_out)
+  animal_out%m_kind = animal_in%m_kind
+  animal_out%constructed = animal_in%constructed
+end subroutine
+
+end module
+
+! ------------------------------------------------------------------------
+
+subroutine scope_test
+use final_module
+implicit none
+
+  type(AnimalType) :: dog
+  type(AnimalType) :: cat
+
+  dog = AnimalType("dog")  ! Cray       : final called on temporary AnimalType("dog"); missing final call on dog before assignment
+                           ! Intel      : final called on dog before assignment; and on temporary AnimalType("dog")
+                           ! PGI 14.4   : final NOT called at all, possibly compiler bug
+                           ! GNU 4.9    : final called on dog before assignment; missing call on temporary AnimalType("dog")
+  call dog%speak()
+
+  ! final called on dog when out of scope
+end subroutine
+
+! -------------------------------------------------------
+
+subroutine assignment_test
+use final_module
+implicit none
+
+  type(AnimalType) :: dog
+  type(AnimalType) :: animal
+
+  dog = AnimalType("dog")    ! final called on dog before assignment
+  call dog%speak()
+  write(0,'(A)') "-- animal = dog"
+  animal = dog               ! final called on animal before assignment
+  call animal%speak()
+
+  ! final called on dog when out of scope
+  ! final called on animal when out of scope
+end subroutine
+
+! -------------------------------------------------------
+
+program test_final
+use final_module
+implicit none
+  logical :: test_failed = .false.
+
+  final_counted = 0
+  destroy_counted = 0
+
+  write(0,'(A)') " "
+  write(0,'(A)') ">>>>>> begin scope_test"
+  call scope_test
+  write(0,'(A)') "<<<<<< end scope_test"
+  write(0,'(A)') " "
+
+  write(0,'(A,I0)') "final_counted = ", final_counted
+  write(0,'(A,I0)') "destroy_counted = ", destroy_counted
+
+  if( destroy_counted < 1 ) then
+    test_failed = .true.
+    write(0,'(A)') "ASSERTION FAILED: destroy_counted < 1"
+  endif
+
+  final_counted = 0
+  destroy_counted = 0
+
+  write(0,'(A)') " "
+  write(0,'(A)') ">>>>>> begin assignment_test"
+  call assignment_test
+  write(0,'(A)') "<<<<<< end assignment_test"
+  write(0,'(A)') " "
+
+  write(0,'(A,I0)') "final_counted = ", final_counted
+  write(0,'(A,I0)') "destroy_counted = ", destroy_counted
+
+  if( destroy_counted < 2 ) then
+    test_failed = .true.
+    write(0,*) "ASSERTION FAILED: destroy_counted < 2"
+  endif
+  if( test_failed ) STOP 1
+
+end program
diff --git a/cmake/fortran_features/submodules.F90 b/cmake/fortran_features/submodules.F90
new file mode 100644
index 0000000..3a2261f
--- /dev/null
+++ b/cmake/fortran_features/submodules.F90
@@ -0,0 +1,35 @@
+module sb_module
+implicit none
+integer :: a = 1
+
+interface
+  module subroutine sb
+  end subroutine
+end interface
+
+contains
+end module sb_module
+
+! -------------------------------------------------------
+
+submodule (sb_module) sb_submod1
+implicit none
+integer :: b = 2
+
+contains
+
+module subroutine sb()
+  a = b
+end subroutine
+
+end submodule sb_submod1
+
+! -------------------------------------------------------
+
+program test_submodule
+use sb_module
+implicit none
+write(0,*) a
+call sb()
+write(0,*) a
+end program
\ No newline at end of file
diff --git a/project_summary.cmake b/project_summary.cmake
index 819738b..09450ca 100644
--- a/project_summary.cmake
+++ b/project_summary.cmake
@@ -19,3 +19,8 @@ if( PYTHONINTERP_FOUND )
 	message( STATUS "       libs     : ${PYTHON_LIBRARIES}" )
 endif()
 
+if (ENABLE_SSL)
+    ecbuild_info("OpenSSL VERSION  ${OPENSSL_VERSION}")
+    ecbuild_info("        LIBS     ${OPENSSL_LIBRARIES}")
+    ecbuild_info("        INCLUDES ${OPENSSL_INCLUDE_DIR}")
+endif()
\ No newline at end of file
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
index 52924b9..c6947e8 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Cray.cmake
@@ -20,14 +20,6 @@ set( ECBUILD_FIND_MPI OFF )
 set( ECBUILD_TRUST_FLAGS ON )
 
 ####################################################################
-# MPI
-####################################################################
-
-set( MPIEXEC                 "aprun" )
-set( MPIEXEC_NUMPROC_FLAG    "-n"    )
-set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
-
-####################################################################
 # OpenMP FLAGS
 ####################################################################
 
@@ -40,17 +32,10 @@ set( OMPSTUBS_CXX_FLAGS      "-hnoomp" )
 set( OMPSTUBS_Fortran_FLAGS  "-hnoomp" )
 
 ####################################################################
-# Fortran FLAGS
-####################################################################
-
-# -emf activates .mods and uses lower case -rmoid produces a listing file
-set( ECBUILD_Fortran_FLAGS   "-emf -rmoid" )
-
-####################################################################
 # LINK FLAGS
 ####################################################################
 
-set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
-set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
-set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,loadmap -Wl,--as-needed -Ktrap=fp" )
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,loadmap -Wl,--as-needed -Wl,--eh-frame-hdr -Ktrap=fp" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,loadmap -Wl,--as-needed -Wl,--eh-frame-hdr -Ktrap=fp" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,loadmap -Wl,--as-needed -Wl,--eh-frame-hdr -Ktrap=fp" )
 set( ECBUILD_CXX_IMPLICIT_LINK_LIBRARIES "$ENV{CC_X86_64}/lib/x86-64/libcray-c++-rts.so" CACHE STRING "" )
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
index 3f69f06..3ea294f 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-GNU.cmake
@@ -20,14 +20,6 @@ set( ECBUILD_FIND_MPI OFF )
 set( ECBUILD_TRUST_FLAGS ON )
 
 ####################################################################
-# MPI
-####################################################################
-
-set( MPIEXEC                 "aprun" )
-set( MPIEXEC_NUMPROC_FLAG    "-n"    )
-set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
-
-####################################################################
 # OpenMP FLAGS
 ####################################################################
 
@@ -47,6 +39,6 @@ set( ECBUILD_Fortran_FLAGS_DEBUG  "-ffree-line-length-none -O0 -g -fcheck=bounds
 # LINK FLAGS
 ####################################################################
 
-set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
-set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
-set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
diff --git a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
index 01c6267..d5fdb32 100644
--- a/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
+++ b/share/ecbuild/toolchains/ecmwf-XC30-Intel.cmake
@@ -21,14 +21,6 @@ set( ECBUILD_FIND_MPI OFF )
 set( ECBUILD_TRUST_FLAGS ON )
 
 ####################################################################
-# MPI
-####################################################################
-
-set( MPIEXEC                 "aprun" )
-set( MPIEXEC_NUMPROC_FLAG    "-n"    )
-set( MPIEXEC_NUMTHREAD_FLAG  "-d"    )
-
-####################################################################
 # OpenMP FLAGS
 ####################################################################
 
@@ -68,6 +60,6 @@ set( ECBUILD_Fortran_FLAGS_DEBUG  "-O0 -g -traceback -warn all -heap-arrays -fpe
 # LINK FLAGS
 ####################################################################
 
-set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed" )
-set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed" )
-set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed" )
+set( ECBUILD_C_LINK_FLAGS        "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
+set( ECBUILD_CXX_LINK_FLAGS      "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
+set( ECBUILD_Fortran_LINK_FLAGS  "-Wl,-Map,load.map -Wl,--as-needed -Wl,--eh-frame-hdr" )
diff --git a/share/ecflow/etc/CMakeLists.txt b/share/ecflow/etc/CMakeLists.txt
index a14ddab..5b8ab92 100644
--- a/share/ecflow/etc/CMakeLists.txt
+++ b/share/ecflow/etc/CMakeLists.txt
@@ -11,9 +11,13 @@ set (files ecflowview_menus.json
            ecflowview_palette.json
            ecflowview_panels.json
            ecflowview_panel_conf.json
+           ecflowview_query_conf.json
            ecflowview_sstate_conf.json
            ecflowview_server_conf.json
            ecflowview_view_conf.json
+           ecflow_ui_test.def
+           ecflow_ui_test_session_template.json
+           ecflow_ui_test_server_scripts.tar.gz
            viewer.qss)
 
 # for each file, copy it into the build directory at build time
diff --git a/share/ecflow/etc/ecflow_ui_test.def b/share/ecflow/etc/ecflow_ui_test.def
new file mode 100644
index 0000000..9bfda14
--- /dev/null
+++ b/share/ecflow/etc/ecflow_ui_test.def
@@ -0,0 +1,103 @@
+# 3.1.2
+suite operation_suite
+  repeat day 1
+  edit ECF_HOME    'ECF_HOME_PLACEHOLDER'
+  edit ECF_INCLUDE 'ECF_INCLUDE_PLACEHOLDER'
+  edit ECF_FILES   'ECF_FILES_PLACEHOLDER'
+  edit SLEEP 3
+  family 0
+    edit CYCLE '0'
+    edit LAST_STEP '24'
+    family analysis
+      task get_observations
+      task run_analysis
+        trigger get_observations == complete
+      task post_processing
+        trigger run_analysis == complete
+    endfamily
+    family forecast
+      trigger analysis == complete
+      task get_input_data
+      task run_forecast
+        trigger get_input_data == complete
+        meter step 0 24 24
+    endfamily
+    family archive
+      family analysis
+        trigger ../analysis/run_analysis == complete
+        edit TYPE 'analysis'
+        edit STEP '0'
+        task save
+        family step_6
+          trigger ../../forecast/run_forecast:step ge 6
+          edit TYPE 'forecast'
+          edit STEP '6'
+          task save
+        endfamily
+        family step_12
+          trigger ../../forecast/run_forecast:step ge 12
+          edit TYPE 'forecast'
+          edit STEP '12'
+          task save
+        endfamily
+        family step_18
+          trigger ../../forecast/run_forecast:step ge 18
+          edit TYPE 'forecast'
+          edit STEP '18'
+          task save
+        endfamily
+      endfamily
+    endfamily
+  endfamily
+  family 12
+    trigger ./0 == complete
+    edit CYCLE '12'
+    edit LAST_STEP '240'
+    family analysis
+      task get_observations
+      task run_analysis
+        trigger get_observations == complete
+      task post_processing
+        trigger run_analysis == complete
+    endfamily
+    family forecast
+      trigger analysis == complete
+      task get_input_data
+      task run_forecast
+        trigger get_input_data == complete
+        meter step 0 240 240
+    endfamily
+    family archive
+      family analysis
+        trigger ../analysis/run_analysis == complete
+        edit TYPE 'analysis'
+        edit STEP '0'
+        task save
+        family step_6
+          trigger ../../forecast/run_forecast:step ge 6
+          edit TYPE 'forecast'
+          edit STEP '6'
+          task save
+        endfamily
+        family step_12
+          trigger ../../forecast/run_forecast:step ge 12
+          edit TYPE 'forecast'
+          edit STEP '12'
+          task save
+        endfamily
+        family step_18
+          trigger ../../forecast/run_forecast:step ge 18
+          edit TYPE 'forecast'
+          edit STEP '18'
+          task save
+        endfamily
+        family step_24
+          trigger ../../forecast/run_forecast:step ge 24
+          edit TYPE 'forecast'
+          edit STEP '24'
+          task save
+        endfamily
+      endfamily
+    endfamily
+  endfamily
+endsuite
diff --git a/share/ecflow/etc/ecflow_ui_test_server_scripts.tar.gz b/share/ecflow/etc/ecflow_ui_test_server_scripts.tar.gz
new file mode 100644
index 0000000..eb9b504
Binary files /dev/null and b/share/ecflow/etc/ecflow_ui_test_server_scripts.tar.gz differ
diff --git a/share/ecflow/etc/ecflow_ui_test_session_template.json b/share/ecflow/etc/ecflow_ui_test_session_template.json
new file mode 100644
index 0000000..96e5345
--- /dev/null
+++ b/share/ecflow/etc/ecflow_ui_test_session_template.json
@@ -0,0 +1,65 @@
+{
+    "windowCount": "1",
+    "topWindowId": "0",
+    "window_0":
+    {
+        "infoPanelCount": "2",
+        "tabCount": "1",
+        "currentTabId": "0",
+        "tab_0":
+        {
+            "server":
+            [
+                "SERVER_ALIAS_PLACEHOLDER"
+            ],
+            "widgetCount": "2",
+            "widget_0":
+            {
+                "type": "tree",
+                "dockId": "dock_0",
+                "breadcrumbs":
+                {
+                    "active": "1"
+                },
+                "state": "",
+                "attribute":
+                [
+                    "meter",
+                    "event",
+                    "repeat",
+                    "trigger",
+                    "label",
+                    "time",
+                    "date",
+                    "limit",
+                    "limiter",
+                    "late"
+                ],
+                "icon":
+                [
+                    "message",
+                    "rerun",
+                    "complete",
+                    "late",
+                    "time",
+                    "date",
+                    "wait",
+                    "zombie",
+                    "killed",
+                    "slow"
+                ]
+            },
+            "widget_1":
+            {
+                "type": "info",
+                "dockId": "dock_1",
+                "breadcrumbs":
+                {
+                    "active": "1"
+                },
+                "frozen": "false",
+                "detached": "false"
+            }
+        }
+    }
+}
diff --git a/share/ecflow/etc/ecflowview_gui.json b/share/ecflow/etc/ecflowview_gui.json
index 1e31c4b..dfa7f02 100644
--- a/share/ecflow/etc/ecflowview_gui.json
+++ b/share/ecflow/etc/ecflowview_gui.json
@@ -1,5 +1,5 @@
 {
-	"gui" : {
+    "gui" : {
 
         "hidden" : {
             "visible" : "false",
@@ -7,116 +7,116 @@
         },
 
         "appearance":  {
- 			"label": "Appearance",
- 			"desc" : "Appearance",
- 			"icon" : "colour.svg",
+            "label": "Appearance",
+            "desc" : "Appearance",
+            "icon" : "colour.svg",
             
             "tabs"  : {
-                 "tab" : {
-                    "label"  : "Status",   
- 
+                "tab" : {
+                    "label"  : "Status",
+
                     "group" : {
                         "title" : "Status rendering options",
-                        "prefix" : "view.common",                                     
+                        "prefix" : "view.common",
                         "line" : "node_gradient"
                     },
-                              
+
                     "grid" : {
-                        "title" : "Status colours",                                    
+                        "title" : "Status colours",
                         "h1" : "Node cell",
                         "h2" : "Name in cell",
                         "h3" : "Type in cell",
-                    
+
                         "row" : {
                             "label" : "Unknown",
-                            "prefix" :   "nstate.unknown",		 		       
- 				            "line" :  "fill_colour",
+                            "prefix" :   "nstate.unknown",
+                            "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-			             },					 				
-			             "row" : {
+                        },
+                        "row" : {
                             "label" : "Complete",
-                            "prefix" :   "nstate.complete",                     
+                            "prefix" :   "nstate.complete",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-                        },  
+                        },
                         "row" : {
                             "label" : "Queued",
-                            "prefix" :   "nstate.queued",                     
+                            "prefix" :   "nstate.queued",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-                        },  
+                        },
                         "row" : {
                             "label" : "Aborted",
-                            "prefix" :   "nstate.aborted",                     
+                            "prefix" :   "nstate.aborted",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-                        },                                  
+                        },
                         "row" : {
                             "label" : "Submitted",
-                            "prefix" :   "nstate.submitted",                     
+                            "prefix" :   "nstate.submitted",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-                        },  
+                        },
                         "row" : {
                             "label" : "Active",
-                            "prefix" :   "nstate.active",                     
+                            "prefix" :   "nstate.active",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
-                        },  			
-			             "row" : {
+                        },
+                        "row" : {
                             "label" : "Suspended ",
-                            "prefix" :   "nstate.suspended",                     
+                            "prefix" :   "nstate.suspended",
                             "line" :  "fill_colour",
                             "line" :  "font_colour",
                             "line" :  "type_colour"
                         },
-                
-			             "note" : {
-			             "default" : "the states below are only valid for <b>servers</b>"
-			             },  
-                    
+
+                        "note" : {
+                            "default" : "the states below are only valid for <b>servers</b>"
+                        },
+
                         "row" : {
                             "label" : "Halted",
-                            "prefix" :   "sstate.halted",                     
+                            "prefix" :   "sstate.halted",
                             "line" :  "fill_colour",
                             "line" :  "font_colour"
-                        },                                  
+                        },
                         "row" : {
                             "label" : "Shutdown  ",
-                            "prefix" :   "sstate.shutdown",                     
+                            "prefix" :   "sstate.shutdown",
                             "line" :  "fill_colour",
                             "line" :  "font_colour"
-                        },  
+                        },
                         "row" : {
                             "label" : "Running",
-                            "prefix" :   "sstate.running",                     
+                            "prefix" :   "sstate.running",
                             "line" :  "fill_colour",
                             "line" :  "font_colour"
-                        }  		
- 			
- 				   }		
- 			    }, 
- 			    
- 			    "tab" : {
-                  
-                    "label"  : "Tree view",   
- 
+                        }
+
+                    }
+                },
+
+                "tab" : {
+
+                    "label"  : "Tree view",
+
                     "group" : {
                         "title" : "Options",
                         "prefix" : "view",
-                
+
                         "line" : "common.node_style",
                         "line" : "tree.displayNodeType",
-                        "line" : "tree.display_child_count",                        
+                        "line" : "tree.display_child_count",
                         "line" : "tree.indentation",
                         "line" : "tree.drawBranchLine",
-                        "line" : "tree.background"                        
+                        "line" : "tree.background"
                     },
                     "group" : {
                         "title" : "Tooltips",
@@ -132,19 +132,19 @@
                         
                         "line" : "attributesPolicy",
                         "line" : "defaultAttributes"
-                   }
+                    }
                 },
                 
                 "tab" : {
-                  
-                    "label"  : "Table view",   
- 
+
+                    "label"  : "Table view",
+
                     "group" : {
                         "title" : "Options",
-                        "prefix" : "view.table",                
-                    
-                        "line" : "background"                                          
-                    }                                          
+                        "prefix" : "view.table",
+
+                        "line" : "background"
+                    }
                 },
                 "tab" : {
 
@@ -157,263 +157,275 @@
                         "line" : "eventFillColour",
                         "line" : "meterFillColour",
                         "line" : "meterThresholdColour",
-                        "line" : "limitFillColour"
+                        "line" : "limitFillColour",
+                        "line" : "limitExtraFillColour"
                     }
                 }
+            }
+        },
 
-			}
- 		},	
-            
-     "font":  {
+        "font":  {
             "label": "Fonts",
             "desc" : "Fonts",
             "icon" : "font.svg",
-        
+
             "group" : {
-                 "title" : "Tree view",
-                 "prefix" : "view.tree",
+                "title" : "Tree view",
+                "prefix" : "view.tree",
                 
-                 "line" : "nodeFont",
-                 "line" : "attributeFont"                                 
-             },       
+                "line" : "nodeFont",
+                "line" : "attributeFont"
+            },
             
             "group" : {
-                 "title" : "Table view",
-                 "prefix" : "view.table",
+                "title" : "Table view",
+                "prefix" : "view.table",
                 
-                 "line" : "font"                                           
-             },       
-        
+                "line" : "font"
+            },
+
             "group" : {
-                 "title" : "Info panel text browsers",
-                 "prefix" : "panel",
+                "title" : "Info panel text browsers",
+                "prefix" : "panel",
                 
-                 "line" : "overview.font",
-                 "line" : "manual.font",
-                 "line" : "script.font",
-                 "line" : "job.font",  
-                 "line" : "output.font",   
-                 "line" : "why.font",
-                 "line" : "edit.font"             
-             }       
-       },             
-                     		
- 	  "notification":  {
+                "line" : "overview.font",
+                "line" : "manual.font",
+                "line" : "script.font",
+                "line" : "job.font",
+                "line" : "output.font",
+                "line" : "why.font",
+                "line" : "edit.font"
+            }
+        },
+
+        "notification":  {
             "visible" : "true",
             "label": "Notifications",
             "desc" : "Notifications",
-            "icon" : "notification.svg",           
+            "icon" : "notification.svg",
+
+            "line"  : "notification.settings.max_item_num",
 
-            "line"  : "notification.settings.max_item_num",      
-                              
             "custom-notification" : {
-                "title" : "Notification types",               
+                "title" : "Notification types",
                 "group" : "true",
-            
-                    "row" : {
-                        "label" : "Aborted",                                          
-                         "root" :  "notification.aborted",
-                         "group" : {
-                              "title" : "Main settings",                                                          
-                              "line" : "server.notification.aborted.enabled",
-                              "line" : "server.notification.aborted.popup",
-                              "line" : "server.notification.aborted.sound",     
-                              "note" : {
-                                  "default" : "These settings can be customised for each server separately"
-                                } 
-                                                             
-                         },                                  
-                         "group" : {
-                              "title" : "Colour",
-                              "line" : "notification.aborted.count_fill_colour",
-                              "line" : "notification.aborted.count_text_colour",  
-                              "note" : {
-                                  "default" : "For aborted notifications the background and text colours <br> are taken from the <u>Status</u> colour settings"
-                                }   
-                         },                                     
-                         "group" : {
-                              "title" : "Sound",
-                              "line" : "notification.aborted.sound_file_type",
-                              "line" : {
-                                   "link" : "notification.aborted.sound_system_file",
-                                    "helpers" : "notification.aborted.sound_volume/notification.aborted.sound_loop"
-                              },    
-                              "line" : "notification.aborted.sound_user_file",
-                              "line" : "notification.aborted.sound_volume_tmp",
-                              "line" : "notification.aborted.sound_loop"
-                         }                                    
-                      },
-                      "row" : {
-                          "label" : "Restarted", 
-                          "root" :  "notification.restarted",                                  
-                          "group" : {
-                               "title" : "Settings",                                                   
-                               "line" : "server.notification.restarted.enabled",
-                               "line" : "server.notification.restarted.popup",
-                               "line" : "server.notification.restarted.sound",
-                               "note" : {
-                                  "default" : "These settings can be customised for each server separately"
-                                } 
-                           },
-                           "group" : {
-                               "title" : "Colour",                             
-                               "line" : "notification.restarted.fill_colour",
-                               "line" : "notification.restarted.text_colour",
-                               "line" : "notification.restarted.count_fill_colour",
-                               "line" : "notification.restarted.count_text_colour"
-                            },
-                            "group" : {
-                                 "title" : "Sound",
-                                 "line" : "notification.restarted.sound_file_type",                                    
-                                 "line" : {
-                                      "link" : "notification.restarted.sound_system_file",
-                                      "helpers" : "notification.restarted.sound_volume/notification.restarted.sound_loop"
-                                 },   
-                                 "line" : "notification.restarted.sound_user_file",
-                                 "line" : "notification.restarted.sound_volume_tmp",
-                                 "line" : "notification.restarted.sound_loop"
-                            }                                         
-                       },
-                       "row" : {
-                           "label" : "Late",
-                            "root" :  "notification.late", 
-                            "group" : {                    
-                                 "title" : "Settings",  
-                                 "line" : "server.notification.late.enabled",                   
-                                 "line" : "server.notification.late.popup",
-                                 "line" : "server.notification.late.sound",
-                                 "note" : {
-                                      "default" : "These settings can be customised for each server separately"
-                                 } 
-                            },  
-                            "group" : {
-                                 "title" : "Colour", 
-                                 "line" : "notification.late.fill_colour",
-                                 "line" : "notification.late.text_colour",
-                                 "line" : "notification.late.count_fill_colour",
-                                 "line" : "notification.late.count_text_colour"
-                             },
-                            "group" : {
-                                 "title" : "Sound",
-                                 "line" : "notification.late.sound_file_type",                                     
-                                 "line" : {
-                                     "link" : "notification.late.sound_system_file",
-                                     "helpers" : "notification.late.sound_volume/notification.late.sound_loop"
-                                  },   
-                                 "line" : "notification.late.sound_user_file",
-                                 "line" : "notification.late.sound_volume_tmp",
-                                 "line" : "notification.late.sound_loop"                                                                   
-                             }
+
+                "row" : {
+                    "label" : "Aborted",
+                    "root" :  "notification.aborted",
+                    "group" : {
+                        "title" : "Main settings",
+                        "line" : "server.notification.aborted.enabled",
+                        "line" : "server.notification.aborted.popup",
+                        "line" : "server.notification.aborted.sound",
+                        "note" : {
+                            "default" : "These settings can be customised for each server separately"
+                        }
+
+                    },
+                    "group" : {
+                        "title" : "Colour",
+                        "line" : "notification.aborted.count_fill_colour",
+                        "line" : "notification.aborted.count_text_colour",
+                        "note" : {
+                            "default" : "For aborted notifications the background and text colours <br> are taken from the <u>Status</u> colour settings"
+                        }
+                    },
+                    "group" : {
+                        "title" : "Sound",
+                        "line" : "notification.aborted.sound_file_type",
+                        "line" : {
+                            "link" : "notification.aborted.sound_system_file",
+                            "helpers" : "notification.aborted.sound_volume/notification.aborted.sound_loop"
                         },
-                        "row" : {
-                            "label" : "Zombies",
-                            "root" :  "notification.zombie",   
-                            "group" : {                    
-                                 "title" : "Settings",                                                       
-                                 "line" : "server.notification.zombie.enabled",
-                                 "line" : "server.notification.zombie.popup",
-                                 "line" : "server.notification.zombie.sound",
-                                 "note" : {
-                                      "default" : "These settings can be customised for each server separately"
-                                 } 
-                            },
-                            "group" : {
-                                 "title" : "Colour",  
-                                 "line" : "notification.zombie.fill_colour",
-                                 "line" : "notification.zombie.text_colour",
-                                 "line" : "notification.zombie.count_fill_colour",
-                                 "line" : "notification.zombie.count_text_colour" 
-                             },
-                            "group" : {
-                                 "title" : "Sound",
-                                 "line" : "notification.zombie.sound_file_type",                                      
-                                 "line" : {
-                                     "link" : "notification.zombie.sound_system_file",
-                                     "helpers" : "notification.zombie.sound_volume/notification.zombie.sound_loop"
-                                  },   
-                                 "line" : "notification.zombie.sound_user_file",
-                                 "line" : "notification.zombie.sound_volume_tmp",
-                                 "line" : "notification.zombie.sound_loop"                                        
-                             }    
-                         },
-                         "row" : {
-                             "label" : "Aliases", 
-                             "root" :  "notification.alias",    
-                             "group" : {                    
-                                  "title" : "Settings",                          
-                                  "line" : "server.notification.alias.enabled",
-                                  "line" : "server.notification.alias.popup",
-                                  "line" : "server.notification.alias.sound",
-                                  "note" : {
-                                      "default" : "These settings can be customised for each server separately"
-                                  } 
-                              },
-                             "group" : {
-                                  "title" : "Colour",                                                                                 
-                                  "line" : "notification.alias.fill_colour",
-                                  "line" : "notification.alias.text_colour",
-                                  "line" : "notification.alias.count_fill_colour",
-                                  "line" : "notification.alias.count_text_colour"
-                             }, 
-                             "group" : {
-                                  "title" : "Sound",
-                                  "line" : "notification.alias.sound_file_type",                                     
-                                  "line" : {
-                                      "link" : "notification.alias.sound_system_file",
-                                      "helpers" : "notification.alias.sound_volume/notification.alias.sound_loop"
-                                  },  
-                                  "line" : "notification.alias.sound_user_file",
-                                  "line" : "notification.alias.sound_volume_tmp",
-                                  "line" : "notification.alias.sound_loop"                                                                             
-                            }       
-                       }                                  
-               } 
-          	   
- 		},        
- 			
- 		"server": {
- 			"label" : "Server options",
- 		    "desc" : "Server options",
- 			"icon" : "server.svg",
- 			"group" : {
- 				
- 				"title" : "Update",
- 				"prefix" : "server.update",
- 				
+                        "line" : "notification.aborted.sound_user_file",
+                        "line" : "notification.aborted.sound_volume_tmp",
+                        "line" : "notification.aborted.sound_loop"
+                    }
+                },
+                "row" : {
+                    "label" : "Restarted",
+                    "root" :  "notification.restarted",
+                    "group" : {
+                        "title" : "Settings",
+                        "line" : "server.notification.restarted.enabled",
+                        "line" : "server.notification.restarted.popup",
+                        "line" : "server.notification.restarted.sound",
+                        "note" : {
+                            "default" : "These settings can be customised for each server separately"
+                        }
+                    },
+                    "group" : {
+                        "title" : "Colour",
+                        "line" : "notification.restarted.fill_colour",
+                        "line" : "notification.restarted.text_colour",
+                        "line" : "notification.restarted.count_fill_colour",
+                        "line" : "notification.restarted.count_text_colour"
+                    },
+                    "group" : {
+                        "title" : "Sound",
+                        "line" : "notification.restarted.sound_file_type",
+                        "line" : {
+                            "link" : "notification.restarted.sound_system_file",
+                            "helpers" : "notification.restarted.sound_volume/notification.restarted.sound_loop"
+                        },
+                        "line" : "notification.restarted.sound_user_file",
+                        "line" : "notification.restarted.sound_volume_tmp",
+                        "line" : "notification.restarted.sound_loop"
+                    }
+                },
+                "row" : {
+                    "label" : "Late",
+                    "root" :  "notification.late",
+                    "group" : {
+                        "title" : "Settings",
+                        "line" : "server.notification.late.enabled",
+                        "line" : "server.notification.late.popup",
+                        "line" : "server.notification.late.sound",
+                        "note" : {
+                            "default" : "These settings can be customised for each server separately"
+                        }
+                    },
+                    "group" : {
+                        "title" : "Colour",
+                        "line" : "notification.late.fill_colour",
+                        "line" : "notification.late.text_colour",
+                        "line" : "notification.late.count_fill_colour",
+                        "line" : "notification.late.count_text_colour"
+                    },
+                    "group" : {
+                        "title" : "Sound",
+                        "line" : "notification.late.sound_file_type",
+                        "line" : {
+                            "link" : "notification.late.sound_system_file",
+                            "helpers" : "notification.late.sound_volume/notification.late.sound_loop"
+                        },
+                        "line" : "notification.late.sound_user_file",
+                        "line" : "notification.late.sound_volume_tmp",
+                        "line" : "notification.late.sound_loop"
+                    }
+                },
+                "row" : {
+                    "label" : "Zombies",
+                    "root" :  "notification.zombie",
+                    "group" : {
+                        "title" : "Settings",
+                        "line" : "server.notification.zombie.enabled",
+                        "line" : "server.notification.zombie.popup",
+                        "line" : "server.notification.zombie.sound",
+                        "note" : {
+                            "default" : "These settings can be customised for each server separately"
+                        }
+                    },
+                    "group" : {
+                        "title" : "Colour",
+                        "line" : "notification.zombie.fill_colour",
+                        "line" : "notification.zombie.text_colour",
+                        "line" : "notification.zombie.count_fill_colour",
+                        "line" : "notification.zombie.count_text_colour"
+                    },
+                    "group" : {
+                        "title" : "Sound",
+                        "line" : "notification.zombie.sound_file_type",
+                        "line" : {
+                            "link" : "notification.zombie.sound_system_file",
+                            "helpers" : "notification.zombie.sound_volume/notification.zombie.sound_loop"
+                        },
+                        "line" : "notification.zombie.sound_user_file",
+                        "line" : "notification.zombie.sound_volume_tmp",
+                        "line" : "notification.zombie.sound_loop"
+                    }
+                },
+                "row" : {
+                    "label" : "Aliases",
+                    "root" :  "notification.alias",
+                    "group" : {
+                        "title" : "Settings",
+                        "line" : "server.notification.alias.enabled",
+                        "line" : "server.notification.alias.popup",
+                        "line" : "server.notification.alias.sound",
+                        "note" : {
+                            "default" : "These settings can be customised for each server separately"
+                        }
+                    },
+                    "group" : {
+                        "title" : "Colour",
+                        "line" : "notification.alias.fill_colour",
+                        "line" : "notification.alias.text_colour",
+                        "line" : "notification.alias.count_fill_colour",
+                        "line" : "notification.alias.count_text_colour"
+                    },
+                    "group" : {
+                        "title" : "Sound",
+                        "line" : "notification.alias.sound_file_type",
+                        "line" : {
+                            "link" : "notification.alias.sound_system_file",
+                            "helpers" : "notification.alias.sound_volume/notification.alias.sound_loop"
+                        },
+                        "line" : "notification.alias.sound_user_file",
+                        "line" : "notification.alias.sound_volume_tmp",
+                        "line" : "notification.alias.sound_loop"
+                    }
+                }
+            }
+
+        },
+
+        "server": {
+            "label" : "Server options",
+            "desc" : "Server options",
+            "icon" : "server.svg",
+            "group" : {
+
+                "title" : "Update",
+                "prefix" : "server.update",
+
                 "line" : "autoUpdate",
- 				"line" : "updateRateInSec",
- 				"line" : "adaptiveUpdate",
+                "line" : "updateRateInSec",
+                "line" : "adaptiveUpdate",
                 "note" : {
                     "default": "When enabled the server update period is <u>increased at every automatic update</u> until the maximum period is reached. If the user in the meantime updates the server manually the update period is set back to its original value and whole process starts again."
                 },
-                "line" : "adaptiveUpdateIncrementInSec",                
- 				"line" : "maxAdaptiveUpdateRateInMin"
- 			},
- 			
- 			"group" : {
-				
-				"title" : "Files (manual, script, job and job output)",
-				"prefix" : "server.files",
-				
-				"line" : "readFilesFromDisk",
-				"line" : "maxOutputFileLines"				
-			},
-
-			"grid-hidden" : {
-				"title" : "Notifications",
-			
-				"h1" : "Show in status bar",
-				"h2" : "Popup dialog",
-				"h3" : "Play sound",
-				
-				"row" : {
-					"label" : "Aborted",
-					"prefix" : "server.notification.aborted",
+                "line" : "adaptiveUpdateIncrementInSec",
+                "line" : "maxAdaptiveUpdateRateInMin"
+            },
+
+            "group" : {
+
+                "title" : "Files (manual, script, job and job output)",
+                "prefix" : "server.files",
+                
+                "line" : "readFilesFromDisk",
+                "line" : "maxOutputFileLines"
+            },
+
+            "group" : {
+
+                "title" : "Automatic search on output files",
+                "prefix" : "panel.output.automaticSearch",
+                
+                "line" : "performSearch",
+                "line" : "searchMode",
+                "line" : "searchText",
+                "line" : "searchFrom",
+                "line" : "caseSensitive"
+            },
+
+            "grid-hidden" : {
+                "title" : "Notifications",
+
+                "h1" : "Show in status bar",
+                "h2" : "Popup dialog",
+                "h3" : "Play sound",
+                
+                "row" : {
+                    "label" : "Aborted",
+                    "prefix" : "server.notification.aborted",
                     "line" : "enabled",
-					"line" : "popup",
-					"line" : "sound",
-					"line" : "soundFile"
-				},
+                    "line" : "popup",
+                    "line" : "sound",
+                    "line" : "soundFile"
+                },
                 "row" : {
                     "label" : "Restarted",
                     "prefix" : "server.notification.restarted",
@@ -438,7 +450,7 @@
                     "line" : "sound",
                     "line" : "soundFile"
                 },
-                 "row" : {
+                "row" : {
                     "label" : "Restarted or aborted aliases",
                     "prefix" : "server.notification.alias",
                     "line" : "enabled",
@@ -446,17 +458,17 @@
                     "line" : "sound",
                     "line" : "soundFile"
                 }
-			}
- 		
- 		},
-
- 		"Tree view" : {
- 			"visible" : "false",
- 			"desc" : "Tree view options",
- 			 			
- 			"line" : "view.tree.font",
- 			"line" : "view.tree.nodeRectRadius",
- 			"line" : "view.tree.displayChildCount" 
- 		}		
- 	}
+            }
+
+        },
+
+        "Tree view" : {
+            "visible" : "false",
+            "desc" : "Tree view options",
+
+            "line" : "view.tree.font",
+            "line" : "view.tree.nodeRectRadius",
+            "line" : "view.tree.displayChildCount"
+        }
+    }
 }
diff --git a/share/ecflow/etc/ecflowview_highlighter.json b/share/ecflow/etc/ecflowview_highlighter.json
index 169749b..0d81088 100644
--- a/share/ecflow/etc/ecflowview_highlighter.json
+++ b/share/ecflow/etc/ecflowview_highlighter.json
@@ -2,10 +2,9 @@
         "info"  : {
 
         		"main" : {
-                       	"pattern" : "^\\s*(name|type|status|at)\\s+:",                      
+                        "pattern" : "^\\s*(name|type|status|at|aborted reason)\\s+:",
                         "colour"  : "rgb(0,0,128)",
-                        "bold"    : "true"
-                                
+                        "bold"    : "true"                               
                 },
                 
                 "def" : {
@@ -19,7 +18,12 @@
                     "colour"  : "rgb(136,0,136)",               
                     "bold"    : "true"
                 }, 
-                         
+
+                "aborted_reason" : {
+                    "pattern" : "aborted reason : ([^\n]*)",
+                     "colour"  : "rgb(172,0,0)"
+                },
+
                 "comment" : {
                     "pattern" : "(#[^\n]*)",                     
                     "colour"  : "rgb(100,100,100)",
@@ -188,18 +192,18 @@
 
              "oper" : {
                  "pattern" : "(=|~)",                       
-                 "colour"  : "rgb(0,110,40)"                                   
+                 "colour"  : "rgb(0,0,0)"
              }, 
              "logical" : {
                 "pattern" : "(or|and)",                       
                 "colour"  : "rgb(40,40,40)",               
                 "bold"    : "false"
-             }, 
-             "keyword" : {
-                "pattern" : "(scope|scope:|nodes|nodes:|options|options:)",                       
-                "colour"  : "rgb(73,73,73)",               
-                "bold"    : "true"
-             }, 
+             },             
+            "select" : {
+                "pattern" : "(node|date|event|label|late|limit|limiter|meter|repeat|time|trigger|variable)",
+                "colour"  : "rgb(0,0,200)",
+                "bold"    : "false"
+             },
              "node" : {
               "pattern" : "\\b(node_path|node_name)\\b",                       
               "colour"  : "rgb(102,43,130)",
@@ -221,31 +225,65 @@
               "bold"    : "true"
             }, 
              "attr" : {
-              "pattern" : "\\b(date|date_name|event|event_name|label|label_name|label_value|late|late_name|limit|limit_name|limit_value|limit_max|limiter|limiter_name|meter|meter_name|repeat|repeat_name|repeat_value|time|time_name|trigger|trigger_expression|variable|variable_name|variable_value)\\b",                       
+              "pattern" : "\\b(date_name|event_name|event_value|label_name|label_value|late_name|limit_name|limit_value|limit_max|limiter_name|meter_name|meter_value|repeat_name|repeat_value|time_name|trigger_expression|var_type|var_name|var_value)\\b",
               "colour"  : "rgb(102,43,130)",
               "bold"    : "true"
             },   
-            "server" : {
-              "pattern" : "\\b(servers|root_node)\\b",                       
-              "colour"  : "rgb(102,43,130)",
-              "bold"    : "false"
-            },             
-           "option" : {
-               "pattern" : "\\b(max_results|case_sensitive|case_insensitive)\\b",                       
-               "colour"  : "rgb(102,43,130)"
-           }, 
-           "int" : {
-               "pattern" : "(\\d+)",                       
-               "colour"  : "rgb(0,110,40)"
-           },            
-            "string" : {
-               "pattern" : "(\"[^\"]*\"|'[^']*')",                       
-               "colour"  : "rgb(0,0,230)"
-           },  
-            "any" : {
-               "pattern" : "(ANY)",                       
-               "colour"  : "rgb(16,16,16)"
-           }                                                                                  
-        }       
+            "int" : {
+               "pattern" : "\\b(\\d+)",
+               "colour"  : "rgb(128,128,0)"
+            },
+            "quoted" : {
+                "pattern" : "(\"[^\"]*\"|'[^']*')",
+                "colour"  : "rgb(0,110,20)"
+                },
+            "text" : {
+                "pattern" : "FROM\\s(.*)\\s(?=WHERE\\s.*LIMIT)",
+                "colour"  : "rgb(191,3,3)"
+                },
+            "keyword" : {
+                "pattern" : "(SELECT|FROM|WHERE|LIMIT)",
+                "colour"  : "rgb(73,73,73)",
+                "bold"    : "true"
+          }
+       },
+
+       "trigger"  : {
+
+             "node" : {
+                 "pattern" : "(\\S+)",
+                 "colour"  : "rgb(80,80,80)",
+                 "bold"    : "true"
+              },
+             "attr" : {
+                  "pattern" : "\\S+(:\\S+)\\s+",
+                  "colour"  : "rgb(32,80,129)",
+                  "bold"    : "true"
+               },
+             "oper" : {
+                  "pattern" : "\\b(eq|ge|gt|le|lt)\\b",
+                  "colour"  : "rgb(0,110,40)"
+              },
+              "oper1" : {
+                  "pattern" : "(==|\\|\\||&&)",
+                  "colour"  : "rgb(0,110,40)"
+               },
+              "logical" : {
+                 "pattern" : "\\b(or|and|OR|AND)\\b",
+                 "colour"  : "rgb(0,110,40)"
+              },
+              "not" : {
+                 "pattern" : "(not|NOT)\\b",
+                 "colour"  : "rgb(0,110,40)"
+              },
+              "state" : {
+                "pattern" : "\\b(aborted|active|queued|complete|submitted|suspended|unknown)\\b",
+                "colour"  : "rgb(102,43,130)"
+              },
+             "int" : {
+                 "pattern" : "\\s+(\\d+)",
+                 "colour"  : "rgb(128,128,0)"
+              }
+        }
 }
 
diff --git a/share/ecflow/etc/ecflowview_icon_conf.json b/share/ecflow/etc/ecflowview_icon_conf.json
index 686f75f..7991612 100644
--- a/share/ecflow/etc/ecflowview_icon_conf.json
+++ b/share/ecflow/etc/ecflowview_icon_conf.json
@@ -75,6 +75,22 @@
                 "icon"  : {
                     "default" : "icon_slow.svg"
                 }
+            },
+            "killed" : {
+                "label" : "Killed",
+                "tooltip" : "Task/alias killed by user",
+                "shortDesc" : "Killed by user",
+                "icon"  : {
+                    "default" : "icon_killed.svg"
+                }
+            },
+            "migrated" : {
+                "label" : "Hidden children",
+                "tooltip" : "Child nodes hidden by user",
+                "shortDesc" : "Children hidden by user",
+                "icon"  : {
+                    "default" : "icon_children_hidden.svg"
+                }
             }
      }
 }
diff --git a/share/ecflow/etc/ecflowview_menus.json b/share/ecflow/etc/ecflowview_menus.json
index 75c3479..c64cf11 100644
--- a/share/ecflow/etc/ecflowview_menus.json
+++ b/share/ecflow/etc/ecflowview_menus.json
@@ -12,7 +12,7 @@
         },
 
         {
-            "name"    : "Delete",
+            "name"    : "Free deps",
             "modes"   : ["Submenu"]
         },
 
@@ -130,6 +130,64 @@
             "status_tip"     : "__cmd__"
         },
 
+
+        {
+            "menu"           : "Node",
+            "name"           : "Unlock",
+            "visible_for"    : "server and (oper or admin) and locked",
+            "command"        : "unlock -y",
+            "question"       : "Before going further, please check why the server was locked.",           
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
+
+        {
+            "menu"           : "Node",
+            "name"           : "Restart",
+            "visible_for"    : "server",
+            "enabled_for"    : "shutdown or halted",
+            "command"        : "ecflow_client --restart",
+            "question"       : "Restart the server in <node_name>?",
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
+
+        {
+            "menu"           : "Node",
+            "name"           : "Shutdown",
+            "visible_for"    : "server",
+            "enabled_for"    : "not shutdown",
+            "command"        : "ecflow_client --shutdown=yes",
+            "question"       : "Shutdown the server in <node_name>?",
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
+
+        {
+            "menu"           : "Node",
+            "name"           : "Halt",
+            "visible_for"    : "server",
+            "enabled_for"    : "not halted",
+            "command"        : "ecflow_client --halt=yes",
+            "question"       : "Halt the server in <node_name>?",
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
+
+        {
+            "menu"           : "Node",
+            "name"           : "Terminate",
+            "visible_for"    : "server",
+            "enabled_for"    : "halted or unknown",
+            "command"        : "ecflow_client --terminate=yes",
+            "question"       : "Terminate the server in <node_name>?",
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
+
+
+
+
         {
             "menu"           : "Node",
             "name"           : "-"
@@ -137,7 +195,7 @@
 
         {
             "menu"           : "Node",
-            "name"           : "Delete",
+            "name"           : "Free deps",
             "type"           : "Submenu",
             "visible_for"    : "suite or task or family",
             "enabled_for"    : "(queued or suspended or active) and (has_triggers or has_time or has_date)",
@@ -172,7 +230,7 @@
             "menu"           : "Node",
             "name"           : "Special",
             "type"           : "Submenu",
-            "visible_for"    : "node or alias",
+            "visible_for"    : "server or node or alias",
             "command"        : "None"
         },
 
@@ -223,60 +281,6 @@
 
         {
             "menu"           : "Node",
-            "name"           : "Unlock",
-            "visible_for"    : "server and (oper or admin) and locked",
-            "command"        : "unlock -y",
-            "question"       : "Before going further, please check why the server was locked.",           
-            "default_answer" : "No",
-            "status_tip"     : "__cmd__"
-        },
-
-        {
-            "menu"           : "Node",
-            "name"           : "Restart",
-            "visible_for"    : "server",
-            "enabled_for"    : "shutdown or halted",
-            "command"        : "ecflow_client --restart",
-            "question"       : "Restart the server in <node_name>?",
-            "default_answer" : "No",
-            "status_tip"     : "__cmd__"
-        },
-
-        {
-            "menu"           : "Node",
-            "name"           : "Shutdown",
-            "visible_for"    : "server",
-            "enabled_for"    : "not shutdown",
-            "command"        : "ecflow_client --shutdown=yes",
-            "question"       : "Shutdown the server in <node_name>?",
-            "default_answer" : "No",
-            "status_tip"     : "__cmd__"
-        },
-
-        {
-            "menu"           : "Node",
-            "name"           : "Halt",
-            "visible_for"    : "server",
-            "enabled_for"    : "not halted",
-            "command"        : "ecflow_client --halt=yes",
-            "question"       : "Halt the server in <node_name>?",
-            "default_answer" : "No",
-            "status_tip"     : "__cmd__"
-        },
-
-        {
-            "menu"           : "Node",
-            "name"           : "Terminate",
-            "visible_for"    : "server",
-            "enabled_for"    : "halted or unknown",
-            "command"        : "ecflow_client --terminate=yes",
-            "question"       : "Terminate the server in <node_name>?",
-            "default_answer" : "No",
-            "status_tip"     : "__cmd__"
-        },
-
-        {
-            "menu"           : "Node",
             "name"           : "-"
         },
 
@@ -369,28 +373,28 @@
 
 
         {
-            "menu"           : "Delete",
+            "menu"           : "Free deps",
             "name"           : "All dependencies",
             "enabled_for"    : "has_triggers or has_time or has_date",
             "command"        : "ecflow_client --free-dep all <full_name>",
             "status_tip"     : "__cmd__"
         },
         {
-            "menu"           : "Delete",
+            "menu"           : "Free deps",
             "name"           : "Trigger dependencies",
             "enabled_for"    : "has_triggers",
             "command"        : "ecflow_client --free-dep trigger <full_name>",
             "status_tip"     : "__cmd__"
         },
         {
-            "menu"           : "Delete",
+            "menu"           : "Free deps",
             "name"           : "Time dependencies",
             "enabled_for"    : "has_time",
             "command"        : "ecflow_client --free-dep time <full_name>",
             "status_tip"     : "__cmd__"
         },
         {
-            "menu"           : "Delete",
+            "menu"           : "Free deps",
             "name"           : "Date dependencies",
             "enabled_for"    : "has_date",
             "command"        : "ecflow_client --free-dep date <full_name>",
@@ -433,7 +437,7 @@
             "menu"           : "Special",
             "name"           : "Kill",
             "visible_for"    : "(suite or family)",
-            "enabled_for"    : "(active or submitted or aborted)",
+            "enabled_for"    : "(active or submitted or aborted or suspended)",
             "command"        : "ecflow_client --kill <full_name>",
             "question"       : "Confirm kill of <full_name>",
             "default_answer" : "Yes",
@@ -444,7 +448,7 @@
             "menu"           : "Special",
             "name"           : "Kill",
             "visible_for"    : "(task or alias)",
-            "enabled_for"    : "(active or submitted)",
+            "enabled_for"    : "(active or submitted or suspended)",
             "command"        : "ecflow_client --kill <full_name>",
             "question"       : "Confirm kill <full_name>",
             "default_answer" : "Yes",
@@ -494,14 +498,50 @@
 
         {
             "menu"           : "Special",
+            "name"           : "Mark for move",
+            "visible_for"    : "(suite or family or task)",
+            "command"        : "mark_for_move",
+            "status_tip"     : "Marks the node in order to be moved"
+        },
+
+        {
+            "menu"           : "Special",
+            "name"           : "Move marked node here",
+            "visible_for"    : "(server or suite or family)",
+            "enabled_for"    : "(not active) and (not submitted) and marked",
+            "command"        : "move_marked",
+            "question"       : "This will move node <marked_node> to <full_name>",
+            "default_answer" : "No",
+            "status_tip"     : "Moves the previously marked node so that this node is its new parent"
+        },
+
+        {
+            "menu"           : "Special",
             "name"           : "Walk",
             "visible_for"    : "(suite or family)",
             "command"        : "ecflow_client --force-dep-eval <full_name>",
             "status_tip"     : "__cmd__"
         },
 
+        {
+            "menu"           : "Special",
+            "name"           : "Hide children",
+            "visible_for"    : "(suite or family)",
+            "enabled_for"    : "(not is_migrated)",
+            "command"        : "ecflow_client --alter set_flag migrated <full_name>",
+            "question"       : "This command will hide the children for everyone viewing this server. Ok?",
+            "default_answer" : "No",
+            "status_tip"     : "__cmd__"
+        },
 
-
+        {
+            "menu"           : "Special",
+            "name"           : "Show children",
+            "visible_for"    : "(suite or family)",
+            "enabled_for"    : "is_migrated",
+            "command"        : "ecflow_client --alter clear_flag migrated <full_name>",
+            "status_tip"     : "__cmd__"
+        },
         {
             "menu"           : "Force",
             "name"           : "Unknown",
@@ -702,7 +742,7 @@
         {
             "menu"           : "Node",
             "name"           : "Edit ...",
-            "visible_for"    : "label or meter or limit",
+            "visible_for"    : "label or meter or limit or trigger",
             "command"        : "edit",
             "handler"        : "tree",
             "view"           : "tree"
diff --git a/share/ecflow/etc/ecflowview_panel_conf.json b/share/ecflow/etc/ecflowview_panel_conf.json
index 5903340..6e5d868 100644
--- a/share/ecflow/etc/ecflowview_panel_conf.json
+++ b/share/ecflow/etc/ecflowview_panel_conf.json
@@ -41,15 +41,53 @@
              "font" : {
                  "label" : "Output tab",
                  "default": "font(Monospace,)"
-             }
-        },  
+             },
+
+            "automaticSearch": {
+                "label" : "Files",
+                "tooltip" : "Automatic output search",
+
+                "performSearch": {
+                    "label": "Perform automatic search when reloading job output",
+                    "tooltip": "This will not take effect when the text search bar is open",
+                    "default": "true"
+                },
+
+                "searchMode" : {
+                    "label" : "Search mode",
+                    "values"  : "~/=/=~",
+                    "values_label" : "Contains/Matches/Regexp",
+                    "default" : "=~"
+                },
+
+                "searchText": {
+                    "label": "Search text",
+                    "tooltip": "",
+                    "default": "--(abort|complete)"
+                },
+
+                "caseSensitive": {
+                    "label": "Case sensitive",
+                    "tooltip": "Perform a case-sensitive search",
+                    "default": "false"
+                },
+
+                "searchFrom": {
+                    "label": "Search from",
+                    "tooltip": "",
+                    "values"  : "top/bottom",
+                    "values_label" : "Top/Bottom",
+                    "default": "bottom"
+                }
+            }
+        },
         "why" : {
                     
              "font" : {
                  "label" : "Why tab",
                  "default": "font(Monospace,)"
              }
-        },   
+        },          
         "edit" : {
                     
              "font" : {
diff --git a/share/ecflow/etc/ecflowview_panels.json b/share/ecflow/etc/ecflowview_panels.json
index f86696b..b40b715 100644
--- a/share/ecflow/etc/ecflowview_panels.json
+++ b/share/ecflow/etc/ecflowview_panels.json
@@ -68,8 +68,10 @@
         {
         	"name"    : "triggers",
             "label"   : "Triggers",
-            "visible_for" : "node",
-            "hidden"  : "1"            
+            "icon"    : "trigger.svg",
+            "show"    : "toolbar",
+            "tooltip" : "Open <b>triggers</b> tab in a new Info Panel dialog",
+            "visible_for" : "node"
         },  
         
         {
diff --git a/share/ecflow/etc/ecflowview_query_conf.json b/share/ecflow/etc/ecflowview_query_conf.json
new file mode 100644
index 0000000..d2d594a
--- /dev/null
+++ b/share/ecflow/etc/ecflowview_query_conf.json
@@ -0,0 +1,134 @@
+{
+    "node_query" : {
+
+        "node_name" : {
+            "type" : "string",
+            "label" : "Name"
+        },
+        "node_path" : {
+            "type" : "string",
+            "label" : "Path"
+        },
+        "type" : {
+            "type" : "list",
+            "values" : "server|suite|family|task|alias"
+        },
+        "state"  : {
+            "type"   : "list",
+            "values" : "aborted|active|complete|queued|submitted|suspended|unknown"
+        },
+        "flag"  : {
+            "type"   : "list",
+            "values" : "is_late|has_date|has_message|has_time|is_rerun|is_waiting|is_zombie"
+        }
+    },
+    "attribute_query" : {
+
+        "attribute"  : {
+            "type"  : "list",
+            "values" : "date|event|label|limit|limiter|meter|repeat|time|trigger|variable"
+        },
+
+        "event" : {
+            "event_name" : {
+                "type" : "string",
+                "label" : "Event name"
+            },
+            "event_value" : {
+                "type" : "combo",
+                "label" : "Event value",
+                "values" : "any|1|0",
+                "labels" : "Any|Set|Clear",
+                "default" : "any",
+                "ignoreIfAny" : "true"
+            }
+        },
+        "label" : {
+            "label_name" : {
+                "type" : "string",
+                "label" : "Label name"
+            },
+            "label_value" : {
+                "type" : "string",
+                "label" : "Label value"
+            }
+        },
+        "meter" : {
+            "meter_name" : {
+                "type" : "string",
+                "label" : "Meter name"
+            },
+            "meter_value" : {
+                "type" : "string",
+                "label" : "Meter value"
+            }
+        },
+        "limit" : {
+            "limit_name" : {
+                "type" : "string",
+                "label" : "Limit name"
+            },
+            "limit_value" : {
+                "type" : "string",
+                "label" : "Limit value"
+            },
+            "limit_max" : {
+                "type" : "string",
+                "label" : "Limit max"
+            }
+        },
+        "limiter" : {
+            "limiter_name" : {
+                "type" : "string",
+                "label" : "Limiter name"
+            }
+        },
+        "trigger" : {
+            "trigger_expression" : {
+                "type" : "string",
+                "label" : "Trigger expression"
+            }
+        },
+        "time" : {
+            "time_name" : {
+                "type" : "string",
+                "label" : "Time name"
+            }
+        },
+        "date" : {
+            "date_name" : {
+                "type" : "string",
+                "label" : "Date name"
+            }
+        },
+        "repeat" : {
+            "repeat_name" : {
+                "type" : "string",
+                "label" : "Repeat name"
+            },
+            "repeat_value" : {
+                "type" : "string",
+                "label" : "Repeat value"
+            }
+        },
+        "variable" : {
+            "types" : "var|genvar",
+            "var_type" : {
+               "type"  : "combo",
+               "label" : "Variable type",
+               "values" : "any|var|genvar",
+               "labels" : "Any|User variable|Generated variable",
+               "default" : "any",
+               "ignoreIfAny" : "true"
+            },
+            "var_name" : {
+                "type" : "string",
+                "label" : "Variable name"
+            },
+            "var_value" : {
+                "type" : "string",
+                "label" : "Variable value"
+            }
+         }
+      }
+}
diff --git a/share/ecflow/etc/ecflowview_view_conf.json b/share/ecflow/etc/ecflowview_view_conf.json
index 67dbadd..68ca257 100644
--- a/share/ecflow/etc/ecflowview_view_conf.json
+++ b/share/ecflow/etc/ecflowview_view_conf.json
@@ -113,7 +113,11 @@
                 "limitFillColour"  : {
                     "label"   : "Limit colour",
                     "default" : "rgb(0,255,0)"
-                }
+                },
+                "limitExtraFillColour"  : {
+                    "label"   : "Limit exceed colour",
+                    "default" : "rgb(0,0,255)"
+            }
             },
 
            "textEdit" : {
@@ -135,7 +139,6 @@
                     "default": "rgb(212,212,255)"
                   }
           }
-
     },
     
     "query_columns": {
@@ -165,7 +168,7 @@
     	
     	"path" : {
     		"label" : "Node",
-    		"tooltip" : "Node"
+            "tooltip" : "Node"
     	},
     	"status" : {
     		"label" : "Status"
@@ -184,7 +187,10 @@
         },    
         "meter" : {
     		"label" : "Meter"
-    	}	
+        },
+        "statusChange" : {
+            "label" : "Status changed"
+        }
     },
     
     "zombie_columns": {
diff --git a/share/ecflow/etc/viewer.qss b/share/ecflow/etc/viewer.qss
index 8e3d90f..a648ded 100644
--- a/share/ecflow/etc/viewer.qss
+++ b/share/ecflow/etc/viewer.qss
@@ -187,6 +187,18 @@ QPlainTextEdit[readOnly="true"] {
     background-color: rgb(245,245,245);
 }
 
+QTextEdit[readOnly="true"] {
+    background-color: rgb(245,245,245);
+}
+
+QTextEdit[readOnly="true"][log="1"] {
+    background-color: rgb(253,252,252);
+}
+
+QTextEdit[readOnly="true"][trigger="1"] {
+    background-color: rgb(255,255,255);
+}
+
 QLineEdit[readOnly="true"] { 
     background-color: rgb(245,245,245);
 }
@@ -204,7 +216,12 @@ QLabel[fileInfo="1"] {
      /*background: rgb(252, 241, 219);  */
      background: rgb(244, 239, 216);
 }
-  
+
+QLabel[fileInfo="2"] {
+     border: 1px solid rgb(216,210,200);
+     background: rgb(242, 242, 242);
+}
+
 /*----------------------------
   Editor info label
 ------------------------------*/
@@ -252,8 +269,15 @@ QScrollArea[editor="1"] {
 QWidget[editorArea="1"] {
     background-color: rgb(245,244,244);
 } 
-    
-   
+
+/*----------------------------
+  Query
+------------------------------*/
+
+QWidget[attrArea="1"] {
+    background-color: rgb(245,244,244);
+}
+
 /*----------------------------
   Dock widget
 ------------------------------*/
@@ -266,16 +290,24 @@ QToolButton[docktitle="1"] {
     border-radius: 0px;
     padding: 0px;
     icon-size:  18px;
-    background: transparent;
+    background-colour: transparent;
 }
 
-QToolButton[docktitle="1"]:!focus {
+QToolButton[docktitle="1"]:checked {
+    /*border: 1px solid rgb(80,80,80);*/
     border-radius: 0px;
     padding: 0px;
     icon-size:  18px;
-    background: transparent;
+    background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(110,110,100), stop: 0.4 rgb(100,100,100), stop: 0.41 rgb(90,90,90), stop: 1 rgb(82,82,82));
 }
 
+/*QToolButton[docktitle="1"]:!focus {
+    border-radius: 0px;
+    padding: 0px;
+    icon-size:  18px;
+    background: transparent;
+}
+*/
 QToolButton[docktitle="1"]:hover {
     border-radius: 0px;
     padding: 0px;
@@ -290,81 +322,48 @@ QToolButton[docktitle="1"]::menu-indicator {
 /*----------------------------
   Variable tree view
 ------------------------------*/
-
-QTreeView[var="1"]::item {
-    alternate-background-color: rgb(250,250,250);
+QTreeView[var="1"] {
+    background: rgb(249,249,249);
 }
 
 /*---------------------------------
   Tab widget
 ------------------------------------*/
-/*QTabBar[change="1"]::tab {
-    padding : 2px;
+
+/*QTabBar[nodePanel="1"]::close-button {
+    image: url(:/viewer/dock_menu_indicator.png);
+    padding-left: -13px;
 }*/
 
 
-/*QTreeView[var="1"]::branch:!has-children {  
-   background: white;
-   border: 1px solid #BBBBBB;
-   border-top-color: transparent;
-   border-left-color: transparent; 
-   border-right-color: transparent;
+QTabBar[nodePanel="1"]::tab {
+    padding-left : 4px;
+    padding-right : 4px;
+    padding-top : 5px;
+    padding-bottom : 5px;
+    /*margin-left: 1px;
+    margin-right: 1px;*/
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    border: 1px solid rgb(136,135,135);
+    background: rgb(220,220,220);
+    /*margin: 2px;*/
 }
- 
-
-QTreeView[var="1"]::branch:!has-children {
-      image: none;
-} 
- 
-QTreeView[var="1"]::branch:!has-children:alternate {
-      background: rgb(200,0,0);
-} 
- */
-/* 
-QTreeView[var="1"]::branch:alternate {
-      background: rgb(248,247,246);
-} 
-*/
-
-/* 
-QTreeView[var="1"]::item:has-children {
-      background: rgb(122,122,122);
-      color: white;
-} 
-*/
 
-/*
-QTreeView[var="1"]::branch:has-children {
-      background: rgb(122,122,122);
-} 
-*/
-/*
-QTreeView[var="1"]::branch:has-children:closed {
-         border-image: none;
-         image: url(":/viewer/drawer_close.svg");
+QTabBar[nodePanel="1"]::tab:selected{
+    padding-left : 4px;
+    padding-right : 4x;
+    padding-bottom : 5px;
+    /*background: rgb(125,125,125);*/
+    background: rgb(248,247,247);
+    /*margin-top: -5px;*/
+    border-top-left-radius: 4px;
+    border-top-right-radius: 4px;
+    border: 1px solid rgb(126,125,125);
+    /*background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(160,160,160), stop: 1 rgb(125,125,125));*/
 }
 
-QTreeView[var="1"]::branch:has-children:open {
-         border-image: none;
-         image: url(":/viewer/drawer_open.svg");
-}
-*/
 
-/*QAbstractItemView {
-    alternate-background-color: #FFE6BF;
-        background: #FFF2DE;
-    selection-background-color: rgb(194, 221, 255);
+/*QTabBar[change="1"]::tab {
+    padding : 2px;
 }*/
-
-/* 
-QTreeView[var="1"]::item  {
-    border: 1px solid #BBBBBB;
-    border-top-color: transparent;
-    border-left-color: transparent; 
-    border-right-color: transparent;
- }
-
-QTreeView::item:selected[var="1"] {
-   background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #f0f7fd, stop: 1 #b9cfec);
-}
-*/
diff --git a/tools/ecf_cmd b/tools/ecf_cmd
index 2b6918f..1e9adc2 100755
--- a/tools/ecf_cmd
+++ b/tools/ecf_cmd
@@ -50,16 +50,16 @@ ERROR() {
 }
 
 kill_submitted_and_abort() {
-    # not used while not deterministic: job may run in betweem and 
+    # not used while not deterministic: job may run in between and 
     # become a zombie 
     outf=$TMPDIR/kill$$
     if [[ $? == 0 ]] && [[ -d $TMPDIR ]] ; then
         touch $outf
-        grep "ECF_NODE="  ${subfile%.sub}   > $outf && \
+        grep "ECF_HOST="  ${subfile%.sub}   > $outf && \
             grep "ECF_PORT=" ${subfile%.sub}  >> $outf && \
             grep "ECF_NAME="  ${subfile%.sub}  >> $outf && \
             grep "ECF_PASS="  ${subfile%.sub}  >> $outf && \
-            echo "export ECF_NODE ECF_PORT ECF_NAME ECF_PASS" >>$outf &&\
+            echo "export ECF_HOST ECF_PORT ECF_NAME ECF_PASS" >>$outf &&\
             echo "ecflow_client --abort || :" >> $outf && . $outf
         grep "^SMSNODE="  ${subfile%.sub}   > $outf && \
             grep "^SMS_PROG=" ${subfile%.sub}  >> $outf && \
diff --git a/tools/ecflow_fuse.py b/tools/ecflow_fuse.py
index ace140d..c1524c8 100644
--- a/tools/ecflow_fuse.py
+++ b/tools/ecflow_fuse.py
@@ -580,10 +580,10 @@ if __name__ == '__main__':
     )
 
 """
-python ecflow_fuse.py $ECF_NODE $ECF_PORT eod3
+python ecflow_fuse.py $ECF_HOST $ECF_PORT eod3
 
-ecflow_client  --server_load --port $ECF_PORT --host $ECF_NODE
-xdg-open ${ECF_NODE}.${ECF_PORT}.png
+ecflow_client  --server_load --port $ECF_PORT --host $ECF_HOST
+xdg-open ${ECF_HOST}.${ECF_PORT}.png
 
 dircolors -p 
 LS_COLORS+="*.abo=41:*.com=43:*.sus=01;45:*.que=44:*.sub=01;46:*.unk=47:*.act=01;42:"
diff --git a/tools/ecflow_load.sh b/tools/ecflow_load.sh
index c90c2eb..b10342c 100755
--- a/tools/ecflow_load.sh
+++ b/tools/ecflow_load.sh
@@ -10,8 +10,8 @@
 # =====================================================================
 set -x
 ECF_PORT=$(($(id -u) + 1500))
-ECF_NODE=$(uname -n)
-ECF_LOG=${ECF_NODE}.${ECF_PORT}.log
+ECF_HOST=$(uname -n)
+ECF_LOG=${ECF_HOST}.${ECF_PORT}.log
 ECF_HOME=
 USAGE="$0 -p <ecf_port> -n <ecf_node> -h <ecf_home> -l <ecf_log> -v <viewer>"
 SSH="ssh"
@@ -23,31 +23,31 @@ do
    case $option in
        h) ECF_HOME=$OPTARG;;
        l) ECF_LOG=$OPTARG;;
-       n) ECF_NODE=$OPTARG;;
+       n) ECF_HOST=$OPTARG;;
        p) ECF_PORT=$OPTARG;;
        v) VIEWER=$OPTARG;;
        \? | *) echo $USAGE; exit 2;;
    esac
 done
 
-client="ecflow_client --host=$ECF_NODE --port=$ECF_PORT"
+client="ecflow_client --host=$ECF_HOST --port=$ECF_PORT"
 which ecflow_client || module load ecflow
 if [[ -f $ECF_LOG ]]; then
     ecflow_client --server_load=$ECF_LOG
 elif [[ "$ECF_LOG" = /* ]]; then
-    $SSH $ECF_NODE $O -p $ECF_PORT -l $ECF_LOG -n $ECF_NODE -h $ECF_HOME
+    $SSH $ECF_HOST $O -p $ECF_PORT -l $ECF_LOG -n $ECF_HOST -h $ECF_HOME
 elif [[ -f $ECF_HOME/$ECF_LOG ]]; then
     ecflow_client --server_load=$ECF_HOME/$ECF_LOG
 elif ! `$client --ping`; then
     echo "server is not responding"
     exit 1
-elif [[ $ECF_NODE != $(uname -n) ]]; then # try remote
-    $SSH $ECF_NODE $O -p $ECF_PORT -l $ECF_LOG -n $ECF_NODE -h $ECF_HOME
+elif [[ $ECF_HOST != $(uname -n) ]]; then # try remote
+    $SSH $ECF_HOST $O -p $ECF_PORT -l $ECF_LOG -n $ECF_HOST -h $ECF_HOME
 else
     $client --server_load || $client --server_load=$ECF_LOG || $client --server_load=$ECF_HOME/$ECF_LOG 
 fi
 
-$VIEWER ${ECF_NODE}.${ECF_PORT}.png
+$VIEWER ${ECF_HOST}.${ECF_PORT}.png
 
 echoxx() {
 echo """
diff --git a/tools/ecflow_show_load.sh b/tools/ecflow_show_load.sh
index 583cbc6..d09156a 100755
--- a/tools/ecflow_show_load.sh
+++ b/tools/ecflow_show_load.sh
@@ -10,10 +10,10 @@ OPT="[+DESCRIPTION?retrieve server log file, call client server_load, and displa
 OPT="[g][n:ecf_node][h:ecf_home][p:ecf_port][?][l:ecf_log][r][z]"
 # OPT=":n:p:h:?"
 ECF_PORT=$((1500 + $(id -u)))
-ECF_NODE=$(uname -n) # ssh may not like localhost
+ECF_HOST=$(uname -n) # ssh may not like localhost
 ECF_HOME=
-ECF_LOG=$ECF_NODE.$ECF_PORT.log
-PNG=$ECF_NODE.$ECF_PORT.png
+ECF_LOG=$ECF_HOST.$ECF_PORT.log
+PNG=$ECF_HOST.$ECF_PORT.png
 RETRIEVE=0
 DEBUG=0
 REMOTE=0
@@ -25,7 +25,7 @@ do
   case $options in
   g) DEBUG=1; set -eux;;
   p) ECF_PORT=$OPTARG;;
-  n) ECF_NODE=$OPTARG;;
+  n) ECF_HOST=$OPTARG;;
   h) ECF_HOME=$OPTARG;;
   l) ECF_LOG=$OPTARG;;
   r) RETRIEVE=1;;
@@ -39,7 +39,7 @@ which ecflow_client > /dev/null || module load ecflow
 client=$(which ecflow_client)
 test=/tmp/map/work/git/cmake_build_dir/ecflow/debug/bin/ecflow_client && \
   [[ -f $test ]] && client=$test
-client="$client --host $ECF_NODE --port $ECF_PORT --server_load"
+client="$client --host $ECF_HOST --port $ECF_PORT --server_load"
 
 case $ECF_LOG in
 ./* ) if [[ ! -f $ECF_LOG ]]; then 
@@ -56,17 +56,17 @@ echo "#MSG: ECF_LOG is $ECF_LOG "
 
 rm -f $PNG || :
 if [[ 1 == $REMOTE ]]; then
-  ssh $ECF_NODE -l $USER ($client && scp $ECF_NODE.$ECF_PORT.png $USER:$LOCALH:$PNG)
-  # ssh -l $USER $ECF_NODE $client; scp $USER@$ECF_NODE:$ECF_NODE.$ECF_PORT.png .
+  ssh $ECF_HOST -l $USER ($client && scp $ECF_HOST.$ECF_PORT.png $USER:$LOCALH:$PNG)
+  # ssh -l $USER $ECF_HOST $client; scp $USER@$ECF_HOST:$ECF_HOST.$ECF_PORT.png .
   [[ -f $PNG ]] && ${EOG:-eog} $PNG || echo "#ERR: could not display $PNG"
   exit 0
 
 elif [[ 1 == $RETRIEVE ]]; then
   TMPDIR=/tmp/$USER
   mkdir -p $TMPDIR || :
-  TMPLOG=$TMPDIR/$ECF_NODE.$ECF_PORT.log
+  TMPLOG=$TMPDIR/$ECF_HOST.$ECF_PORT.log
   # NO: avoid scp log-file, it is better is issue the command remotely and retrieve the plot
-  # scp $USER@$ECF_NODE:$ECF_LOG $TMPLOG || rcp $USER@$ECF_NODE:$ECF_LOG $TMPLOG 
+  # scp $USER@$ECF_HOST:$ECF_LOG $TMPLOG || rcp $USER@$ECF_HOST:$ECF_LOG $TMPLOG 
 
   ECF_LOG=$TMPLOG
 fi
@@ -76,7 +76,7 @@ if [[ -f $ECF_LOG ]]; then
   $client $ECF_LOG
 
 else
-  ssh $ECF_NODE -l $USER ($client && scp $ECF_NODE.$ECF_PORT.png $USER:$LOCALH:$(pwd))
+  ssh $ECF_HOST -l $USER ($client && scp $ECF_HOST.$ECF_PORT.png $USER:$LOCALH:$(pwd))
   # leave remote png behind? clean?
 fi
 
@@ -84,4 +84,4 @@ fi
 
 exit 0
 load=./ecflow_show_load.sh
-$load -p $ECF_PORT -n $ECF_NODE -h $TMPDIR/. -l ${ECF_NODE}.ecf.${ECF_PORT}.log -z
+$load -p $ECF_PORT -n $ECF_HOST -h $TMPDIR/. -l ${ECF_HOST}.ecf.${ECF_PORT}.log -z
diff --git a/tools/ecflow_start.sh b/tools/ecflow_start.sh
index 1524861..281d72c 100755
--- a/tools/ecflow_start.sh
+++ b/tools/ecflow_start.sh
@@ -60,7 +60,7 @@ echo "       -d <dir>  specify the ECF_HOME directory - default $HOME/ecflow_ser
 echo "       -f        forces the ECF to be restarted"
 echo "       -v        verbose mode"
 echo "       -h        print this help page"
-echo "       -p <num>  specify server port number(ECF_PORT number)  - default 1000+<UID> | 500+<UID> for backup server"
+echo "       -p <num>  specify server port number(ECF_PORT number)  - default 1500+<UID> | 1000+<UID> for backup server"
 exit 0
 ;;
 *)
@@ -140,18 +140,18 @@ date -u
 # ======================================================================================
 # set up default environment variables
 #
-export ECF_NODE=$host
-export ECF_LOG=$ECF_NODE.$ECF_PORT.ecf.log
-export ECF_CHECK=$ECF_NODE.$ECF_PORT.check
-export ECF_CHECKOLD=$ECF_NODE.$ECF_PORT.check.b
+export ECF_HOST=$host
+export ECF_LOG=$ECF_HOST.$ECF_PORT.ecf.log
+export ECF_CHECK=$ECF_HOST.$ECF_PORT.check
+export ECF_CHECKOLD=$ECF_HOST.$ECF_PORT.check.b
 if [ "$verbose" = "false" ]; then
      export ECF_OUT=/dev/null
 else
-     export ECF_OUT=$ECF_NODE.$ECF_PORT.ecf.out
+     export ECF_OUT=$ECF_HOST.$ECF_PORT.ecf.out
 fi
 
 echo 
-echo User \"$username\" attempting to start ecf server on \"$ECF_NODE\" using ECF_PORT \"$ECF_PORT\" and with:
+echo User \"$username\" attempting to start ecf server on \"$ECF_HOST\" using ECF_PORT \"$ECF_PORT\" and with:
 echo "ECF_HOME     : \"$ECF_HOME\""
 echo "ECF_LOG      : \"$ECF_LOG\""
 echo "ECF_CHECK    : \"$ECF_CHECK\""
@@ -159,17 +159,17 @@ echo "ECF_CHECKOLD : \"$ECF_CHECKOLD\""
 if [ "$verbose" = "false" ]; then
      echo "ECF_OUT      : \"/dev/null\""
 else
-     echo "ECF_OUT      : \"$ECF_NODE.$ECF_PORT.ecf.out\""
+     echo "ECF_OUT      : \"$ECF_HOST.$ECF_PORT.ecf.out\""
 fi
 echo 
 
 #==========================================================================
 
 echo "client version is $(ecflow_client --version)"
-echo "Checking if the server is already running on $ECF_NODE and port $ECF_PORT"
+echo "Checking if the server is already running on $ECF_HOST and port $ECF_PORT"
 ecflow_client --ping 
 if [ $? -eq 0 ]; then
-  echo "... The server on $ECF_NODE:$ECF_PORT is already running. Use 'netstat -lnptu' for listing active port" 
+  echo "... The server on $ECF_HOST:$ECF_PORT is already running. Use 'netstat -lnptu' for listing active port" 
   exit 1
 fi
 
@@ -193,8 +193,8 @@ cp $ECF_CHECK    log/ 2>/dev/null
 cp $ECF_CHECKOLD log/ 2>/dev/null
 cp $ECF_LOG      log/ 2>/dev/null
 
-if [ -f $ECF_NODE.$ECF_PORT.ecf.out ]; then
-   cp $ECF_NODE.$ECF_PORT.ecf.out log/ 2>/dev/null
+if [ -f $ECF_HOST.$ECF_PORT.ecf.out ]; then
+   cp $ECF_HOST.$ECF_PORT.ecf.out log/ 2>/dev/null
 fi
 
 set -e
@@ -229,9 +229,9 @@ fi
 
 
 echo 
-echo "To view server on ecflowview - goto Edit/Preferences/Servers and enter"
+echo "To view server on ecflow_ui - goto Servers/Manage Servers... and enter"
 echo "Name        : <unique ecFlow server name>"
-echo "Host        : $ECF_NODE"
+echo "Host        : $ECF_HOST"
 echo "Port Number : $ECF_PORT"
 echo
 
diff --git a/tools/ecflow_stop.sh b/tools/ecflow_stop.sh
index 001ad46..5767de1 100755
--- a/tools/ecflow_stop.sh
+++ b/tools/ecflow_stop.sh
@@ -94,7 +94,7 @@ echo "User \"$username\" attempting to stop ecf server on $host:$port_number"
 echo "";
 echo "Checking if the server is running on $host:$port_number" 
 
-export ECF_NODE=$host
+export ECF_HOST=$host
 
 ecflow_client --ping 
 if [ $? -eq 1 ]; then
diff --git a/tools/ecflow_suite_gen.sh b/tools/ecflow_suite_gen.sh
index afbcdcc..40371db 100755
--- a/tools/ecflow_suite_gen.sh
+++ b/tools/ecflow_suite_gen.sh
@@ -113,7 +113,7 @@ suite $SUITE_NAME
 
 usage() {
 echo <<EOF
-$0 -p <ECF_PORT> -n <ECF_NODE> -s <suite_name> -r <path>
+$0 -p <ECF_PORT> -n <ECF_HOST> -s <suite_name> -r <path>
    -l: load
    -r: replace path
    -t: test suite generated
@@ -128,7 +128,7 @@ do
 case $option in
     d) DEBUG=1; set -eux;;
     l) LOAD=1;;
-    n) ECF_NODE=$OPTARG;; # NODE HOST
+    n) ECF_HOST=$OPTARG;; # NODE HOST
     p) ECF_PORT=$OPTARG;; # PORT
     r) REPL=$OPTARG;;
     s) SUITE_NAME=$OPTARG;;
@@ -146,11 +146,11 @@ else
   exit 2
 fi
 
-CLIENT="ecflow_client --port ${ECF_PORT:=31415} --host ${ECF_NODE:=localhost}"
+CLIENT="ecflow_client --port ${ECF_PORT:=31415} --host ${ECF_HOST:=localhost}"
 if [[ $REPL != 0 ]]; then
   $CLIENT --replace $REPL $sdef
   echo "#MSG: node $REPL was replaced as defined in $sdef" \
-       " on ${ECF_NODE:=localhost} ${ECF_PORT:=31415}"
+       " on ${ECF_HOST:=localhost} ${ECF_PORT:=31415}"
 elif [[ $LOAD != 0 ]]; then
   $CLIENT --load $sdef
 else
diff --git a/view/CMakeLists.txt b/view/CMakeLists.txt
index 3cb2dab..6b82528 100644
--- a/view/CMakeLists.txt
+++ b/view/CMakeLists.txt
@@ -181,13 +181,12 @@ find_package( Threads )
 
 
 # =========================================================================================
-# libecflowview needs to be compiled as dynamic lin  otherwise the icons do not appear.
+# ecflow_view needs to be compiled as dynamic lib  otherwise the icons do not appear.
 #
 # Note: -DECFLOW_SHARED_DIR is *ONLY* required for one file view/src/directory.cc
 #
 add_definitions( -D_GNU_SOURCE -DUNIX -Dunix -Dlinux -DECFLOW_SHARED_DIR="${CMAKE_INSTALL_PREFIX}/share/ecflow" )
 
-
 # local includes
 include_directories( src
                      src/libicon
@@ -204,8 +203,9 @@ include_directories( src
                     )
 
 # in ecbuild_add_library INCLUDES is only for external includes
-ecbuild_add_library(TARGET    libecflowview
-				        CONDITION MOTIF_FOUND AND X11_FOUND AND CMAKE_THREAD_LIBS_INIT
+ecbuild_add_library(TARGET    ecflow_view
+				    CONDITION 
+				              MOTIF_FOUND AND X11_FOUND AND CMAKE_THREAD_LIBS_INIT
                     SOURCES  
                               ${srcs_cc} ${srcs_c} ${srcs_cpp} ${libicon_srcs} ${libxec_srcs} ${libui_srcs}
                     TEMPLATES
@@ -227,28 +227,28 @@ SET_SOURCE_FILES_PROPERTIES(src/host.cc PROPERTIES COMPILE_FLAGS "-O0")
 ecbuild_add_executable( TARGET    ecflowview
                         SOURCES   
                                   src/ecflowview.cc
-						      CONDITION 
-						                MOTIF_FOUND AND X11_FOUND AND CMAKE_THREAD_LIBS_INIT
+						CONDITION 
+						          MOTIF_FOUND AND X11_FOUND AND CMAKE_THREAD_LIBS_INIT
                         LIBS      
-                                  libecflowview  libclient base libparser node nodeattr core
+                                  ecflow_view libclient base libparser node nodeattr core
                                   ${CMAKE_THREAD_LIBS_INIT} 
                                   ${X11_LIBRARIES} ${X11_Xext_LIB} ${MOTIF_LIBRARIES} ${X11_Xpm_LIB} ${X11_Xt_LIB} 
                                   ${CMATH_LIBRARIES}
+                                  ${OPENSSL_LIBRARIES}
                         INCLUDES  
                                   ${X11_INCLUDE_DIR}
                                   ${MOTIF_INCLUDE_DIR}
-                     )
-
+                       )
 
 # ===================================================================
-# test
+# test. if OpenSSL not enabled ${OPENSSL_LIBRARIES}, is empty
 # ===================================================================
 
 ecbuild_add_test( TARGET  test-view
                   BOOST
                   CONDITION MOTIF_FOUND AND X11_FOUND AND CMAKE_THREAD_LIBS_INIT
                   SOURCES   test/TestRunner.cpp test/TestView.cpp
-                  LIBS      libharness    
+                  LIBS      libharness  ${OPENSSL_LIBRARIES} 
                   INCLUDES  ../Test/src
                   TEST_DEPENDS s_test_zombies
                 )
diff --git a/view/Jamfile.jam b/view/Jamfile.jam
index 5c39ce0..84946b5 100644
--- a/view/Jamfile.jam
+++ b/view/Jamfile.jam
@@ -22,7 +22,7 @@ use-project theTest      : ../Test ;
 # on the link line
 #
 lib pthread ;
-
+   
 import os ;
 MOTIF_INCLUDE = [ os.environ MOTIF_INCLUDE ] ;
 MOTIF_INCLUDE default = /usr/include ;
@@ -50,6 +50,7 @@ exe ecflowview
      /site-config//boost_datetime
      pthread
    : <variant>debug:<define>DEBUG
+     [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
 #     <variant>release:<cxxflags>-O1
      <toolset>gcc:<include>$(MOTIF_INCLUDE)
      <include>../view/src
@@ -91,6 +92,8 @@ obj host : src/host.cc
      <define>UNIX
      <define>unix
    ; 
+   
+  
 #
 # Test the view
 # This uses /theTest//libharness to setup a server
@@ -113,6 +116,7 @@ exe test-view : [ glob test/*.cpp  ]
          : <include>../Base/test 
            <include>../Test/src 
            <variant>debug:<define>DEBUG
+           [ conditional <ssl>on : <library>/ecflow_top//openssl_libs ]
 #  	   <variant>release:<cxxflags>-O1
         ;
 # bjam -j8 release c++-template-depth=512
diff --git a/view/data/.gitignore b/view/data/.gitignore
new file mode 100644
index 0000000..5e57ff7
--- /dev/null
+++ b/view/data/.gitignore
@@ -0,0 +1 @@
+/ECF_HOME_release_gnu/
diff --git a/view/data/includes/head.h b/view/data/includes/head.h
index f2ee97c..d23df6c 100644
--- a/view/data/includes/head.h
+++ b/view/data/includes/head.h
@@ -11,8 +11,8 @@ set -x # echo script lines as they are executed
 # Defines the three variables that are needed for any
 # communication with ECF
 
-export ECF_PORT=%ECF_PORT%    # ECF_ Remote Procedure Call number
-export ECF_NODE=%ECF_NODE%    # The ecflow server that issued the task
+export ECF_PORT=%ECF_PORT%    # The port on the ecflow server
+export ECF_HOST=%ECF_HOST%    # The hostname where the server is running
 export ECF_NAME=%ECF_NAME%    # The name of this current task
 export ECF_PASS=%ECF_PASS%    # A unique password
 export ECF_TRYNO=%ECF_TRYNO%  # Current try number of the task
diff --git a/view/src/collector.cc b/view/src/collector.cc
index 83397c0..cb93d1d 100644
--- a/view/src/collector.cc
+++ b/view/src/collector.cc
@@ -55,7 +55,7 @@ collector::collector()
     (char *) "ecflow_client --force=complete <full_name>",
     (char *) "ecflow_client --force=aborted  <full_name>",
     (char *) "###",
-    (char *) "sh python %PYDEF:0% %SUITE% <full_name> %ECF_NODE% # aka replace",
+    (char *) "sh python %PYDEF:0% %SUITE% <full_name> %ECF_HOST% # aka replace",
     };
 
 	create(gui::top());	
diff --git a/view/src/ecf_node.cc b/view/src/ecf_node.cc
index 9ac75db..e5c9b93 100644
--- a/view/src/ecf_node.cc
+++ b/view/src/ecf_node.cc
@@ -224,6 +224,7 @@ node* ecf_node::create_tree( host& h, node* xnode )
    }
    if (get_node()) get_node()->set_graphic_ptr(node_);
 
+   if (node_->isMigrated()) return node_;
    for(std::vector<ecf_node*>::const_iterator j = kids_.begin(); j != kids_.end(); ++j)
       if (*j) node_->insert((*j)->create_tree(h, 0x0));
 
diff --git a/view/src/ecflow.cc b/view/src/ecflow.cc
index 7289912..0f777cb 100644
--- a/view/src/ecflow.cc
+++ b/view/src/ecflow.cc
@@ -218,7 +218,8 @@ static const char* const_ecf_string(const char *str)
 #include <sys/stat.h>
 #include <dirent.h>
 
-ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname)
+ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname,
+		      ecf_dir       *dir)
 /**************************************************************************
 ?  Read the directory and generate the listing
 ************************************o*************************************/
@@ -228,8 +229,7 @@ ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname)
   struct stat    st;
 
   ecf_dir       *cur = NULL;
-  ecf_dir       *dir = NULL;
-
+  //ecf_dir       *dir = NULL;
   bool            ok = true;
 
   if( (dp=opendir(path)) )
@@ -250,7 +250,7 @@ ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname)
         if( !pattern || strncmp(de->d_name,pattern,strlen(pattern))==0 )
           if( lstat(name,&st) == 0 )
           {
-            if( (cur = new ecf_dir())) // (ecf_dir*) calloc(1,sizeof(ecf_dir))) )  
+            if( (cur = new ecf_dir())) 
             {
               if(fullname)
               {
diff --git a/view/src/ecflow.h b/view/src/ecflow.h
index 40ffa90..85048ea 100644
--- a/view/src/ecflow.h
+++ b/view/src/ecflow.h
@@ -54,7 +54,7 @@ class ecf_dir : public extent<ecf_dir> {
  ecf_dir() : name_ (0x0), next (0x0) {}
  virtual ~ecf_dir() {}
 
-  std::string name() const { return (name_); }
+ std::string name() const { return (name_); }
 };
 
 template<class T>
@@ -62,8 +62,9 @@ bool ecf_list_add(T **list, T *kid)
 {
   T **top = list; 
   T  *run = *top;
-  if( !kid ) return false; kid->next = NULL;
-  if( run ) {
+  if ( !kid ) return false;
+  kid->next = NULL;
+  if ( run ) {
     while( run->next ) run = run->next;
     run->next = kid;
   } else
@@ -151,7 +152,7 @@ typedef uint64_t uint64;
 #include <boost/algorithm/string.hpp>
 
 char    *ecf_string(char *str, char *file, int lineno);
-ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname);
+ecf_dir *ecf_file_dir(char *path, char *pattern, int fullname, ecf_dir *dir = NULL);
 
 #endif
 
diff --git a/view/src/ecflowview.menu b/view/src/ecflowview.menu
index f08ae77..d15a2f7 100644
--- a/view/src/ecflowview.menu
+++ b/view/src/ecflowview.menu
@@ -1,3 +1,4 @@
+
 !===========================================================
 ! Name        : 
 ! Author      : 
@@ -78,7 +79,7 @@ menu 'MAIN'
 
   (ALL,ALL,'-',SEPARATOR)
 
-  (SUITE|TASK|FAMILY,(QUEUED|SUSPENDED|ACTIVE) & (HAS_TRIGGERS|HAS_TIME|HAS_DATE),'Delete',MENU)
+  (SUITE|TASK|FAMILY,(QUEUED|SUSPENDED|ACTIVE) & (HAS_TRIGGERS|HAS_TIME|HAS_DATE),'Free Deps',MENU)
   (NODE | ALIAS, ALL, 'Special', MENU)
   (NODE | ALIAS, ALL, 'Defstatus', MENU)
   (NODE & ADMIN, ALL, 'Force',   MENU)
@@ -151,8 +152,8 @@ menu 'MAIN'
   (ALL,ALL,'-',SEPARATOR)
   (SERVER, ALL ,  'Options...',  WINDOW(Options)  )
   (SERVER, ALL ,  'Extra',  MENU  )
-  (SERVER, ALL ,  'Ping',  'sh ecflow_client --port %ECF_PORT% --host %ECF_NODE% --ping' )
-  (SERVER, ALL ,  'Stat',  'sh ecflow_client --port %ECF_PORT% --host %ECF_NODE% --stats' )
+  (SERVER, ALL ,  'Ping',  'sh ecflow_client --port %ECF_PORT% --host %ECF_HOST% --ping' )
+  (SERVER, ALL ,  'Stat',  'sh ecflow_client --port %ECF_PORT% --host %ECF_HOST% --stats' )
 }
 
 menu 'Set'
@@ -190,12 +191,12 @@ menu 'WebM'
 
 menu 'WebW' 
 {
-  (TASK, ALL, 'WMan',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/man/%ECF_NAME:%', '', YES)
-  (TASK, ALL, 'WScript', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/script/%ECF_NAME:%', '', YES)
-  (TASK, ALL, 'WJob',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/job/%ECF_NAME:%', '', YES)
-  (TASK, ALL, 'WOut',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/output/%ECF_NAME:%', '', YES)
-  (TASK, ALL, 'Suites',  'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/suites', '', YES)
-  (TASK, ALL, 'Treemap', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/suite/treemap/SAR/none/7/%SUITE:%', '', YES)
+  (TASK, ALL, 'WMan',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/man/%ECF_NAME:%', '', YES)
+  (TASK, ALL, 'WScript', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/script/%ECF_NAME:%', '', YES)
+  (TASK, ALL, 'WJob',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/job/%ECF_NAME:%', '', YES)
+  (TASK, ALL, 'WOut',    'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/output/%ECF_NAME:%', '', YES)
+  (TASK, ALL, 'Suites',  'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/suites', '', YES)
+  (TASK, ALL, 'Treemap', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/suite/treemap/SAR/none/7/%SUITE:%', '', YES)
   (TASK, ALL, 'Flask',   'sh firefox ${ECFLOW_WEB_MONITOR:-http://eurus.ecmwf.int:5001}', '', YES)
 }
 
@@ -239,7 +240,7 @@ menu 'Suite'
 ! Delete submenu
 !==============================================================================
 
-menu 'Delete'
+menu 'Free Deps'
 {
 	(ALL,HAS_TRIGGERS|HAS_TIME|HAS_DATE, 'All dependencies','ecflow_client --free-dep all <full_name>')
 	(ALL,HAS_TRIGGERS, 'Trigger dependencies','ecflow_client --free-dep trigger <full_name>')
@@ -279,9 +280,17 @@ menu "Defstatus"
 
 menu "Special"
 {
-  (SUITE|FAMILY,(ACTIVE|SUBMITTED|ABORTED),'Kill', 'ecflow_client --kill <full_name>','',YES)
-  (TASK|ALIAS,(ACTIVE|SUBMITTED),'Kill','ecflow_client --kill <full_name>','',YES)
-  (ALL,ALL,'Check',WINDOW(Check),'',YES)
+! ( (SUITE|FAMILY) & (COMPLETE|QUEUED|SUSPENDED) & ~MIGRATED,ALL,'Migrate', 'ecflow_client --migrate <full_name>','',NO)
+! ( (SUITE|FAMILY) & MIGRATED,ALL,'Restore','ecflow_client --restore <full_name>','',YES)
+
+  ( (SUITE|FAMILY) & (COMPLETE|QUEUED|SUSPENDED) & ~MIGRATED,ALL,'Migrate', 'ecflow_client --alter set_flag migrated <full_name>')
+  ( (SUITE|FAMILY) & MIGRATED,ALL,'Restore','ecflow_client --alter clear_flag migrated <full_name>', 'click shift-update to display content below', YES)
+
+  (SUITE|FAMILY,(ACTIVE|SUBMITTED|ABORTED|SUSPENDED),'Kill', 'ecflow_client --kill <full_name>','',YES)
+  (TASK|ALIAS,(ACTIVE|SUBMITTED|SUSPENDED),'Kill','ecflow_client --kill <full_name>','',YES)
+  (ALL,ALL,'CheckCmd',WINDOW(Check),'',YES)
+  (ALL,ALL,'CheckT','sh xterm -hold -e ecflow_client --port %ECF_PORT% --host %ECF_HOST% --check /%SUITE%/%FAMILY:%%TASK:%')
+
   (TASK|ALIAS,ALL,'Free password','ecflow_client --alter add variable ECF_PASS FREE <full_name>')
   (TASK|ALIAS,ALL,'ClearZ','ecflow_client --alter clear_flag zombie <full_name>')
   (TASK|ALIAS,ALL,'ClearLate','ecflow_client --alter clear_flag late <full_name>')
@@ -300,16 +309,16 @@ menu "Extra"
   (SERVER|SUITE,ALL,'Windows', MENU)
   (ALL,ALL,'-',SEPARATOR)
   (SERVER,ALL,'ClearLate','ecflow_client --alter clear_flag late <full_name>')
-  ! (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e rsh %ECF_NODE% tail -f %ECF_HOME%/%ECF_LOG%&')
+  ! (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e rsh %ECF_HOST% tail -f %ECF_HOME%/%ECF_LOG%&')
 (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e tail -f /tmp/$USER/$HOST*.ecf.log&')
   (ALL,ALL,'-',SEPARATOR) 
-  (SERVER|SUITE,ALL,'svr load','ecflow_load.sh -h %ECF_HOME% -l %ECF_LOG% -n %ECF_NODE% -p %ECF_PORT%')
+  (SERVER|SUITE,ALL,'svr load','ecflow_load.sh -h %ECF_HOME% -l %ECF_LOG% -n %ECF_HOST% -p %ECF_PORT%')
 !  (SERVER|SUITE,ALL,'svr load','ecflow_client --server_load')
 !  (SERVER|SUITE,ALL,'svr load log','ecflow_client --server_load %ECF_LOG%')
 !  (SERVER|SUITE,ALL,'svr load home/log','ecflow_client --server_load %ECF_HOME%/%ECF_LOG%')
-!  (SERVER|SUITE,ALL,'show png','sh ${EOG:-eog} %ECF_NODE%.%ECF_PORT%.png')
+!  (SERVER|SUITE,ALL,'show png','sh ${EOG:-eog} %ECF_HOST%.%ECF_PORT%.png')
 ! one menu to replace four previous when it works
-!  (SERVER|SUITE,ALL,'show load','sh ecflow_show_load.sh -n %ECF_NODE% -p %ECF_PORT% -h %ECF_HOME% %ECF_LOG%')
+!  (SERVER|SUITE,ALL,'show load','sh ecflow_show_load.sh -n %ECF_HOST% -p %ECF_PORT% -h %ECF_HOME% %ECF_LOG%')
 
   (ALL,ALL,'-',SEPARATOR)
   (SERVER|SUITE,ALL,'overwrite', 'write menu')
diff --git a/view/src/ecflowview.menu.h b/view/src/ecflowview.menu.h
index 3a7b374..724359b 100644
--- a/view/src/ecflowview.menu.h
+++ b/view/src/ecflowview.menu.h
@@ -1,3 +1,4 @@
+(char*) "  ",
 (char*) " !=========================================================== ",
 (char*) " ! Name : ",
 (char*) " ! Author : ",
@@ -78,7 +79,7 @@
 (char*) "  ",
 (char*) " (ALL,ALL,'-',SEPARATOR) ",
 (char*) "  ",
-(char*) " (SUITE|TASK|FAMILY,(QUEUED|SUSPENDED|ACTIVE) & (HAS_TRIGGERS|HAS_TIME|HAS_DATE),'Delete',MENU) ",
+(char*) " (SUITE|TASK|FAMILY,(QUEUED|SUSPENDED|ACTIVE) & (HAS_TRIGGERS|HAS_TIME|HAS_DATE),'Free Deps',MENU) ",
 (char*) " (NODE | ALIAS, ALL, 'Special', MENU) ",
 (char*) " (NODE | ALIAS, ALL, 'Defstatus', MENU) ",
 (char*) " (NODE & ADMIN, ALL, 'Force', MENU) ",
@@ -151,8 +152,8 @@
 (char*) " (ALL,ALL,'-',SEPARATOR) ",
 (char*) " (SERVER, ALL , 'Options...', WINDOW(Options) ) ",
 (char*) " (SERVER, ALL , 'Extra', MENU ) ",
-(char*) " (SERVER, ALL , 'Ping', 'sh ecflow_client --port %ECF_PORT% --host %ECF_NODE% --ping' ) ",
-(char*) " (SERVER, ALL , 'Stat', 'sh ecflow_client --port %ECF_PORT% --host %ECF_NODE% --stats' ) ",
+(char*) " (SERVER, ALL , 'Ping', 'sh ecflow_client --port %ECF_PORT% --host %ECF_HOST% --ping' ) ",
+(char*) " (SERVER, ALL , 'Stat', 'sh ecflow_client --port %ECF_PORT% --host %ECF_HOST% --stats' ) ",
 (char*) " } ",
 (char*) "  ",
 (char*) " menu 'Set' ",
@@ -190,12 +191,12 @@
 (char*) "  ",
 (char*) " menu 'WebW' ",
 (char*) " { ",
-(char*) " (TASK, ALL, 'WMan', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/man/%ECF_NAME:%', '', YES) ",
-(char*) " (TASK, ALL, 'WScript', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/script/%ECF_NAME:%', '', YES) ",
-(char*) " (TASK, ALL, 'WJob', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/job/%ECF_NAME:%', '', YES) ",
-(char*) " (TASK, ALL, 'WOut', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/output/%ECF_NAME:%', '', YES) ",
-(char*) " (TASK, ALL, 'Suites', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/suites', '', YES) ",
-(char*) " (TASK, ALL, 'Treemap', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_NODE:%/%ECF_PORT:%/suite/treemap/SAR/none/7/%SUITE:%', '', YES) ",
+(char*) " (TASK, ALL, 'WMan', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/man/%ECF_NAME:%', '', YES) ",
+(char*) " (TASK, ALL, 'WScript', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/script/%ECF_NAME:%', '', YES) ",
+(char*) " (TASK, ALL, 'WJob', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/job/%ECF_NAME:%', '', YES) ",
+(char*) " (TASK, ALL, 'WOut', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/output/%ECF_NAME:%', '', YES) ",
+(char*) " (TASK, ALL, 'Suites', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/suites', '', YES) ",
+(char*) " (TASK, ALL, 'Treemap', 'sh firefox ${ECFLOW_WEB:-http://eurus.ecmwf.int:8000/api/v1/ecflow}/%ECF_HOST:%/%ECF_PORT:%/suite/treemap/SAR/none/7/%SUITE:%', '', YES) ",
 (char*) " (TASK, ALL, 'Flask', 'sh firefox ${ECFLOW_WEB_MONITOR:-http://eurus.ecmwf.int:5001}', '', YES) ",
 (char*) " } ",
 (char*) "  ",
@@ -239,7 +240,7 @@
 (char*) " ! Delete submenu ",
 (char*) " !============================================================================== ",
 (char*) "  ",
-(char*) " menu 'Delete' ",
+(char*) " menu 'Free Deps' ",
 (char*) " { ",
 (char*) " (ALL,HAS_TRIGGERS|HAS_TIME|HAS_DATE, 'All dependencies','ecflow_client --free-dep all <full_name>') ",
 (char*) " (ALL,HAS_TRIGGERS, 'Trigger dependencies','ecflow_client --free-dep trigger <full_name>') ",
@@ -279,9 +280,17 @@
 (char*) "  ",
 (char*) " menu \"Special\" ",
 (char*) " { ",
-(char*) " (SUITE|FAMILY,(ACTIVE|SUBMITTED|ABORTED),'Kill', 'ecflow_client --kill <full_name>','',YES) ",
-(char*) " (TASK|ALIAS,(ACTIVE|SUBMITTED),'Kill','ecflow_client --kill <full_name>','',YES) ",
-(char*) " (ALL,ALL,'Check',WINDOW(Check),'',YES) ",
+(char*) " ! ( (SUITE|FAMILY) & (COMPLETE|QUEUED|SUSPENDED) & ~MIGRATED,ALL,'Migrate', 'ecflow_client --migrate <full_name>','',NO) ",
+(char*) " ! ( (SUITE|FAMILY) & MIGRATED,ALL,'Restore','ecflow_client --restore <full_name>','',YES) ",
+(char*) "  ",
+(char*) " ( (SUITE|FAMILY) & (COMPLETE|QUEUED|SUSPENDED) & ~MIGRATED,ALL,'Migrate', 'ecflow_client --alter set_flag migrated <full_name>') ",
+(char*) " ( (SUITE|FAMILY) & MIGRATED,ALL,'Restore','ecflow_client --alter clear_flag migrated <full_name>', 'click shift-update to display content below', YES) ",
+(char*) "  ",
+(char*) " (SUITE|FAMILY,(ACTIVE|SUBMITTED|ABORTED|SUSPENDED),'Kill', 'ecflow_client --kill <full_name>','',YES) ",
+(char*) " (TASK|ALIAS,(ACTIVE|SUBMITTED|SUSPENDED),'Kill','ecflow_client --kill <full_name>','',YES) ",
+(char*) " (ALL,ALL,'CheckCmd',WINDOW(Check),'',YES) ",
+(char*) " (ALL,ALL,'CheckT','sh xterm -hold -e ecflow_client --port %ECF_PORT% --host %ECF_HOST% --check /%SUITE%/%FAMILY:%%TASK:%') ",
+(char*) "  ",
 (char*) " (TASK|ALIAS,ALL,'Free password','ecflow_client --alter add variable ECF_PASS FREE <full_name>') ",
 (char*) " (TASK|ALIAS,ALL,'ClearZ','ecflow_client --alter clear_flag zombie <full_name>') ",
 (char*) " (TASK|ALIAS,ALL,'ClearLate','ecflow_client --alter clear_flag late <full_name>') ",
@@ -300,16 +309,16 @@
 (char*) " (SERVER|SUITE,ALL,'Windows', MENU) ",
 (char*) " (ALL,ALL,'-',SEPARATOR) ",
 (char*) " (SERVER,ALL,'ClearLate','ecflow_client --alter clear_flag late <full_name>') ",
-(char*) " ! (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e rsh %ECF_NODE% tail -f %ECF_HOME%/%ECF_LOG%&') ",
+(char*) " ! (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e rsh %ECF_HOST% tail -f %ECF_HOME%/%ECF_LOG%&') ",
 (char*) " (SERVER|SUITE,ALL,'tail log', 'sh /usr/bin/xterm -e tail -f /tmp/$USER/$HOST*.ecf.log&') ",
 (char*) " (ALL,ALL,'-',SEPARATOR) ",
-(char*) " (SERVER|SUITE,ALL,'svr load','ecflow_load.sh -h %ECF_HOME% -l %ECF_LOG% -n %ECF_NODE% -p %ECF_PORT%') ",
+(char*) " (SERVER|SUITE,ALL,'svr load','ecflow_load.sh -h %ECF_HOME% -l %ECF_LOG% -n %ECF_HOST% -p %ECF_PORT%') ",
 (char*) " ! (SERVER|SUITE,ALL,'svr load','ecflow_client --server_load') ",
 (char*) " ! (SERVER|SUITE,ALL,'svr load log','ecflow_client --server_load %ECF_LOG%') ",
 (char*) " ! (SERVER|SUITE,ALL,'svr load home/log','ecflow_client --server_load %ECF_HOME%/%ECF_LOG%') ",
-(char*) " ! (SERVER|SUITE,ALL,'show png','sh ${EOG:-eog} %ECF_NODE%.%ECF_PORT%.png') ",
+(char*) " ! (SERVER|SUITE,ALL,'show png','sh ${EOG:-eog} %ECF_HOST%.%ECF_PORT%.png') ",
 (char*) " ! one menu to replace four previous when it works ",
-(char*) " ! (SERVER|SUITE,ALL,'show load','sh ecflow_show_load.sh -n %ECF_NODE% -p %ECF_PORT% -h %ECF_HOME% %ECF_LOG%') ",
+(char*) " ! (SERVER|SUITE,ALL,'show load','sh ecflow_show_load.sh -n %ECF_HOST% -p %ECF_PORT% -h %ECF_HOME% %ECF_LOG%') ",
 (char*) "  ",
 (char*) " (ALL,ALL,'-',SEPARATOR) ",
 (char*) " (SERVER|SUITE,ALL,'overwrite', 'write menu') ",
diff --git a/view/src/gui.cc b/view/src/gui.cc
index 74ecebf..645e171 100644
--- a/view/src/gui.cc
+++ b/view/src/gui.cc
@@ -34,6 +34,8 @@ static resource* gui_resources[] = {
 	new option<str>(globals::instance(),"color_black","black"),
 	new option<str>(globals::instance(),"color_blue","blue"),
 	new option<str>(globals::instance(),"color_red","red"),
+	new option<str>(globals::instance(),"color_orange","orange"),
+	new option<str>(globals::instance(),"color_green","green"),
 
 	new option<str>(globals::instance(),"color_unknown",   "grey"),
 	new option<str>(globals::instance(),"color_suspended", "orange"),
@@ -182,8 +184,8 @@ Pixel gui::pixel(const char* name)
 static GC makegc(Pixel p)
 {
 	XGCValues values;
-	XtGCMask  valuemask  = GCForeground;
-	values.foreground     = p;
+	XtGCMask  valuemask = GCForeground;
+	values.foreground   = p;
 
 	Widget w = gui::top();
 	return XCreateGC(XtDisplay(w),XtWindow(w),valuemask,&values);
@@ -229,11 +231,12 @@ inline GC makegc(const char* p)
 
 static Pixel *status_colors = 0;
 
-char *ecf_colors_name[]
-= { (char*)"unknown", (char*)"suspended", (char*)"complete", (char*)"queued", (char*)"submitted", (char*)"active",
-    (char*)"aborted", (char*)"shutdown",  (char*)"halted"  ,  
-    (char*)"meter_low",(char*)"threshold"  ,   (char*)"event"  ,  
-    NULL };
+char *ecf_colors_name[] = { 
+  (char*)"unknown", (char*)"suspended", (char*)"complete", 
+  (char*)"queued", (char*)"submitted", (char*)"active",
+  (char*)"aborted", (char*)"shutdown", (char*)"halted",  
+  (char*)"meter_low",(char*)"threshold", (char*)"event",  
+  NULL };
 
 Pixel gui::colors(unsigned int n)
 {
@@ -289,6 +292,18 @@ GC gui::redGC(void)
 	return gc;
 }
 
+GC gui::orangeGC(void)
+{
+	static GC gc = makegc("orange");
+	return gc;
+}
+
+GC gui::greenGC(void)
+{
+	static GC gc = makegc("green");
+	return gc;
+}
+
 static GC* status_gc = 0;
 GC gui::colorGC(unsigned int n)
 {
diff --git a/view/src/gui.h b/view/src/gui.h
index 363cc4e..27dc8cf 100644
--- a/view/src/gui.h
+++ b/view/src/gui.h
@@ -53,6 +53,8 @@ public:
 	static GC         blackGC();
 	static GC         blueGC();
 	static GC         redGC();
+	static GC         orangeGC();
+	static GC         greenGC();
 
 	static XmFontList smallfont();
 	static XmFontList fontlist();
diff --git a/view/src/host.cc b/view/src/host.cc
index 19d83f0..6fb3d9f 100644
--- a/view/src/host.cc
+++ b/view/src/host.cc
@@ -167,7 +167,7 @@ host::host( const std::string& name, const std::string& host, int number )
 	 , connected_(false)
 	 , after_command_(true)
 	 , passwd_("-none-")
-	 , timeout_(this, "timeout", 5)
+	 , timeout_(this, "timeout", 30)
 	 , maximum_(this, "maximum", 60)
 	 , drift_(this, "drift", true)
 	 , connect_(this, "connect", false)
@@ -198,8 +198,8 @@ host::host( const std::string& name, const std::string& host, int number )
       gui::add_host(name);
    }
 
-   if (timeout_ < 1) timeout_ = 1;
-   if (maximum_ < 1) maximum_ = 1;
+   if (timeout_ < 30) timeout_ = 30;
+   if (maximum_ < 30) maximum_ = 30;
 
    frequency(timeout_);
 }
@@ -542,6 +542,7 @@ bool use_ecf_out_cmd(node&n, std::string path, ecf_dir *dir, std::string& conten
   else if (cmd.length() < 3) return false; // may be empty space characters, ignore cmd
   else if (dir) cmd += " -d";
   else if (!path.empty()) cmd += " -f " + path;
+  // return 0;
 
   FILE *pipe = popen(cmd.c_str(), "r");
   if (!pipe) return false;
@@ -578,25 +579,24 @@ void host::dir( node& n, const char* path, lister<ecf_dir>& l )
    gui::message("%s: fetching file list", this->name());
    std::string content;
    std::auto_ptr<ecf_dir> dir(new ecf_dir());
-   if (use_ecf_out_cmd(n, path, dir.get(), content))
-     { if (dir.get()) l.scan(dir.get()); } 
-   else if (loghost_ != ecf_node::none()) {
+   std::string job = n.variable("ECF_JOB");
+   // if (use_ecf_out_cmd(n, path, dir.get(), content)) { l.scan(dir.get()); }   else 
+   std::cout << n.full_name() << "\n" << path << "\n";
+   if (n.isCmdFailed()) { // so that local dir content is displayed with .sub file
+     path = job.c_str();
+   } else if (loghost_ != ecf_node::none()) {
       logsvr log_server(loghost_, logport_);
-
       if (log_server.ok()) {
-         std::auto_ptr<ecf_dir> dir(log_server.getdir(path));
-         if (dir.get()) {
-            l.scan(dir.get());
-            // return; // 20151115 add both remote + local?
+	std::auto_ptr<ecf_dir> rdir(log_server.getdir(path));
+	if (rdir.get()) {
+	  l.scan(rdir.get());
          }
       }
    }
 
    if (path && direct_read_) {
-
       const char* p = path;
       const char* q = 0;
-
       while ( *p ) {
          if (*p == '/') q = p;
          p++;
@@ -623,9 +623,9 @@ void host::dir( node& n, const char* path, lister<ecf_dir>& l )
             c++;
          }
 
-         std::auto_ptr<ecf_dir> dir(ecf_file_dir(dirname, basename, true));
-         if (dir.get()) {
-            l.scan(dir.get());
+         std::auto_ptr<ecf_dir> ldir (ecf_file_dir(dirname, basename, true));
+         if (ldir.get()) {
+	   l.scan(ldir.get());
          }
       }
    }
@@ -777,7 +777,7 @@ bool ehost::create_tree( int hh, int min, int sec )
    XECFDEBUG {
       time_t now;
       time(&now);
-      struct tm* then = localtime(&now);
+      struct tm* then = gmtime(&now); // localtime(&now);
       then_sec = then->tm_sec;
       gui::message("%s: build %02d:%02d:%02d",
 		   this->name(), then->tm_hour, then->tm_min, then->tm_sec);
@@ -791,9 +791,9 @@ bool ehost::create_tree( int hh, int min, int sec )
    node *top = make_xnode<Defs>(client_.defs().get(), 0x0, *this);
 
    XECFDEBUG {
-      time_t nnow;
-      time(&nnow);
-      struct tm* next = localtime(&nnow);
+      time_t now;
+      time(&now);
+      struct tm* next = gmtime(&now); // localtime(&nnow);
       if (then_sec != next->tm_sec) 
 	printf("# time blt: %02d:%02d:%02d %s\n", 
 	       next->tm_hour, next->tm_min, next->tm_sec, this->name());
@@ -831,7 +831,7 @@ void ehost::reset( bool full, bool sync )
    if (!connected_ || !connect_) return;
    time_t now;
    time(&now);
-   struct tm* curr = localtime(&now);
+   struct tm* curr = gmtime(&now); // localtime(&now);
    gui::message("%s: full tree %02d:%02d:%02d", 
 		this->name(), curr->tm_hour, curr->tm_min, curr->tm_sec);
    SelectNode select(this->name());
@@ -875,7 +875,7 @@ void ehost::reset( bool full, bool sync )
    XECFDEBUG {
       time_t now;
       time(&now);
-      struct tm* curr = localtime(&now);
+      struct tm* curr = gmtime(&now); // localtime(&now);
       hour = curr->tm_hour, min = curr->tm_min, sec = curr->tm_sec;
       gui::message("%s: start %02d:%02d:%02d", this->name(), hour, min, sec);
    }
@@ -1159,7 +1159,6 @@ struct dup_slash { // INT-74
 
 tmp_file ehost::sfile( node& n, std::string name )
 {
-  // set_loghost(n); 
    return host::sfile(n, name);
 }
 
@@ -1173,7 +1172,7 @@ tmp_file host::sfile( node& n, std::string name )
    if (std::string::npos == pos && loghost_ != ecf_node::none()) {
       logsvr log_server(loghost_, logport_);
       if (log_server.ok()) {
-         tmp_file tmp = log_server.getfile(name);
+ 	 tmp_file tmp(log_server.getfile(name));
          if (access(tmp.c_str(), R_OK) == 0) return tmp;
       }
    }
@@ -1255,7 +1254,7 @@ bool check_version( const std::string& server_version,  const std::string& viewe
    // We know viewer version 4.1.0 is still compatible with old server versions 4.0.x
 //   cout  << "server version '" << server_version << "'\n";
 //   cout  << "viewer version '" << viewer_version << "'\n";
-   if (viewer_version == "4.1.0" && server_version.find("4.0.") != std::string::npos) {
+   if (viewer_version.find("4.1.") != std::string::npos && server_version.find("4.0.") != std::string::npos) {
       return true;
    }
 
@@ -1321,6 +1320,7 @@ void ehost::login()
           }
       }
       else {
+	if (0)  // activate when an new release introduces loss of compat
          if (!check_version(server_version, ecf::Version::raw())) {
             if (!confirm::ask(
 		     false,
@@ -1369,6 +1369,7 @@ tmp_file ehost::file(node& n, std::string name)
 {
   std::string error;
   bool read = direct_read_;
+  std::string no_script = n.variable("ECF_NO_SCRIPT");
   name.erase(std::unique(name.begin(), name.end(), dup_slash()), name.end()); // INT-74
 
   if (name == "ECF_SCRIPT") {
@@ -1376,30 +1377,39 @@ tmp_file ehost::file(node& n, std::string name)
       "check ECF_FILES or ECF_HOME directories, for read access\n"
       "check for file presence and read access below files directory\n"
       "or this may be a 'dummy' task.\n";    
+    if (no_script != ecf_node::none())
+      error = "ECF_NO_SCRIPT! no script to be found, look at ECF_JOB_CMD";
   } else if (name == "ECF_JOB") {
     std::string filename = n.variable(name);
     if (read && (access(filename.c_str(), R_OK) == 0))
       return tmp_file(filename.c_str(), false);
+    else if (no_script != ecf_node::none()) {
+      error = "ECF_NO_SCRIPT! no script to be found, look at ECF_JOB_CMD";
+    } else if (std::string::npos != filename.find(".job0")) {
+      error = "job0: no job to be generated yet!";
+	// return tmp_file(error);
+    } else 
+      error = "no script!\n"
+	"check ECF_HOME,directory for read/write access\n"
+	"check for file presence and read access below\n"
+	"The file may have been deleted\n"
+	"or this may be a 'dummy' task.\n";    
 
-    if (std::string::npos != filename.find(".job0")) {
-	error = "job0: no job to be generated yet!";
-	return tmp_file(error);
-      } else 
-	  error = "no script!\n"
-      "check ECF_HOME,directory for read/write access\n"
-      "check for file presence and read access below\n"
-      "The file may have been deleted\n"
-      "or this may be a 'dummy' task.\n";    
   } else if (boost::algorithm::ends_with(name, ".0")) {
     error = "no output to be expected when TRYNO is 0!\n";
-    return tmp_file(error);
+    // return tmp_file(error);
+
   } else if (name != ecf_node::none()) { // Try logserver
-    // set_loghost(n); 
+    if (n.isCmdFailed()) {
+      error = "Submission command Failed! check .sub file, ssh, or queueing system error";
+      // return tmp_file(error);      
+    } else if (no_script != ecf_node::none()) {
+      error = "ECF_NO_SCRIPT! no script to be found, look at ECF_JOB_CMD";
+    } else {
       std::string::size_type pos = loghost_.find(n.variable("ECF_MICRO"));
       std::string content;
       if (use_ecf_out_cmd(n, name, NULL, content)) {
-	tmp_file tmp(content); // tmpnam(NULL));
-	// tmp << content;
+	tmp_file tmp(content);
 	return tmp;
       } else if (std::string::npos == pos && loghost_ != ecf_node::none()) {
          logsvr log_server(loghost_, logport_);
@@ -1408,6 +1418,7 @@ tmp_file ehost::file(node& n, std::string name)
             if (access(tmp.c_str(), R_OK) == 0) return tmp;
          }
       }
+    }
    }
    if (read && (access(name.c_str(), R_OK) == 0)) {
       return tmp_file(name.c_str(), false);
@@ -1420,11 +1431,11 @@ tmp_file ehost::file(node& n, std::string name)
 	   client_.file(n.full_name(), "job", 
 			boost::lexical_cast<std::string>(jobfile_length_));
 	 }
-         else if (name == "ECF_JOBOUT")
+         else // if (name == "ECF_JOBOUT")
             client_.file(n.full_name(), "jobout");
-         else {
-            client_.file(n.full_name(), "jobout");
-         }
+         //else {
+         //   client_.file(n.full_name(), "jobout");
+         //}
 
          // Do *not* assign 'client_.server_reply().get_string()' to a separate string, since
          // in the case of job output the string could be several megabytes.
@@ -1436,12 +1447,15 @@ tmp_file ehost::file(node& n, std::string name)
          gui::message("host::file-error: %s", e.what());
       }
    }
-
+   if (n.isCmdFailed()) {
+      error = "Submission command Failed! check .sub file, ssh, or queueing system error";
+   }
    return tmp_file(error);
 }
 
 tmp_file ehost::edit( node& n, std::list<Variable>& l, Boolean preproc )
-{
+{  
+   std::string no_script = n.variable("ECF_NO_SCRIPT");
    gui::message("%s: fetching source", this->name());
    try {
       if (preproc)
@@ -1469,7 +1483,10 @@ tmp_file ehost::edit( node& n, std::list<Variable>& l, Boolean preproc )
 "client must be capable to create temporary file:\n"
 "\tcheck /tmp directory with write access, and space available,\n"
 "or preprocessed file may be truncated beyond some size.\n";
-   return tmp_file(error);
+  if (no_script != ecf_node::none()) {
+    error = "ECF_NO_SCRIPT! no script to be found, look at ECF_JOB_CMD";
+  }
+  return tmp_file(error);
 }
 
 tmp_file host::manual( node& n )
@@ -1646,17 +1663,16 @@ int ehost::update()
 
       time_t now;
       time(&now);
-      struct tm* curr = localtime(&now);
+      struct tm* curr = gmtime(&now); // localtime(&now);
       gui::message("%s: checking status %02d:%02d:%02d",
 		   this->name(), curr->tm_hour, curr->tm_min, curr->tm_sec);
       client_.news_local(); // call the server
       if (tree_) tree_->connected(True);
 
       XECFDEBUG {
-         struct tm* next;
          time_t now;
          time(&now);
-         next = localtime(&now);
+         struct tm* next = gmtime(&now); // localtime(&now);
          if (curr->tm_sec != next->tm_sec) {
             printf("# time chk: %02d:%02d:%02d %s\n", 
 		   curr->tm_hour, curr->tm_min, curr->tm_sec, this->name());
diff --git a/view/src/label.cc b/view/src/label.cc
index 421e992..01bba05 100644
--- a/view/src/label.cc
+++ b/view/src/label.cc
@@ -39,14 +39,18 @@ xmstring label_node::make_label_tree()
 
 void label_node::drawNode(Widget w,XRectangle* r,bool)
 {
-  std::string msg = value();
-  boost::algorithm::to_lower(msg);
-  bool red = std::string::npos != msg.find("error");
-
+  std::string info = value();
+  boost::algorithm::to_lower(info);
+  GC gc;
+  if (std::string::npos != info.find("err"))      gc = redGC();
+  else if (std::string::npos != info.find("war")) gc = gui::orangeGC();
+  else if (std::string::npos != info.find("ok"))  gc = greenGC();
+  else if (std::string::npos != info.find("msg")) gc = blueGC();
+  else gc = blackGC();
     XmStringDraw(XtDisplay(w),XtWindow(w),
         smallfont(),
         labelTree(),
-        red ? redGC() : blackGC(),
+		 gc, // red ? redGC() : blackGC(),
         r->x+2,
         r->y+2,
         r->width,
diff --git a/view/src/libui/uitop.cc b/view/src/libui/uitop.cc
index 349e5c6..216214c 100644
--- a/view/src/libui/uitop.cc
+++ b/view/src/libui/uitop.cc
@@ -153,7 +153,7 @@ void top_shell_c::create (Display *display, char *app_name, int app_argc, char *
 	Widget toggle15 = (Widget)NULL;
 	Widget toggle16 = (Widget)NULL;
 	Widget toggle17 = (Widget)NULL;
-	// Widget toggle18 = (Widget)NULL;
+	Widget toggle18 = (Widget)NULL;
 	Widget toggle19 = (Widget)NULL;
 	Widget toggle20 = (Widget)NULL;
 	Widget cascade5 = (Widget)NULL;
@@ -176,7 +176,7 @@ void top_shell_c::create (Display *display, char *app_name, int app_argc, char *
         Widget toggle68 = (Widget)NULL;
 	Widget toggle69 = (Widget)NULL;
         Widget toggle70 = (Widget)NULL;
-        // Widget toggle71 = (Widget)NULL;
+        Widget toggle71 = (Widget)NULL;
         Widget toggle72 = (Widget)NULL;
         // Widget toggle74 = (Widget)NULL; Widget toggle75 = (Widget)NULL; Widget toggle76 = (Widget)NULL; Widget toggle77 = (Widget)NULL;
         Widget toggle78 = (Widget)NULL;
@@ -481,12 +481,12 @@ XtSetArg(al[ac],XmNmnemonic,'m'); ac++;        /* mnemonic */
 	xmstrings[0] = XmStringCreateLtoR ( "Waiting nodes", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG );
 	XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++;
 	toggle17 = XmCreateToggleButton ( show2_, "toggle17", al, ac );
-	/* ac = 0;
+	ac = 0;
 	XmStringFree ( xmstrings [ 0 ] );
 	XtSetArg(al[ac], XmNuserData, new show(show::migrated_nodes)); ac++;
 	xmstrings[0] = XmStringCreateLtoR ( "Migrated nodes", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG );
 	XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++;
-	toggle18 = XmCreateToggleButton ( show2_, "toggle18", al, ac ); */
+	toggle18 = XmCreateToggleButton ( show2_, "toggle18", al, ac );
 	ac = 0;
 	XmStringFree ( xmstrings [ 0 ] );
 	XtSetArg(al[ac], XmNuserData, new show(show::rerun_tasks)); ac++;
@@ -609,12 +609,12 @@ XtSetArg(al[ac],XmNmnemonic,'m'); ac++;        /* mnemonic */
 	xmstrings[0] = XmStringCreateLtoR ( "Rerun icons", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG );
 	XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++;
 	toggle70 = XmCreateToggleButton ( show3_, "rerun_icon", al, ac );
-	/* ac = 0;
+	ac = 0;
 	XmStringFree ( xmstrings [ 0 ] );
 	XtSetArg(al[ac], XmNuserData, new show(show::migrated_icon)); ac++;
 	xmstrings[0] = XmStringCreateLtoR ( "Migrated icons", (XmStringCharSet)XmFONTLIST_DEFAULT_TAG );
 	XtSetArg(al[ac], XmNlabelString, xmstrings[0]); ac++;
-	toggle71 = XmCreateToggleButton ( show3_, "migrated_icon", al, ac ); */
+	toggle71 = XmCreateToggleButton ( show3_, "migrated_icon", al, ac );
 	ac = 0;
 	XmStringFree ( xmstrings [ 0 ] );
 	XtSetArg(al[ac], XmNuserData, new show(show::message_icon)); ac++;
@@ -830,7 +830,7 @@ XtSetArg(al[ac],XmNmnemonic,'m'); ac++;        /* mnemonic */
 	children[ac++] = toggle15;
 	children[ac++] = toggle16;
 	children[ac++] = toggle17;
-	// children[ac++] = toggle18;
+	children[ac++] = toggle18;
 	children[ac++] = toggle19;
 	children[ac++] = toggle20;
 	XtManageChildren(children, ac);
@@ -862,7 +862,7 @@ XtSetArg(al[ac],XmNmnemonic,'m'); ac++;        /* mnemonic */
 	children[ac++] = toggle68;
 	children[ac++] = toggle69;
         children[ac++] = toggle70;
-        // children[ac++] = toggle71;
+        children[ac++] = toggle71;
         children[ac++] = toggle72;
         children[ac++] = toggle78;
         children[ac++] = toggle79;
diff --git a/view/src/log_event.cc b/view/src/log_event.cc
index 4f7d411..85e3404 100644
--- a/view/src/log_event.cc
+++ b/view/src/log_event.cc
@@ -93,7 +93,8 @@ void log_event::load(host& h,const char* name,bool reset)
       gn = h.top();
       std::string varlog = gn->variable("ECF_LOG");
       std::string varhom = gn->variable("ECF_HOME");
-      std::string varnod = gn->variable("ECF_NODE");   
+      std::string varnod = gn->variable("ECF_NODE");
+      if (varnod.empty() || varnod == "%ECF_HOST%") varnod = gn->variable("ECF_HOST");
 
       if (gn->variable("ECF_PORT") == ecf_node::none()) {
 	varlog = gn->variable("SMSLOG");
diff --git a/view/src/logsvr.cc b/view/src/logsvr.cc
index 77c1e56..2daed8d 100644
--- a/view/src/logsvr.cc
+++ b/view/src/logsvr.cc
@@ -73,6 +73,9 @@ void logsvr::connect(std::string host,int port)
 
 	struct sockaddr_in s_in;
 	struct hostent *him;
+	struct timeval tv;
+	tv.tv_sec = 5;
+	tv.tv_usec = 0;
 
 	soc_ = socket(AF_INET, SOCK_STREAM, 0);
 	if(soc_ < 0)
@@ -82,7 +85,7 @@ void logsvr::connect(std::string host,int port)
 	}
 
 	bzero(&s_in,sizeof(s_in));
-
+	setsockopt(soc_, SOL_SOCKET, SO_RCVTIMEO, (char*)&tv, sizeof(struct timeval));
 	s_in.sin_port = htons(port);
 	s_in.sin_family = AF_INET;
 	addr = inet_addr(host.c_str());
@@ -144,60 +147,53 @@ logsvr::~logsvr()
 tmp_file logsvr::getfile(std::string name)
 {
   tmp_file empty((char*)"",false);
-  if(soc_ < 0)
+  if(soc_ < 0) return empty;
+
+  write(soc_,"get ",4);	
+  write(soc_,name.c_str(),name.size());
+  write(soc_,"\n",1);	
+
+  const int size = 64*1024;
+  char buf[size];
+  unsigned int len = 0;
+  int total = 0;
+
+  tmp_file out(tmpnam(NULL), true);
+  FILE *f = fopen(out.c_str(),"w");
+  
+  if(!f) {
+    char buf[2048];
+    sprintf(buf,"Cannot create %s",out.c_str());
+    gui::syserr(buf);
     return empty;
-
-	write(soc_,"get ",4);	
-	write(soc_,name.c_str(),name.size());
-	write(soc_,"\n",1);	
-
-	const int size = 64*1204;
-	char buf[size];
-	unsigned int len = 0;
-	int total = 0;
-
-	tmp_file out(tmpnam(NULL));
-	FILE *f = fopen(out.c_str(),"w");
-
-	if(!f)
-	{
-	  char buf[2048];
-	  sprintf(buf,"Cannot create %s",out.c_str());
-	  gui::syserr(buf);
-	  return empty;
-	}
+  }
 	
-	while( (len = read(soc_,buf,size)) > 0)
-	{
-	  if(fwrite(buf,1,len,f) != len)
-	    {
-	      char buf[2048];
-	      sprintf(buf,"Write error on %s",out.c_str());
-	      gui::syserr(buf);
-	      fclose(f);
-	      return empty;
-	    }
-	  total += len;
-	}
-
-	sprintf(buf, "\n# served by %s@%s # telnet %s %s # get %s",
+  while( (len = read(soc_,buf,size)) > 0) {
+    if(fwrite(buf,1,len,f) != len) {
+      char buf[2048];
+      sprintf(buf,"Write error on %s",out.c_str());
+      gui::syserr(buf);
+      fclose(f);
+      return empty;
+    }
+    total += len;
+  }
+
+  sprintf(buf, "\n# served by %s@%s # telnet %s %s # get %s\n",
 		host_.c_str(), port_.c_str(), 
 		host_.c_str(), port_.c_str(), 
 		name.c_str());
-	fwrite(buf,1,size,f);
+  fwrite(buf,1,size,f);
 
-	if(fclose(f))
-	{
-	  char buf[2048];
-	  sprintf(buf,"Write error on %s",out.c_str());
-	  gui::syserr(buf); 
-	  return empty;
-	}
-
-	if(total)
-		return out;
+  if(fclose(f))	{
+    char buf[2048];
+    sprintf(buf,"Write error on %s",out.c_str());
+    gui::syserr(buf); 
+    return empty;
+  }
 
-	return empty;
+  if(total) return out;
+  return empty;
 }
 
 ecf_dir *logsvr::getdir(const char* name)
diff --git a/view/src/node.h b/view/src/node.h
index 66f4539..eb45cec 100644
--- a/view/src/node.h
+++ b/view/src/node.h
@@ -275,6 +275,7 @@ public:
 
 	static GC         blackGC()      { return gui::blackGC();   }
 	static GC         blueGC()       { return gui::blueGC();    }
+	static GC         greenGC()      { return gui::greenGC();   }
 	static GC         redGC()        { return gui::redGC();     }
 	static XmFontList smallfont()    { return gui::smallfont(); }
 	static XmFontList fontlist()     { return gui::fontlist();  }
diff --git a/view/src/node_window.cc b/view/src/node_window.cc
index 70afa47..b85fdf7 100644
--- a/view/src/node_window.cc
+++ b/view/src/node_window.cc
@@ -216,8 +216,8 @@ void node_window::click(XEvent* event)
   
   switch(button) {
   case 1: raw_click1(event,x); break;
-  case 2:	raw_click2(event,x); break;
-  case 3:	raw_click3(event,x); break;
+  case 2: raw_click2(event,x); break;
+  case 3: raw_click3(event,x); break;
   default: keypress(event);
   }
 }
diff --git a/view/src/panel_window.cc b/view/src/panel_window.cc
index c7c17cf..508fd55 100644
--- a/view/src/panel_window.cc
+++ b/view/src/panel_window.cc
@@ -62,7 +62,7 @@ panel_window::panel_window(panel_window* other):
 	load_size();
 	XtRealizeWidget(panel_top);
 	XmToggleButtonSetState(detached_,other->detached(),True);
-	XmToggleButtonSetState(frozen_,other->frozen(),True);
+	// XmToggleButtonSetState(frozen_, XmToggleButtonGetState(other->frozen()),  True);
 	XmToggleButtonSetState(close_on_apply_,
 		XmToggleButtonGetState(other->close_on_apply_),True);
 }
diff --git a/view/src/repeat.h b/view/src/repeat.h
index 35c1e2f..81101c2 100644
--- a/view/src/repeat.h
+++ b/view/src/repeat.h
@@ -25,28 +25,28 @@ class repeat_date_node : public repeat_node {
   }
 
   virtual int current() const {
-    if (owner_ && get()) { 
-      int cur = (ecf_repeat_date_to_julian(get()->index_or_value()) -
-		 ecf_repeat_date_to_julian(start())) / step();
-      int gui = ecf_repeat_julian_to_date(ecf_repeat_date_to_julian(start()) + cur * step());
-      
-      if (get()->index_or_value() != gui) {
-	std::stringstream ss;
-	ss << "# WAR repeat value does not match: " 
-		  << get()->index_or_value()
-		  << ", gui "   << gui
-		  << ", index " << cur
-		  << ", start " << start()
-		  << ", last "   << last()
-		  << ", step "  << step() << "\n";    
-
-	std::string msg (ss.str());
-	serv().command(clientName, "--msg", msg.c_str(), NULL);
-	std::cerr << ss;
-      }
-      return cur;
-    }
-    return repeat_node::current(); }
+     if (owner_ && get()) {
+        int cur = (ecf_repeat_date_to_julian(get()->index_or_value()) -
+              ecf_repeat_date_to_julian(start())) / step();
+        int gui = ecf_repeat_julian_to_date(ecf_repeat_date_to_julian(start()) + cur * step());
+
+        if (get()->index_or_value() != gui) {
+           std::stringstream ss;
+           ss << "# WAR repeat value does not match: "
+                 << get()->index_or_value()
+                 << ", gui "   << gui
+                 << ", index " << cur
+                 << ", start " << start()
+                 << ", last "   << last()
+                 << ", step "  << step() << "\n";
+
+           std::string msg (ss.str());
+           serv().command(clientName, "--msg", msg.c_str(), NULL);
+           std::cerr << msg;
+        }
+        return cur;
+     }
+     return repeat_node::current(); }
 
   virtual void value(char* n,int i) const {
     if (n) {
diff --git a/view/src/scripting.cc b/view/src/scripting.cc
index f1f02ca..8525ea0 100644
--- a/view/src/scripting.cc
+++ b/view/src/scripting.cc
@@ -117,6 +117,7 @@ int process_command(const char *cmd) {
   } else if (!strncmp("menu", cmd, 4)) {
     menu_cmd(cmd);
 
+
   } else if (!strncmp("quit", cmd, 4)) {
     quit_cmd();
 
@@ -127,6 +128,23 @@ int process_command(const char *cmd) {
 	login_cmd(host);
       }
 
+
+  } else if (!strncmp("output", cmd, 6)) {
+      char node[2048] = { 0, };
+      char path[2048] = { 0, };
+      // sscanf(cmd, "output %s", node, path);
+      if (node[0] != 0 && path[0] != 0) {
+	// panel_window::new_window(selection::current_node(),"Output",detached,frozen);
+      }
+      // host::sfile(node, path);
+  } else if (!strncmp("dir", cmd, 3)) {
+      char node[2048] = { 0, };
+      char path[2048] = { 0, };
+      // sscanf(cmd, "dir %s %d", node, path);
+      if (node[0] != 0 && path[0] != 0) {
+	/* */
+      }
+
   } else if (!strncmp("logout", cmd, 6)) {
       char host[80] = { 0, };
       sscanf(cmd, "logout %s", host);
diff --git a/view/src/show.cc b/view/src/show.cc
index c04ff53..6079731 100644
--- a/view/src/show.cc
+++ b/view/src/show.cc
@@ -27,7 +27,7 @@ option<int> show::status_ (globals::instance(), "show_mask",
 			     |(1<<show::aborted)  
 			     |(1<<show::time_dependant) 
 			     |(1<<show::late_nodes)    
-			   //			     |(1<<show::migrated_nodes)
+  			     |(1<<show::migrated_nodes)
 			     |(1<<show::rerun_tasks)   
 			     |(1<<show::nodes_with_messages) 
 			     |(1<<show::label)     
@@ -47,7 +47,7 @@ option<int> show::status_ (globals::instance(), "show_mask",
 			     |(1<<show::late_icon) 
 			     |(1<<show::waiting_icon) 
 			     |(1<<show::rerun_icon) 
-			   // |(1<<show::migrated_icon) 
+			     |(1<<show::migrated_icon) 
 			     |(1<<show::message_icon)
  // & (~(1<<show::defstatus_icon)) & (~(1<<show::zombie_icon))
 			     ); 
diff --git a/view/src/simple_node.cc b/view/src/simple_node.cc
index de79413..27ce6b1 100644
--- a/view/src/simple_node.cc
+++ b/view/src/simple_node.cc
@@ -391,6 +391,20 @@ void simple_node::info(std::ostream& f)
       if (defs != STATUS_QUEUED && defs != STATUS_UNKNOWN)
         f << inc << "defstatus " << ecf::status_name[defs] << "\n";
 
+      if (ecfFlag(FLAG_FORCE_ABORT)) f << inc << "# flag force_aborted\n";
+      if (ecfFlag(FLAG_USER_EDIT)) f << inc << "# flag user_edit\n";
+      if (ecfFlag(FLAG_EDIT_FAILED)) f << inc << "# flag edit_failed\n";
+      if (ecfFlag(FLAG_CMD_FAILED)) f << inc << "# flag cmd_failed\n";
+      if (ecfFlag(FLAG_NO_SCRIPT)) f << inc << "# flag no_script\n";
+      if (ecfFlag(FLAG_KILLED)) f << inc << "# flag klled\n";
+      if (isMigrated())	f << inc << "# flag migrated\n";
+      if (ecfFlag(FLAG_LATE)) f << inc << "# flag late\n";
+      if (hasMessages()) f << inc << "# flag message\n";
+      if (ecfFlag(FLAG_QUEUELIMIT)) f << inc << "# flag queue_limit\n";
+      if (ecfFlag(FLAG_WAIT)) f << inc << "# flag task_waiting\n";
+      if (ecfFlag(FLAG_LOCKED)) f << inc << "# flag locked\n";
+      if (isZombie()) f << inc << "# flag zombie\n";
+
       Node* node = owner_->get_node();
       if (node) {
         // if (node->repeat().toString() != "") // repeat // duplicated on suite node
@@ -579,7 +593,7 @@ public:
   virtual void visitLessThan(AstLessThan*){}
   virtual void visitLeaf(AstLeaf*){}
   virtual void visitInteger(AstInteger*){}
-  virtual void visitString(AstString*){}
+  virtual void visitFunction(AstFunction*){}
   virtual void visitNodeState(AstNodeState*){}
   virtual void visitEventState(AstEventState*);
   virtual void visitNode(AstNode*);
@@ -733,6 +747,10 @@ Boolean simple_node::ecfFlag(int n) const
 
 Boolean simple_node::show_it() const
 {
+  if(parent())
+    if(parent()->isMigrated())
+      return False;
+
   if(show::want(show::time_dependant) && (hasDate() || hasTime()))
     return True;
   
@@ -781,6 +799,9 @@ Boolean simple_node::visible() const
       gui::message("# problem with selection?");
       gui::message(e.what());      
   }
+  if(parent())
+    if(parent()->isMigrated())
+      return False;
 
   if((wanted < 32 && (show::want(wanted))) || show::want32(wanted)) 
     return True;
diff --git a/view/src/suites_panel.cc b/view/src/suites_panel.cc
index 4b71e70..690f169 100644
--- a/view/src/suites_panel.cc
+++ b/view/src/suites_panel.cc
@@ -97,7 +97,9 @@ void suite_lister2::next(suite_lister2&)
 
 void suites_panel::show(node& n)
 {
-  if (done) return; done = true; clear();
+  if (done) return;
+  done = true;
+  clear();
   // XmListDeleteAllItems(list_);  
   { std::vector<std::string> sv1; n.serv().suites(SUITES_LIST,sv1); 
     suite_lister1 sl1(list_, sv1); sl1.run(); }
diff --git a/view/src/task_node.cc b/view/src/task_node.cc
index bd093ed..58df68b 100644
--- a/view/src/task_node.cc
+++ b/view/src/task_node.cc
@@ -23,6 +23,10 @@
 #include "re.h"
 #include "ecf_node.h"
 
+#ifndef tip_H
+#include "tip.h"
+#endif
+
 char *ecf_flag_name[]  = { (char*)"has been forced to aborted",
       (char*)"user edit failed",
       (char*)"the job failed",
@@ -55,6 +59,7 @@ task_node::task_node(host& h,ecf_node* n):
   } else {
     folded_ = True; 
   }
+  // tip::makeTips(this->getBox());
 }
 
 
diff --git a/view/src/tmp_file.cc b/view/src/tmp_file.cc
index 9cecfa0..73c3ac6 100644
--- a/view/src/tmp_file.cc
+++ b/view/src/tmp_file.cc
@@ -56,7 +56,7 @@ tmp_file::tmp_file(const std::string& p,bool del):
   std::ofstream f (imp_->str());
   if (f.is_open())
     { 
-      f << p; 
+      f << p << "\0"; 
       f.close(); 
     }
 }
@@ -99,9 +99,7 @@ char * tmpnam(char *) __THROW {
   if (!path || !access(path, R_OK))
     path=(char*)"/tmp";
   snprintf(s, 128, "%s/%sXXXXXX", path, appName);
-  // int fid = 
-    mkstemp(s);
-  // return s = tempnam(path, appName);
+  mkstemp(s);
   return s;
 }
 
diff --git a/view/src/tmp_file.h b/view/src/tmp_file.h
index 1b50bea..b27ed80 100644
--- a/view/src/tmp_file.h
+++ b/view/src/tmp_file.h
@@ -70,11 +70,9 @@ class tmp_file {
   
   tmp_file& operator=(const tmp_file&);
   
-  const char* c_str(); /* { if (imp_) return imp_->str(); 
-			  return load.c_str();} */
+  const char* c_str(); 
 
 private:
-
   tmp_file_imp* imp_;
 };
 
diff --git a/view/src/variables.cc b/view/src/variables.cc
index 551e156..37e6f82 100644
--- a/view/src/variables.cc
+++ b/view/src/variables.cc
@@ -209,7 +209,7 @@ void variables::show( node& n )
                for(it = gvar.begin(); it !=  gvar.end(); ++it) {
 		  const std::string& name = (*it).name();
 		  if (std::find(shown.begin(), shown.end(), name) == shown.end()) {
-		    bool readOnly = name=="ECF_NODE" || name=="ECF_PORT" ||
+		    bool readOnly = name=="ECF_NODE" || name=="ECF_HOST" || name=="ECF_PORT" ||
 		      name=="ECF_LISTS" || // security ???
 		      name=="ECF_PID"  || name=="ECF_VERSION";
 		    snprintf(buffer, 1024, readOnly ? fmt3 : fmt1, 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/ecflow.git



More information about the debian-science-commits mailing list