Why you might need support

Most of our Human Resources Management work is business-as-usual:-

  • recruitment and selection
  • salaries and payroll
  • disciplinary and grievance
  • learning and development
  • restructuring and redundancy

Then along comes an HR project:-

  • identify, implement and supervise an HRIS (Human Resources Information System) - the new HR database
  • review policies and procedures and make them accessible on-line through the intranet or on a company website
  • introduce e-learning and a Learning Management System

Suddenly it's as much about project management and IT systems as Human Resources Management - and yet you have to get on with the day job.

The best single piece of advice is: appoint a Project Manager for any HR Project.  It can be you, a member of your HR team, someone else in the company or someone external as a consultant or on an interim contract.  If you are the Project Manager, you will need to delegate some of your 'other' work or it is very likely the project timetable will slip or your 'other' work will suffer.  Similarly if it's someone from your team.  A Project Manager does not have to be qualified - it may help if they are - but you/they need to be able to plan, focus, prioritise, trouble shoot, influence/nag others including IT and the vendor and as much as possible, keep calm! 

This website is intended to give you some support throughout your HR Project, with some ideas, links to useful websites and helpful articles. In particular if you are considering implementation of a new or updated HRIS, check out our HRIS summary page and review of basic HRIS choices.

If you want more help, get in contact.  We're HR professionals that have developed some project and IT expertise as we have had to manage our own HR projects when employed and now for external clients.

6MBMemory Usage318msRequest Duration
Joomla! Version4.2.6
PHP Version8.0.30
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.11.13-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
[]
$_COOKIE
[]
$_SERVER
array:61 [ "CONTEXT_DOCUMENT_ROOT" => "/home/hradvise/public_html" "CONTEXT_PREFIX" => "" "DOC...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1750892439 "last" => 1750892439...
registry
array:3 [ "data" => [] "initialized" => false "separator" => "." ]
user
array:18 [ "id" => 0 "name" => null "username" => null "email" => null "password" => "***r...
PHPDEBUGBAR_STACK_DATA
[]
  • afterLoad (874.67KB) (53.5ms)
  • afterInitialise (2.23MB) (111ms)
  • afterRoute (60.23KB) (8.39ms)
  • beforeRenderComponent com_content (256.77KB) (17.66ms)
  • Before Access::preloadComponents (all components) (197.27KB) (11.35ms)
  • After Access::preloadComponents (all components) (112.01KB) (1.1ms)
  • Before Access::preloadPermissions (com_content) (2.76KB) (39μs)
  • After Access::preloadPermissions (com_content) (9.67KB) (599μs)
  • Before Access::getAssetRules (id:66 name:com_content.article.4) (56B) (112μs)
  • After Access::getAssetRules (id:66 name:com_content.article.4) (9.95KB) (582μs)
  • afterRenderComponent com_content (581.56KB) (38.92ms)
  • afterDispatch (3.08KB) (207μs)
  • beforeRenderRawModule mod_finder (smart search) (348.47KB) (11.01ms)
  • afterRenderRawModule mod_finder (smart search) (160.88KB) (14.22ms)
  • beforeRenderRawModule mod_menu (Main Menu) (2.71KB) (107μs)
  • afterRenderRawModule mod_menu (Main Menu) (104.9KB) (6.71ms)
  • beforeRenderRawModule mod_rssocial (RSSocial!) (48.89KB) (180μs)
  • afterRenderRawModule mod_rssocial (RSSocial!) (121.02KB) (2.68ms)
  • beforeRenderRawModule mod_footer (Footer) (49.47KB) (111μs)
  • afterRenderRawModule mod_footer (Footer) (7.6KB) (860μs)
  • beforeRenderModule mod_footer (Footer) (2.25KB) (764μs)
  • afterRenderModule mod_footer (Footer) (2.93KB) (230μs)
  • beforeRenderModule mod_finder (smart search) (464B) (58μs)
  • afterRenderModule mod_finder (smart search) (3.38KB) (399μs)
  • beforeRenderModule mod_menu (Main Menu) (2.68KB) (121μs)
  • afterRenderModule mod_menu (Main Menu) (2.8KB) (138μs)
  • beforeRenderModule mod_rssocial (RSSocial!) (47.84KB) (117μs)
  • afterRenderModule mod_rssocial (RSSocial!) (2.45KB) (59μs)
  • afterRender (143.19KB) (13.31ms)
  • 1 x afterInitialise (2.23MB) (34.84%)
    110.81ms
    1 x afterLoad (874.67KB) (16.82%)
    53.50ms
    1 x afterRenderComponent com_content (581.56KB) (12.24%)
    38.92ms
    1 x beforeRenderComponent com_content (256.77KB) (5.55%)
    17.66ms
    1 x afterRenderRawModule mod_finder (smart search) (160.88KB) (4.47%)
    14.22ms
    1 x afterRender (143.19KB) (4.19%)
    13.31ms
    1 x Before Access::preloadComponents (all components) (197.27KB) (3.57%)
    11.35ms
    1 x beforeRenderRawModule mod_finder (smart search) (348.47KB) (3.46%)
    11.01ms
    1 x afterRoute (60.23KB) (2.64%)
    8.39ms
    1 x afterRenderRawModule mod_menu (Main Menu) (104.9KB) (2.11%)
    6.71ms
    1 x afterRenderRawModule mod_rssocial (RSSocial!) (121.02KB) (0.84%)
    2.68ms
    1 x After Access::preloadComponents (all components) (112.01KB) (0.34%)
    1.10ms
    1 x afterRenderRawModule mod_footer (Footer) (7.6KB) (0.27%)
    860μs
    1 x beforeRenderModule mod_footer (Footer) (2.25KB) (0.24%)
    764μs
    1 x After Access::preloadPermissions (com_content) (9.67KB) (0.19%)
    599μs
    1 x After Access::getAssetRules (id:66 name:com_content.article.4) (9.95KB) (0.18%)
    582μs
    1 x afterRenderModule mod_finder (smart search) (3.38KB) (0.13%)
    399μs
    1 x afterRenderModule mod_footer (Footer) (2.93KB) (0.07%)
    230μs
    1 x afterDispatch (3.08KB) (0.07%)
    207μs
    1 x beforeRenderRawModule mod_rssocial (RSSocial!) (48.89KB) (0.06%)
    180μs
    1 x afterRenderModule mod_menu (Main Menu) (2.8KB) (0.04%)
    138μs
    1 x beforeRenderModule mod_menu (Main Menu) (2.68KB) (0.04%)
    121μs
    1 x beforeRenderModule mod_rssocial (RSSocial!) (47.84KB) (0.04%)
    117μs
    1 x Before Access::getAssetRules (id:66 name:com_content.article.4) (56B) (0.04%)
    112μs
    1 x beforeRenderRawModule mod_footer (Footer) (49.47KB) (0.03%)
    111μs
    1 x beforeRenderRawModule mod_menu (Main Menu) (2.71KB) (0.03%)
    107μs
    1 x afterRenderModule mod_rssocial (RSSocial!) (2.45KB) (0.02%)
    59μs
    1 x beforeRenderModule mod_finder (smart search) (464B) (0.02%)
    58μs
    1 x Before Access::preloadPermissions (com_content) (2.76KB) (0.01%)
    39μs
27 statements were executed, 2 of which were duplicates, 25 unique12.85ms142.53KB
  • SELECT @@SESSION.sql_mode;113μs1.59KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:293Copy
  • SELECT `data` FROM `josog_session` WHERE `session_id` = ?254μs1.61KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `josog_session` WHERE `session_id` = :session_id LIMIT 1135μs1.61KBParams/libraries/src/Session/MetadataManager.php:187Copy
  • INSERT INTO `josog_session` (`session_id`,`guest`,`time`,`userid`,`username`,`client_id`) VALUES (:session_id, :guest, :time, :user_id, :username, :client_id)1.05ms944BParams/libraries/src/Session/MetadataManager.php:260Copy
  • SELECT `extension_id` AS `id`,`element` AS `option`,`params`,`enabled` FROM `josog_extensions` WHERE `type` = 'component' AND `state` = 0 AND `enabled` = 1409μs5.36KB/libraries/src/Component/ComponentHelper.php:393Copy
  • SELECT `id`,`rules` FROM `josog_viewlevels`176μs1.11KB/libraries/src/Access/Access.php:955Copy
  • SELECT `b`.`id` FROM `josog_usergroups` AS `a` LEFT JOIN `josog_usergroups` AS `b` ON `b`.`lft` <= `a`.`lft` AND `b`.`rgt` >= `a`.`rgt` WHERE `a`.`id` = :guest173μs1.67KBParams/libraries/src/Access/Access.php:868Copy
  • SELECT `folder` AS `type`,`element` AS `name`,`params` AS `params`,`extension_id` AS `id` FROM `josog_extensions` WHERE `enabled` = 1 AND `type` = 'plugin' AND `state` IN (0,1) AND `access` IN (:preparedArray1,:preparedArray2) ORDER BY `ordering`713μs11.8KBParams/libraries/src/Plugin/PluginHelper.php:283Copy
  • SELECT `value` FROM `josog_admintools_storage` WHERE `key` = 'cparams'132μs2.07KB/administrator/components/com_admintools/src/Helper/Storage.php:119Copy
  • SELECT `option`,`view`,`query` FROM `josog_admintools_wafexceptions`141μs960B/plugins/system/admintools/src/Utility/Cache.php:195Copy
  • SELECT `m`.`id`,`m`.`menutype`,`m`.`title`,`m`.`alias`,`m`.`note`,`m`.`link`,`m`.`type`,`m`.`level`,`m`.`language`,`m`.`browserNav`,`m`.`access`,`m`.`params`,`m`.`home`,`m`.`img`,`m`.`template_style_id`,`m`.`component_id`,`m`.`parent_id`,`m`.`path` AS `route`,`e`.`element` AS `component` FROM `josog_menu` AS `m` LEFT JOIN `josog_extensions` AS `e` ON `m`.`component_id` = `e`.`extension_id` WHERE ( (`m`.`published` = 1 AND `m`.`parent_id` > 0 AND `m`.`client_id` = 0) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :currentDate1)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :currentDate2) ORDER BY `m`.`lft`562μs28.86KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT * FROM `josog_languages` WHERE `published` = 1 ORDER BY `ordering` ASC261μs2.44KB/libraries/src/Language/LanguageHelper.php:142Copy
  • SELECT `id`,`home`,`template`,`s`.`params`,`inheritable`,`parent` FROM `josog_template_styles` AS `s` LEFT JOIN `josog_extensions` AS `e` ON `e`.`element` = `s`.`template` AND `e`.`type` = 'template' AND `e`.`client_id` = `s`.`client_id` WHERE `s`.`client_id` = 0 AND `e`.`enabled` = 1350μs1.22KB/administrator/components/com_templates/src/Model/StyleModel.php:771Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `josog_assets` WHERE `name` IN (:preparedArray1,:preparedArray2,:preparedArray3,:preparedArray4,:preparedArray5,:preparedArray6,:preparedArray7,:preparedArray8,:preparedArray9,:preparedArray10,:preparedArray11,:preparedArray12,:preparedArray13,:preparedArray14,:preparedArray15,:preparedArray16,:preparedArray17,:preparedArray18,:preparedArray19,:preparedArray20,:preparedArray21,:preparedArray22,:preparedArray23,:preparedArray24,:preparedArray25,:preparedArray26,:preparedArray27,:preparedArray28,:preparedArray29,:preparedArray30,:preparedArray31,:preparedArray32,:preparedArray33,:preparedArray34,:preparedArray35,:preparedArray36,:preparedArray37,:preparedArray38,:preparedArray39,:preparedArray40,:preparedArray41,:preparedArray42)542μs10.25KBParams/libraries/src/Access/Access.php:357Copy
  • SELECT `id`,`name`,`rules`,`parent_id` FROM `josog_assets` WHERE `name` LIKE :asset OR `name` = :extension OR `parent_id` = 0336μs3.36KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `josog_content`836μs10.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:584Copy
  • UPDATE josog_content SET `hits` = (`hits` + 1) WHERE `id` = '4'1.33ms2.55KB/libraries/src/Table/Table.php:1319Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`alias`,`a`.`introtext`,`a`.`fulltext`,`a`.`state`,`a`.`catid`,`a`.`created`,`a`.`created_by`,`a`.`created_by_alias`,`a`.`modified`,`a`.`modified_by`,`a`.`checked_out`,`a`.`checked_out_time`,`a`.`publish_up`,`a`.`publish_down`,`a`.`images`,`a`.`urls`,`a`.`attribs`,`a`.`version`,`a`.`ordering`,`a`.`metakey`,`a`.`metadesc`,`a`.`access`,`a`.`hits`,`a`.`metadata`,`a`.`featured`,`a`.`language`,`fp`.`featured_up`,`fp`.`featured_down`,`c`.`title` AS `category_title`,`c`.`alias` AS `category_alias`,`c`.`access` AS `category_access`,`c`.`language` AS `category_language`,`fp`.`ordering`,`u`.`name` AS `author`,`parent`.`title` AS `parent_title`,`parent`.`id` AS `parent_id`,`parent`.`path` AS `parent_route`,`parent`.`alias` AS `parent_alias`,`parent`.`language` AS `parent_language`,ROUND(`v`.`rating_sum` / `v`.`rating_count`, 1) AS `rating`,`v`.`rating_count` AS `rating_count` FROM `josog_content` AS `a` INNER JOIN `josog_categories` AS `c` ON `c`.`id` = `a`.`catid` LEFT JOIN `josog_content_frontpage` AS `fp` ON `fp`.`content_id` = `a`.`id` LEFT JOIN `josog_users` AS `u` ON `u`.`id` = `a`.`created_by` LEFT JOIN `josog_categories` AS `parent` ON `parent`.`id` = `c`.`parent_id` LEFT JOIN `josog_content_rating` AS `v` ON `a`.`id` = `v`.`content_id` WHERE ( (`a`.`id` = :pk AND `c`.`published` > 0) AND (`a`.`publish_up` IS NULL OR `a`.`publish_up` <= :publishUp)) AND (`a`.`publish_down` IS NULL OR `a`.`publish_down` >= :publishDown) AND `a`.`state` IN (:preparedArray1,:preparedArray2)593μs17.38KBParams/components/com_content/src/Model/ArticleModel.php:215Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `josog_categories` AS `s` INNER JOIN `josog_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`581μs6.03KBParams/libraries/src/Categories/Categories.php:360Copy
  • SELECT `m`.`tag_id`,`t`.* FROM `josog_contentitem_tag_map` AS `m` INNER JOIN `josog_tags` AS `t` ON `m`.`tag_id` = `t`.`id` WHERE `m`.`type_alias` = :contentType AND `m`.`content_item_id` = :id AND `t`.`published` = 1 AND `t`.`access` IN (:preparedArray1,:preparedArray2)540μs5.22KBParams/libraries/src/Helper/TagsHelper.php:364Copy
  • SELECT `c`.`id`,`c`.`asset_id`,`c`.`access`,`c`.`alias`,`c`.`checked_out`,`c`.`checked_out_time`,`c`.`created_time`,`c`.`created_user_id`,`c`.`description`,`c`.`extension`,`c`.`hits`,`c`.`language`,`c`.`level`,`c`.`lft`,`c`.`metadata`,`c`.`metadesc`,`c`.`metakey`,`c`.`modified_time`,`c`.`note`,`c`.`params`,`c`.`parent_id`,`c`.`path`,`c`.`published`,`c`.`rgt`,`c`.`title`,`c`.`modified_user_id`,`c`.`version`, CASE WHEN CHAR_LENGTH(`c`.`alias`) != 0 THEN CONCAT_WS(':', `c`.`id`, `c`.`alias`) ELSE `c`.`id` END as `slug` FROM `josog_categories` AS `s` INNER JOIN `josog_categories` AS `c` ON (`s`.`lft` <= `c`.`lft` AND `c`.`lft` < `s`.`rgt`) OR (`c`.`lft` < `s`.`lft` AND `s`.`rgt` < `c`.`rgt`) WHERE (`c`.`extension` = :extension OR `c`.`extension` = 'system') AND `c`.`access` IN (:preparedArray1,:preparedArray2) AND `c`.`published` = 1 AND `s`.`id` = :id ORDER BY `c`.`lft`377μs6.03KBParams/libraries/src/Categories/Categories.php:360Copy
  • SELECT DISTINCT a.id, a.title, a.name, a.checked_out, a.checked_out_time, a.note, a.state, a.access, a.created_time, a.created_user_id, a.ordering, a.language, a.fieldparams, a.params, a.type, a.default_value, a.context, a.group_id, a.label, a.description, a.required, a.only_use_in_subform,l.title AS language_title, l.image AS language_image,uc.name AS editor,ag.title AS access_level,ua.name AS author_name,g.title AS group_title, g.access as group_access, g.state AS group_state, g.note as group_note FROM josog_fields AS a LEFT JOIN `josog_languages` AS l ON l.lang_code = a.language LEFT JOIN josog_users AS uc ON uc.id=a.checked_out LEFT JOIN josog_viewlevels AS ag ON ag.id = a.access LEFT JOIN josog_users AS ua ON ua.id = a.created_user_id LEFT JOIN josog_fields_groups AS g ON g.id = a.group_id LEFT JOIN `josog_fields_categories` AS fc ON fc.field_id = a.id WHERE ( (`a`.`context` = :context AND (`fc`.`category_id` IS NULL OR `fc`.`category_id` IN (:preparedArray1,:preparedArray2)) AND `a`.`access` IN (:preparedArray3,:preparedArray4)) AND (`a`.`group_id` = 0 OR `g`.`access` IN (:preparedArray5,:preparedArray6)) AND `a`.`state` = :state) AND (`a`.`group_id` = 0 OR `g`.`state` = :gstate) AND `a`.`only_use_in_subform` = :only_use_in_subform ORDER BY a.ordering ASC1.22ms6KBParams/libraries/src/MVC/Model/BaseDatabaseModel.php:165Copy
  • SELECT `m`.`id`,`m`.`title`,`m`.`module`,`m`.`position`,`m`.`content`,`m`.`showtitle`,`m`.`params`,`mm`.`menuid` FROM `josog_modules` AS `m` LEFT JOIN `josog_modules_menu` AS `mm` ON `mm`.`moduleid` = `m`.`id` LEFT JOIN `josog_extensions` AS `e` ON `e`.`element` = `m`.`module` AND `e`.`client_id` = `m`.`client_id` WHERE ( ( (`m`.`published` = 1 AND `e`.`enabled` = 1 AND `m`.`client_id` = :clientId AND `m`.`access` IN (:preparedArray1,:preparedArray2)) AND (`m`.`publish_up` IS NULL OR `m`.`publish_up` <= :publishUp)) AND (`m`.`publish_down` IS NULL OR `m`.`publish_down` >= :publishDown)) AND (`mm`.`menuid` = :itemId OR `mm`.`menuid` <= 0) ORDER BY `m`.`position`,`m`.`ordering`625μs3.25KBParams/libraries/src/Cache/Controller/CallbackController.php:52Copy
  • SELECT `name`,`element` FROM `josog_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1505μs1.06KB/administrator/components/com_finder/src/Helper/LanguageHelper.php:134Copy
  • SELECT `title` FROM `josog_finder_taxonomy` WHERE `parent_id` = 1 AND `state` = 1 AND `access` IN (1,5)296μs968B/administrator/components/com_finder/src/Indexer/Taxonomy.php:314Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`type`,`a`.`execution_rules`,`a`.`state`,`a`.`last_exit_code`,`a`.`locked`,`a`.`last_execution`,`a`.`next_execution`,`a`.`times_executed`,`a`.`times_failed`,`a`.`priority`,`a`.`ordering`,`a`.`note`,`a`.`checked_out`,`a`.`checked_out_time`,`uc`.`name` AS `editor` FROM `josog_scheduler_tasks` AS `a` LEFT JOIN `josog_users` AS `uc` ON `uc`.`id` = `a`.`checked_out` WHERE `a`.`state` = :state AND `a`.`next_execution` <= :now ORDER BY `a`.`title` asc318μs4.45KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:391Copy
  • SELECT `a`.`id`,`a`.`asset_id`,`a`.`title`,`a`.`type`,`a`.`execution_rules`,`a`.`state`,`a`.`last_exit_code`,`a`.`locked`,`a`.`last_execution`,`a`.`next_execution`,`a`.`times_executed`,`a`.`times_failed`,`a`.`priority`,`a`.`ordering`,`a`.`note`,`a`.`checked_out`,`a`.`checked_out_time`,`uc`.`name` AS `editor` FROM `josog_scheduler_tasks` AS `a` LEFT JOIN `josog_users` AS `uc` ON `uc`.`id` = `a`.`checked_out` WHERE `a`.`state` = :state AND `a`.`locked` IS NOT NULL ORDER BY `a`.`title` asc281μs4.43KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:391Copy