HR Projects Delivery

How do you deliver HR projects successfully which support people in the workplace - to enjoy and develop in their work, to cope with the challenges and stress, to be innovative and willing to put in the extra effort?  It is a cliché but still true - people are your greatest asset in your business and you need to support them with effective processes delivered by efficient systems.

    Discovery            Design          Deployment

Why are we called 3D HR?  Because we think there are three factors that are critical to deliver the successful implementation of an HR project, in particular delivery of a new HR Information System or HRIS:-

  • Discovery - the identification of:
    • HR processes required for effective people management
    • People data held across the organisation
  • Design - the improvement of HR processes that can include:
    • automation through workflows
    • employee and manager Self Service
  • Deployment - rolling out of the new system through:
    • integrated training
    • user guides and support mechanisms

Join those three triangles of Discovery, Design and Deployment together and you get a three-dimensional pyramid or tetrahedron - one of the strongest 3-D objects, where each part meets the other two.  In the same way, achieve the right sequence of discovery, design and deployment to support an HR project and both people and the organisation will flourish.  Hence our trade mark and symbol of what we do.

On this website you will find practical guidance covering various topics and issues in managing HR projects in your workplace. 

Contact us to discuss how we can help you deliver HR projects successfully in your workplace.

 

6MBMemory Usage335msRequest Duration
Joomla! Version4.2.6
PHP Version8.0.30
Identityguest
Response200
Templatecassiopeia
Database
Server
mysql
Version
10.11.11-MariaDB
Collation
latin1_swedish_ci
Conn Collation
utf8mb4_general_ci
$_GET
[]
$_POST
[]
$_SESSION
[]
$_COOKIE
[]
$_SERVER
array:56 [ "CONTEXT_DOCUMENT_ROOT" => "/home/hradvise/public_html" "CONTEXT_PREFIX" => "" "DOC...
session
array:3 [ "counter" => 1 "timer" => array:3 [ "start" => 1744152190 "last" => 1744152190...
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) (58.75ms)
  • afterInitialise (2.23MB) (120ms)
  • afterRoute (59.84KB) (8.68ms)
  • beforeRenderComponent com_content (257.6KB) (17.26ms)
  • Before Access::preloadComponents (all components) (197.27KB) (11.05ms)
  • After Access::preloadComponents (all components) (112.01KB) (1.01ms)
  • Before Access::preloadPermissions (com_content) (2.76KB) (23μs)
  • After Access::preloadPermissions (com_content) (9.67KB) (638μs)
  • Before Access::getAssetRules (id:61 name:com_content.article.1) (56B) (19μs)
  • After Access::getAssetRules (id:61 name:com_content.article.1) (9.95KB) (694μs)
  • afterRenderComponent com_content (580.24KB) (39.05ms)
  • afterDispatch (3.08KB) (292μs)
  • beforeRenderRawModule mod_finder (smart search) (345.92KB) (11.22ms)
  • afterRenderRawModule mod_finder (smart search) (160.88KB) (14.36ms)
  • beforeRenderRawModule mod_menu (Main Menu) (2.71KB) (98μs)
  • afterRenderRawModule mod_menu (Main Menu) (104.4KB) (7.31ms)
  • beforeRenderRawModule mod_rssocial (RSSocial!) (48.89KB) (127μs)
  • afterRenderRawModule mod_rssocial (RSSocial!) (121.02KB) (2.97ms)
  • beforeRenderRawModule mod_footer (Footer) (49.47KB) (91μs)
  • afterRenderRawModule mod_footer (Footer) (7.6KB) (965μs)
  • beforeRenderModule mod_footer (Footer) (2.25KB) (829μs)
  • afterRenderModule mod_footer (Footer) (2.93KB) (236μs)
  • beforeRenderModule mod_finder (smart search) (464B) (57μs)
  • afterRenderModule mod_finder (smart search) (3.38KB) (369μs)
  • beforeRenderModule mod_menu (Main Menu) (2.68KB) (141μs)
  • afterRenderModule mod_menu (Main Menu) (2.8KB) (112μs)
  • beforeRenderModule mod_rssocial (RSSocial!) (47.84KB) (148μs)
  • afterRenderModule mod_rssocial (RSSocial!) (2.45KB) (59μs)
  • afterRender (143.19KB) (13.8ms)
  • 1 x afterInitialise (2.23MB) (35.88%)
    120.06ms
    1 x afterLoad (874.67KB) (17.56%)
    58.75ms
    1 x afterRenderComponent com_content (580.24KB) (11.67%)
    39.05ms
    1 x beforeRenderComponent com_content (257.6KB) (5.16%)
    17.26ms
    1 x afterRenderRawModule mod_finder (smart search) (160.88KB) (4.29%)
    14.36ms
    1 x afterRender (143.19KB) (4.12%)
    13.80ms
    1 x beforeRenderRawModule mod_finder (smart search) (345.92KB) (3.35%)
    11.22ms
    1 x Before Access::preloadComponents (all components) (197.27KB) (3.3%)
    11.05ms
    1 x afterRoute (59.84KB) (2.6%)
    8.68ms
    1 x afterRenderRawModule mod_menu (Main Menu) (104.4KB) (2.19%)
    7.31ms
    1 x afterRenderRawModule mod_rssocial (RSSocial!) (121.02KB) (0.89%)
    2.97ms
    1 x After Access::preloadComponents (all components) (112.01KB) (0.3%)
    1.01ms
    1 x afterRenderRawModule mod_footer (Footer) (7.6KB) (0.29%)
    965μs
    1 x beforeRenderModule mod_footer (Footer) (2.25KB) (0.25%)
    829μs
    1 x After Access::getAssetRules (id:61 name:com_content.article.1) (9.95KB) (0.21%)
    694μs
    1 x After Access::preloadPermissions (com_content) (9.67KB) (0.19%)
    638μs
    1 x afterRenderModule mod_finder (smart search) (3.38KB) (0.11%)
    369μs
    1 x afterDispatch (3.08KB) (0.09%)
    292μs
    1 x afterRenderModule mod_footer (Footer) (2.93KB) (0.07%)
    236μs
    1 x beforeRenderModule mod_rssocial (RSSocial!) (47.84KB) (0.04%)
    148μs
    1 x beforeRenderModule mod_menu (Main Menu) (2.68KB) (0.04%)
    141μs
    1 x beforeRenderRawModule mod_rssocial (RSSocial!) (48.89KB) (0.04%)
    127μs
    1 x afterRenderModule mod_menu (Main Menu) (2.8KB) (0.03%)
    112μs
    1 x beforeRenderRawModule mod_menu (Main Menu) (2.71KB) (0.03%)
    98μs
    1 x beforeRenderRawModule mod_footer (Footer) (49.47KB) (0.03%)
    91μs
    1 x afterRenderModule mod_rssocial (RSSocial!) (2.45KB) (0.02%)
    59μs
    1 x beforeRenderModule mod_finder (smart search) (464B) (0.02%)
    57μs
    1 x Before Access::preloadPermissions (com_content) (2.76KB) (0.01%)
    23μs
    1 x Before Access::getAssetRules (id:61 name:com_content.article.1) (56B) (0.01%)
    19μs
27 statements were executed, 2 of which were duplicates, 25 unique15.17ms142.25KB
  • SELECT @@SESSION.sql_mode;213μs1.59KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:293Copy
  • SELECT `data` FROM `josog_session` WHERE `session_id` = ?194μs1.61KBParams/libraries/vendor/joomla/session/src/Handler/DatabaseHandler.php:261Copy
  • SELECT `session_id` FROM `josog_session` WHERE `session_id` = :session_id LIMIT 1236μ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)3.38ms944BParams/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` = 1434μs5.36KB/libraries/src/Component/ComponentHelper.php:393Copy
  • SELECT `id`,`rules` FROM `josog_viewlevels`132μ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` = :guest249μ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`793μs11.8KBParams/libraries/src/Plugin/PluginHelper.php:283Copy
  • SELECT `value` FROM `josog_admintools_storage` WHERE `key` = 'cparams'151μs2.07KB/administrator/components/com_admintools/src/Helper/Storage.php:119Copy
  • SELECT `option`,`view`,`query` FROM `josog_admintools_wafexceptions`136μ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`698μs28.86KBParams/libraries/src/Menu/SiteMenu.php:166Copy
  • SELECT * FROM `josog_languages` WHERE `published` = 1 ORDER BY `ordering` ASC223μ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` = 1325μ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)456μ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` = 0316μs3.36KBParams/libraries/src/Access/Access.php:301Copy
  • SHOW FULL COLUMNS FROM `josog_content`1.34ms10.39KB/libraries/vendor/joomla/database/src/Mysqli/MysqliDriver.php:584Copy
  • UPDATE josog_content SET `hits` = (`hits` + 1) WHERE `id` = '1'775μs2.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)598μ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`457μ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)363μ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`446μ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.25ms6KBParams/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`639μs2.97KBParams/libraries/src/Cache/Controller/CallbackController.php:52Copy
  • SELECT `name`,`element` FROM `josog_extensions` WHERE `type` = 'plugin' AND `folder` = 'finder' AND `enabled` = 1412μ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)293μ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` asc369μ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` asc296μs4.43KBParams/administrator/components/com_scheduler/src/Model/TasksModel.php:391Copy