{"id":19128,"date":"2026-05-06T08:16:32","date_gmt":"2026-05-06T08:16:32","guid":{"rendered":"https:\/\/www.hashmicro.com\/my\/blog\/?p=19128"},"modified":"2026-05-06T08:16:32","modified_gmt":"2026-05-06T08:16:32","slug":"material-requirement-planning","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/","title":{"rendered":"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control"},"content":{"rendered":"<p>In modern manufacturing and supply chain management, precision is essential for success. Global markets, unstable raw material supply, and rising customer expectations make inefficiency costly. To manage this, companies use structured planning methods like material requirement planning (MRP) to ensure materials are available on time.<\/p>\n<p>Before digital systems, manufacturers relied on manual calculations that often caused shortages or excess stock. In Malaysia, <a href=\"https:\/\/www.miti.gov.my\/index.php\/pages\/view\/7215?utm_source\" target=\"_blank\" rel=\"noopener\">initiatives by Malaysia Digital Economy Corporation<\/a> support the adoption of digital manufacturing practices. Today, MRP helps guide production planning and inventory control more accurately.<\/p>\n<p>By calculating exact material needs based on production schedules, <a href=\"https:\/\/www.hashmicro.com\/my\/supply-chain-management\">Material Requirement Planning (MRP)<\/a> reduces uncertainty in supply chains. This article will discuss how MRP improves efficiency and supports better production planning.<\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1); border-radius: 25px 25px 25px 25px;\" width=\"100%\">\n<tbody>\n<tr>\n<td style=\"padding: 15px; border: none;\">\n<h3 style=\"margin-bottom: 10px;\"><span style=\"background-color: #990000; color: #ffffff; padding: 5px;\"><b>Key Takeaways<\/b><\/span><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#1\">Material Requirement Planning (MRP)<\/a> helps manufacturers plan what materials are needed, how much, and when to ensure efficient production.<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><a href=\"#2\">Core components of Material Requirement Planning (MRP)<\/a> include MPS, ISF, and BOM, which support accurate and efficient production planning.<\/li>\n<li aria-level=\"1\">\n<p data-start=\"70\" data-end=\"264\"><a href=\"#3\">Lot-sizing rules in Material Requirement Planning (MRP)<\/a> determine how much to order by balancing ordering costs and inventory holding costs.<\/p>\n<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span data-sheets-root=\"1\"><!-- <div id=\"toc_group_article\" style=''>\r\n\t<p style='font-size:25px;font-weight:bold; margin-bottom:0px'>\r\n\t\tTable of Content\r\n\t<\/p>\r\n\t<ul id=\"list_toc\" class='list_toc'><\/ul>\r\n<\/div>\r\n\r\n<div class=\"dropdown-fixed-top\" id=\"dropdown-fixed-top\">\r\n\t<div class=\"row\">\r\n\t\t<p id=\"pilihDaftarIsi\">Content Lists<\/p>\r\n\t\t<p><i class=\"td-icon-menu-down\"><\/i><\/p>\r\n\t<\/div>\r\n\t\r\n\t<div>\r\n\t\t<ul id=\"list_toc_top\" class='list_toc'><\/ul>\r\n\t<\/div>\r\n<\/div> -->\r\n\r\n<!-- TOC mobile -->\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\">Table of Content<\/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<!-- TOC mobile -->\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\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_top 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: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\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#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}\r\n\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\t\t\t\t\r\n\t}\r\n\r\n<\/style>\r\n\r\n<style>\r\n\t@media (max-width: 992px) {\r\n\t\t#toc_group_article {\r\n\t\t\tpadding-top: 24px;\r\n\t\t}\r\n\t}\r\n\t\r\n\t#list_toc_float {\r\n\t\tmax-height: calc(100vh - 250px);\r\n\t\toverflow-y: auto;\r\n\t}\r\n\t\r\n\t#list_toc_top {\r\n\t\tdisplay: none;\r\n\t\tbackground: #fff;\r\n\t\tmargin-bottom: 4px;\r\n\t}\r\n\t\r\n\t#list_toc_top li {\r\n\t\tdisplay: block;\r\n\t\tmargin-left: 0;\r\n\t\tlist-style: none;\r\n\t}\r\n\t\r\n\t#list_toc_top a {\r\n\t\tpadding: 5px;\r\n\t\tdisplay: block;\r\n\t}\r\n\t\r\n\t#list_toc_top.show {\r\n\t\tdisplay: block;\r\n\t}\r\n\r\n\t#list_toc_top a {\r\n\t\tcolor: #434343;\r\n\t\tborder-bottom: 1px solid #bbb;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top {\r\n\t\tposition: fixed;\r\n\t\ttop: 59px;\r\n\t\twidth: 100%;\r\n\t\tz-index: 99;\r\n\t\tborder-bottom: 2px solid #9c171e;\r\n\t\tpadding: 12px;\r\n\t\tbackground: #fff;\r\n\t\twidth: 100%;\r\n\t\tcursor: pointer;\r\n\t\tdisplay: none;\r\n\t\tleft: 0;\r\n\t\tbox-shadow: 0 -2px 7px 6px rgba(0, 0, 0, 0.17);\r\n\t}\r\n\t\r\n\t#dropdown-fixed-top.show {\r\n\t\tanimation: showAnim 0.5s ease;\r\n\t\tdisplay: block;\r\n\t\topacity: 1;\r\n\t}\r\n\t\r\n\t@keyframes showAnim {\r\n\t\tfrom {\r\n\t\t\tdisplay: none;\r\n\t\t\topacity: 0;\r\n\t\t}\r\n\t\tto {\r\n\t\t\tdisplay: block;\r\n\t\t\topacity: 1;\r\n\t\t}\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top #list_toc_top {\r\n\t\tmax-height: calc(50vh - 110px);\r\n\t\toverflow-y: scroll;\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row {\r\n\t\tdisplay: flex;\r\n\t\tjustify-content: space-between\r\n\t}\r\n\t\r\n\t.dropdown-fixed-top .row p {\r\n\t\tmargin-bottom: 0;\r\n\t}\r\n\t\r\n\t#pilihDaftarIsi {\r\n\t\tmax-width: 100%;\r\n\t\toverflow: hidden;\r\n\t\twhite-space: nowrap;\r\n\t}\r\n\t\r\n\t@media (min-width: 1018px) {\r\n\t\t.dropdown-fixed-top {\r\n\t\t\tdisplay: none;\r\n\t\t}\r\n\t}\r\n\t\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_top 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: 6px;\r\n\t\tpadding-top: 2px;\r\n\t\tpadding-bottom: 2px;\r\n\t\ttransition: all 0.2s ease-in-out;\r\n\t\tfont-size: 15px;\r\n\t\tline-height: 18px;\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#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\t\t#toc_group_article {\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\t}\r\n\r\n<\/style>\r\n\r\n<!-- START ToC styling  -->\r\n<style>\r\n\t\/* 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\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<!-- END ToC styling  -->\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\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 + 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 = 'Table of Content';\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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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 = 'Table of Content'; \/\/ 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<\/script>\r\n\r\n<!-- <script>\r\n\tvar pilihDaftarIsi = document.getElementById('pilihDaftarIsi');\r\n\t\r\n\tdocument.addEventListener('DOMContentLoaded', function() {\r\n\t\tvar dropdownFixedTop = document.querySelector('.dropdown-fixed-top');\r\n\r\n\t\tdropdownFixedTop.addEventListener('click', function() {\r\n\t\t\tvar dropdownContent = this.querySelector('.list_toc');\r\n\t\t\tdropdownContent.classList.toggle('show');\r\n\t\t});\r\n\r\n\t\twindow.addEventListener('click', function(event) {\r\n\t\t\tvar listTocTop = document.getElementById('list_toc_top');\r\n\r\n\t\t\tif (!dropdownFixedTop.contains(event.target)) {\r\n\t\t\t\tlistTocTop.classList.remove('show');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\t\r\n\tvar daftarIsiContainer = document.getElementById('toc_group_article');\r\n\tvar dropdownFixedTop = document.getElementById('dropdown-fixed-top');\r\n    var triggered = false; \/\/ Flag to keep track of whether the function has been triggered\r\n\r\n    window.addEventListener('scroll', function() {\r\n        if (!triggered && isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(false);\r\n            triggered = true;\r\n        } else if (triggered && !isCompletelyScrolledPast(daftarIsiContainer)) {\r\n            showSectionDropdownFixedTop(true);\r\n            triggered = false;\r\n        }\r\n    });\r\n\r\n    function isCompletelyScrolledPast(element) {\r\n        var elementTop = element.getBoundingClientRect().top;\r\n        var elementBottom = element.getBoundingClientRect().bottom;\r\n        return elementTop < 0 && elementBottom < 0;\r\n    }\r\n\r\n    function showSectionDropdownFixedTop(show) {\r\n\t\tif (show) {\r\n\t\t\tdropdownFixedTop.classList.remove(\"show\");\r\n\t\t} else {\r\n\t\t\tdropdownFixedTop.classList.add(\"show\");\r\n\t\t}\r\n    }\r\n\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        } 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\t\t  pilihDaftarIsi.innerHTML = a.textContent;\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', 'list_toc_top']; \/\/ 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<!-- END script lama -->\r\n\t\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        } 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', 'list_toc_top']; \/\/ 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\t\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        \/\/ Fungsi untuk mengubah teks menjadi format id\r\n        function formatId(text) {\r\n            return text.trim().replace(\/[^\\w\\d]+\/g, '_');\r\n        }\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        const elements = document.querySelectorAll('.td-post-content h2');\r\n\t\t\t\/\/, .td-post-content h3\r\n\r\n        elements.forEach(element => {\r\n            if (element.tagName === 'H2') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n\t\t\t\tif(element.textContent.toLowerCase() === \"key takeaways\") {return;} \/\/ Biar ga nampilin Key Takeaways di ToC\r\n                headings.push({ level: 'h2', id: id, title: element.textContent, children: [] });\r\n            } else if (element.tagName === 'H3') {\r\n                const id = formatId(element.textContent);\r\n                element.id = id;\r\n                if (headings.length > 0) {\r\n                    headings[headings.length - 1].children.push({ level: 'h3', id: id, title: element.textContent, children: [] });\r\n                }\r\n            }\r\n        });\r\n\r\n        \/\/ Membuat list HTML dari objek headings\r\n        const ul = document.getElementById('list_toc');\r\n        let currentUl = ul;\r\n        headings.forEach(heading => {\r\n            const li = document.createElement('li');\r\n            const a = document.createElement('a');\r\n            a.textContent = heading.title;\r\n            a.href = `#${heading.id}`;\r\n            li.appendChild(a);\r\n\r\n            if (heading.level === 'h2') {\r\n                \/\/ Menyimpan ul saat ini untuk menambahkan nested ul\r\n                currentUl = li;\r\n                ul.appendChild(li);\r\n            } else if (heading.level === 'h3') {\r\n                if (!currentUl.lastElementChild || currentUl.lastElementChild.tagName !== 'UL') {\r\n                    \/\/ Jika belum ada nested ul, buat satu\r\n                    const nestedUl = document.createElement('ul');\r\n                    currentUl.appendChild(nestedUl);\r\n                    currentUl = nestedUl;\r\n                }\r\n                currentUl.appendChild(li);\r\n            }\r\n\r\n            createNestedList(li, heading.children);\r\n        });\r\n\t\t\/\/ Dapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\n\/\/ Dapatkan isi (child elements) dari ul dengan id 'list_toc_float'\r\n\tif (ulFloat !== null) {\r\n\t\tconst clonedChildren = ulFloat.cloneNode(true).children;\r\n\t\tconst ulToc = document.getElementById('list_toc_float');\r\n\t\tconst ulTocTop = document.getElementById('list_toc_top');\r\n\t\tif ((ulToc !== null || ulToc !== undefined) && window.innerWidth > 1018){\r\n\t\t\tulToc.append(...clonedChildren);\r\n\t\t} else {\r\n\t\t\tulTocTop.append(...clonedChildren);\r\n\t\t}\r\n\t} \r\n\r\n\tif (ulJourney !== null) {\r\n\t\tconst clonedChildrenJourney = ulJourney.cloneNode(true).children;\r\n\t\tconst ulTocJourney = document.getElementById('list_toc_journey');\r\n\t\tulTocJourney.append(...clonedChildrenJourney);\r\n\t} \r\n\r\n\r\n\r\n\r\n\t\r\n        \/\/ Fungsi untuk mengambil tinggi navbar\r\n        function getNavbarHeight() {\r\n            const navbar = document.getElementById('tdi_34');\r\n            return navbar ? navbar.offsetHeight : 0;\r\n        }\r\n\r\n        \/\/ Fungsi untuk menambahkan offset posisi scroll\r\n        function scrollToElementWithOffset(elementId) {\r\n            const element = document.getElementById(elementId);\r\n            if (element) {\r\n                const offset = getNavbarHeight();\r\n                const elementPosition = element.getBoundingClientRect().top;\r\n                const offsetPosition = elementPosition - offset-40;\r\n\r\n                window.scrollBy({\r\n                    top: offsetPosition,\r\n                    behavior: 'smooth'\r\n                });\r\n            }\r\n        }\r\n\r\n        \/\/ Fungsi untuk menangani klik pada tautan judul\r\n        function handleTitleClick(event) {\r\n            event.preventDefault();\r\n            const href = event.target.getAttribute('href').substr(1);\r\n            scrollToElementWithOffset(href);\r\n        }\r\n\r\n        \/\/ Tambahkan event listener untuk semua tautan judul\r\n        const titleLinks = document.querySelectorAll('a[href^=\"#\"]');\r\n        titleLinks.forEach(link => {\r\n            link.addEventListener('click', handleTitleClick);\r\n        });\r\n\t});\r\n    <\/script> -->\r\n<!-- \t<style>#toc_group_float{display:block !important}<\/style> -->\r\n<\/span><\/p>\n<p>Discover how MRP can improve production efficiency through practical insights and real-world applications. Click the banner below to access trusted resources tailored to your business needs.<\/p>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/supply-chain-management?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/Supply-Chain-Management-Software.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/Supply-Chain-Management-Software.webp\" data-mobile-src=\"\" alt=\"SupplyChainManagement\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/p>\n<h2><strong><span id=\"1\">What is Material Requirement Planning (MRP)?<\/span><\/strong><\/h2>\n<p>Material requirement planning (MRP) helps manufacturers manage the materials needed for production. It shows what is required, how much is needed, and when it should be available. By using production schedules and inventory data, MRP supports accurate planning and reduces uncertainty.<\/p>\n<p>For manufacturers, MRP is important because material needs are directly linked to the demand for finished products. At the same time, MRP reduces excess inventory, which can increase storage costs and tie up capital. With better planning and timing, companies can improve efficiency and maintain a more stable production process.<\/p>\n<h2><strong>The Concept of Independent vs. Dependent Demand<\/strong><\/h2>\n<p>Before diving into how material requirement planning works in practice, it&#8217;s essential to understand the core principle behind it. Recognizing this difference is the key to unlocking efficient production planning and smarter inventory control.<\/p>\n<table style=\"border-collapse: collapse; width: 100%; max-width: 850px;\">\n<thead>\n<tr>\n<th style=\"background-color: #8b0000; color: #fff; padding: 14px 20px; text-align: center; width: 25%;\">Aspect<\/th>\n<th style=\"background-color: #8b0000; color: #fff; padding: 14px 20px; text-align: center; width: 37.5%; border-left: 2px solid #ccc;\">Independent Demand<\/th>\n<th style=\"background-color: #8b0000; color: #fff; padding: 14px 20px; text-align: center; width: 37.5%; border-left: 2px solid #ccc;\">Dependent Demand<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"padding: 16px 20px; font-weight: bold; vertical-align: top;\">Definition<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Demand for finished goods or end items<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Demand for raw materials, components, and sub-assemblies used in production<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 16px 20px; font-weight: bold; vertical-align: top;\">Driven By<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">External market conditions, consumer preferences, seasonality, and economic factors<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Directly derived from the independent demand of the finished product<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 16px 20px; font-weight: bold; vertical-align: top;\">Planning Method<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Must be forecasted using historical data, market trends, and campaigns<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Calculated mathematically from the production schedule, not forecasted<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 16px 20px; font-weight: bold; vertical-align: top;\">Demand Pattern<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">Continuous with random fluctuations<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">&#8220;Lumpy&#8221; or episodic \u2014 needed in specific quantities at specific times<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 16px 20px; font-weight: bold; vertical-align: top;\">Example<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">1,000 finished bicycles forecasted for next month<\/td>\n<td style=\"padding: 16px 20px; vertical-align: top; border-left: 2px solid #ccc;\">2,000 wheels, 1,000 handlebars, and 2,000 pedals derived from the bicycle forecast<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Understanding the difference between independent and dependent demand is the foundation of effective material requirement planning. By forecasting customer demand and mathematically deriving the exact materials needed, businesses can eliminate guesswork, prevent overstocking, and avoid production delays.<\/p>\n<p><span data-sheets-root=\"1\"><style>\r\n    #custom-quote {\r\n        background-color: #f0f0f0;\r\n        padding: 20px;\r\n        border-radius: 12px;\r\n        margin: 20px;\r\n        display: flex;\r\n        flex-direction: column;\r\n    }\r\n\r\n    #custom-quote .quote-body {\r\n        display: flex;\r\n        flex-direction: row;\r\n        align-items: flex-start;\r\n        gap: 15px;\r\n        font-size: 16px;\r\n        line-height: 1.5;\r\n        font-style: italic;\r\n    }\r\n\r\n    #custom-quote .quote-icon {\r\n        width: 40px;\r\n        height: 40px;\r\n        flex-shrink: 0;\r\n    }\r\n\r\n    #custom-quote .quote-author-wrapper {\r\n        margin-top: 15px;\r\n        align-self: flex-start;\r\n        margin-left: 55px; \r\n\t\tmargin-bottom: 0px;\r\n    }\r\n\r\n    #custom-quote em {\r\n        font-family: 'Roboto Serif', serif !important;\r\n        font-size: 12px;\r\n        font-weight: bold;\r\n        font-style: normal;\r\n    }\r\n\r\n    @media screen and (max-width: 768px) {\r\n        #custom-quote {\r\n            margin: 15px 0;\r\n            padding: 15px;\r\n        }\r\n        \r\n        #custom-quote .quote-body {\r\n            gap: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-left: 52px;\r\n        }\r\n    }\r\n\r\n    @media screen and (max-width: 480px) {\r\n        #custom-quote {\r\n            margin: 10px 0;\r\n            padding: 12px;\r\n        }\r\n\r\n        #custom-quote .quote-body {\r\n            font-size: 14px;\r\n            gap: 10px;\r\n        }\r\n\r\n        #custom-quote .quote-icon {\r\n            width: 32px;\r\n            height: 32px;\r\n        }\r\n\r\n        #custom-quote .quote-author-wrapper {\r\n            margin-top: 10px;\r\n            margin-left: 42px;\r\n        }\r\n    }\r\n<\/style>\r\n\r\n<div id=\"custom-quote\">\r\n    <div class=\"quote-body\">\r\n        <img decoding=\"async\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/12\/quote.webp\" alt=\"Quote Icon\" class=\"quote-icon\">\r\n        <div>\r\n            Once you understand how dependent demand works, MRP stops being just a tool and becomes a necessity. It\u2019s what keeps production aligned, inventory under control, and operations running without constant disruptions.        <\/div>\r\n    <\/div>\r\n    <p class=\"quote-author-wrapper\">\r\n        <em>- Ricky Halim, Managing Director<\/em>\r\n    <\/p>\r\n<\/div><\/span><\/p>\n<h2><strong><span id=\"2\">The Core Components of Material Requirement Planning (MRP)<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19131\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP.webp\" alt=\"Core Components of Material Requirement Planning (MRP)\" width=\"1600\" height=\"800\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP.webp 1600w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-300x150.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-1024x512.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-768x384.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-1536x768.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-840x420.webp 840w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-150x75.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-696x348.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Core-Components-of-Material-Requirement-Planning-MRP-1068x534.webp 1068w\" sizes=\"(max-width: 1600px) 100vw, 1600px\" \/><\/p>\n<p>An effective planning system relies on accurate data to create reliable production and purchasing schedules. Material requirement planning (MRP) is built on three main components: the Master Production Schedule (MPS), Inventory Status File (ISF), and Bill of Materials (BOM). Together, these elements support efficient production planning.<\/p>\n<h3><strong>1. The Master Production Schedule (MPS)<\/strong><\/h3>\n<p>The Master Production Schedule (MPS) is the main driver of the planning process. It outlines what products need to be produced, in what quantities, and at specific times. The MPS breaks down overall production targets into smaller, time-based plans, such as weekly or daily goals.<\/p>\n<p>To be effective, the Master Production Schedule (MPS) must reflect actual production capacity. It also uses time fences to keep schedules stable, where short-term plans are fixed and long-term plans remain flexible for adjustments based on updated forecasts.<\/p>\n<h3><strong>2. The Inventory Status File (ISF)<\/strong><\/h3>\n<p>The Inventory Status File provides a real-time view of all available materials in the system. It allows planners to understand current stock levels before deciding what needs to be ordered. This ensures that purchasing decisions are based on accurate inventory data.<\/p>\n<p>The ISF contains critical data for every single item managed by the facility, including:<\/p>\n<ul>\n<li><strong>On-Hand Balance:<\/strong> The physical quantity of the item currently sitting in the warehouse.<\/li>\n<li><strong>Allocated Inventory:<\/strong> Items that are physically in the warehouse but have already been reserved for a specific, upcoming production order and are therefore not available for new requirements.<\/li>\n<li><strong>Scheduled Receipts:<\/strong> Orders that have already been placed with suppliers or the internal manufacturing floor and are scheduled to arrive on a specific date.<\/li>\n<li><strong>Lead Times:<\/strong> The time required to procure or manufacture the item.<\/li>\n<li><strong>Lot-Sizing Rules:<\/strong> The specific mathematical rules governing how quantities of this item should be ordered (e.g., order in multiples of 100).<\/li>\n<li><strong>Safety Stock Levels:<\/strong> The minimum buffer stock maintained to protect against unforeseen supply chain disruptions.<\/li>\n<\/ul>\n<h3><strong>3. The Bill of Materials (BOM)<\/strong><\/h3>\n<p><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/bill-of-materials\/\">The Bill of Materials<\/a> is a detailed list of all components needed to produce a finished product. It acts as a structured guide that shows every material, part, and sub-assembly required in the production process.<\/p>\n<p>Accuracy in the BOM is critical, as even small errors can lead to missing components and production delays. Typically, the BOM is organized in levels, starting from the finished product down to individual raw materials, making it easier to manage complex product structures.<\/p>\n<h2><strong>How the Material Requirement Planning Process Works?<\/strong><\/h2>\n<p>Material requirement planning (MRP) follows a structured calculation process often called \u201cMRP explosion.\u201d It starts with demand from the Master Production Schedule (MPS), then breaks it down through the Bill of Materials (BOM), and checks it against inventory data from the Inventory Status File (ISF). This step-by-step process helps generate accurate purchasing and production plans.<\/p>\n<h3><strong>Step 1: Determining Gross Requirements<\/strong><\/h3>\n<p>The process begins by identifying the Gross Requirements for an item. For a Level 0 item (the finished good), the Gross Requirement is simply the quantity dictated by the Master Production Schedule for a specific time period (bucket). For components, the requirement is calculated from the demand of parent items in the BOM, ensuring every part is accounted for.<\/p>\n<h3><strong>Step 2: Factoring in Scheduled Receipts<\/strong><\/h3>\n<p>The system then reviews existing orders that are already in progress. These incoming materials are expected to arrive at certain times and help reduce the need for placing new orders. This step prevents duplicate or unnecessary purchasing.<\/p>\n<h3><strong>Step 3: Calculating Projected Available Balance (PAB)<\/strong><\/h3>\n<p>MRP calculates the expected inventory level for each period. It combines previous stock, incoming materials, and current demand to estimate how much inventory will remain. It is calculated using the following basic formula:<\/p>\n<p><strong>PAB = Previous Period&#8217;s PAB + Scheduled Receipts &#8211; Gross Requirements<\/strong>.<\/p>\n<p>If the balance drops below zero or below the safety stock level, it indicates a shortage that needs action.<\/p>\n<h3><strong>Step 4: Determining Net Requirements<\/strong><\/h3>\n<p>When a shortage is identified, the system calculates the exact amount of material required. This ensures that only the necessary quantity is ordered while still maintaining a safe buffer to avoid disruptions in production. The formula is:<\/p>\n<p><strong>Net Requirement = Gross Requirement &#8211; (Previous PAB + Scheduled Receipts) + Safety Stock.<\/strong><\/p>\n<h3><strong>Step 5: Generating Planned Order Receipts<\/strong><\/h3>\n<p>The Planned Order Receipt is the quantity that must actually arrive in the time bucket to satisfy the Net Requirement. The quantity may be adjusted based on order rules, such as minimum order sizes or supplier packaging requirements, rather than matching the exact shortage.<\/p>\n<h3><strong>Step 6: Executing Planned Order Releases<\/strong><\/h3>\n<p>Finally, the system determines the Planned Order Release. It works backward from the required delivery date and considers lead times to ensure materials arrive exactly when needed, helping keep production running smoothly without delays.<\/p>\n<h2><strong><span id=\"3\">Lot-Sizing Rules in Material Requirement Planning<\/span><\/strong><\/h2>\n<p><img decoding=\"async\" class=\"aligncenter size-full wp-image-19130\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning.webp\" alt=\"Lot Sizing Rules in Material Requirement Planning\" width=\"1918\" height=\"689\" srcset=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning.webp 1918w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-300x108.webp 300w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-1024x368.webp 1024w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-768x276.webp 768w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-1536x552.webp 1536w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-1169x420.webp 1169w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-150x54.webp 150w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-696x250.webp 696w, https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Lot-Sizing-Rules-in-Material-Requirement-Planning-1068x384.webp 1068w\" sizes=\"(max-width: 1918px) 100vw, 1918px\" \/><\/p>\n<p>In material requirement planning, lot-sizing rules help businesses decide how much material to order for production. The goal is to balance two things, ordering costs and inventory holding costs. Here are the common lot-sizing methods used in MRP:<\/p>\n<h3><strong>1. Lot-for-Lot (L4L)<\/strong><\/h3>\n<p>Lot-for-Lot is the simplest method, where the system orders exactly the amount needed for each period. If the net requirement is 73 units, the order will also be 73 units. This approach keeps inventory levels very low, making it suitable for high-cost or fast-changing items. However, it can increase ordering frequency and related costs.<\/p>\n<h3><strong>2. Economic Order Quantity (EOQ)<\/strong><\/h3>\n<p><a href=\"https:\/\/www.hashmicro.com\/my\/blog\/economic-order-quantity-eoq\/\">Economic Order Quantity (EOQ) calculates<\/a> the ideal order size to balance ordering and storage costs. It helps businesses find a cost-efficient quantity based on demand and cost factors. However, EOQ assumes stable demand, so it works best for items with consistent usage rather than fluctuating production needs.<\/p>\n<p>The formula is:<\/p>\n<p><strong>EOQ = Square Root of [(2 *Annual Demand* Ordering Cost) \/ Holding Cost per Unit].<\/strong><\/p>\n<h3><strong>3. Fixed Order Quantity (FOQ)<\/strong><\/h3>\n<p>With Fixed Order Quantity, the system orders a set amount each time, regardless of actual needs. This is often based on supplier rules like minimum order quantities or packaging limits. If demand is lower than the fixed amount, the excess inventory is carried over for future use.<\/p>\n<h3><strong>4. Periodic Order Quantity (POQ)<\/strong><\/h3>\n<p>Periodic Order Quantity groups material needs over several periods into one order. Instead of ordering frequently, the system places orders at set intervals and covers multiple requirements at once. This reduces ordering frequency while keeping inventory levels under control.<\/p>\n<h2><strong>Several Benefits of Implementing Material Requirement Planning<\/strong><\/h2>\n<p>Implementing material requirement planning (MRP) helps manufacturers move from reactive operations to more organized and proactive systems. It creates better coordination across production, inventory, and purchasing activities. As a result, the impact can be seen across the entire business, from daily operations to overall financial performance.<\/p>\n<h3><strong>1. Drastic Reduction in Inventory Levels<\/strong><\/h3>\n<p>Material Requirement Planning (MRP) reduces the need for large safety stock by ensuring materials arrive only when needed. This helps minimize unused raw materials and <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/work-in-progress\/\">work-in-progress (WIP) inventory<\/a>. With less inventory to store, companies can lower holding costs and free up capital for other business needs.<\/p>\n<h3><strong>2. Optimization of Delivery and Lead Times<\/strong><\/h3>\n<p>Material Requirement Planning (MRP) improves production flow by ensuring materials are available at the right time. This optimized flow directly reduces the <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/delivery-lead-time\/\">overall delivery lead time to the end customer<\/a>. When businesses can meet deadlines consistently, customer satisfaction and trust increase.<\/p>\n<h3><strong>3. Enhanced Production Scheduling and Efficiency<\/strong><\/h3>\n<p>With clear visibility into material availability, production managers can plan schedules more effectively. This helps reduce machine downtime, optimize workflows, and use resources more efficiently. MRP also helps identify potential bottlenecks early, allowing teams to adjust plans before issues occur.<\/p>\n<h3><strong>4. Improved Supplier Relationships and Purchasing Leverage<\/strong><\/h3>\n<p>Material Requirement Planning (MRP) gives purchasing teams better insight into future material needs. This allows them to plan orders in advance, negotiate better pricing, and avoid urgent purchases with higher costs. Over time, this leads to more stable and reliable relationships with suppliers.<\/p>\n<h2><strong>Common Material Requirement Planning Challenges<\/strong><\/h2>\n<p>Material requirement planning can improve production planning, but the system only works well when the data is accurate and the schedule is realistic. Here are the common MRP challenges businesses need to watch:<\/p>\n<h3><strong>1. Inaccurate Data<\/strong><\/h3>\n<p>Material Requirement Planning (MRP) depends on accurate information from the master production schedule, bill of materials, and inventory records. If the data is wrong, the system may create incorrect purchase orders, production plans, or stock requirements.<\/p>\n<p>For example, a small error in the bill of materials can lead to material shortages or excess inventory. Regular stock checks and clean data are important to keep MRP reliable.<\/p>\n<h3><strong>2. System Nervousness<\/strong><\/h3>\n<p>System nervousness happens when small changes in demand, production schedules, or supplier deliveries create large changes across the MRP plan. This can make purchase recommendations change too often and confuse planning teams.<\/p>\n<p>Businesses can reduce this issue by using time fences, firm planned orders, and better demand planning to keep the production schedule more stable.<\/p>\n<h3><strong>3. Capacity Limitations<\/strong><\/h3>\n<p>Basic MRP systems focus on material availability, but they may not always check whether the factory has enough machines, labor, or production capacity.<\/p>\n<p>As a result, materials may arrive on time but still wait because production resources are unavailable. To avoid this, businesses should connect MRP with capacity planning or manufacturing resource planning tools.<\/p>\n<h2><strong>Step-by-Step Implementation of MRP Systems<\/strong><\/h2>\n<p>Implementing or upgrading a material requirement planning (MRP) system requires careful planning and a structured approach. It is not just about installing software, but also preparing data, processes, and teams. A well-planned implementation increases the chances of long-term success.<\/p>\n<h3><strong>1. Data Cleansing and Preparation<\/strong><\/h3>\n<p>Accurate data is essential for material requirement planning (MRP) to work effectively. Companies need to review and update inventory records, supplier lead times, and Bill of Materials (BOM) before using the system. Inaccurate master data is the primary reason these implementations fail, making this preparatory step absolutely critical to the project&#8217;s success.<\/p>\n<h3><strong>2. Choosing the Right Software<\/strong><\/h3>\n<p>Businesses should choose software that fits their production type and operational needs. It is also important to consider scalability and integration with existing <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/best-distribution-erp-software\/\">systems like Enterprise Resource Planning (ERP)<\/a> or accounting tools. Many companies now prefer cloud-based solutions for their flexibility and real-time access.<\/p>\n<h3><strong>3. Change Management and Team Training<\/strong><\/h3>\n<p>MRP changes how teams work, especially in production, purchasing, and warehousing. Clear communication and proper training help employees understand both how to use the system and why it matters. This reduces errors and improves overall adoption.<\/p>\n<h3><strong>4. Phased Rollout vs. Big Bang<\/strong><\/h3>\n<p>Companies can choose between launching the system all at once or rolling it out in stages. A phased approach is often safer, as it allows businesses to test the system, fix issues, and improve processes before full implementation.<\/p>\n<h2><strong>Conclusion<\/strong><\/h2>\n<p>Material requirement planning (MRP) plays a key role in helping manufacturers manage materials, control inventory, and keep production on track. By using accurate data and structured planning, businesses can reduce uncertainty, avoid stock issues, and improve overall efficiency. As explained throughout this guide, MRP connects demand, inventory, and production into one clear system that supports better decision-making.<\/p>\n<p>In addition, understanding concepts like dependent demand, core MRP components, and planning processes allows companies to operate more effectively. When applied correctly, MRP not only lowers costs but also improves delivery performance and strengthens supplier relationships. However, its success depends on accurate data, proper system setup, and consistent monitoring to avoid common challenges.<\/p>\n<p>To see how MRP can support your business in real situations, take the next step today. Try a <a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/\">free demo<\/a> and explore how better planning can improve your production process and overall performance.<\/p>\n<p><span data-sheets-root=\"1\"><a href=\"https:\/\/www.hashmicro.com\/my\/free-product-demo\/?medium=free-product-demo\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-desktop-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/08\/free-demo-desktop-my.webp\" data-mobile-src=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2024\/07\/free-demo-mobile-my.jpg\" alt=\"FreeDemo\" class=\"responsive-image-banner\"><\/a>\r\n\r\n<script>\r\n    \/\/ check which image to use based on screensize\r\n    document.addEventListener(\"DOMContentLoaded\", function() {\r\n        function updateImageSource() {\r\n            var images = document.querySelectorAll('.responsive-image-banner');\r\n            var screenWidth = window.innerWidth;\r\n\r\n            images.forEach(function(img) {\r\n                var mobileSrc = img.getAttribute('data-mobile-src');\r\n                var desktopSrc = img.getAttribute('data-desktop-src');\r\n\r\n                if (screenWidth < 576 && mobileSrc) {\r\n                    img.setAttribute('src', mobileSrc);\r\n                } else {\r\n                    img.setAttribute('src', desktopSrc);\r\n                }\r\n            });\r\n        }\r\n\r\n        \/\/ Initial check\r\n        updateImageSource();\r\n\r\n        \/\/ Update on resize\r\n        window.addEventListener('resize', updateImageSource);\r\n    });\r\n<\/script><\/span><\/p>\n<h2><strong>FAQ about Material Requirement Planning (MRP)<\/strong><\/h2>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>Is MRP only suitable for large manufacturing companies?<\/strong><\/summary>\n<p>No, MRP is not limited to large enterprises. Small and medium-sized manufacturers can also benefit from using MRP, especially as they scale operations. With better planning, even smaller businesses can reduce waste, improve scheduling, and manage inventory more efficiently without needing large safety stock.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Can MRP be integrated with other business systems?<\/strong><\/summary>\n<p>Yes, <a href=\"https:\/\/www.hashmicro.com\/my\/blog\/erp-vs-mrp\/\">MRP is commonly integrated with ERP<\/a>, accounting, and warehouse management systems. This integration allows data to flow across departments, reducing manual input and minimizing errors. As a result, companies gain better visibility across operations and can make faster, more informed decisions.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How long does it take to see results after implementing MRP?<\/strong><\/summary>\n<p>The results depend on how ready the company is in terms of data and processes. Businesses with clean data and clear workflows may see improvements within weeks, especially in inventory control and production flow. However, full optimization often takes a few months as teams adapt and fine-tune the system.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>Does MRP work for service-based businesses?<\/strong><\/summary>\n<p>MRP is primarily designed for manufacturing, where material flow is critical. However, service businesses can adopt similar planning concepts for managing resources, schedules, and demand. While the structure may differ, the core idea of planning based on demand still applies.<\/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\": \"Is MRP only suitable for large manufacturing companies?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"No, MRP is not limited to large enterprises. Small and medium-sized manufacturers can also benefit from using MRP, especially as they scale operations. With better planning, even smaller businesses can reduce waste, improve scheduling, and manage inventory more efficiently without needing large safety stock.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Can MRP be integrated with other business systems?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Yes, MRP is commonly integrated with ERP, accounting, and warehouse management systems. This integration allows data to flow across departments, reducing manual input and minimizing errors. As a result, companies gain better visibility across operations and can make faster, more informed decisions.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How long does it take to see results after implementing MRP?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"The results depend on how ready the company is in terms of data and processes. Businesses with clean data and clear workflows may see improvements within weeks, especially in inventory control and production flow. However, full optimization often takes a few months as teams adapt and fine-tune the system.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"Does MRP work for service-based businesses?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"MRP is primarily designed for manufacturing, where material flow is critical. However, service businesses can adopt similar planning concepts for managing resources, schedules, and demand. While the structure may differ, the core idea of planning based on demand still applies.\"\n    }\n  }]\n}\n<\/script><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In modern manufacturing and supply chain management, precision is essential for success. Global markets, unstable raw material supply, and rising customer expectations make inefficiency costly. To manage this, companies use structured planning methods like material requirement planning (MRP) to ensure materials are available on time. Before digital systems, manufacturers relied on manual calculations that often [&hellip;]<\/p>\n","protected":false},"author":46,"featured_media":19132,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[72],"tags":[],"class_list":{"0":"post-19128","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-supply-chain"},"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.6 (Yoast SEO v26.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Material Requirement Planning for Improves Production Efficiency<\/title>\n<meta name=\"description\" content=\"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.\" \/>\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\/my\/blog\/material-requirement-planning\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control\" \/>\n<meta property=\"og:description\" content=\"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\" \/>\n<meta property=\"og:site_name\" content=\"HashMicro Malaysia\" \/>\n<meta property=\"article:published_time\" content=\"2026-05-06T08:16:32+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Farhana Zulaikha\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Farhana Zulaikha\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\"},\"author\":{\"name\":\"Farhana Zulaikha\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\"},\"headline\":\"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control\",\"datePublished\":\"2026-05-06T08:16:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\"},\"wordCount\":2625,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp\",\"articleSection\":[\"Supply chain\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\",\"name\":\"Material Requirement Planning for Improves Production Efficiency\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp\",\"datePublished\":\"2026-05-06T08:16:32+00:00\",\"description\":\"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp\",\"width\":1600,\"height\":800,\"caption\":\"Material Requirement Planning (MRP)\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/my\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"name\":\"HashMicro Malaysia\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#organization\",\"name\":\"HashMicro Malaysia\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp\",\"width\":422,\"height\":255,\"caption\":\"HashMicro Malaysia\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d\",\"name\":\"Farhana Zulaikha\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/\",\"url\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"contentUrl\":\"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp\",\"caption\":\"Farhana Zulaikha\"},\"description\":\"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.\",\"url\":\"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Material Requirement Planning for Improves Production Efficiency","description":"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.","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\/my\/blog\/material-requirement-planning\/","og_locale":"en_US","og_type":"article","og_title":"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control","og_description":"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.","og_url":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/","og_site_name":"HashMicro Malaysia","article_published_time":"2026-05-06T08:16:32+00:00","og_image":[{"width":1600,"height":800,"url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp","type":"image\/webp"}],"author":"Farhana Zulaikha","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Farhana Zulaikha","Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/"},"author":{"name":"Farhana Zulaikha","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d"},"headline":"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control","datePublished":"2026-05-06T08:16:32+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/"},"wordCount":2625,"commentCount":0,"publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp","articleSection":["Supply chain"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/","name":"Material Requirement Planning for Improves Production Efficiency","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp","datePublished":"2026-05-06T08:16:32+00:00","description":"Discover how Material Requirement Planning (MRP) works to optimize production, control inventory, and reduce costs for manufacturers field.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#primaryimage","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2026\/05\/Material-Requirement-Planning-MRP.webp","width":1600,"height":800,"caption":"Material Requirement Planning (MRP)"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/my\/blog\/material-requirement-planning\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/my\/blog\/"},{"@type":"ListItem","position":2,"name":"Material Requirement Planning (MRP): Complete Guide to Improve Production and Inventory Control"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#website","url":"https:\/\/www.hashmicro.com\/my\/blog\/","name":"HashMicro Malaysia","description":"","publisher":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/my\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#organization","name":"HashMicro Malaysia","url":"https:\/\/www.hashmicro.com\/my\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","contentUrl":"https:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/09\/logo.webp","width":422,"height":255,"caption":"HashMicro Malaysia"},"image":{"@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/1d40b74780708e6bf6789462354cec7d","name":"Farhana Zulaikha","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/my\/blog\/#\/schema\/person\/image\/","url":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","contentUrl":"http:\/\/www.hashmicro.com\/my\/blog\/wp-content\/uploads\/2025\/10\/Farhana-Zulaikha-96x96.webp","caption":"Farhana Zulaikha"},"description":"Farhana Zulaikha writes across a range of business topics, ensuring diverse content that appeals to a broad audience. He bridges the gap between complex software solutions and user understanding through clear, accessible articles. His work ensures that readers from any background can gain insights into improving business operations.","url":"https:\/\/www.hashmicro.com\/my\/blog\/author\/farhana-zulaikha\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19128","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/comments?post=19128"}],"version-history":[{"count":4,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19128\/revisions"}],"predecessor-version":[{"id":19153,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/posts\/19128\/revisions\/19153"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media\/19132"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/media?parent=19128"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/categories?post=19128"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/my\/blog\/wp-json\/wp\/v2\/tags?post=19128"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}