JOM MSPO 2.0
Ready. Set. Certify.
Designed for oil palm dealers, plantations, mills, and processing facilities, this immersive two-day workshop prepares you for MSPO 2.0 implementation—from traceability to certification.
Apply Now. We’re Open Nationwide!
function handleDropdownChange(selection) {
    console.log('Selected:', selection.value, selection.text);

    const items = document.querySelectorAll('.workshop-item');
    items.forEach(item => {
        const target = item.getAttribute('data-target');

        if (selection.value === '' || selection.value === 'all' || target === selection.value) {
            item.classList.remove('itemhidden');  // show
        } else {
            item.classList.add('itemhidden');     // hide
        }
    });
}
Johor
Johor
MSPO GHG Calculator Briefing
Closed
DATE
10 December 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Johor Bahru, Johor (Venue details will be provided upon registration)
view gallery
Register Now
Johor
MSPO Basic SIA Training
Closed
DATE
4-6 November 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Johor (Venue details will be provided upon registration)
view gallery
Register Now
Kuala Lumpur
Kuala Lumpur
MSPO GHG Calculator Briefing
Closed
DATE
3 December 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Kuala Lumpur/Putrajaya (Venue details will be provided upon registration)
view gallery
Register Now
Online
Online
MSPO GHG Calculator Briefing
Open
DATE
15 January 2026
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Online (Meeting link will be provided upon registration)
view gallery
Register Now
Pahang
Kuantan
MSPO GHG Calculator Briefing
Open
DATE
13 January 2026
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Kuantan, Pahang (Venue details will be provided upon registration)
view gallery
Register Now
Perak
Perak
MSPO Basic SIA Training
Closed
DATE
28-30 October 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Perak (Venue details will be provided upon registration)
view gallery
Register Now
Putrajaya
Putrajaya
e-MSPO Audit Module Training
Open
DATE
1 December 2025
Target
ACBs, Auditors, Industry Stakeholders
LOCATIONS
Putrajaya (Venue details will be emailed upon registration)
view gallery
Register Now
Putrajaya
e-MSPO Audit Module Training
Open
DATE
1 December 2025
Target
ACBs, Auditors, Industry Stakeholders
LOCATIONS
Online (Meeting link will be emailed upon registration)
view gallery
Register Now
Sabah
Kota Kinabalu
MSPO GHG Calculator Briefing
Open
DATE
17 December 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Kota Kinabalu, Sabah (Venue details will be provided upon registration)
view gallery
Register Now
Kota Kinabalu
MSPO Basic SIA Training
Closed
DATE
28-30 October 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Kota Kinabalu, Sabah (Venue details will be provided upon registration)
view gallery
Register Now
Sandakan
MSPO GHG Calculator Briefing
Closed
DATE
11 November 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Sandakan, Sabah (Venue details will be provided upon registration)
view gallery
Register Now
Tawau
MSPO Basic SIA Training
Closed
DATE
14-16 October 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Tawau, Sabah (Venue details will be provided upon registration)
view gallery
Register Now
Sarawak
Bintulu
MSPO GHG Calculator Briefing
Closed
DATE
6 November 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Bintulu, Sarawak (Venue details will be provided upon registration)
view gallery
Register Now
Bintulu
MSPO Basic SIA Training
Closed
DATE
4-6 November 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Bintulu, Sarawak (Venue details will be provided upon registration)
view gallery
Register Now
Kuching
e-MSPO Audit Module Training
Open
DATE
17 December 2025
Target
ACBs, Auditors, Industry Stakeholders
LOCATIONS
Kuching, Sarawak (Venue details will be emailed upon registration)
view gallery
Register Now
Kuching
e-MSPO Audit Module Training
Open
DATE
17 December 2025
Target
ACBs, Auditors, Industry Stakeholders
LOCATIONS
Kuching
view gallery
Register Now
Kuching
MSPO GHG Calculator Briefing
Closed
DATE
4 November 2025
Target
Certified entities under Parts 3-1, 3-2, 4-1, 4-2
LOCATIONS
Kuching, Sarawak (Venue details will be provided upon registration)
view gallery
Register Now
Kuching
MSPO Basic SIA Training
Closed
DATE
21-23 October 2025
Target
Sustainability Officers, Estate/Mill Managers, Compliance Officers, Internal Assessors
Seats
50 Seats
LOCATIONS
Kuching, Sarawak (Venue details will be provided upon registration)
view gallery
Register Now
Workshop Objectives
MSPO will be organising a nationwide capacity building program to enhance the readiness of the industry towards MSPO 2.0.  The Workshop is open to Oil Palm Dealers and Non-Certified Oil Palm Plantation, Palm Oil Mill & Processing Facilities.  The briefing will be conducted all across Malaysia. Click on the link provided below your chosen states to register now!
.workshop-menu-wrapper {
  flex: 0 0 auto;            /* don't shrink */
  display: flex;
  align-items: center;
  margin-right: 10px;        /* spacing between items */
}

.workshop-menu {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    gap: 0.75rem;
  }

  .workshop-menu > div:first-child {
    overflow-x: auto;
    scroll-behavior: smooth;
    display: flex;
    gap: 1rem;
  }

  .content_arrow {
    display: none;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 999px;
    border: none;
    background: #1b2335;
    color: #fff;
    cursor: pointer;
  }

  .content_shell:has(> div:nth-child(2) > .content_arrow--left)
               :has(> div:nth-child(3) > .content_arrow--right) .content_arrow {
    display: inline-flex;
    align-items: center;
    justify-content: center;
  }

  .content_arrow:disabled {
    opacity: 0.4;
    cursor: default;
  }
document.addEventListener('DOMContentLoaded', function() {
  const menu = document.querySelector('.workshop-menu');
  if (!menu) return;
  
  const templateItem = menu.querySelector('.workshop-menu-item');
  
  // Clear existing menu items (but keep template for cloning if it exists)
  const allMenuItems = menu.querySelectorAll('.workshop-menu-item');
  const allWrappers = menu.querySelectorAll('.workshop-menu-wrapper');
  
  // Remove all wrappers first
  allWrappers.forEach(wrapper => wrapper.remove());
  
  // Remove all menu items that aren't wrapped
  allMenuItems.forEach(item => {
    if (item.parentElement === menu) {
      item.remove();
    }
  });
  
  const stateContainer = document.querySelector('.workshopstate-list');
  const stateTitles = document.querySelectorAll('.workshopstate-list .workshop-state-title');
  
  // Check if menu is scrollable and adjust CSS accordingly
  function checkMenuScrollability() {
    const isScrollable = menu.scrollWidth > menu.clientWidth;
    if (isScrollable) {
      menu.style.justifyContent = 'flex-start';
    } else {
      menu.style.justifyContent = ''; // Remove inline style to use default CSS
    }
  }

  stateTitles.forEach((titleEl, idx) => {
    const stateName = titleEl.textContent.trim();
    
    // Use existing ID or generate one
    let stateId = titleEl.id;
    if (!stateId) {
      stateId = stateName.toLowerCase()
        .replace(/\s+/g, '-')       
        .replace(/[^a-z0-9\-]/g, '');
      titleEl.id = stateId;
    }
    
    // Create wrapper
    const wrapper = document.createElement('div');
    wrapper.className = 'workshop-menu-wrapper';
    
    let menuItem;
    
    if (templateItem && idx === 0) {
      // Use the original template item for the first menu item
      menuItem = templateItem;
      wrapper.appendChild(menuItem);
    } else if (templateItem) {
      // Clone template for subsequent items
      menuItem = templateItem.cloneNode(true);
      wrapper.appendChild(menuItem);
    } else {
      // Create fresh item if no template exists
      menuItem = document.createElement('a');
      menuItem.className = 'workshop-menu-item';
      wrapper.appendChild(menuItem);
    }
    
    // Add wrapper to menu
    menu.appendChild(wrapper);
    
    // Update link and text
    menuItem.href = `#${stateId}`;
    menuItem.textContent = stateName;
    
    // Add custom scroll behavior
    menuItem.addEventListener('click', function(e) {
      e.preventDefault(); // prevent normal anchor jump
      const target = document.getElementById(stateId);
      if (target && stateContainer) {
        const containerRect = stateContainer.getBoundingClientRect();
        const targetRect = target.getBoundingClientRect();
        const scrollLeft = target.offsetLeft - stateContainer.offsetLeft;
        
        stateContainer.scrollTo({
          left: scrollLeft,
          behavior: 'smooth'
        });
      }
    });
  });
  
  // Check scrollability after all menu items are created
  checkMenuScrollability();
  
  // Optional: Re-check on window resize
  window.addEventListener('resize', checkMenuScrollability);
});

document.addEventListener('DOMContentLoaded', function() {
  const menu = document.querySelector('.workshop-menu');
  const menuItems = menu ? menu.querySelectorAll('.workshop-menu-item') : [];
  const stateContainer = document.querySelector('.workshopstate-list');
  const stateSections = document.querySelectorAll('.workshopstate-list .workshop-state-title');
  if (!menu || !stateContainer || stateSections.length === 0) return;
  
  function updateActiveStates() {
    const containerRect = stateContainer.getBoundingClientRect();
    const activeIds = [];
    const screenWidth = window.innerWidth;
    const pixelThreshold = screenWidth - 90;
    
    stateSections.forEach(section => {
      const sectionRect = section.getBoundingClientRect();
      // Calculate visible horizontal overlap
      const visibleLeft = Math.max(sectionRect.left, containerRect.left);
      const visibleRight = Math.min(sectionRect.right, containerRect.right);
      const visibleWidth = Math.max(0, visibleRight - visibleLeft);
      const sectionWidth = sectionRect.width;
      const visibilityRatio = visibleWidth / sectionWidth;
      
      if (visibilityRatio >= 0.5 || visibleWidth > pixelThreshold) { // must be at least 50% visible OR visible width > screen width - 90px
        activeIds.push(section.id);
      }
    });
    
    menuItems.forEach(item => {
      const targetId = item.getAttribute('href').replace('#', '');
      if (activeIds.includes(targetId)) {
        item.classList.add('active');
      } else {
        item.classList.remove('active');
      }
    });
  }
  
  stateContainer.addEventListener('scroll', updateActiveStates, { passive: true });
  updateActiveStates();
});
Why Attend MSPO 2.0?
The Malaysian Palm Oil Board (MPOB) organizes MSPO (Malaysian Sustainable Palm Oil) workshops to help industry players, smallholders, and related stakeholders understand and meet sustainability standards. Attending an MSPO workshop is valuable because it:
Grow
Master the updates in MSPO 2.0 and the all-new e‑MSPO system, including logo claims, traceability, NC tagging, and grievance modules.
Learn
Get practical guidance, real-world use cases, and live Q&As from MSPO experts. 
Certified
Walk away with a deeper understanding of standards, processes, documentation, and audit readiness.
Connected
Connect with fellow professionals across Malaysia and share valuable insights.
Who Should Join?
Whether you’re in the supply chain or just stepping into sustainability compliance, this is your essential training ground.
Oil Palm Dealers
Non‑Certified Oil Palm Plantations
Palm Oil Mills & Processing Facilities
Frequently Asked Questions