{"id":64907,"date":"2024-12-18T02:42:14","date_gmt":"2024-12-18T02:42:14","guid":{"rendered":"https:\/\/www.hashmicro.com\/blog\/?p=64907"},"modified":"2025-10-17T04:07:04","modified_gmt":"2025-10-17T04:07:04","slug":"obsolescence-inventory","status":"publish","type":"post","link":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/","title":{"rendered":"Obsolescence Inventory: How It Works and How to Get Rid of It"},"content":{"rendered":"<p>Obsolescence inventory refers to stock that loses value due to low demand, expired shelf life, or market changes. From my experience, unmanaged obsolete items can quickly drain resources and impact profitability.<\/p>\n<p>In Q2 2024, Singapore\u2019s business inventories rose by <a href=\"https:\/\/tradingeconomics.com\/singapore\/changes-in-inventories\" target=\"_blank\" rel=\"noopener\">921.3 million SGD<\/a>, highlighting the risks of overstocking and obsolescence that many companies face today. That\u2019s why having real-time insights into stock movement is crucial.<\/p>\n<p>With HashMicro Inventory Management Software, I can easily monitor stock levels, automate reordering, and track product lifecycles to prevent obsolescence. Get your <a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\">free demo<\/a> today and discover how this system can help you optimize your inventory management.<\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=free-product-tour\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/11\/Free-Product-Tour-resized.webp\" alt=\"Free Demo\"><\/a> <!-- <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\">Table of Content<\/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<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\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<!-- 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\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\r\n\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<!-- START script lama -->\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<\/script> -->\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\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']; \/\/ 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\nToC List for desktop side bar, diganti jadi inject by php, di code snippet \"Sidebar Accordion\"\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;} \/\/ Kalau Key Takeaways, jangan dimasukin\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\tDapatkan elemen ul dengan id 'list_toc_float'\r\nconst ulFloat = document.getElementById('list_toc');\r\nconst ulJourney = document.getElementById('list_journey');\r\n\r\nDapatkan 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\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<\/span><\/p>\n<table style=\"border-collapse: collapse; background-color: #fffacd; 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;\"><a href=\"#what\">Obsolete inventory is<\/a> an unsold or unused stock that has lost its value due to factors like market changes, expiration, or shifts in consumer demand.<\/li>\n<li><a href=\"#getting_rid\">Getting rid of obsolete inventory<\/a> helps businesses reduce storage costs, optimize warehouse space, and improve operational efficiency.<\/li>\n<li>HashMicro\u2019s <a href=\"https:\/\/www.hashmicro.com\/inventory\">Inventory Management Software<\/a> offers advanced tools to track, forecast, and manage inventory effectively, reducing the risk of obsolescence.<\/li>\n<\/ul>\n<p><span data-sheets-root=\"1\"><style>\r\n.button-cta-custom {\r\n    background-color: #8a0e19;\r\n    color: #fff !important;\r\n    -webkit-transition: all .3s ease;\r\n    transition: all .3s ease;\r\n    padding: 8px 24px;\r\n    display: inline-block;\r\n    border-radius: 8px;\r\n    font-size: 16px;\r\n    font-weight: bold;\r\n}\r\n.button-cta-custom:hover{\r\n\tbackground-color:#991b26\t\t\r\n}\r\n<\/style>\r\n<a class=\"button-cta-custom\" href=\"https:\/\/www.hashmicro.com\/free-product-tour\/?medium=cta-button\" target=\"_blank\">Click Here to Get the Free Demo!<\/a><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2><b>What is Obsolete Inventory?<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Obsolete inventory is stock that can no longer be sold or used due to expired demand, outdated technology, or market shifts. It ties up storage space and working capital, increasing costs and potentially harming business profitability.<\/span><\/p>\n<p>I\u2019ve seen firsthand how obsolete inventory can consume valuable warehouse space and lock up capital that could be used for growth. It also increases storage expenses and often requires extra effort for proper disposal.<\/p>\n<p>To minimize obsolescence, I rely on advanced <a href=\"https:\/\/www.hashmicro.com\/blog\/inventory-management-software-singapore\/\">inventory software<\/a> that helps me track product lifecycles, forecast demand accurately, and detect slow-moving stock before it becomes unsellable.<\/p>\n<p>By managing obsolete inventory effectively, I can maintain smoother operations, reduce waste, and ensure better financial performance for the business.<\/p>\n<h2><b>How Obsolescence Inventory Works<\/b><\/h2>\n<p>From my experience, inventory obsolescence happens when products become unsellable or unusable due to shifts in market demand, expiration, or rapid technological change. As consumer preferences evolve and new products emerge, older inventory often loses its value.<\/p>\n<p>I usually notice the process beginning when product demand starts to decline. Items sit on the shelves longer, take up storage space, and become obsolete. That\u2019s why I regularly assess stock performance and forecast demand to prevent overstocking.<\/p>\n<p>To minimize losses, I often use strategies like offering discounts or repurposing old inventory. With the help of an advanced inventory management system, I can easily track product lifecycles and prevent the buildup of obsolete stock.<\/p>\n<h2><strong>How to Identify Obsolete Inventory<\/strong><\/h2>\n<p>Identifying obsolete inventory has always been one of my top priorities in maintaining efficient operations. By combining the right tools and regular analysis, I can quickly spot slow-moving items before they turn into costly excess stock.<\/p>\n<ol>\n<li><strong>Use technology to track slow-moving items<\/strong>: Implement inventory management tools to identify products that are not selling quickly.<\/li>\n<li><strong>Conduct regular inventory audits<\/strong>: Routine checks help detect obsolete stock early, preventing profit loss and excess storage costs.<\/li>\n<li><strong>Take proactive actions<\/strong>: Decide whether to run flash sales or donate items to clear outdated stock.<\/li>\n<li><strong>Leverage data-driven insights<\/strong>: Analyze inventory days on hand, sales patterns, and purchase trends to make smarter restocking or discontinuation decisions.<\/li>\n<\/ol>\n<h2><b>Benefits of Getting Rid of Obsolete Inventory<\/b><\/h2>\n<p>From my experience, removing obsolete inventory brings major improvements to business performance. It helps me streamline daily operations, cut unnecessary expenses, and make better use of available resources. Here are the key benefits I\u2019ve observed when removing obsolete inventory:<\/p>\n<h3><span style=\"font-weight: 400;\">1. Free up valuable storage space<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">By eliminating obsolete inventory, businesses can make room for more relevant and high-demand products. This leads to better inventory organization, optimized warehouse space, and easily accessible products, which improves overall operational efficiency.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Improve cash flow and capital utilization<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Removing unsellable goods releases capital that was previously tied up in obsolete inventory. This freed-up capital can be reinvested into more profitable products or other business areas, improving cash flow and contributing to business growth.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Lower storage and maintenance costs<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Keeping obsolete inventory in storage incurs additional maintenance, management, and space usage costs. By clearing out outdated stock, businesses reduce these ongoing expenses and prevent further losses, enabling them to maintain a leaner, more efficient inventory system.<\/span><\/p>\n<h2><b>Causes of Excess and Obsolete Inventory<\/b><\/h2>\n<p>From what I\u2019ve seen, excess and obsolete inventory often come from poor inventory planning or sudden market shifts. Understanding these causes helps me minimize losses and keep stock levels under control. Here are the main factors behind them:<\/p>\n<h3><span style=\"font-weight: 400;\">1. Overproduction and overordering<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">One of the leading causes of <a href=\"https:\/\/www.hashmicro.com\/blog\/excess-inventory\/\">excess inventory<\/a> is overproduction or overordering, often due to inaccurate demand forecasting. When businesses produce or purchase more stock than needed, surplus inventory can result that eventually becomes obsolete, especially if demand decreases.<\/span><\/p>\n<p>A <a href=\"https:\/\/www.hashmicro.com\/blog\/cloud-based-inventory\/\">cloud-based inventory<\/a> system can help mitigate this issue by providing real-time data and analytics, allowing businesses to better predict demand and avoid overstocking.<\/p>\n<h3><span style=\"font-weight: 400;\">2. Changes in consumer preferences<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Shifts in consumer preferences or market trends can quickly make products obsolete. Businesses must stay updated on market demands to avoid having unsellable inventory that no longer aligns with customer interests, leading to excess stock.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Inefficient inventory management<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Inventory management practices, such as proper tracking or lack of visibility, can prevent businesses from overstocking certain items. Without regular inventory audits or accurate forecasting, businesses may hold onto outdated or slow-moving products.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Expiration of shelf life<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">In food, cosmetics, and pharmaceutical industries, products may become obsolete once their shelf life expires. Businesses that do not efficiently manage their stock or rotate inventory properly may end up with expired products that cannot be sold.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Technological advancements<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Rapid technological changes can quickly render products obsolete in industries like electronics or fashion. Newer models or versions may replace older ones, leaving businesses with excess inventory that no longer meets market demands.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Businesses can reduce stock-related losses and enhance operational efficiency by improving forecasting, inventory management, and staying attuned to market changes.<\/span><\/p>\n<h2><b>Effective Ways to Deal with Obsolete Inventory<\/b><\/h2>\n<p>From my experience, handling obsolete inventory effectively is key to sustaining profitability and smooth operations. By taking proactive steps, I can reduce financial losses and recover value from outdated stock. Here are the best ways I manage obsolete inventory:<\/p>\n<h3><span style=\"font-weight: 400;\">1. Discounting and promotions<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Offering discounts or running promotional campaigns can help move obsolete inventory. By reducing the price of slow-moving products, businesses can attract price-sensitive customers and clear out outdated stock without incurring significant losses.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Repurpose or reuse inventory<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Another effective strategy is to repurpose obsolete inventory. This could involve using the products for other purposes within the business, such as using outdated components in production or donating items for charitable causes.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Return or exchange with suppliers<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Sometimes, businesses can negotiate with suppliers to return unsold or obsolete inventory. Many suppliers offer return or exchange policies, especially for products that are no longer in demand. This option allows businesses to recover some of the costs associated with obsolete stock.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Sell to liquidators<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Liquidation involves selling obsolete inventory to third-party liquidators, who purchase the stock at a discounted price. Liquidators often deal with overstocked or outdated goods and sell them through discount outlets.\u00a0<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Inventory audits and forecasting<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Regular inventory audits and improved demand forecasting can help businesses avoid accumulating obsolete stock in the first place. By keeping track of inventory levels and identifying slow-moving items early, businesses can take corrective actions before stock becomes obsolete, such as adjusting orders or implementing targeted promotions.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">By implementing these strategies, businesses can effectively manage obsolescence inventory journal entries, minimize financial losses, and improve overall stock management. Regular monitoring and proactive planning are key to preventing future issues with unsellable goods.<\/span><\/p>\n<h2><b>Example of Obsolete Inventory<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-64908 size-full\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory.webp\" alt=\"what is obsolescence inventory\" width=\"1200\" height=\"675\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory.webp 1200w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-300x169.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-1024x576.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-768x432.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-747x420.webp 747w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-150x84.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-696x392.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/what-is-obsolescence-inventory-1068x601.webp 1068w\" sizes=\"auto, (max-width: 1200px) 100vw, 1200px\" \/><\/p>\n<p>From my experience, recognizing examples of obsolete inventory helps me understand potential challenges and plan better prevention strategies. Here are some common cases I\u2019ve encountered across various industries:<\/p>\n<h3><span style=\"font-weight: 400;\">1. Outdated electronics<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Due to rapid technological advancements, products like older smartphones, laptops, or other gadgets can quickly become obsolete. For example, a retailer may struggle to sell a previous-generation smartphone once a newer model with better features is released.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">2. Expired food products<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">In the food industry, inventory with a limited shelf life often becomes unsellable once the expiration date passes. For instance, perishable goods such as dairy products, bread, or fresh produce not sold in time turn into obsolete inventory.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">3. Fashion items from past seasons<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">In the fashion industry, clothing or accessories that belong to previous seasons often lose relevance and demand. A store may have an unsold inventory of winter jackets or last year\u2019s trendy designs that are no longer in demand in the current market.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">4. Obsolete spare parts<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Spare parts for discontinued machinery or vehicles can become obsolete in manufacturing or automotive industries. For example, a car manufacturer may hold spare parts for a model that is no longer in production, resulting in excess inventory.<\/span><\/p>\n<h3><span style=\"font-weight: 400;\">5. Specialty products with low demand<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">Niche items that cater to a particular market often face the risk of becoming obsolete if demand drops. For instance, custom-designed packaging materials or promotional items for a past event can no longer be sold or reused.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Recognizing these examples helps businesses identify and address obsolete inventory more effectively. Businesses can avoid accumulating such items and minimize potential losses by implementing strategies such as demand forecasting and inventory audits.<\/span><\/p>\n<h2><b>Efficiently Manage Inventory and Reduce Obsolescence with HashMicro<\/b><\/h2>\n<p><img decoding=\"async\" loading=\"lazy\" class=\"aligncenter size-full wp-image-69235\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3.webp\" alt=\"dashboard inventory hashmicro\" width=\"1470\" height=\"900\" srcset=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3.webp 1470w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-300x184.webp 300w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-1024x627.webp 1024w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-768x470.webp 768w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-686x420.webp 686w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-150x92.webp 150w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-696x426.webp 696w, https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Software-Inventory-3-1068x654.webp 1068w\" sizes=\"auto, (max-width: 1470px) 100vw, 1470px\" \/><\/p>\n<p>In my experience, managing inventory efficiently can be challenging, especially when dealing with excess or obsolete stock. That\u2019s why I rely on <a href=\"https:\/\/www.hashmicro.com\/inventory\">HashMicro\u2019s Inventory Management Software<\/a>, which provides a complete solution to streamline inventory processes and prevent obsolescence.<\/p>\n<p>With its advanced technology and automation, I can easily optimize stock levels, track every movement, and make smarter, data-driven decisions. Here are some of the key features I find most valuable in HashMicro\u2019s Inventory Management System:<\/p>\n<ul>\n<li style=\"font-weight: 400;\"><b>RFID Warehouse Rack Stock In-Out Automation<\/b><span style=\"font-weight: 400;\">: This system automates the tracking of stock movement in and out of racks using RFID technology, ensuring real-time updates and reducing manual errors.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>3D Warehouse<\/b><span style=\"font-weight: 400;\">: Offers a 3D visualization of the warehouse layout, enhancing stock location monitoring and optimizing space utilization.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>OCR for Receiving<\/b><span style=\"font-weight: 400;\">: Uses Optical Character Recognition (OCR) to extract data from invoices or delivery notes, automating data entry and ensuring accuracy.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Stock Forecasting<\/b><span style=\"font-weight: 400;\">: Predicts inventory needs using historical data and trends, helping to maintain optimal stock levels and prevent overstock or stockouts.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Run Rate Reordering Rules<\/b><span style=\"font-weight: 400;\">: Automates reordering by setting thresholds based on consumption rates, ensuring timely stock replenishment.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Quality Control Management<\/b><span style=\"font-weight: 400;\">: Simplifies quality checks for incoming and outgoing goods, ensuring all inventory meets required standards.<\/span><\/li>\n<\/ul>\n<p><em class=\"review-quote\">&#8220;Obsolescence inventory is more than just outdated stock; it\u2019s tied-up capital and lost opportunities. By detecting slow-moving items early, businesses can free up cash flow. Smart inventory systems with analytics make this process faster and more accurate.&#8221;<\/em><\/p>\n<p>\u2014 <strong>Angela Tan<\/strong>, Regional Manager<\/p>\n<h2><b>Conclusions<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Managing obsolete inventory is crucial for businesses to minimize losses and optimize storage space. Companies can effectively address this challenge by implementing demand forecasting, timely stock audits, and clear disposal plans.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Companies can effectively address this challenge by implementing demand forecasting, timely stock audits, and clear disposal plans.<\/span><\/p>\n<p>From my experience, <a href=\"https:\/\/www.hashmicro.com\/inventory\">HashMicro Inventory Management Software<\/a> has greatly improved how I handle inventory challenges. Its advanced features, like RFID automation, stock forecasting, and quality control, help me maintain optimal stock levels while minimizing waste and inefficiencies.<\/p>\n<p>I\u2019ve seen firsthand how it transforms inventory operations and boosts overall productivity. Take control of your inventory today and prevent obsolescence with HashMicro\u2019s system. Schedule a <a href=\"https:\/\/www.hashmicro.com\/free-product-tour\/\">free demo<\/a> to experience how it can elevate your business efficiency!<\/p>\n<p><span style=\"font-weight: 400;\"><a href=\"https:\/\/www.hashmicro.com\/inventory?medium=moneysite-banner\" target=\"_blank\"><img decoding=\"async\" loading=\"lazy\" width=\"712\" src=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2025\/06\/Inventory.webp\" alt=\"Inventory Management\"><\/a>\u00a0<\/span><\/p>\n<h3><strong>FAQ About Obsolescence Inventory<\/strong><\/h3>\n<ul class=\"bottom_faq\">\n<li>\n<details>\n<summary><strong>What is the KPI for obsolete inventory?<\/strong><\/summary>\n<p>The Stock Obsolescence Rate is an essential KPI that indicates the proportion of inventory rendered obsolete or unusable within a given timeframe. Monitoring this metric provides businesses with early insights into product lifecycles and evolving market trends.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>What are the 3 types of obsolescence?<\/strong><\/summary>\n<p>In commercial real estate investments, obsolescence is classified into three types: functional, economic, and physical. It can be further categorized as curable, meaning it can be resolved, or incurable, indicating it cannot be remedied.<\/p>\n<\/details>\n<\/li>\n<li>\n<details>\n<summary><strong>How is obsolescence calculated?<\/strong><\/summary>\n<p>Ideally, the total fair value of a company&#8217;s assets (e.g., net working capital, fixed assets, and intangible assets excluding goodwill) should be less than the purchase price, with the difference accounted for as goodwill.<\/p>\n<p><script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"FAQPage\",\n  \"mainEntity\": [{\n    \"@type\": \"Question\",\n    \"name\": \"What is the KPI for obsolete inventory?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"The Stock Obsolescence Rate is an essential KPI that indicates the proportion of inventory rendered obsolete or unusable within a given timeframe. Monitoring this metric provides businesses with early insights into product lifecycles and evolving market trends.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"What are the 3 types of obsolescence?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"In commercial real estate investments, obsolescence is classified into three types: functional, economic, and physical. It can be further categorized as curable, meaning it can be resolved, or incurable, indicating it cannot be remedied.\"\n    }\n  },{\n    \"@type\": \"Question\",\n    \"name\": \"How is obsolescence calculated?\",\n    \"acceptedAnswer\": {\n      \"@type\": \"Answer\",\n      \"text\": \"Ideally, the total fair value of a company's assets (e.g., net working capital, fixed assets, and intangible assets excluding goodwill) should be less than the purchase price, with the difference accounted for as goodwill.\"\n    }\n  }]\n}\n<\/script><\/p>\n<\/details>\n<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Obsolescence inventory refers to stock that loses value due to low demand, expired shelf life, or market changes. From my experience, unmanaged obsolete items can quickly drain resources and impact profitability. In Q2 2024, Singapore\u2019s business inventories rose by 921.3 million SGD, highlighting the risks of overstocking and obsolescence that many companies face today. That\u2019s [&hellip;]<\/p>\n","protected":false},"author":218,"featured_media":64909,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[88],"tags":[],"class_list":{"0":"post-64907","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-inventory"},"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>Obsolescence Inventory: How It Works and How to Get Rid of It<\/title>\n<meta name=\"description\" content=\"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs &amp; risks.\" \/>\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\/blog\/obsolescence-inventory\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Obsolescence Inventory: How It Works and How to Get Rid of It\" \/>\n<meta property=\"og:description\" content=\"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs &amp; risks.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\" \/>\n<meta property=\"og:site_name\" content=\"BusinessTech\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/hashmicro\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-18T02:42:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-17T04:07:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Aulia kholqiana\" \/>\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=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Aulia kholqiana\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\"},\"author\":{\"name\":\"Aulia kholqiana\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7\"},\"headline\":\"Obsolescence Inventory: How It Works and How to Get Rid of It\",\"datePublished\":\"2024-12-18T02:42:14+00:00\",\"dateModified\":\"2025-10-17T04:07:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\"},\"wordCount\":2059,\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp\",\"articleSection\":[\"Inventory\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\",\"name\":\"Obsolescence Inventory: How It Works and How to Get Rid of It\",\"isPartOf\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp\",\"datePublished\":\"2024-12-18T02:42:14+00:00\",\"dateModified\":\"2025-10-17T04:07:04+00:00\",\"description\":\"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs & risks.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp\",\"width\":1200,\"height\":675,\"caption\":\"inventory tools\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.hashmicro.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Obsolescence Inventory: How It Works and How to Get Rid of It\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#website\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"name\":\"BusinessTech\",\"description\":\"Business Management Blog\",\"publisher\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.hashmicro.com\/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\/blog\/#organization\",\"name\":\"HashMicro\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"contentUrl\":\"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png\",\"width\":334,\"height\":51,\"caption\":\"HashMicro\"},\"image\":{\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/web.facebook.com\/hashmicro\/\",\"https:\/\/x.com\/hashmicro\",\"https:\/\/www.linkedin.com\/company\/hashmicro\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7\",\"name\":\"Aulia kholqiana\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/931ae97d65fd0cb268c0fee01894227194a67eedeffd37f1aa9c307c99275c35?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/931ae97d65fd0cb268c0fee01894227194a67eedeffd37f1aa9c307c99275c35?s=96&d=mm&r=g\",\"caption\":\"Aulia kholqiana\"},\"description\":\"As a content writer who turns technical complexity into compelling narratives, my words guide businesses through the labyrinth of technology, transforming challenges into opportunities for growth.\",\"url\":\"https:\/\/www.hashmicro.com\/blog\/author\/auliakholqiana\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Obsolescence Inventory: How It Works and How to Get Rid of It","description":"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs & risks.","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\/blog\/obsolescence-inventory\/","og_locale":"en_US","og_type":"article","og_title":"Obsolescence Inventory: How It Works and How to Get Rid of It","og_description":"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs & risks.","og_url":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/","og_site_name":"BusinessTech","article_publisher":"https:\/\/web.facebook.com\/hashmicro\/","article_published_time":"2024-12-18T02:42:14+00:00","article_modified_time":"2025-10-17T04:07:04+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp","type":"image\/webp"}],"author":"Aulia kholqiana","twitter_card":"summary_large_image","twitter_creator":"@hashmicro","twitter_site":"@hashmicro","twitter_misc":{"Written by":"Aulia kholqiana","Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#article","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/"},"author":{"name":"Aulia kholqiana","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7"},"headline":"Obsolescence Inventory: How It Works and How to Get Rid of It","datePublished":"2024-12-18T02:42:14+00:00","dateModified":"2025-10-17T04:07:04+00:00","mainEntityOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/"},"wordCount":2059,"publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp","articleSection":["Inventory"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/","url":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/","name":"Obsolescence Inventory: How It Works and How to Get Rid of It","isPartOf":{"@id":"https:\/\/www.hashmicro.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage"},"thumbnailUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp","datePublished":"2024-12-18T02:42:14+00:00","dateModified":"2025-10-17T04:07:04+00:00","description":"Obsolete inventory is unsellable stock due to lost demand or outdated tech, tying up space and capital. Smart management cuts costs & risks.","breadcrumb":{"@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#primaryimage","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2024\/12\/Obsolescence-Inventory.webp","width":1200,"height":675,"caption":"inventory tools"},{"@type":"BreadcrumbList","@id":"https:\/\/www.hashmicro.com\/blog\/obsolescence-inventory\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.hashmicro.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Obsolescence Inventory: How It Works and How to Get Rid of It"}]},{"@type":"WebSite","@id":"https:\/\/www.hashmicro.com\/blog\/#website","url":"https:\/\/www.hashmicro.com\/blog\/","name":"BusinessTech","description":"Business Management Blog","publisher":{"@id":"https:\/\/www.hashmicro.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.hashmicro.com\/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\/blog\/#organization","name":"HashMicro","url":"https:\/\/www.hashmicro.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","contentUrl":"https:\/\/www.hashmicro.com\/blog\/wp-content\/uploads\/2016\/02\/bt_logo-1.png","width":334,"height":51,"caption":"HashMicro"},"image":{"@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/hashmicro\/","https:\/\/x.com\/hashmicro","https:\/\/www.linkedin.com\/company\/hashmicro"]},{"@type":"Person","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/8ba48ccbeb0c9f5c51940619f406e5e7","name":"Aulia kholqiana","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.hashmicro.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/931ae97d65fd0cb268c0fee01894227194a67eedeffd37f1aa9c307c99275c35?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/931ae97d65fd0cb268c0fee01894227194a67eedeffd37f1aa9c307c99275c35?s=96&d=mm&r=g","caption":"Aulia kholqiana"},"description":"As a content writer who turns technical complexity into compelling narratives, my words guide businesses through the labyrinth of technology, transforming challenges into opportunities for growth.","url":"https:\/\/www.hashmicro.com\/blog\/author\/auliakholqiana\/"}]}},"order_j":"","_links":{"self":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/64907","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/users\/218"}],"replies":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/comments?post=64907"}],"version-history":[{"count":12,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/64907\/revisions"}],"predecessor-version":[{"id":76120,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/posts\/64907\/revisions\/76120"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media\/64909"}],"wp:attachment":[{"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/media?parent=64907"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/categories?post=64907"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.hashmicro.com\/blog\/wp-json\/wp\/v2\/tags?post=64907"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}