Performance Review Module

teresa
2009-02-06
2013-06-05
  • teresa
    teresa
    2009-02-06

    The most demand from OrangeHRM community is for a "Performance Review" module to be added to OrangeHRM.

    Please help us define the features of this module by taking the survey.
    Click here to take survey.

    The currently requested features of Performance Review module are:

    Configuration
    1. Define a set of general performance measures (or questions) for the appraisal for the company.
    2. Add performance measures (or questions) per job title.
    3. Add employee specific performance measures (or questions).
    4. Add department specific performance measures (or questions).
    5. Allocate marks per question.

    Schedule
    1. HR Admin - specify reviewers
    2. HR Admin - schedule performance review
    3. Automatically schedule reviews after a fixed period.

    Review Process
    1. Employees review and rate themselves (self appraisal)
    2. Supervisor reviews and rates employee
    3. Appraisal by co-workers (anonymous)
    4. Add comments per each performance measure or question.
    5. Submit completed reviews.
    6. Supervisors get notified about submitted reviews.

    Rating Calculation
    1. Have a numerical rating scheme for each performance measure or question (1-5)
    2. Calculate average rating for each performance measure or question - AVG = Sum (Ratings) / Number of reviewers
    3. Define a way to calculate the total review score (add ratings for each question)

    Review Results
    1. Email review results to HR and supervisor
    2. Email review results to employee
    3. Report that shows all employee scores
    4. Employee can view completed reviews
    5. Completed reviews are not editable

    - Himath

     
    • teresa
      teresa
      2009-02-11

      I was just wondering if there is a timeline for when the performance module will be implemented? My employer would be very interested in using this software given the ability to maintain performance reviews electronically.

      Thanks.
      Michel

       
      • teresa
        teresa
        2009-02-26

        I am afraid we're not in a position to provide a target just yet. We're still in the phase of gathering requirements from users. We hope to have this implemented in Q3, 2009.

        In the meantime if you can provide us more details about what you would like to see in the 'Performance Review' module, that would help.

        - Himath

         
        • teresa
          teresa
          2009-03-26

          Hi,
          In matrix organization, an employee may have two supervisors : one is the "staff manager", the other the "line manager". (called also "operational" and "functional" managers).
          For example, in the automotive industry (like in many other industries) an employee working in a Project Team is linked to the Project leader but also to the department manager of the department from which he originally depends from .
          A Project Purchaser is managed both by the Project leader and the Purchasing Department leader.
          Assessing the performance of the employee implies that he/she will be assessed by the two supervisors, even if only one can have the "final word" on the final results of the performance review.
          So, the possibility to have an additional "supervisor" assessment would be very usefull.
          Bye

           
  • Mafaz Mazeen
    Mafaz Mazeen
    2010-02-05

    I guess the Q3 timeline didn't work out? Is there a development version of the module available? I would love to try it out.

     
  • Mafaz Mazeen
    Mafaz Mazeen
    2010-02-11

    Yah, same here. We were hoping to demo it at my company… Wonder how the development is coming along..

     
  • Mafaz Mazeen
    Mafaz Mazeen
    2010-02-17

    Hi
    Congratulations for building such a good product.

    I am very interested in your Performance Review Module.
    Could you please inform me when we can get a feel at that module.

    Thanks
    Arindam

     
  • I have a fair amount of background in performance management and would love to demo an expanded Performance Module and provide feedback. More than happy to do so with an alpha or beta product.

    Love the overall product. Thanks to everyone for donating their precious free time to making our lives easier.

    Thanks,
    Dano

     
  •     danoman7 wrote:I have a fair amount of background in performance management and would love to demo an expanded Performance Module and provide feedback. More than happy to do so with an alpha or beta product.
        Telepacific Reviews
        Love the overall product. Thanks to everyone for donating their precious free time to making our lives easier.

        Thanks,
        Dano

    I am right there with Dano… Let me know if you would like me to demo an alpha or beta version of the product and I would be more than happy to.

    Thanks again,

    -Jim

     
  • Im just newbei on this orange hrm… im stack with this error while exploring the capabilities. Im installing 2.6 please reply

    500 | Internal Server Error | PerformanceServiceException
    Couldn't locate driver named mysql
    stack trace

    * at ()
    in SF_ROOT_DIR\apps\orangehrm\lib\model\performance\service\PerformanceReviewService.php line 316 …
    313. return false;
    314. }
    315. } catch (Exception $e) {
    316. throw new PerformanceServiceException($e->getMessage());
    317. }
    318.
    319. }
    * at PerformanceReviewService->isReviewer(null)
    in SF_ROOT_DIR\apps\orangehrm\modules\performance\actions\actions.class.php line 503 …
    500.
    501. $performanceReviewService = $this->getPerformanceReviewService();
    502.
    503. return $performanceReviewService->isReviewer($empId);
    504.
    505. }
    506.
    * at performanceActions->isLoggedReviewer(null)
    in SF_ROOT_DIR\apps\orangehrm\modules\performance\actions\actions.class.php line 120 …
    117. $this->loggedAdmin = false;
    118. }
    119.
    120. $this->loggedReviewer = $this->isLoggedReviewer($_SESSION);
    121.
    122. if (isset($_SESSION)) {
    123. $this->loggedUserId = $_SESSION;
    * at performanceActions->preExecute()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfExecutionFilter.class.php line 89 …
    86. protected function executeAction($actionInstance)
    87. {
    88. // execute the action
    89. $actionInstance->preExecute();
    90. $viewName = $actionInstance->execute($this->context->getRequest());
    91. $actionInstance->postExecute();
    92.
    * at sfExecutionFilter->executeAction(object('performanceActions'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfExecutionFilter.class.php line 76 …
    73. return sfView::SUCCESS;
    74. }
    75.
    76. return $this->executeAction($actionInstance);
    77. }
    78.
    79. /**
    * at sfExecutionFilter->handleAction(object('sfFilterChain'), object('performanceActions'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfExecutionFilter.class.php line 53 …
    50. }
    51. else
    52. {
    53. $viewName = $this->handleAction($filterChain, $actionInstance);
    54. $this->handleView($filterChain, $actionInstance, $viewName);
    55. }
    56. }
    * at sfExecutionFilter->execute(object('sfFilterChain'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfFilterChain.class.php line 53 …
    50. }
    51.
    52. // execute the next filter
    53. $this->chain->execute($this);
    54. }
    55. }
    56.
    * at sfFilterChain->execute()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfCommonFilter.class.php line 29 …
    26. public function execute($filterChain)
    27. {
    28. // execute next filter
    29. $filterChain->execute();
    30.
    31. // execute this filter only once
    32. $response = $this->context->getResponse();
    * at sfCommonFilter->execute(object('sfFilterChain'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfFilterChain.class.php line 53 …
    50. }
    51.
    52. // execute the next filter
    53. $this->chain->execute($this);
    54. }
    55. }
    56.
    * at sfFilterChain->execute()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfBasicSecurityFilter.class.php line 62 …
    59. }
    60.
    61. // the user has access, continue
    62. $filterChain->execute();
    63. }
    64.
    65. /**
    * at sfBasicSecurityFilter->execute(object('sfFilterChain'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfFilterChain.class.php line 53 …
    50. }
    51.
    52. // execute the next filter
    53. $this->chain->execute($this);
    54. }
    55. }
    56.
    * at sfFilterChain->execute()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfRenderingFilter.class.php line 33 …
    30. public function execute($filterChain)
    31. {
    32. // execute next filter
    33. $filterChain->execute();
    34.
    35. // get response object
    36. $response = $this->context->getResponse();
    * at sfRenderingFilter->execute(object('sfFilterChain'))
    in SF_ROOT_DIR\lib\vendor\symfony\lib\filter\sfFilterChain.class.php line 53 …
    50. }
    51.
    52. // execute the next filter
    53. $this->chain->execute($this);
    54. }
    55. }
    56.
    * at sfFilterChain->execute()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\controller\sfController.class.php line 245 …
    242. }
    243.
    244. // process the filter chain
    245. $filterChain->execute();
    246. }
    247. else
    248. {
    * at sfController->forward('performance', 'listDefineKpi')
    in SF_ROOT_DIR\lib\vendor\symfony\lib\controller\sfFrontWebController.class.php line 48 …
    45. }
    46.
    47. // make the first request
    48. $this->forward($moduleName, $actionName);
    49. }
    50. catch (sfException $e)
    51. {
    * at sfFrontWebController->dispatch()
    in SF_ROOT_DIR\lib\vendor\symfony\lib\util\sfContext.class.php line 159 …
    156. */
    157. public function dispatch()
    158. {
    159. $this->getController()->dispatch();
    160. }
    161.
    162. /**
    * at sfContext->dispatch()
    in SF_ROOT_DIR\web\index.php line 13 …
    10. require_once(dirname(__FILE__).'/../config/ProjectConfiguration.class.php');
    11.
    12. $configuration = ProjectConfiguration::getApplicationConfiguration('orangehrm', 'prod', true);
    13. sfContext::createInstance($configuration)->dispatch();
    14.

    symfony settings …

    app_items_per_page: 50
    app_sort_asc_class: ASC
    app_sort_default_class: null
    app_sort_desc_class: DESC
    mod_performance_enabled: true
    mod_performance_is_internal: false
    mod_performance_view_class: sfPHP
    sf_admin_module_web_dir: /sfDoctrinePlugin
    sf_admin_web_dir: /sf/sf_admin
    sf_app: orangehrm
    sf_app_base_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm'
    sf_app_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod'
    sf_app_config_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm\config'
    sf_app_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm'
    sf_app_i18n_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm\i18n'
    sf_app_lib_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm\lib'
    sf_app_module_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm\modules'
    sf_app_template_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps\orangehrm\templates'
    sf_apps_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\apps'
    sf_cache: false
    sf_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache'
    sf_calendar_web_dir: /sf/calendar
    sf_charset: utf-8
    sf_check_lock: false
    sf_check_symfony_version: false
    sf_compressed: false
    sf_config_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod\config'
    sf_config_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\config'
    sf_csrf_secret: 'kafkasipi3#iadfsakf'
    sf_data_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\data'
    sf_debug: true
    sf_default_culture: en
    sf_doc_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\doc'
    sf_enabled_modules:
    - default
    sf_environment: prod
    sf_error_404_action: error404
    sf_error_404_module: default
    sf_error_reporting: 341
    sf_escaping_method: ESC_SPECIALCHARS
    sf_escaping_strategy: true
    sf_etag: true
    sf_i18n: true
    sf_i18n_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod\i18n'
    sf_lazy_cache_key: true
    sf_lib_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\lib'
    sf_log_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\log'
    sf_logging_enabled: false
    sf_login_action: login
    sf_login_module: auth
    sf_max_forwards: 5
    sf_module_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod\modules'
    sf_module_disabled_action: disabled
    sf_module_disabled_module: default
    sf_no_script_name: false
    sf_orm: doctrine
    sf_plugins_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\plugins'
    sf_rich_text_js_dir: js/tiny_mce
    sf_root_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony'
    sf_secure_action: secure
    sf_secure_module: default
    sf_standard_helpers:
    - Partial
    - Cache
    - Form
    - Orange
    - Url
    - I18N
    sf_strip_comments: true
    sf_symfony_lib_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\lib\vendor\symfony\lib'
    sf_template_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod\template'
    sf_test_cache_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\cache\orangehrm\prod\test'
    sf_test_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\test'
    sf_upload_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\web\uploads'
    sf_use_database: true
    sf_validation_error_class: form_error
    sf_validation_error_id_prefix: error_for_
    sf_validation_error_prefix: ' ↓ '
    sf_validation_error_suffix: '  ↓'
    sf_web_debug: false
    sf_web_debug_web_dir: /sf/sf_web_debug
    sf_web_dir: 'C:\Apache2.2\htdocs\orangehrm-2.6.0.2\symfony\web'

    request …

    parameterHolder:
    action: listDefineKpi
    module: performance
    attributeHolder:
    sf_route: 'sfRoute Object()'

    response …

    options:
    http_protocol: HTTP/1.1
    logging: ''
    charset: utf-8
    send_http_headers: true
    content_type: 'text/html; charset=utf-8'
    cookies: { }
    httpHeaders:
    Content-Type: 'text/html; charset=utf-8'
    javascripts: { }
    stylesheets: { }
    metas: { }
    httpMetas: { }

    user …

    options:
    auto_shutdown: false
    culture: null
    default_culture: en
    use_flash: true
    logging: ''
    timeout: 1800
    attributeHolder: { }
    culture: en

    global vars …