{"id":192113,"date":"2026-04-09T16:56:24","date_gmt":"2026-04-09T09:56:24","guid":{"rendered":"https:\/\/www.hashmicro.com\/id\/blog\/?p=192113"},"modified":"2026-04-09T16:56:24","modified_gmt":"2026-04-09T09:56:24","slug":"employee-self-service-portal","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/","title":{"rendered":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan"},"content":{"rendered":"<p><i><span style=\"font-weight: 400;\">Employee Self-Service Portal<\/span><\/i><span style=\"font-weight: 400;\"> atau ESS adalah portal berbasis web atau aplikasi digital yang menyediakan portal layanan mandiri bagi karyawan perusahaan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Karyawan dapat mengakses informasi data pribadi maupun penggajian serta komponen pajak yang menyertainya tanpa harus selalu bertanya kepada departemen HR.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">Platform<\/span><\/i><span style=\"font-weight: 400;\"> ini dapat membantu tim HR perusahaan Anda berfokus pada tugas-tugas pengembangan karyawan ketimbang mengurusi masalah administratif seperti pertanyaan karyawan yang sangat banyak jumlahnya.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pada artikel ini, Anda akan memahami mengapa penerapan portal layanan mandiri karyawan penting bagi perusahaan modern serta tips mengimplementasikannya dalam perusahaan Anda.<\/span><\/p>\n<style>\r\n\t.takeaways-container {\r\n\t\tmargin: 20px 0;\r\n\t\tfont-family: sans-serif;\r\n\t}\r\n\t.box-content {\r\n\t\tbackground-color: #fffacd;\r\n\t\tbox-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);\r\n\t\tborder-radius: 25px;\r\n\t\tpadding: 25px;\r\n\t}\r\n\t.title {\r\n\t\tmargin-bottom: 20px;\r\n\t}\r\n\t.title p {\r\n\t\tdisplay: inline-block;\r\n\t\tbackground-color: #8A0E19;\r\n\t\tcolor: #ffffff;\r\n\t\tpadding: 8px 15px;\r\n\t\tborder-radius: 8px;\r\n\t\tfont-size: 22px;\r\n\t\tfont-weight: bold;\r\n\t\tmargin: 0;\r\n\t}\r\n\t.item {\r\n\t\tdisplay: flex;\r\n\t\talign-items: flex-start;\r\n\t\tmargin-bottom: 12px;\r\n\t}\r\n\t.item .circle {\r\n\t\twidth: 8px;\r\n\t\theight: 8px;\r\n\t\tbackground-color: #000000;\r\n\t\tborder-radius: 50%;\r\n\t\tmargin-right: 12px;\r\n\t\tflex-shrink: 0;\r\n\t\tmargin-top: 8px;\r\n\t}\r\n\t.item p {\r\n\t\tmargin: 0;\r\n\t\tfont-size: 16px;\r\n\t\tline-height: 1.6;\r\n\t}\r\n\t.item p a {\r\n\t\tcolor: #8A0E19;\r\n\t\tfont-weight: normal;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.item p a:hover {\r\n\t\ttext-decoration: underline;\r\n\t}\r\n\t.button-wrapper {\r\n\t\tmargin-top: 25px;\r\n\t}\r\n\t.submit-button {\r\n\t\tbackground-color: #8a0e19;\r\n\t\tcolor: #fff !important;\r\n\t\ttransition: all .3s ease;\r\n\t\tpadding: 12px 28px;\r\n\t\tdisplay: inline-block;\r\n\t\tborder-radius: 12px;\r\n\t\tfont-size: 16px;\r\n\t\tfont-weight: bold;\r\n\t\ttext-decoration: none;\r\n\t}\r\n\t.submit-button:hover {\r\n\t\tbackground-color: #991b26;\r\n\t}\r\n\t@media (max-width: 767px) {\r\n\t\t.takeaways-container {\r\n\t\t\theight: auto;\r\n\t\t\tpadding: 0;\r\n\t\t}\r\n\t\t.box-content {\r\n\t\t\tpadding: 24px;\r\n\t\t}\r\n\t\t.content,\r\n\t\t.main-content,\r\n\t\t.list-item {\r\n\t\t\twidth: 100%;\r\n\t\t}\r\n\t}\r\n<\/style>\r\n\r\n<div class=\"takeaways-container\">\r\n\t<div class=\"box-content\">\r\n\t\t<div class=\"content\">\r\n\t\t\t<div class=\"title\">\r\n\t\t\t\t<p>Key Takeaways<\/p>\r\n\t\t\t<\/div>\r\n\t\t\t<div class=\"main-content\">\r\n\t\t\t\t<div class=\"list-item\">\r\n\t\t\t\t\t<div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#employee\">Employee Self-Service Portal<\/a> memungkinkan karyawan untuk mengetahui detail haknya secara transparan dan mandiri tanpa harus repot bertanya ke HR.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#portal\">Komponen Employee Self-Service Portal<\/a> meliputi: profil karyawan, detail payroll, pengajuan cuti, pengajuan lembur, portal BPJS, dan database dokumen HR.<\/p><\/div><div class=\"item\">    <div class=\"circle\"><\/div>    <p><a href=\"#oleh\">Pikirkan kebutuhan perusahaan Anda<\/a> saat hendak menerapkan ESS. Sebagai contoh, portal BPJS dalam ESS untuk menyesuaikan dengan regulasi Indonesia.<\/p><\/div>\t\t\t\t<\/div>\r\n\t\t\t<\/div>\r\n<!-- \t\t\t<div class=\"button-wrapper\">\r\n\t\t\t\t<a href=\"https:\/\/www.equiperp.com\/tour-produk-gratis\/?medium=key-takeaways\" class=\"submit-button\">Klik untuk Demo Gratis!<\/a>\r\n\t\t\t<\/div> -->\r\n\t\t<\/div>\r\n\t<\/div>\r\n<\/div>\n<div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tDaftar Isi:\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div id=\"placeholder-toc\"><\/div>\r\n<div id=\"toc\">\r\n    <div class=\"header\">\r\n\t<span class=\"toc-title\" id=\"toc-title\">Daftar Isi<\/span>\t\r\n\t <i class=\"toc-icon\">\r\n        <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"30\" height=\"30\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#000\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"header-icon\">\r\n          <path d=\"m6 9 6 6 6-6\" \/>\r\n        <\/svg>\r\n      <\/i>\r\n\t<\/div>\r\n    <div class=\"list\">\r\n      <ul id=\"toc-list\"><\/ul>\r\n    <\/div>\r\n <\/div>\r\n\r\n<style>\r\n\/* Simple styling for the TOC *\/\r\n\t\r\n\t#toc ul li:last-child {\r\n    padding-bottom: 16px; \/* Adjust the value as needed *\/\r\n}\r\n\r\n.td-fix-index {\r\n\t transform: unset !important;\r\n     -webkit-transform: unset !important; \r\n}\r\n.footer-contact .td-fix-index {\r\n\t transform: translateZ(0) !important;\r\n     -webkit-transform: translateZ(0) !important; \r\n}\r\n\t.tdb_single_content .tdb-block-inner.td-fix-index{\r\n\t\tposition: static;\r\n\t}\r\n\t\r\n\r\n\r\n\t\r\n#toc {\r\n  background-color: #FFF;\r\n\tpadding: 17px 24px 0px 24px !important;\r\n  margin-bottom: 20px;\r\n\/*   border: 1px solid #9C171E; *\/\r\n  border-radius: 6px;\r\n\tdisplay: none;\r\n  max-width: 100%;\r\n  transition: .4s ease height;\r\n\tmargin-left: 0;\r\n\toverflow: hidden;\r\n}\r\n\r\n#toc .header{\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n\tbackground-color: transparent;\r\n}\r\n\t\r\n\t#toc.sticky .header{\r\n\t\tpadding: 4px 0;\r\n\t}\r\n\t\r\n.header p{\r\n  font-size: 18px !important;\r\n  font-weight: 600 !important;\r\n  color: #393939;\r\n   margin-bottom: 0;\r\n  \/* margin-top: 20px; *\/\r\n}\r\n\r\n.toc-icon{\r\n  float: right;\r\n\/*   visibility: hidden; *\/\r\n}\r\n\r\n\t.toc-title{\r\n\t\tmargin-right: auto;\r\n\/* \t\tpadding-left: 20px; *\/\r\n\t\tfont-weight: 600;\r\n\t\talign-self: center;\t}\t\r\n\r\n#toc ul {\r\n  list-style-type: none;\r\n  padding-left: 0;\r\n}\r\n\t\r\n#toc.sticky ul{\r\n\toverflow-y: auto;\r\n\tmax-height: 250px;\r\n\tmargin-top: 0px;\r\n\tpadding-top: 20px;\r\n\/* \tborder-top: 1px solid #d3d3d3; *\/\r\n}\r\n\t\r\n#toc ul li {\r\n\/*   margin-bottom: 10px; *\/\r\n  margin-bottom: 10px;\r\n\tmargin-left: 0;\r\n\ttransition: .2s ease;\r\n\tcursor: pointer;\r\n}\r\n\t\r\n\t#toc.sticky ul li {\r\n\t  margin-right: 10px;\r\n\t}\r\n\t\r\n.td-post-content #toc-list li a:hover, .td-post-content #toc-list a.active{\r\n\tbackground-color: #FFF;\r\n\/* \tpadding: 8px 16px 8px 16px; *\/\r\n\tpadding: 4px 16px 4px 16px;\r\n\tborder-radius: 6px;\r\n\tcolor: #9c171e !important;\r\n\tfont-weight: 600 !important;\r\n}\r\n\t\r\n\t.td-post-content #toc-list li:hover a, .td-post-content #toc-list a.active{\r\n\t\tcolor: #9C171E !important;\r\n\t\tfont-weight: 600 !important;\r\n\t}\r\n\t\r\n.td-post-content #toc-list a.active{\r\n\tfont-weight: bold !important;\r\n\tcolor: #9C171E !important;\r\n}\r\n\t\r\n#toc a, .td-post-content #toc-list a {\r\n  text-decoration: none;\r\n  color: #ea1717 !important;\r\n  transition: .2s ease;\r\n\tfont-weight: 400 !important;\r\n\tdisplay: block;\r\n\t\r\n\tpadding: 4px 16px 4px 0;\r\n}\r\n\r\n#toc.sticky {\r\n  position: fixed;\r\n\/*   top: 73px; *\/\r\n\tbottom: 0;\r\n  z-index: 100; \r\n  box-shadow: 0 2px 5px rgba(0,0,0,0.1); \r\n\twidth: 100%; \r\n\tbackground-color: #FFF;\r\n\/* \tbackground-color: #FFF1F1; *\/\r\n\tborder-bottom: 1px solid #ea1717;\r\n\/*   border: 1px solid #393939; *\/\r\n  box-shadow: 0px 0px 14px 0px #00000040;\r\n  cursor: pointer;\r\n\tanimation: fadein .3s ease;\r\n\tpadding: 12px 16px !important;\r\n}\r\n\t\r\n\t.fadein{\r\n\t\tanimation: fadein .3s ease;\r\n\t}\r\n\t\r\n\t.fadeout{\r\n\t\tanimation: fadeout .3s ease;\r\n\t}\r\n\t\r\n\t\r\n\t@keyframes fadein{\r\n\t\t0% {\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@keyframes fadeout{\r\n\t\t0% {\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t\t100%{\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n#toc.sticky .header p{\r\n\tmargin-bottom: 10px;\r\n\tmargin-top: 10px;\r\n}\r\n\r\n#toc.sticky .toc-icon{\r\n  visibility: visible;\r\n\/* \ttransition: 0.4s ease; *\/\r\n}\r\n\t\r\n\t.toc-icon{\r\n\t\talign-items: center;\r\n    \tdisplay: flex;\r\n\t}\r\n\t\r\n\tsvg.header-icon{\r\n\/* \t\tbackground-color: #9c171e; *\/\r\n\t\tbackground-color: #FFF;\r\n\t\tborder-radius: 30px;\r\n\t\tpadding: 5px;\r\n\t}\r\n\r\n#toc.sticky .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\t\r\n\t#toc .list{\r\n\/*   max-height: 0; *\/\r\n  transition: height 0.4s ease;\r\n}\r\n\r\n#toc .header.active .toc-icon{\r\n\ttransform: rotate(0deg); \r\n\topacity: 1;\r\n}\r\n\r\n\t#toc .header.active + .list {\r\n\t  max-height: 200px; \/* Adjust this value as needed *\/\r\n\t  opacity: 1;\r\n\t}\r\n\t\r\n\t#placeholder-toc{\r\n\/* \t\tdisplay: none; *\/\r\n\t}\r\n\t\r\n\t@media (min-width: 768px) and (max-width: 991px){\r\n\t\t#toc.sticky{\r\n\/* \t\t\ttop: 104px; *\/\r\n\t\t\tbottom: 0px;\r\n\t\t}\r\n\t\t\r\n\t\t#toc{\r\n\t\t\twidth: unset !important;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width: 767px){\r\n\t\t#toc{\r\n\t\t\twidth: 100% !important;\r\n\t\t\tdisplay: inline-block;\r\n\t\t}\r\n\t\t\r\n\t\t#toc.sticky{\r\n\t\t\twidth: 90% !important;\r\n\/* \t\t\ttop: 81px; *\/\r\n\t\t\tbottom: 60px;\r\n\t\t\tmargin-left: auto;\r\n\t\t\tmargin-right: auto;\r\n\t\t\tpadding: 0 16px;\r\n\t\t\tright: 5%;\r\n\t\t}\r\n\t}\r\n\t\r\n\t<\/style>\r\n\r\n<style>\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc > li > ul {padding-left: 20px;margin-bottom: 0;}\r\n\t#list_toc{height:max-content;transition:ease-in-out}\r\n\t#list_toc li {margin-bottom: 0;margin-top: 5px;}\r\n\t#list_toc_float li.active > a {color:#b1252d;background: #ffe1e3;}\r\n\t#list_toc_float li a {padding:3px 7px}\r\n\t#list_toc_float li a {\r\n\t\tdisplay: block;\r\n\t\tcolor:#000;\r\n\t\tmargin-bottom: 10px;\r\n\t\ttransition:all 0.2s ease-in-out;\r\n\t\tfont-size:15px\r\n\t}\r\n\t#list_toc_float li{list-style:none;list-style-position:inside; margin-left:0;}\r\n\t#list_toc_float a:hover{color:#b1252d;}\r\n\t\r\n\t#list_toc_float li a{margin-bottom:0px}\r\n\t#toc_group_float{\r\n\t\tline-height: 24px;\r\n\t\tmax-height: calc(100vh - 100px);\r\n\t\toverflow: auto;\r\n\t\tz-index: 99;\r\n\t\tdisplay:none!important;\r\n\t\tbackground:#fff;\r\n\t\ttransition:all 0.5s linear\r\n\t}\r\n\t\r\n\t@media (min-width:1019px){\r\n\t\t#toc_group_float {\r\n\t\t\tdisplay:block!important;\r\n\t\t\t}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t@media (max-width:768px){\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\t\r\n\t \/* custom scrollbar style *\/\r\n::-webkit-scrollbar {\r\n    width: 7px;\r\n}\r\n::-webkit-scrollbar-track {\r\n    background: #d7a2a4;\r\n}\r\n::-webkit-scrollbar-thumb {\r\n    background: #b1252d;\r\n    border-radius: 15px;\r\n}\t\t\r\n\r\n<\/style>\r\n\r\n<script>\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\t\/\/ Fungsi untuk menangani klik pada semua elemen <a> dengan href yang dimulai dengan #\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst targetId = this.getAttribute('href').substring(1);\r\n\t\t\tconst targetElement = document.getElementById(targetId);\r\n\r\n\t\t\tif (targetElement) {\r\n\t\t\t\tconst headerHeight = document.querySelector('#toc .header').offsetHeight;\r\n\t\t\t\tconst navbarHeight = document.getElementById('tdi_34') ? document.getElementById('tdi_34').offsetHeight : 0;\r\n\t\t\t\tconst windowHeight = window.innerHeight;\r\n\t\t\t\tconst targetOffset = targetElement.offsetTop;\r\n\t\t\t\tconst scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight) - navbarHeight - 40;\r\n\r\n\t\t\t\twindow.scrollTo({\r\n\t\t\t\t\ttop: scrollTo,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua elemen <a> di toc-list dan list-toc\r\n\t\tconst titleLinks = document.querySelectorAll('#toc-list a, #list_toc a');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t});\r\n<\/script>\r\n\r\n<!-- ToC List for mobile -->\r\n<script>\r\n \/\/ Generate TOC based on headings\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  \/\/ Get the element that will contain the TOC\r\n  const tocList = document.getElementById('toc-list');\r\n\r\n  \/\/ Get the element with the ID 'article-left'\r\n  const article = document.querySelector('.td-post-content');\r\n\r\n  \/\/ Find all h2 elements within 'myarticle'\r\n  const headers = article.getElementsByTagName('h2');\r\n\r\n  \/\/ Loop through the h2 elements and create a list item for each one\r\n  for (let i = 0; i < headers.length; i++) {\r\n    const header = headers[i];\r\n    const headerText = header.textContent;\r\n\/\/     const headerId = 'header-' + i;\r\n    const headerId = headerText\r\n    .toLowerCase()\r\n    .trim()\r\n    .replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n    .replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n    \/\/ Set an ID for the header if it doesn't have one\r\n    header.setAttribute('id', headerId);\r\n\r\n    \/\/ Create a list item for the TOC\r\n    const listItem = document.createElement('li');\r\n\r\n    \/\/ Create a link for the list item\r\n    const link = document.createElement('a');\r\n    link.setAttribute('href', '#' + headerId);\r\n    link.textContent = headerText;\r\n\r\n    \/\/ Append the link to the list item\r\n    listItem.appendChild(link);\r\n\r\n    \/\/ Append the list item to the TOC list\r\n    tocList.appendChild(listItem);\r\n  }\r\n});\r\n\r\n\/\/ Keep height and placement of content using placeholder in place of TOC\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const placeholderToc = document.querySelector('#placeholder-toc');\r\n\r\n  function setPlaceholderHeight() {\r\n    placeholderToc.style.height = `${toc.offsetHeight}px`;\r\n  }\r\n\r\n  \/\/ Set the initial height of the placeholder\r\n  setPlaceholderHeight();\r\n\r\n  \/\/ Update the height on window resize\r\n  window.addEventListener('resize', setPlaceholderHeight);\r\n});\r\n  const tocTitle = document.querySelector('#toc-title'); \/\/ Assuming header-faq is the element for TOC title\r\n\r\n\/\/ Sticky TOC and update heading\r\n\/\/ document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/   const toc = document.querySelector('#toc');\r\n\/\/   const footer = document.querySelector('.td-footer-template-wrap');\r\n\/\/   const tocParent = toc.parentElement;\r\n\/\/   const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n\/\/   const tocHeight = toc.offsetHeight;\r\n\/\/   const triggerPoint = divTop + tocHeight + 700;\r\n\/\/   const footerHeight = footer.offsetHeight;\r\n\/\/   const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight - footerHeight - footerHeight;\r\n\/\/   const phtoc = document.querySelector('#placeholder-toc');\r\n\/\/   const headers = document.querySelectorAll('.td-post-content h2');\r\n\/\/   const navLinks = document.querySelectorAll('#toc-list a');\r\n\t\r\n\/\/ \tconst panel2 = document.querySelector(\"#toc .list\");\r\n\/\/ \tvar icon = document.querySelector(\".toc-icon\");\r\n\r\n\/\/   let activeLink = null; \/\/ Declare activeLink outside the loop\r\n\t\r\n\/\/   \/\/ Function to handle scroll and add\/remove .sticky class\r\n\/\/   function handleScroll() {\r\n\/\/     const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n\/\/     let currentHeader = '';\r\n\r\n\/\/     \/\/ Highlight user progress as the heading comes\r\n\/\/     headers.forEach(header => {\r\n\/\/ \t\tconst headerTop = header.offsetTop;\r\n\/\/ \t\tconst headerHeight = header.clientHeight;\r\n\/\/ \/\/ \t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \/\/ \t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \/\/ \t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \/\/ \t\t\tconsole.log(\"current header text:\", currentHeaderText);\r\n\/\/ \/\/ \t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \/\/ \t\t\tcurrentHeader = currentHeaderId;\r\n\t\t\t\r\n\/\/ \/\/ \t\t\tif(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t\ttocTitle.textContent = 'Daftar Isi';\r\n\/\/ \/\/ \t\t\t}\r\n\/\/ \/\/ \t\t}\r\n\/\/ \t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\ttocTitle.textContent = 'Daftar Isi'; \/\/ Selalu pertahankan judul ini di mobile\r\n\/\/ \t\t} else {\r\n\/\/ \t\t\tif (window.scrollY >= (headerTop - headerHeight + 700)) {\r\n\/\/ \t\t\t\tconst currentHeaderId = header.getAttribute('id');\r\n\/\/ \t\t\t\tconst currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n\/\/ \t\t\t\ttocTitle.textContent = currentHeaderText;\r\n\/\/ \t\t\t\tcurrentHeader = currentHeaderId;\r\n\/\/ \t\t\t}\r\n\/\/ \t\t}\r\n\/\/ \t});\r\n\r\n\/\/     navLinks.forEach(link => {\r\n\/\/       link.classList.remove('active');\r\n\/\/       if(currentHeader != '') {\r\n\/\/ \t\t  if (link.getAttribute('href').includes(currentHeader)) {\r\n\/\/ \t\t\t  link.classList.add('active');\r\n\/\/ \t\t  }\r\n\/\/ \t  }\r\n\/\/     });\r\n\/\/ \/\/     if (windowTop < triggerFooterPoint) {\r\n\/\/ \/\/         toc.style.display = 'block';\r\n\/\/ \/\/ \t}else{\r\n\/\/ \/\/         toc.style.display = 'none';\r\n\/\/ \/\/ \t}\r\n\/\/     \/\/ Update TOC title if sticky\r\n\/\/     if (windowTop > triggerPoint) {\r\n\/\/       if (!toc.classList.contains('sticky')) {\r\n\/\/         phtoc.style.display = \"block\";\r\n\/\/         toc.classList.add('sticky');\r\n\/\/         toc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/         toc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/         toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\tpanel2.style.height = '0px';\r\n\/\/ \t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t  if(window.innerWidth < 767){\r\n\/\/ \/\/ \t\t\t  const tocs = document.querySelector('#toc.sticky');\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar Isi'; \/\/ Reset title\r\n\/\/        \t\t  toc.style.width = '150px'; \/\/ Set width to match the parent element\r\n\/\/ \t\t  }\r\n\/\/       }\r\n\/\/       if (currentHeader) {\r\n\/\/ \/\/         console.log(\"activeLink:\", activeLink);\r\n\/\/         if (activeLink) {\r\n\/\/ \/\/           tocTitle.textContent = activeLink.textContent; \/\/ Update TOC title\r\n\/\/           tocTitle.textContent = activeLink ? activeLink.textContent : \"\"; \/\/ Update title only if activeLink exists\r\n\/\/         }\r\n\/\/       }\r\n\/\/     } else {\r\n\/\/       toc.classList.remove('sticky');\r\n\/\/       phtoc.style.display = \"none\";\r\n\/\/       toc.style.width = 'unset'; \/\/ Reset to original width\r\n\/\/       toc.style.backgroundColor = \"#FFF\";\r\n\/\/       tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\tpanel2.style.height = panel2.scrollHeight + \"px\";\r\n\/\/ \t\ticon.style.transform = \"rotate(180deg)\";\r\n\/\/     }\r\n\/\/   }\r\n\r\n\/\/     \/\/ Attach the scroll event listener to the window\r\n\/\/     window.addEventListener('scroll', handleScroll);\r\n\r\n\/\/     \/\/ Initial call to handleScroll to set the correct state on load\r\n\/\/     handleScroll();\r\n\/\/ });\r\n\t\r\n\/\/ \t\/\/ Open toggle TOC\r\n\/\/ \t  document.addEventListener(\"DOMContentLoaded\", function() {\r\n\/\/ \t\tvar tocHeader = document.querySelector(\"#toc .header\");\r\n\/\/ \t\tvar toc = document.querySelector(\"#toc\");\r\n\/\/ \t\tvar icon = document.querySelector(\".toc-icon\");\r\n\/\/ \t\tconst tocTitle = document.querySelector('#toc-title');\r\n\/\/ \t\tconst tocs = document.querySelector('#toc.sticky');\r\n\/\/  \t\tconst tocParent = toc.parentElement;\t\t  \r\n\r\n\/\/ \t\t  tocHeader.addEventListener(\"click\", function() {\r\n\/\/ \t\t\tvar panel = this.nextElementSibling;\r\n\/\/ \t\t\tif (panel.style.height !== '0px') { \/\/ Check if height is not 0px\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \/\/ \t\t\t\ttoc.style.paddingBottom = '6px'; \r\n\/\/ \t\t\t\tif(window.innerWidth > 768){\r\n\/\/ \t\t\t\t\tif(!toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = \"unset\";\r\n\/\/ \/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t\tif (toc.classList.contains('sticky')){\r\n\/\/ \t\t\t\t\t\ttoc.style.width = '${tocParent.offsetWidth}px';\r\n\/\/ \t\t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t\t}\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = \"unset\"; \/\/ Reset width\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t\ttoc.style.backgroundColor = \"#FFF1F1\";\r\n\/\/ \t\t\t} else {\r\n\/\/ \t\t\t  panel.style.height = panel.scrollHeight + \"px\";\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(0deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t  tocTitle.textContent = 'Daftar isi'; \/\/ Reset title\r\n\/\/ \t\t\t\ttoc.style.paddingBottom = '24px';\r\n\/\/ \t\t\t \tif(window.innerWidth < 767){\r\n\/\/ \t\t\t\t\ttoc.style.width = `${tocParent.offsetWidth}px`; \/\/ Set width to match the parent element\r\n\/\/ \t\t\t\t\ttoc.setAttribute('style', 'width: ' + tocParent.offsetWidth + 'px !important;');\r\n\/\/ \t\t\t\t}\r\n\/\/ \t\t\t}\r\n\/\/ \t\t  });\r\n\r\n\/\/ \t\t  \/\/ Close TOC when a link inside it is clicked\r\n\/\/ \t\t  var tocLinks = document.querySelectorAll(\"#toc .list a\");\r\n\/\/ \t\t  tocLinks.forEach(function(link) {\r\n\/\/ \t\t\tlink.addEventListener(\"click\", function() {\r\n\/\/ \t\t\t  var panel = document.querySelector(\"#toc .list\");\r\n\/\/ \t\t\t  panel.style.height = '0px'; \/\/ Set height to 0 for full collapse\r\n\/\/ \t\t\t  icon.style.transform = \"rotate(180deg)\";\r\n\/\/ \t\t\t  toc.style.backgroundColor = \"#FFF\";\r\n\/\/ \t\t\t});\r\n\/\/ \t\t  });\r\n\/\/ \t\t});\r\n\r\n\/\/ START new JS for ToC improvements\r\ndocument.addEventListener(\"DOMContentLoaded\", function() {\r\n  const toc = document.querySelector('#toc');\r\n  const footer = document.querySelector('.td-footer-template-wrap');\r\n  const tocParent = toc.parentElement;\r\n  const divTop = tocParent.getBoundingClientRect().top + window.pageYOffset;\r\n  const tocHeight = toc.offsetHeight;\r\n  const triggerPoint = divTop + tocHeight + 1750;\r\n\tconsole.log(triggerPoint)\r\n  const footerHeight = footer.offsetHeight;\r\n  const triggerFooterPoint = footer.getBoundingClientRect().top + window.pageYOffset - footerHeight*3;\r\n  const phtoc = document.querySelector('#placeholder-toc');\r\n  const headers = document.querySelectorAll('.td-post-content h2');\r\n  const navLinks = document.querySelectorAll('#toc-list a');\r\n  \r\n  const panel2 = document.querySelector(\"#toc .list\");\r\n  const icon = document.querySelector(\".toc-icon\");\r\n  const tocTitle = document.querySelector('#toc-title');\r\n\r\n  let activeLink = null;\r\n  let userClosedTOC = false; \/\/ Flag user menutup TOC\r\n\r\n  function handleScroll() {\r\n    const windowTop = window.pageYOffset || document.documentElement.scrollTop;\r\n    let currentHeader = '';\r\n\r\n    \/\/ Update TOC title sesuai header yang terlihat\r\n    headers.forEach(header => {\r\n      const headerTop = header.offsetTop;\r\n      const headerHeight = header.clientHeight;\r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n      } else {\r\n        if (window.scrollY >= (headerTop - headerHeight + 1750)) {\r\n          const currentHeaderId = header.getAttribute('id');\r\n          const currentHeaderText = document.getElementById(currentHeaderId).textContent;\r\n          tocTitle.textContent = currentHeaderText;\r\n          currentHeader = currentHeaderId;\r\n        }\r\n      }\r\n    });\r\n\r\n    navLinks.forEach(link => {\r\n      link.classList.remove('active');\r\n      if(currentHeader && link.getAttribute('href').includes(currentHeader)) {\r\n        link.classList.add('active');\r\n      }\r\n    });\r\n\r\n    if (windowTop > triggerPoint) {\r\n      if (!toc.classList.contains('sticky')) {\r\n        phtoc.style.display = \"block\";\r\n        toc.classList.add('sticky');\r\n        toc.style.width = `${tocParent.offsetWidth}px`;\r\n        toc.style.backgroundColor = \"#FFF\";\r\n        \/\/ Saat sticky, TOC otomatis tertutup\r\n        panel2.style.height = '0px';\r\n        icon.style.transform = \"rotate(180deg)\";\r\n        userClosedTOC = true; \/\/ Set flag supaya tidak terbuka saat scroll\r\n      }\r\n      \r\n      if(window.innerWidth < 767){\r\n        tocTitle.textContent = 'Daftar Isi'; \r\n        toc.style.width = '150px';\r\n      }\r\n\r\n    } else {\r\n      toc.classList.remove('sticky');\r\n      phtoc.style.display = \"none\";\r\n      toc.style.width = 'unset';\r\n      toc.style.backgroundColor = \"#FFF\";\r\n      tocTitle.textContent = 'Daftar isi'; \r\n\r\n      \/\/ Kembalikan panel jika user belum menutup manual\r\n      if(!userClosedTOC) {\r\n        panel2.style.height = panel2.scrollHeight + \"px\";\r\n        icon.style.transform = \"rotate(0deg)\";\r\n      }\r\n    }\r\n  }\r\n\r\n  window.addEventListener('scroll', handleScroll);\r\n  handleScroll();\r\n\r\n  \/\/ Toggle TOC saat user klik\r\n  const tocHeader = document.querySelector(\"#toc .header\");\r\n  tocHeader.addEventListener(\"click\", function() {\r\n    const panel = panel2;\r\n    if (panel.style.height !== '0px') {\r\n      panel.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    } else {\r\n      panel.style.height = panel.scrollHeight + \"px\";\r\n      icon.style.transform = \"rotate(0deg)\";\r\n      userClosedTOC = false;\r\n    }\r\n  });\r\n\r\n  \/\/ Close TOC saat link diklik\r\n  document.querySelectorAll(\"#toc .list a\").forEach(link => {\r\n    link.addEventListener(\"click\", function() {\r\n      panel2.style.height = '0px';\r\n      icon.style.transform = \"rotate(180deg)\";\r\n      userClosedTOC = true;\r\n    });\r\n  });\r\n});\r\n\/\/ END new JS for ToC improvements\r\n\r\n\t\r\n\/\/ \tmake the heading at the center of the viewport\r\n\/\/ \tdocument.addEventListener('DOMContentLoaded', function() {\r\n\/\/     \/\/ Add click event listener to all links in the TOC list\r\n\/\/     document.querySelectorAll('#toc-list a').forEach(anchor => {\r\n\/\/         anchor.addEventListener('click', function (e) {\r\n\/\/             e.preventDefault(); \/\/ Prevent the default behavior of jumping to the anchor\r\n\/\/ \/\/ \t\t\tconsole.log(\"prevent default\");\r\n\/\/             const targetId = this.getAttribute('href').substring(1); \/\/ Get the ID of the target element\r\n\/\/             const targetElement = document.getElementById(targetId); \/\/ Get the target element\r\n\r\n\/\/             if (targetElement) {\r\n\/\/                 const headerHeight = document.querySelector('#toc .header').offsetHeight; \/\/ Get the height of the fixed header\r\n\/\/                 const windowHeight = window.innerHeight; \/\/ Get the height of the viewport\r\n\/\/                 const targetOffset = targetElement.offsetTop; \/\/ Get the top offset of the target element\r\n\/\/                 const scrollTo = targetOffset + (windowHeight \/ 2) + (headerHeight); \/\/ Calculate the scroll position to center the target element\r\n\r\n\/\/                 \/\/ Scroll to the calculated position smoothly\r\n\/\/                 window.scrollTo({\r\n\/\/                     top: scrollTo,\r\n\/\/                     behavior: 'smooth'\r\n\/\/                 });\r\n\/\/             }\r\n\/\/         });\r\n\/\/     });\r\n\/\/ });\r\n<\/script>\r\n\r\n<script>\r\n    \/\/ Scrollspy function to highlight the active TOC item based on the scroll position\r\n  function scrollSpy(tocClass) {\r\n    const scrollPosition = window.scrollY;\r\n\r\n    \/\/ Find the active h2 and h3 headings based on their position in the corresponding TOC\r\n    let activeH2 = null;\r\n    let activeH3 = null;\r\n\r\n    const tocItems = document.querySelectorAll(`.${tocClass} li`);\r\n    tocItems.forEach(item => {\r\n      const a = item.querySelector('a');\r\n      if (!a) return;\r\n      const href = a.getAttribute('href');\r\n      const targetId = href.substring(1); \/\/ Remove the '#' from the href to get the target ID\r\n      const targetElement = document.getElementById(targetId);\r\n      if (!targetElement) return;\r\n\r\n      const targetTop = targetElement.getBoundingClientRect().top + scrollPosition;\r\n      const nextItem = item.nextElementSibling;\r\n      const nextTop = nextItem ? nextItem.getBoundingClientRect().top + scrollPosition : Infinity;\r\n\r\n      if (targetTop <= scrollPosition + 150) {\r\n        if (a.parentElement.parentElement === tocItems) {\r\n          \/\/ The h2 heading is at the root level of the TOC\r\n          activeH2 = { id: targetId, level: 'h2' };\r\n        } \r\n\t\t  else {\r\n          \/\/ The h3 heading is nested under an h2 heading\r\n          const parentH2 = a.parentElement.parentElement.previousElementSibling;\r\n          if (parentH2) {\r\n            const h2Link = parentH2.querySelector('a');\r\n            if (h2Link) {\r\n              const h2Href = h2Link.getAttribute('href');\r\n              const h2Id = h2Href.substring(1);\r\n              activeH2 = { id: h2Id, level: 'h2' };\r\n            }\r\n          }\r\n          activeH3 = { id: targetId, level: 'h3' };\r\n        }\r\n      }\r\n\r\n      if (targetTop > scrollPosition + 150 && nextTop > scrollPosition + 150 && !activeH3) {\r\n        \/\/ Reset the activeH2 when there are no more active h3 headings\r\n        activeH2 = null;\r\n      }\r\n    });\r\n\r\n    \/\/ Update the active state for the TOC items\r\n    tocItems.forEach(item => {\r\n      item.classList.remove('active');\r\n      const a = item.querySelector('a');\r\n      if (a) {\r\n        const href = a.getAttribute('href');\r\n        const targetId = href.substring(1);\r\n        if ((activeH2 && activeH2.id === targetId) || (activeH3 && activeH3.id === targetId)) {\r\n          item.classList.add('active');\r\n        }\r\n      }\r\n    });\r\n  }\r\n\r\n  \/\/ Call scrollSpy for each TOC on window scroll\r\n  const tocClasses = ['list_toc', 'list_toc_float']; \/\/ Add other TOC class names here if you have more than two instances\r\n  tocClasses.forEach(tocClass => {\r\n    window.addEventListener('scroll', () => scrollSpy(tocClass));\r\n  });\r\n<\/script>\r\n\r\n<!-- ToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\" -->\r\n<!-- <script>\r\n\tdocument.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n        \/\/ Fungsi untuk membuat nested list\r\n        function createNestedList(parentNode, children) {\r\n            if (children.length === 0) return;\r\n\r\n            const nestedUl = document.createElement('ul');\r\n            children.forEach(child => {\r\n                const nestedLi = document.createElement('li');\r\n                const nestedA = document.createElement('a');\r\n                nestedA.textContent = child.title;\r\n                nestedA.href = `#${child.id}`;\r\n                nestedLi.appendChild(nestedA);\r\n                nestedUl.appendChild(nestedLi);\r\n\r\n                if (child.children.length > 0) {\r\n                    createNestedList(nestedLi, child.children);\r\n                }\r\n            });\r\n\r\n            parentNode.appendChild(nestedUl);\r\n        }\r\n\r\n        \/\/ Membuat objek untuk menyimpan daftar h2 dan h3 beserta judulnya\r\n        const headings = [];\r\n\r\n           \/\/ Mengambil semua elemen h2 dan h3\r\n        \/\/ Mengambil semua elemen h2 dan h3\r\n\t\tconst elements = document.querySelectorAll('.td-post-content h2');\r\n\r\n\t\t\tfunction newFormatId(text) {\r\n\t\t\t\tif(text.toLowerCase() === \"key takeaways\") {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tconst result = text.toLowerCase()\r\n\t\t\t\t.trim()\r\n\t\t\t\t.replace(\/[^\\w\\s-]\/g, '')  \/\/ hapus tanda baca\r\n\t\t\t\t.replace(\/\\s+\/g, '-'); \/\/ ganti spasi jadi \"-\"\r\n\r\n\t\t\t\treturn result;\r\n\t\t\t}\r\n\t\r\n\t\telements.forEach(element => {\r\n\t\t\tif (element.tagName === 'H2') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h2\r\n\t\t\t\tif (element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Kalau Key Takeaways, jangan dimasukin\r\n\t\t\t\theadings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n\t\t\t} else if (element.tagName === 'H3') {\r\n\t\t\t\tconst id = newFormatId(element.textContent); \/\/ Hasilkan ID baru\r\n\t\t\t\telement.id = id; \/\/ Tetapkan ID ke elemen h3\r\n\t\t\t\tif (headings.length > 0) {\r\n\t\t\t\t\theadings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n       \/\/ Membuat list HTML dari objek headings\r\n\t\tconst ul = document.getElementById('list_toc');\r\n\t\tlet currentUl = ul;\r\n\t\theadings.forEach(heading => {\r\n\t\t\tconst li = document.createElement('li');\r\n\t\t\tconst a = document.createElement('a');\r\n\t\t\ta.textContent = heading.title;\r\n\t\t\ta.href = `#${heading.id}`; \/\/ Gunakan ID yang baru dihasilkan\r\n\t\t\tli.appendChild(a);\r\n\r\n\t\t\tif (heading.level === 'h2') {\r\n\t\t\t\tcurrentUl = li;\r\n\t\t\t\tul.appendChild(li);\r\n\t\t\t} else if (heading.level === 'h3') {\r\n\t\t\t\tif (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n\t\t\t\t\tconst nestedUl = document.createElement('ul');\r\n\t\t\t\t\tcurrentUl.appendChild(nestedUl);\r\n\t\t\t\t\tcurrentUl = nestedUl;\r\n\t\t\t\t}\r\n\t\t\t\tcurrentUl.appendChild(li);\r\n\t\t\t}\r\n\r\n\t\t\tcreateNestedList(li, heading.children);\r\n\t\t});\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc'\r\n\t\tconst ulFloat = document.getElementById('list_toc');\r\n\r\n\t\t\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc'\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\r\n\t\t\/\/ Tambahkan isi yang telah didapatkan dari 'list_toc' ke ul dengan id 'list_toc_float'\r\n\t\tulToc.append(...clonedChildren);\r\n\r\n\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n\t\tfunction getNavbarHeight() {\r\n\t\t\tconst navbar = document.getElementById('tdi_34');\r\n\t\t\treturn navbar ? navbar.offsetHeight : 0;\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menambahkan offset posisi scroll\r\n\t\tfunction scrollToElementWithOffset(elementId) {\r\n\t\t\tconst element = document.getElementById(elementId);\r\n\t\t\tif (element) {\r\n\t\t\t\tconst offset = getNavbarHeight();\r\n\t\t\t\tconst elementPosition = element.getBoundingClientRect().top;\r\n\t\t\t\tconst offsetPosition = elementPosition - offset - 40;\r\n\r\n\t\t\t\twindow.scrollBy({\r\n\t\t\t\t\ttop: offsetPosition,\r\n\t\t\t\t\tbehavior: 'smooth'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\/\/ Fungsi untuk menangani klik pada tautan judul\r\n\t\tfunction handleTitleClick(event) {\r\n\t\t\tevent.preventDefault();\r\n\t\t\tconst href = event.target.getAttribute('href').substr(1);\r\n\t\t\tscrollToElementWithOffset(href);\r\n\t\t}\r\n\r\n\t\t\/\/ Tambahkan event listener untuk semua tautan judul\r\n\t\tconst titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n\t\ttitleLinks.forEach(link => {\r\n\t\t\tlink.addEventListener('click', handleTitleClick);\r\n\t\t});\r\n\t\t\r\n\t});\r\n    <\/script> -->\r\n\n<h2><b>Apa Itu <\/b><b><i>Employee Self-Service Portal<\/i><\/b><b>?<\/b><\/h2>\n<p id=\"employee\">Employee Self-Service Portal adalah layanan HRIS yang ditujukan pada karyawan untuk mengecek data diri, jumlah gaji beserta komponen pajak yang mengikuti, serta jumlah cuti yang tersedia.<\/p>\n<p><span style=\"font-weight: 400;\">Karyawan bisa melakukan absen <\/span><i><span style=\"font-weight: 400;\">face recognition<\/span><\/i><span style=\"font-weight: 400;\"> untuk <\/span><i><span style=\"font-weight: 400;\">check-in<\/span><\/i><span style=\"font-weight: 400;\"> dan <\/span><i><span style=\"font-weight: 400;\">check-out <\/span><\/i><span style=\"font-weight: 400;\">masuk kerja dan juga bisa mengajukan cuti melalui aplikasi ini. Semua detail seperti jumlah cuti tersisa pun juga tercantum pada <\/span><i><span style=\"font-weight: 400;\">platform<\/span><\/i><span style=\"font-weight: 400;\"> ini, memastikan karyawan paham dengan seluruh haknya tanpa harus bertanya satu-satu ke tim HR.<\/span><\/p>\n<p><i><span style=\"font-weight: 400;\">Employee Self-Service Portal<\/span><\/i><span style=\"font-weight: 400;\"> juga merupakan komponen yang memegang peranan penting dalam menjaga kepatuhan perusahaan terhadap hukum ketenagakerjaan Indonesia, dalam hal ini transparansi detail gaji berikut dengan potongan yang mengikuti seperti PPh 21 atau BPJS JHT dan JP.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Hal ini juga sudah diatur dalam <\/span><a href=\"https:\/\/peraturan.bpk.go.id\/Details\/161909\/pp-no-36-tahun-2021\"><span style=\"font-weight: 400;\">PP No. 36 Pasal 52 Tahun 2021<\/span><\/a><span style=\"font-weight: 400;\"> yang menyatakan bahwa karyawan atau kuasanya berhak untuk meminta informasi gaji dari perusahaan.<\/span><\/p>\n<h2><b>Komponen Apa Saja yang Terdapat dalam Portal Layanan Mandiri Karyawan?<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-192116\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro.webp\" alt=\"Komponen Employee Self-Service Portal\" width=\"1536\" height=\"1024\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-300x200.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-1024x683.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-768x512.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-630x420.webp 630w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-150x100.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-696x464.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/komponen-employee-self-service-portal-hashmicro-1068x712.webp 1068w\" sizes=\"auto, (max-width: 1536px) 100vw, 1536px\" \/><\/p>\n<p id=\"portal\">Portal <i><span style=\"font-weight: 400;\">self-service<\/span><\/i><span style=\"font-weight: 400;\"> harus bisa memenuhi semua hak karyawan dengan tetap bertanggung jawab. Agar layanan karyawan perusahaan Anda dapat digunakan dengan maksimal, berikut komponennya yang bisa Anda perhatikan:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Profil dan data pribadi karyawan:<\/b> <i><span style=\"font-weight: 400;\">Section<\/span><\/i><span style=\"font-weight: 400;\"> ini ditujukan karyawan untuk melakukan perubahan dan menyimpan setiap data seperti nama lengkap, tanggal lahir, domisili, <\/span><i><span style=\"font-weight: 400;\">role<\/span><\/i><span style=\"font-weight: 400;\"> dan jabatan pekerjaan, serta informasi kontak seperti nomor telepon, <\/span><i><span style=\"font-weight: 400;\">email<\/span><\/i><span style=\"font-weight: 400;\">, dan rekening bank.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Detail <\/b><b><i>payroll <\/i><\/b><b>dan slip gaji:<\/b><span style=\"font-weight: 400;\"> Bagian ini dapat diakses karyawan untuk melihat detail <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\"> atau gaji bersih yang mereka terima setelah terkena potongan BPJS JP dan JHT serta PPh 21 yang berlaku. Data potongan meliputi persenan serta jumlah gaji setelah dipotong.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Kehadiran dan cuti karyawan:<\/b><span style=\"font-weight: 400;\"> Portal ini berisi <\/span><i><span style=\"font-weight: 400;\">check-in<\/span><\/i><span style=\"font-weight: 400;\"> dan <\/span><i><span style=\"font-weight: 400;\">check-out<\/span><\/i><span style=\"font-weight: 400;\"> digital karyawan serta pengajuan cuti. Karyawan bisa melakukan <\/span><i><span style=\"font-weight: 400;\">check-in<\/span><\/i><span style=\"font-weight: 400;\"> masuk kerja menggunakan <\/span><i><span style=\"font-weight: 400;\">face recognition<\/span><\/i><span style=\"font-weight: 400;\"> serta <\/span><i><span style=\"font-weight: 400;\">check-out <\/span><\/i><span style=\"font-weight: 400;\">dengan cara yang sama. Karyawan juga bisa mengajukan cuti yang terbagi menjadi beberapa jenis seperti cuti tahunan dan cuti sakit. Status kehadiran dan cuti bisa dicek karyawan.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pengajuan lembur:<\/b><span style=\"font-weight: 400;\"> Karyawan yang memerlukan lembur dapat mengajukan lembur untuk menyelesaikan pekerjaannya, yang akan langsung ter-<\/span><i><span style=\"font-weight: 400;\">update<\/span><\/i><span style=\"font-weight: 400;\"> secara <\/span><i><span style=\"font-weight: 400;\">real-time<\/span><\/i><span style=\"font-weight: 400;\"> di aplikasi.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b><i>Benefit<\/i><\/b><b> BPJS:<\/b><span style=\"font-weight: 400;\"> Berisi <\/span><i><span style=\"font-weight: 400;\">benefit<\/span><\/i><span style=\"font-weight: 400;\"> berupa BPJS Ketenagakerjaan dan BPJS Kesehatan. Fitur BPJS Ketenagakerjaan seperti pengkinian data, cek saldo dan klaim JHT, serta tracking klaim. Dari BPJS Kesehatan juga menyediakan fitur seperti ubah nomor HP, email, alamat, dan akses KIS digital.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Pusat dokumen HR:<\/b><span style=\"font-weight: 400;\"> Berisi kumpulan dokumen HR seperti kontrak karyawan, kebijakan kantor, NDA, <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/pkwt-dan-pkwtt\/\"><span style=\"font-weight: 400;\">PKWT dan PKWTT<\/span><\/a><span style=\"font-weight: 400;\"> agar karyawan paham hak-hak serta batasan yang perlu dipatuhi di perusahaan. Jika mereka lupa, mereka dapat mengecek ke portal ini.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Fitur-fitur di atas dapat Anda jadikan acuan jika Anda hendak mencari atau meng-<\/span><i><span style=\"font-weight: 400;\">custom<\/span><\/i> <a href=\"https:\/\/www.hashmicro.com\/id\/blog\/apa-itu-hris-pengertian-fungsi-hrm-software\/\"><span style=\"font-weight: 400;\">aplikasi HRIS untuk perusahaan Anda<\/span><\/a><span style=\"font-weight: 400;\">. Selanjutnya, mari simak langkah-langkah menerapkan budaya <\/span><i><span style=\"font-weight: 400;\">self-service<\/span><\/i><span style=\"font-weight: 400;\"> HR di lingkungan perusahaan.<\/span><\/p>\n<h2><b>Bagaimana Menerapkan <\/b><b><i>Self-Service<\/i><\/b><b> Bagi Karyawan?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Menerapkan layanan mandiri untuk karyawan memerlukan eksekusi yang tepat agar karyawan percaya dan mau beralih pada sistem ini. Implementasi <\/span><i><span style=\"font-weight: 400;\">self-service portal <\/span><\/i><span style=\"font-weight: 400;\">berpengaruh pada perubahan budaya HR perusahaan.<\/span><\/p>\n<p id=\"oleh\">Oleh karena itu, Anda dapat memahami langkah per langkah dalam menerapkan sistem baru ini:<\/p>\n<h3><b>1. Buatlah perencanaan yang matang sesuai kebutuhan karyawan<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Pertama-tama, pikirkan apa saja kebutuhan karyawan dan perusahaan. Fokuskan pada pengelolaan data pribadi, kehadiran dan cuti, serta pengembangan karyawan.<\/span><\/p>\n<h3><b>2. Pastikan untuk memilih platform ESS yang tepat<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Setelah merencanakan kebutuhan yang ada, pilih <\/span><i><span style=\"font-weight: 400;\">platform<\/span><\/i><span style=\"font-weight: 400;\"> ESS yang paling tepat. Seperti misalnya di Indonesia, perusahaan akan membutuhkan perhitungan dan potongan pajak seperti BPJS Ketenagakerjaan dan Kesehatan serta PPh 21.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Maka, pilih portal yang dapat terintegrasi dengan fitur tersebut untuk memudahkan perhitungannya bagi setiap karyawan.<\/span><\/p>\n<h3><b>3. Latih dan sosialisasikan karyawan Anda<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Setelah penerapan portal layanan mandiri dilakukan secara menyeluruh, buat program latihan untuk menyosialisasikan karyawan Anda dengan jelas.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kenalkan fitur-fitur seperti pengecekan data pribadi, BPJS dan pajak lainnya, serta <\/span><i><span style=\"font-weight: 400;\">section<\/span><\/i><span style=\"font-weight: 400;\"> kehadiran dan pengajuan cuti agar karyawan Anda mengerti jelas semua kegunaan fitur-fitur tersebut dan tidak ada hambatan dalam implementasinya.<\/span><\/p>\n<h3><b>4. Jamin keamanan data<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Pada aplikasi <\/span><i><span style=\"font-weight: 400;\">self-service<\/span><\/i><span style=\"font-weight: 400;\"> karyawan harus terjamin keamanannya. Sistem keamanan yang bisa dipakai biasanya berupa <\/span><i><span style=\"font-weight: 400;\">login<\/span><\/i><span style=\"font-weight: 400;\"> unik dengan <\/span><i><span style=\"font-weight: 400;\">multi-factor authentication<\/span><\/i><span style=\"font-weight: 400;\">, hak akses berbasis peran atau <\/span><i><span style=\"font-weight: 400;\">role-based access control<\/span><\/i><span style=\"font-weight: 400;\">, sistem enkripsi data, jejak aktivitas, dan <\/span><i><span style=\"font-weight: 400;\">session timeout<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Jika keamanan data terjamin, karyawan akan percaya dengan <\/span><i><span style=\"font-weight: 400;\">self-service<\/span><\/i><span style=\"font-weight: 400;\"> portal dan implementasi dapat dilakukan dengan lancar.<\/span><\/p>\n<h3><b>5. Terakhir, lakukan <\/b><b><i>monitoring<\/i><\/b><b> dan evaluasi data secara berkala<\/b><\/h3>\n<p><span style=\"font-weight: 400;\">Meskipun namanya <\/span><i><span style=\"font-weight: 400;\">self-service portal<\/span><\/i><span style=\"font-weight: 400;\">, departemen HR perusahaan Anda tidak dapat membiarkan sistem ini berjalan begitu saja. Dengan pengecekan berkala, segala bentuk <\/span><i><span style=\"font-weight: 400;\">downtime<\/span><\/i><span style=\"font-weight: 400;\"> sistem atau kebocoran data dapat diketahui dan tim HR dapat mengambil langkah mitigasi.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Memahami langkah demi langkah di atas dapat membantu Anda dalam merombak dan menerapkan aturan sistem HR baru.<\/span><\/p>\n<h2><b>Manfaat Layanan Mandiri Bagi Karyawan dan Perusahaan<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Menerapkan <\/span><i><span style=\"font-weight: 400;\">Employee Self-Service Portal<\/span><\/i><span style=\"font-weight: 400;\"> dalam praktik HR perusahaan membawa sejumlah manfaat baik untuk karyawan maupun pihak perusahaan. Apa saja manfaatnya?<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Bagi karyawan:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Memudahkan akses info gaji, cuti, dan komponen lainnya:<\/b><span style=\"font-weight: 400;\"> Karyawan tidak perlu repot-repot bertanya pada HR setiap mereka ingin mengetahui komponen gaji maupun prosedur kehadiran dan cuti.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Meningkatkan kepuasan karyawan terhadap layanan kantor:<\/b><span style=\"font-weight: 400;\"> Karyawan menjadi betah jika layanan kebutuhan mereka memadai, yang juga dapat meningkatkan tingkat retensi karyawan.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Menghemat waktu karyawan:<\/b><span style=\"font-weight: 400;\"> Jika karyawan ingin mengakses informasi seputar HR atau kebijakan perusahaan, mereka tinggal membuka aplikasi <\/span><i><span style=\"font-weight: 400;\">self-service<\/span><\/i><span style=\"font-weight: 400;\"> untuk mengetahuinya tanpa harus menunggu jawaban HR, memungkinkan karyawan lebih fokus dengan pekerjaan mereka.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Transparansi gaji sehingga karyawan paham dengan haknya:<\/b><span style=\"font-weight: 400;\"> Karyawan tidak akan merasa kebingungan lagi atau merasa haknya ditahan karena seluruh potongan pajak atau BPJS tertera jelas pada slip gaji mereka yang bisa diakses melalui portal layanan mandiri.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Selanjutnya, bagi perusahaan:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Efisiensi yang lebih baik pada administrasi kantor:<\/b><span style=\"font-weight: 400;\"> Departemen HR perusahaan Anda dapat berfokus pada tugas-tugas yang lebih penting ketimbang mengelola catatan absen, pengajuan cuti, dan <\/span><i><span style=\"font-weight: 400;\">request<\/span><\/i><span style=\"font-weight: 400;\"> data pribadi yang dapat mengefisienkan kerja HR.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Mengurangi biaya operasional:<\/b><span style=\"font-weight: 400;\"> Perusahaan tidak perlu keluar biaya untuk print dokumen maupun pencatatan manual menggunakan kertas karena setiap <\/span><i><span style=\"font-weight: 400;\">record<\/span><\/i><span style=\"font-weight: 400;\"> data karyawan ataupun dokumen penting sudah tersedia secara digital di platform HR.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>Meningkatkan transparansi serta kepatuhan perusahaan:<\/b><span style=\"font-weight: 400;\"> Transparansi gaji dan hak karyawan membuat kinerja karyawan meningkat dan berdampak positif bagi <\/span><i><span style=\"font-weight: 400;\">output<\/span><\/i><span style=\"font-weight: 400;\"> perusahaan. Selain itu, transparansi juga <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/compliance-audit-failure\/\"><span style=\"font-weight: 400;\">menjamin kepatuhan perusahaan<\/span><\/a><span style=\"font-weight: 400;\"> terhadap regulasi ketenagakerjaan di Indonesia.<\/span><\/li>\n<\/ul>\n<h2><b>Mengapa Penerapan <\/b><b><i>Self-Service Employee<\/i><\/b><b> Penting Bagi Perusahaan Modern?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Seiring meningkatnya distribusi jumlah tenaga kerja, perusahaan pada akhirnya akan tetap membutuhkan portal layanan mandiri bagi karyawan untuk berbagai macam urusan dan pekerjaan HR dikarenakan menangani jumlah tenaga kerja beserta ragam pertanyaan karyawan bisa sangat kompleks.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Belum lagi jika departemen HR juga sibuk mengatur <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/employee-development\/\"><span style=\"font-weight: 400;\">rencana program pengembangan karyawan<\/span><\/a><span style=\"font-weight: 400;\">. Untuk memenuhi tuntutan tersebut, sekarang ini sudah banyak perusahaan besar di Indonesia yang beralih ke sistem <\/span><i><span style=\"font-weight: 400;\">self-service portal <\/span><\/i><span style=\"font-weight: 400;\">karyawan untuk manajemen sumber daya manusia yang lebih baik.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Perusahaan seperti PT Bank Rakyat Indonesia sudah melakukan penerapan ini dengan aplikasi HRIS yang dibarengi dengan pelatihan karyawan yang memadai, meningkatkan kinerja karyawan PT BRI sebesar 60,40% berkat sistem yang efisien.<\/span><\/p>\n<h2><b>Implementasi <\/b><b><i>Employee Self-Service<\/i><\/b><b> Melalui <\/b><b><i>Software<\/i><\/b><b> HRM<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-192117\" src=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro.webp\" alt=\"Dashboard Employee Self Service\" width=\"1920\" height=\"846\" srcset=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro.webp 1920w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-300x132.webp 300w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-1024x451.webp 1024w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-768x338.webp 768w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-1536x677.webp 1536w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-953x420.webp 953w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-150x66.webp 150w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-696x307.webp 696w, https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/dashboard-employee-self-service-hashmicro-1068x471.webp 1068w\" sizes=\"auto, (max-width: 1920px) 100vw, 1920px\" \/><\/p>\n<p><span style=\"font-weight: 400;\">Implementasi layanan portal mandiri untuk karyawan perusahaan Anda dapat digabungkan dengan <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> HRM yang dapat langsung terintegrasi dengan modul keuangan perusahaan, memastikan <\/span><a href=\"https:\/\/www.hashmicro.com\/id\/blog\/sistem-payroll-adalah\/\"><span style=\"font-weight: 400;\">penggajian dapat dilakukan dengan lebih akurat<\/span><\/a><span style=\"font-weight: 400;\">. Anda bisa memahami beberapa fitur utama dalam <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> HRM:<\/span><\/p>\n<ul>\n<li aria-level=\"1\"><b><i>Payroll management<\/i><\/b><b>: <\/b><span style=\"font-weight: 400;\">Menggaji karyawan setiap tanggal payroll yang ditentukan dan otomatis memotong gaji sesuai dengan komponen pajak yang mengikuti.<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-level=\"1\"><b><i>Database<\/i><\/b><b> karyawan yang terpusat: <\/b><span style=\"font-weight: 400;\">Seluruh data karyawan berada pada <\/span><i><span style=\"font-weight: 400;\">database<\/span><\/i><span style=\"font-weight: 400;\"> yang sama. Jika ada perubahan, maka datanya langsung ter-update secara <\/span><i><span style=\"font-weight: 400;\">real-time<\/span><\/i><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-level=\"1\"><b><i>Attendance management<\/i><\/b><b>: <\/b><span style=\"font-weight: 400;\">Menyimpan seluruh <\/span><i><span style=\"font-weight: 400;\">record<\/span><\/i><span style=\"font-weight: 400;\"> kehadiran karyawan berdasarkan <\/span><i><span style=\"font-weight: 400;\">check-in<\/span><\/i><span style=\"font-weight: 400;\"> dan <\/span><i><span style=\"font-weight: 400;\">check-out<\/span><\/i><span style=\"font-weight: 400;\"> yang mereka lakukan.<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-level=\"1\"><b><i>Leave management<\/i><\/b><b>: <\/b><span style=\"font-weight: 400;\">Pengajuan cuti karyawan, baik cuti <\/span><i><span style=\"font-weight: 400;\">half day<\/span><\/i><span style=\"font-weight: 400;\"> atau <\/span><i><span style=\"font-weight: 400;\">full day<\/span><\/i><span style=\"font-weight: 400;\">, bisa dilakukan melalui portal ini.<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-level=\"1\"><b>Manajemen kontrak: <\/b><span style=\"font-weight: 400;\">Perusahaan dapat mengelola siklus kontrak kerja per karyawan. Lama kontrak dan sisa jangka waktu kontrak dapat dilihat pada portal ini.<\/span><\/li>\n<\/ul>\n<ul>\n<li aria-level=\"1\"><b>Manajemen <\/b><b><i>reimburse<\/i><\/b><b> keperluan kantor: <\/b><span style=\"font-weight: 400;\">Karyawan dapat mengajukan <\/span><i><span style=\"font-weight: 400;\">reimburse<\/span><\/i><span style=\"font-weight: 400;\"> jika semisal karyawan membayar untuk keperluan pekerjaan, misalnya <\/span><i><span style=\"font-weight: 400;\">business trip<\/span><\/i><span style=\"font-weight: 400;\">. Status <\/span><i><span style=\"font-weight: 400;\">reimburse<\/span><\/i><span style=\"font-weight: 400;\"> akan langsung ter-<\/span><i><span style=\"font-weight: 400;\">update<\/span><\/i><span style=\"font-weight: 400;\"> dan terhitung di sistem.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">Sejumlah fungsi dan fitur di atas bisa Anda pertimbangkan untuk kegunaan kantor Anda.<\/span><\/p>\n<h2><b>Kesimpulan<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Penerapan <\/span><i><span style=\"font-weight: 400;\">Employee Self-Service Portal<\/span><\/i><span style=\"font-weight: 400;\"> atau ESS di perusahaan Anda dapat menyederhanakan tugas HR yang kompleks sehingga departemen HR dapat berfokus pada pengembangan karyawan dan juga dalam beradaptasi dengan aneka jenis peraturan ketenagakerjaan baru.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Implementasi ESS pada <\/span><i><span style=\"font-weight: 400;\">software<\/span><\/i><span style=\"font-weight: 400;\"> HRM akan sangat membantu perusahaan mencegah kesalahan <\/span><i><span style=\"font-weight: 400;\">payroll<\/span><\/i><span style=\"font-weight: 400;\"> karyawan maupun beradaptasi dengan perubahan data karyawan.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Akhir kata, meski sudah menerapkan ESS, penting juga bagi perusahaan untuk menjaga hubungan baik dengan karyawan jika mereka membutuhkan bantuan kantor terkait dengan hak mereka secara jelas. Pelatihan karyawan juga dapat menjadi langkah yang tepat untuk meningkatkan kompetensi mereka di tempat kerja.<\/span><\/p>\n<h2><strong>FAQ Seputar ESS Portal<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Apa perbedaan antara ESS dan HR manual?<\/strong><\/summary>\n<p>Perbedaannya terletak pada cara kerjanya. ESS menyatukan keseluruhan data karyawan, kontrak, cuti, serta penggajian dalam satu sistem terpusat, hanya dibedakan <em>section<\/em> saja. Sedangkan, proses HR manual seringkali masih berupa pencatatan semua komponen di atas secara terpisah dan kadang bisa salah pencatatan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah ESS dan HRIS sama?<\/strong><\/summary>\n<p>ESS merupakan sistem layanan mandiri yang dapat digunakan karyawan seperti melihat info pribadi karyawan serta hak-hak atau kontrak yang mereka miliki. Sedangkan, HRIS adalah manajemen HR berbasis digital yang lebih luas; mencakup seperti data kinerja karyawan, frekuensi cuti, serta laporan SDM perusahaan.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Apakah ESS membantu pekerja <em>remote<\/em>?<\/strong><\/summary>\n<p>Tentu saja. Manfaat ESS tidak hanya untuk karyawan yang bekerja secara <em>onsite<\/em> tetapi juga mereka yang bekerja jarak jauh karena memudahkan untuk melihat keseluruhan data diri serta komponen yang menjadi hak mereka.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Berapa banyak waktu admin HR yang dapat dihemat dengan ESS?<\/strong><\/summary>\n<p>Menurut studi Paychex, otomatisasi tugas seperti <em>update<\/em> data karyawan, cuti, dan <em>payroll<\/em> memangkas proses ini sebesar 30%.<\/p>\n<\/details>\n<\/li>\n<\/ul>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"Apa perbedaan antara ESS dan HR manual?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Perbedaannya terletak pada cara kerjanya. ESS menyatukan keseluruhan data karyawan, kontrak, cuti, serta penggajian dalam satu sistem terpusat, hanya dibedakan section saja. Sedangkan, proses HR manual seringkali masih berupa pencatatan semua komponen di atas secara terpisah dan kadang bisa salah pencatatan.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apakah ESS dan HRIS sama?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"ESS merupakan sistem layanan mandiri yang dapat digunakan karyawan seperti melihat info pribadi karyawan serta hak-hak atau kontrak yang mereka miliki. Sedangkan, HRIS adalah manajemen HR berbasis digital yang lebih luas; mencakup seperti data kinerja karyawan, frekuensi cuti, serta laporan SDM perusahaan.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Apakah ESS membantu pekerja remote?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Tentu saja. Manfaat ESS tidak hanya untuk karyawan yang bekerja secara onsite tetapi juga mereka yang bekerja jarak jauh karena memudahkan untuk melihat keseluruhan data diri serta komponen yang menjadi hak mereka.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Berapa banyak waktu admin HR yang dapat dihemat dengan ESS?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Menurut studi Paychex, otomatisasi tugas seperti update data karyawan, cuti, dan payroll memangkas proses ini sebesar 30%.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Employee Self-Service Portal atau ESS adalah portal berbasis web atau aplikasi digital yang menyediakan portal layanan mandiri bagi karyawan perusahaan. Karyawan dapat mengakses informasi data pribadi maupun penggajian serta komponen pajak yang menyertainya tanpa harus selalu bertanya kepada departemen HR. Platform ini dapat membantu tim HR perusahaan Anda berfokus pada tugas-tugas pengembangan karyawan ketimbang mengurusi [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":192115,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[6],"tags":[],"class_list":{"0":"post-192113","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-hrm"},"acf":{"post_reviewer":""},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.1 (Yoast SEO v25.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Employee Self-Service Portal: Pengertian dan Cara Menerapkan &#187; HashMicro Indonesia<\/title>\n<meta name=\"description\" content=\"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\" \/>\n<meta property=\"og:locale\" content=\"id_ID\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Employee Self-Service Portal: Pengertian dan Cara Menerapkan\" \/>\n<meta property=\"og:description\" content=\"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Indonesia\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/hashmicro\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-09T09:56:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1080\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Reno Wicaksana\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:site\" content=\"@hashmicro\" \/>\n<meta name=\"twitter:label1\" content=\"Ditulis oleh\" \/>\n\t<meta name=\"twitter:data1\" content=\"Reno Wicaksana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimasi waktu membaca\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 menit\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\"},\"author\":{\"name\":\"Reno Wicaksana\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\"},\"headline\":\"Employee Self-Service Portal: Pengertian dan Cara Menerapkan\",\"datePublished\":\"2026-04-09T09:56:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\"},\"wordCount\":1687,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp\",\"articleSection\":[\"HRM\"],\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\",\"name\":\"Employee Self-Service Portal: Pengertian dan Cara Menerapkan &#187; HashMicro Indonesia\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp\",\"datePublished\":\"2026-04-09T09:56:24+00:00\",\"description\":\"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#breadcrumb\"},\"inLanguage\":\"id\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp\",\"width\":1920,\"height\":1080,\"caption\":\"Employee Self-Service Portal\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/id\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Employee Self-Service Portal: Pengertian dan Cara Menerapkan\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"name\":\"HashMicro Indonesia\",\"description\":\"Blog Software Manajemen Bisnis Indonesia #1\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"id\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#organization\",\"name\":\"HashMicro Indonesia\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp\",\"width\":924,\"height\":121,\"caption\":\"HashMicro Indonesia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/hashmicro\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e\",\"name\":\"Reno Wicaksana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"id\",\"@id\":\"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp\",\"caption\":\"Reno Wicaksana\"},\"description\":\"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/william-w-88353a262\/\"],\"gender\":\"Laki-laki\",\"knowsAbout\":[\"HRM\",\"HRIS\"],\"knowsLanguage\":[\"Inggris\",\"Indonesia\"],\"jobTitle\":\"Senior Content Writer on HRIS\",\"url\":\"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan &#187; HashMicro Indonesia","description":"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/","og_locale":"id_ID","og_type":"article","og_title":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan","og_description":"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.","og_url":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/","og_site_name":"HashMicro Indonesia","article_publisher":"https:\/\/www.facebook.com\/hashmicro","article_published_time":"2026-04-09T09:56:24+00:00","og_image":[{"width":1920,"height":1080,"url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp","type":"image\/webp"}],"author":"Reno Wicaksana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Ditulis oleh":"Reno Wicaksana","Estimasi waktu membaca":"10 menit"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/"},"author":{"name":"Reno Wicaksana","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e"},"headline":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan","datePublished":"2026-04-09T09:56:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/"},"wordCount":1687,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp","articleSection":["HRM"],"inLanguage":"id","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/","name":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan &#187; HashMicro Indonesia","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp","datePublished":"2026-04-09T09:56:24+00:00","description":"Employee Self-Service Portal adalah layanan digital karyawan untuk mengakses informasi HR dengan mandiri. Pelajari pengertian serta penerapannya.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#breadcrumb"},"inLanguage":"id","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/"]}]},{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#primaryimage","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2026\/04\/employee-self-service-portal-hashmicro.webp","width":1920,"height":1080,"caption":"Employee Self-Service Portal"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/id\/blog\/employee-self-service-portal\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/id\/blog\/"},{"@type":"ListItem","position":2,"name":"Employee Self-Service Portal: Pengertian dan Cara Menerapkan"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#website","url":"https:\/\/www.hashmicro.com\/id\/blog\/","name":"HashMicro Indonesia","description":"Blog Software Manajemen Bisnis Indonesia #1","publisher":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/id\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"id"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#organization","name":"HashMicro Indonesia","url":"https:\/\/www.hashmicro.com\/id\/blog\/","logo":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2023\/11\/hashmicro-logo-blog.webp","width":924,"height":121,"caption":"HashMicro Indonesia"},"image":{"@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/hashmicro","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/0d3340f667908102d8894da18f80732e","name":"Reno Wicaksana","image":{"@type":"ImageObject","inLanguage":"id","@id":"https:\/\/www.hashmicro.com\/id\/blog\/#\/schema\/person\/image\/","url":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","contentUrl":"https:\/\/www.hashmicro.com\/id\/blog\/wp-content\/uploads\/2025\/10\/Reno-Wicaksana-96x96.webp","caption":"Reno Wicaksana"},"description":"Reno adalah HRM Specialist dan senior content writer dengan pengalaman lebih dari 5 tahun di industri teknologi dan manajemen sumber daya manusia. Secara konsisten mengangkat topik artikel seputar performance management, rekrutmen dan pengembangan SDM, manajemen talenta, dan sistem HRIS untuk pengelolaan karyawan.","sameAs":["https:\/\/www.linkedin.com\/in\/william-w-88353a262\/"],"gender":"Laki-laki","knowsAbout":["HRM","HRIS"],"knowsLanguage":["Inggris","Indonesia"],"jobTitle":"Senior Content Writer on HRIS","url":"https:\/\/www.hashmicro.com\/id\/blog\/author\/reno-wicaksana\/"}]}},"focus_keyword":"employee self service portal","order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/comments?post=192113"}],"version-history":[{"count":3,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192113\/revisions"}],"predecessor-version":[{"id":192126,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/posts\/192113\/revisions\/192126"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media\/192115"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/media?parent=192113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/categories?post=192113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/id\/blog\/wp-json\/wp\/v2\/tags?post=192113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}