{"id":384,"date":"2025-10-06T13:01:23","date_gmt":"2025-10-06T13:01:23","guid":{"rendered":"https:\/\/aiportcenter.nl\/?page_id=384"},"modified":"2025-11-29T23:02:36","modified_gmt":"2025-11-29T23:02:36","slug":"customs","status":"publish","type":"page","link":"https:\/\/aiportcenter.nl\/index.php\/customs\/","title":{"rendered":"Customs"},"content":{"rendered":"\n<!-- ======= BREADCRUMB (FULL WIDTH MATCH + ADMIN LINK + WP SPACING REMOVED) ======= -->\n\n<style>\n\/* Remove WordPress default spacing ONLY for this breadcrumb block *\/\n.breadcrumb-wrapper.wp-block-html {\n  margin-top: 0 !important;\n  margin-bottom: 0 !important;\n}\n\n\/* Wrapper that matches .pc-container.polished width *\/\n.breadcrumb-container {\n  max-width: 1200px;\n  margin: -110px auto 0 auto;   \/* negative top only *\/\n  padding: 0 20px;\n  box-sizing: border-box;\n  position: relative;\n  z-index: 10;\n}\n\n\/* Styled breadcrumb bar *\/\n.breadcrumb {\n  font-family: Inter, system-ui, sans-serif;\n  font-size: 0.92rem;\n  color: var(--muted, #5b6570);\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  gap: 6px;\n\n  margin-top: 8px;\n  margin-bottom: 12px;\n\n  padding: 10px 14px;\n  border-radius: 10px;\n  background: linear-gradient(180deg, rgba(10,106,176,0.06), rgba(10,106,176,0.02));\n  box-shadow: 0 2px 6px rgba(10,29,56,0.08);\n  border: 1px solid rgba(10,106,176,0.12);\n}\n\n.breadcrumb a {\n  color: var(--accent, #0a5c94);\n  text-decoration: none;\n  font-weight: 500;\n}\n\n.breadcrumb a:hover {\n  text-decoration: underline;\n}\n\n.breadcrumb .current {\n  color: var(--muted, #5b6570);\n  font-weight: 500;\n}\n<\/style>\n\n<div class=\"breadcrumb-wrapper wp-block-html\">\n<div class=\"breadcrumb-container\">\n  <nav class=\"breadcrumb\">\n\n    <a href=\"https:\/\/aiportcenter.nl\/\">Home<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Port-Call Data Hub<\/a>\n    <span>\u203a<\/span>\n\n    <a href=\"https:\/\/aiportcenter.nl\/index.php\/port-call\/\">Processes Timeline<\/a>\n    <span>\u203a<\/span>\n\n    <span class=\"current\">Customs<\/span>\n\n  <\/nav>\n<\/div>\n<\/div>\n\n<!-- ======= \/END BREADCRUMB ======= -->\n\n\n\n<!-- ========= PORT CALL: CUSTOMS (ROTTERDAM) \u2014 POLISHED DROP-IN (Datasets as Table) ========= -->\n<div class=\"pc-container polished\" id=\"customs-rotterdam\">\n  <header class=\"pc-hero\" role=\"banner\" aria-label=\"Customs overview\">\n    <div class=\"pc-hero-bg\" aria-hidden=\"true\"><\/div>\n    <div class=\"pc-hero-inner\">\n      <div class=\"pc-hero-eyebrow\">Port-Call Optimization at the Port of Rotterdam<\/div>\n      <h1>Customs<\/h1>\n      <p class=\"lead\">Completes border formalities so cargo can legally exit the terminal or move onward in bond. Declarations, risk profiling, and physical inspections are applied to targeted consignments. Holds are set and cleared digitally, and brokers coordinate data corrections and inspections. Inputs include manifests, tariff codes, valuation, origin, safety and security filings, and inspection results. The purpose is regulatory compliance and security with minimal impact on operational flow. Success is high data quality, few holds, and rapid release times.<\/p>\n      <nav class=\"pc-steps-nav\" aria-label=\"Steps\">\n        <a href=\"#step-1\" class=\"chip\" data-step=\"1\"><span class=\"num\">1<\/span> Document Submission<\/a>\n        <a href=\"#step-2\" class=\"chip\" data-step=\"2\"><span class=\"num\">2<\/span> Cargo Inspection<\/a>\n        <a href=\"#step-3\" class=\"chip\" data-step=\"3\"><span class=\"num\">3<\/span> Clearance Issuance<\/a>\n        <a href=\"#research\" class=\"chip\" data-step=\"3\"><span class=\"num\">4<\/span> Research Problems<\/a>\n        <a href=\"#exec\" class=\"chip\" data-step=\"3\"><span class=\"num\">5<\/span> Execution Party<\/a>\n        <a href=\"#plan\" class=\"chip\" data-step=\"3\"><span class=\"num\">6<\/span> Planning Party<\/a>\n        <a href=\"#data\" class=\"chip\" data-step=\"3\"><span class=\"num\">7<\/span> Available Data<\/a>\n      <\/nav>\n    <\/div>\n  <\/header>\n\n  <aside class=\"pc-toc\" aria-label=\"On-page navigation\">\n    <div class=\"pc-toc-inner\">\n      <div class=\"pc-toc-title\">On this page<\/div>\n      <ol>\n        <li><a href=\"#step-1\">Document Submission<\/a><\/li>\n        <li><a href=\"#step-2\">Cargo Inspection<\/a><\/li>\n        <li><a href=\"#step-3\">Clearance Issuance<\/a><\/li>\n        <li><a href=\"#research\">Clearance Issuance<\/a><\/li>\n        <li><a href=\"#exec\">Execution Party<\/a><\/li>\n        <li><a href=\"#plan\">Planning Party<\/a><\/li>\n        <li><a href=\"#data\">Available Data<\/a><\/li>\n      <\/ol>\n    <\/div>\n  <\/aside>\n\n  <main class=\"pc-main\">\n  <!-- Step 1 -->\n  <section class=\"pc-step card\" id=\"step-1\" data-keywords=\"declaration ENS ICS2 HS code valuation origin data quality\" aria-labelledby=\"title-step-1\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-1\"><span class=\"badge\">Step 1<\/span>Document Submission<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Files manifests, declarations, safety and security entries, and any special regimes. Ensures data quality for tariff codes, weights, values, origin, and involved parties. Links shipments to brokers and assigns control channels. Corrections are processed quickly to prevent later holds. The purpose is to start the legal clearance clock early. Success is defined by right-first-time submissions.<\/p>\n  <\/section>\n\n  <!-- Step 2 -->\n  <section class=\"pc-step card\" id=\"step-2\" data-keywords=\"inspection scanning sampling NVWA ILT risk-based control\" aria-labelledby=\"title-step-2\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-2\"><span class=\"badge\">Step 2<\/span>Cargo Inspection<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Conducts targeted and random checks based on risk profiles. Coordinates with the terminal to provide safe access without blocking cranes. Activities may include scanning, opening, sampling, or full inventory checks. Results update clearance status and may impose conditions. The purpose is compliance and safety assurance. Performance is measured by fast inspections with minimal operational disruption.<\/p>\n  <\/section>\n\n  <!-- Step 3 -->\n  <section class=\"pc-step card\" id=\"step-3\" data-keywords=\"release hold removal transit in-bond AES NCTS\" aria-labelledby=\"title-step-3\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-step-3\"><span class=\"badge\">Step 3<\/span>Clearance Issuance<\/h2>\n    <\/header>\n    <p class=\"pc-desc\">Lifts holds and authorizes release to the domestic market or onward transit. Digital messages update terminal systems and haulier planning platforms. Conditions such as guarantees or additional documentation are applied where required. Denials are escalated with clear reasons and remedies. The purpose is legal authorization for inland movement. The outcome is immediate eligibility for pickup and departure.<\/p>\n  <\/section>\n\n  <!-- Research Problems -->\n  <section class=\"pc-step card\" id=\"research\" data-keywords=\"research truck yard-vehicle yard-crane\" aria-labelledby=\"title-research\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-research\">Related Research Problems<\/h2>\n      <div class=\"sub\">Key research problems related to customs operations in Rotterdam.<\/div>\n    <\/header>\n\n    <div class=\"pc-research-note\" aria-hidden=\"false\" style=\"margin-top:10px; margin-bottom:6px; display:flex; align-items:center; gap:10px;\">\n      <span class=\"highlight-dot\" aria-hidden=\"true\" style=\"display:inline-block;width:12px;height:12px;border-radius:50%;background:linear-gradient(90deg,#74c9ff,#2aa7e8);box-shadow:0 4px 12px rgba(42,167,232,0.18);animation:pcPulse 2s infinite;\"><\/span>\n      <div class=\"instruction\" style=\"color:var(--muted);font-size:0.95rem;\">Click on a card to open the webpage and data sets for each research problem.<\/div>\n      <style>\n        @keyframes pcPulse { 0%,100%{transform:scale(1)} 50%{transform:scale(1.18)} }\n      <\/style>\n    <\/div>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/truck-appointment-scheduling\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M2 16h20v2H2v-2Zm2-6h8v4H4v-4Zm10-6h6v10h-6V4Z\"\/><\/svg><\/span>\n          <h3>Truck Appointment Scheduling<\/h3>\n        <\/div>\n        <ul>\n          <li>Scheduling and slotting truck arrivals to reduce gate queues and improve terminal throughput and truck turn times \u2014 directly affects customs pickup cadence and release timing.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/yard-vehicle-routing\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 6h16v2H4V6Zm0 5h16v2H4v-2Zm0 5h10v2H4v-2Z\"\/><\/svg><\/span>\n          <h3>Yard-Vehicle Routing<\/h3>\n        <\/div>\n        <ul>\n          <li>Routing yard vehicles (straddles, AGVs, tractors) to reduce travel time, congestion and dwell \u2014 improves speed to inspection and pickup after customs release.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\" data-url=\"https:\/\/aiportcenter.nl\/index.php\/yard-crane\/\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 20h18v2H3v-2Zm2-2h2V8h6v10h2V6h2V4H7V2H5v16Z\"\/><\/svg><\/span>\n          <h3>Yard-Crane Scheduling<\/h3>\n        <\/div>\n        <ul>\n          <li>Schedule yard cranes and lifts to minimise reshuffles and delays that cascade into customs inspection queues and pickup availability.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Execution Party -->\n  <section class=\"pc-step card\" id=\"exec\" data-keywords=\"douane inspection release hold scanning risk profiling\" aria-labelledby=\"title-exec\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-exec\">Execution Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in the execution of customs operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- gov icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 10h18v2H3v-2Zm2-4h14v2H5V6Zm0 8h14v6H5v-6Z\"\/><\/svg><\/span>\n          <h3>Dutch Customs Authority (Douane Rotterdam)<\/h3>\n        <\/div>\n        <ul>\n          <li>Enforces customs regulations, runs risk analysis and inspections, manages release\/hold, duties, and compliance checks.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- broker icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 4h16v6H4V4Zm0 8h10v8H4v-8Zm12 0h4v8h-4v-8Z\"\/><\/svg><\/span>\n          <h3>Hemetex B.V.<\/h3>\n        <\/div>\n        <ul>\n          <li>Licensed customs broker preparing\/importing\/exporting declarations, fiscal representation, and compliance support.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- file icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M6 2h7l5 5v15H6V2Zm7 1.5V8h4.5\"\/><\/svg><\/span>\n          <h3>OTS Broker<\/h3>\n        <\/div>\n        <ul>\n          <li>Customs broker handling import\/export\/transit (NCTS), bonded warehousing, and document corrections.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- checklist icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M7 4h10v2H7V4Zm0 4h10v2H7V8Zm0 4h10v2H7v-2Zm0 4h6v2H7v-2Z\"\/><\/svg><\/span>\n          <h3>Gaston Schul Rotterdam<\/h3>\n        <\/div>\n        <ul>\n          <li>Customs consultancy\/brokerage: declarations, fiscal representation, excise duties, bonded goods.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Planning Party -->\n  <section class=\"pc-step card\" id=\"plan\" data-keywords=\"PCS Portbase master data cut-offs inspection capacity right-first-time\" aria-labelledby=\"title-plan\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-plan\">Planning Party<\/h2>\n      <div class=\"sub\">Below, the main companies involved in planning customs operations are listed.<\/div>\n    <\/header>\n\n    <div class=\"pc-grid\">\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- network icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M4 4h16v6H4V4Zm0 8h7v8H4v-8Zm9 0h7v8h-7v-8Z\"\/><\/svg><\/span>\n          <h3>Portbase<\/h3>\n        <\/div>\n        <ul>\n          <li>Dutch port community system (PCS) for digital customs submissions, cargo info, and inspection notifications.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- logistics icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M3 7h18v10H3V7Zm2 2v6h14V9H5Z\"\/><\/svg><\/span>\n          <h3>Nedcargo<\/h3>\n        <\/div>\n        <ul>\n          <li>Logistics provider planning customs clearance within forwarding\/warehousing\/distribution flows.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- transport icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M2 16h20v2H2v-2Zm2-6h8v4H4v-4Zm10-6h6v10h-6V4Z\"\/><\/svg><\/span>\n          <h3>DB Schenker<\/h3>\n        <\/div>\n        <ul>\n          <li>Freight forwarder integrating customs clearance planning into multimodal supply chains.<\/li>\n        <\/ul>\n      <\/article>\n\n      <article class=\"pc-card\">\n        <div class=\"pc-card-head\">\n          <span class=\"pc-icon\" aria-hidden=\"true\"><!-- global icon --><svg viewBox=\"0 0 24 24\" width=\"20\" height=\"20\" fill=\"currentColor\"><path d=\"M12 2a10 10 0 1 0 0 20A10 10 0 0 0 12 2Zm-1 3.1A8 8 0 0 0 5 12h6V5.1Zm2 0V12h6a8 8 0 0 0-6-6.9ZM5 14a8 8 0 0 0 6 6.9V14H5Zm8 0v6.9A8 8 0 0 0 19 14h-6Z\"\/><\/svg><\/span>\n          <h3>DSV Panalpina (formerly Panalpina)<\/h3>\n        <\/div>\n        <ul>\n          <li>Global logistics provider planning customs compliance and clearance for Rotterdam flows.<\/li>\n        <\/ul>\n      <\/article>\n    <\/div>\n  <\/section>\n\n  <!-- Datasets (TABLE) -->\n  <section class=\"pc-step card\" id=\"data\" data-keywords=\"TARIC BTI EUCDM ICS2 TRACES authorisations port customs\" aria-labelledby=\"title-data\">\n    <div class=\"card-accent\" aria-hidden=\"true\"><\/div>\n    <header class=\"card-head\">\n      <h2 id=\"title-data\">Available Data<\/h2>\n      <div class=\"sub\">Free, real-time data sources and official guidance used in customs operations in Rotterdam.<\/div>\n    <\/header>\n\n    <div class=\"pc-table-wrap\">\n      <table class=\"pc-table pc-anim-table\" role=\"table\" aria-label=\"Customs datasets\">\n        <thead>\n          <tr>\n            <th scope=\"col\">Data Source<\/th>\n            <th scope=\"col\">Description<\/th>\n          <\/tr>\n        <\/thead>\n        <tbody>\n          <tr>\n            <td>\n              <a href=\"https:\/\/taxation-customs.ec.europa.eu\/customs\/calculation-customs-duties\/customs-tariff\/eu-customs-tariff-taric_en\" target=\"_blank\" rel=\"noopener\">EU TARIC (Integrated Tariff)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"taric-last\"><\/time><\/div>\n            <\/td>\n            <td>Duty rates, measures, and restrictions by CN\/TARIC code.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/taxation-customs.ec.europa.eu\/online-services\/online-services-and-databases-customs_en\" target=\"_blank\" rel=\"noopener\">EU Customs \u2014 Online Services &amp; Databases<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"eu-services-last\"><\/time><\/div>\n            <\/td>\n            <td>EORI validation, BTI search, quotas, suspensions, and more.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/taxation-customs.ec.europa.eu\/customs\/calculation-customs-duties\/customs-tariff\/ebti-european-binding-tariff-information_en\" target=\"_blank\" rel=\"noopener\">Binding Tariff Information (BTI)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"bti-last\"><\/time><\/div>\n            <\/td>\n            <td>Database\/guidance for binding EU classification decisions.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/taxation-customs.ec.europa.eu\/online-services\/online-services-and-databases-customs\/eu-customs-data-model-eucdm_en\" target=\"_blank\" rel=\"noopener\">EU Customs Data Model (EUCDM)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"eucdm-last\"><\/time><\/div>\n            <\/td>\n            <td>Harmonised data elements for EU declarations (NCTS, AES, ICS).\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/taxation-customs.ec.europa.eu\/customs\/customs-security\/import-control-system-2_en\" target=\"_blank\" rel=\"noopener\">Import Control System 2 (ICS2)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"ics2-last\"><\/time><\/div>\n            <\/td>\n            <td>ENS requirements and deployment windows for maritime.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/food.ec.europa.eu\/horizontal-topics\/traces_en\" target=\"_blank\" rel=\"noopener\">TRACES (CHED)<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"traces-last\"><\/time><\/div>\n            <\/td>\n            <td>SPS\/health-controlled consignments and CHED notifications.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.belastingdienst.nl\/wps\/wcm\/connect\/bldcontenten\/belastingdienst\/customs\/authorisations\/customs-authorisations\/\" target=\"_blank\" rel=\"noopener\">Dutch Customs \u2014 Authorisations Overview<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"auth-last\"><\/time><\/div>\n            <\/td>\n            <td>Warehouse\/simplifications\/AEO\/special regimes.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n          <tr>\n            <td>\n              <a href=\"https:\/\/www.portofrotterdam.com\/en\/services\/port-customs\" target=\"_blank\" rel=\"noopener\">Port of Rotterdam \u2014 Port Customs<\/a>\n              <div class=\"last-updated\">Last update: <time id=\"port-customs-last\"><\/time><\/div>\n            <\/td>\n            <td>Local customs\/inspection setup and PCS (Portbase) links.\n              <div class=\"version\">Version: Free (public)<\/div>\n            <\/td>\n          <\/tr>\n        <\/tbody>\n      <\/table>\n      \n        <!-- Title placed below the table and left-aligned, just before the legend -->\n        <div class=\"pc-desc-title\">Description of Versions<\/div>\n\n      <\/div>\n        <div class=\"pc-table-legend\" aria-hidden=\"false\">\n          <p><b>Free (public):<\/b> The content is publicly accessible on the website without login or payment.<\/p>\n        <\/div>\n  <\/section>\n  <\/main>\n<\/div>\n\n<style>\n\/* Hide WordPress default page\/post title if present *\/\nh1.entry-title, .entry-title, .page-title { display: none !important; }\n\n\/* ===== Dynamic sticky top: WP admin bar + theme header + extra offset (matches your accepted ~4 cm setting) ===== *\/\n:root{\n  --wp-adminbar: 0px;\n  --site-header: 0px;\n  --extra-offset: 160px; \/* \u22484cm; tweak here if your theme header changes *\/\n  --sticky-offset: calc(var(--wp-adminbar) + var(--site-header) + var(--extra-offset) + 12px);\n  scroll-padding-top: calc(var(--sticky-offset) + 8px);\n}\nbody.admin-bar{ --wp-adminbar: 32px; }\n@media (max-width: 782px){ body.admin-bar{ --wp-adminbar: 46px; } }\n\n\/* ===== Scoping: only style within .pc-container.polished ===== *\/\n.pc-container.polished {\n  --ink: #0b1220;\n  --muted: #5b6570;\n  --bg: #f6f8fb;\n  --card: #ffffff;\n  --accent: #0a5c94;\n  --accent-2: #7ccdf0;\n  --radius: 14px;\n  --shadow: 0 8px 28px rgba(10, 29, 56, 0.09);\n  --gap: 18px;\n  --ring: 0 0 0 3px rgba(43,176,237,.25);\n  position: relative;\n  isolation: isolate;\n  width: 100%;\n  max-width: 1200px;\n  margin: -15px;\n  padding: 20px;\n  box-sizing: border-box;\n  font-family: Inter, system-ui, Segoe UI, Roboto, Arial, sans-serif;\n  color: var(--ink);\n}\n\n\/******** Hero ********\/\n.pc-container.polished .pc-hero {\n  position: relative;\n  overflow: hidden;\n  border-radius: calc(var(--radius) + 4px);\n  padding: 28px 28px 20px;\n  box-shadow: var(--shadow);\n  background: linear-gradient(180deg, rgba(10,106,176,.03), rgba(10,106,176,.005));\n}\n.pc-container.polished .pc-hero-bg::before,\n.pc-container.polished .pc-hero-bg::after{\n  content:\"\"; position:absolute; inset:auto -10% -40% -10%; height:180px;\n  background: radial-gradient(60% 80% at 50% 0%, rgba(43,176,237,.08), transparent 70%);\n  filter: blur(40px); pointer-events:none;\n}\n.pc-container.polished .pc-hero-inner{ position: relative; z-index: 1; }\n.pc-container.polished .pc-hero-eyebrow{\n  font-size:.8rem; letter-spacing:.12em; text-transform:uppercase; color:var(--accent);\n  margin-bottom:6px; font-weight:600;\n}\n.pc-container.polished .pc-hero h1{ margin:.1rem 0 .4rem; font-size: clamp(1.4rem, 2.2vw, 2rem); letter-spacing:-.2px; }\n.pc-container.polished .lead{ margin:0; color: var(--muted); font-size: .98rem; }\n\n.pc-container.polished .pc-steps-nav{ display:flex; gap:10px; flex-wrap:wrap; margin-top:14px; }\n.pc-container.polished .chip{\n  display:inline-flex; align-items:center; gap:.5rem; padding:.48rem .72rem; border-radius:999px;\n  background: #fff; color: var(--ink); box-shadow: var(--shadow); text-decoration:none; transition: transform .2s ease, box-shadow .2s ease;\n}\n.pc-container.polished .chip .num{\n  display:inline-grid; place-items:center; width:24px; height:24px; border-radius:50%; font-size:.9rem; font-weight:700; color:#fff; background: linear-gradient(135deg, var(--accent), var(--accent-2));\n}\n.pc-container.polished .chip:hover{ transform: translateY(-2px); box-shadow: 0 10px 24px rgba(0,0,0,.10); }\n\n\/******** Sticky TOC ********\/\n.pc-container.polished .pc-toc{ position: sticky; top: var(--sticky-offset); margin: 18px 0; z-index: 3; }\n.pc-container.polished .pc-toc-inner{\n  border-radius: var(--radius); background: #ffffff; box-shadow: var(--shadow); padding: 14px 16px; border: 1px solid rgba(10,106,176,.10);\n}\n.pc-container.polished .pc-toc-title{ font-size:.9rem; font-weight:700; margin-bottom:6px; color: var(--accent); }\n.pc-container.polished .pc-toc ol{ list-style:none; padding:0; margin:0; display:grid; gap:6px; }\n.pc-container.polished .pc-toc a{ color: var(--ink); text-decoration:none; padding:6px 8px; border-radius:8px; display:block; }\n.pc-container.polished .pc-toc a:is(:hover,:focus){ background: rgba(43,176,237,.08); box-shadow: var(--ring); outline: none; }\n.pc-container.polished .pc-toc a.active{ background: linear-gradient(180deg, rgba(43,176,237,.12), rgba(43,176,237,.06)); }\n\n\/******** Cards ********\/\n.pc-container.polished .card{\n  position: relative; background: var(--card); border-radius: var(--radius); padding: 18px; margin: 16px 0; box-shadow: var(--shadow);\n}\n.pc-container.polished .card-head h2{ font-size: 1.2rem; margin: 0 0 6px; display:flex; align-items:center; gap:10px; }\n.pc-container.polished .card-head .sub{ color: var(--muted); font-size:.95rem; }\n.pc-container.polished .badge{ display:inline-flex; align-items:center; justify-content:center; height:24px; padding:0 8px; font-size:.75rem; border-radius:6px; background: linear-gradient(135deg, var(--accent), var(--accent-2)); color:#fff; box-shadow: inset 0 -1px 0 rgba(255,255,255,.25); }\n.pc-container.polished .pc-desc{ color: var(--muted); margin: 0 0 10px; }\n\/* Ensure anchor scrolling accounts for sticky bars *\/\n.pc-container.polished .pc-step{ scroll-margin-top: calc(var(--sticky-offset) + 16px); }\n.pc-container.polished .card-accent{\n  position:absolute; inset:0; border-radius: inherit; padding:1px; background: linear-gradient(135deg, rgba(10,106,176,.28), rgba(43,176,237,.28)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);\n  -webkit-mask-composite: xor; mask-composite: exclude; pointer-events:none; opacity:.7;\n}\n\n\/******** Grid for org cards ********\/\n.pc-container.polished .pc-grid{ display:grid; grid-template-columns: repeat(12, 1fr); gap: 14px; margin-top: 10px; }\n.pc-container.polished .pc-grid.onecol{ grid-template-columns: repeat(12, 1fr); }\n.pc-container.polished .pc-card{ grid-column: span 6; background:#fff; border:1px solid rgba(10,106,176,.10); border-radius: 12px; padding: 14px; transition: transform .2s ease, box-shadow .2s ease; }\n.pc-container.polished .pc-card:hover{ transform: translateY(-4px); box-shadow: 0 14px 28px rgba(10, 29, 56, .12); }\n.pc-container.polished .pc-card.list{ grid-column: 1 \/ -1; }\n.pc-container.polished .pc-card-head{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }\n.pc-container.polished .pc-card h3{ margin:0; font-size:1.05rem; font-weight:700; }\n.pc-container.polished .pc-card ul{ margin:0; padding-left: 1.15rem; color: var(--muted); }\n.pc-container.polished .pc-icon{ display:inline-grid; place-items:center; width:28px; height:28px; border-radius:8px; background: linear-gradient(135deg, rgba(10,106,176,.15), rgba(43,176,237,.15)); color: var(--accent); flex-shrink:0; }\n.pc-container.polished .pc-icon svg{ display:block; }\n\n\/******** Links ********\/\n.pc-container.polished a{ color: var(--accent); text-decoration: none; }\n.pc-container.polished a:hover{ text-decoration: underline; }\n\n\/******** Layout ********\/\n@media (min-width: 900px){\n  \/* Two-column grid: TOC left (fixed 260px), content right (auto height), no overlap *\/\n  .pc-container.polished{ display:grid; grid-template-columns: 260px 1fr; gap:20px; align-items:start; }\n  .pc-container.polished .pc-hero{ grid-column: 1 \/ -1; }\n  .pc-container.polished .pc-toc{ grid-column: 1; align-self:start; }\n  .pc-container.polished .pc-main{ grid-column: 2; min-width:0; }\n}\n@media (max-width: 899.98px){\n  .pc-container.polished .pc-grid{ grid-template-columns: repeat(6, 1fr); }\n  .pc-container.polished .pc-card{ grid-column: 1 \/ -1; }\n}\n\n\/******** Accessible focus ********\/\n.pc-container.polished :is(a,button,[tabindex]){ outline: none; }\n.pc-container.polished :is(a,button,[tabindex]):focus{ box-shadow: var(--ring); border-radius: 8px; }\n\n\/* ===== Datasets table (sharp corners, full grid, table-only hover) ===== *\/\n.pc-table-wrap{ margin-top: 10px; }\n\n.pc-table{\n  width: 100%;\n  border-collapse: collapse;\n  background: #fff;\n  border: 1px solid rgba(10,106,176,.25);   \/* single outer border *\/\n  border-radius: 0;                          \/* sharp corners *\/\n  table-layout: fixed;\n}\n\n.pc-table th,\n.pc-table td{\n  border: 1px solid rgba(10,106,176,.2);     \/* full grid *\/\n  padding: 10px 12px;\n  vertical-align: top;\n  word-wrap: break-word;\n}\n\n\/* Header: centered black text, light transparent blue background *\/\n.pc-table thead th{\n  background: rgba(215,236,251,0.55);\n  color: #000;\n  font-weight: 700;\n  text-align: center;\n}\n\n\/* Body base *\/\n.pc-table tbody td{ text-align: left; }\n\n\/* Column colors: Data (blue), Description (muted grey) *\/\n.pc-table tbody td:first-child{\n  color: #084EAE; \/* slightly darker blue (LinkedIn-like) *\/\n}\n.pc-table tbody td:first-child a{\n  color: #084EAE;\n  text-decoration: none;\n}\n.pc-table tbody td:first-child a:hover{\n  text-decoration: underline;\n}\n.pc-table tbody td:nth-child(2){\n  color: var(--muted);\n}\n\n\/* Gentle hover lift on the table (no container\/card movement) *\/\n.pc-anim-table{\n  transition: transform .16s ease, box-shadow .16s ease;\n  will-change: transform;\n}\n.pc-anim-table:hover,\n.pc-anim-table:focus-within{\n  transform: translateY(-3px);\n  box-shadow: 0 10px 24px rgba(10, 29, 56, 0.12);\n}\n\n@media (prefers-reduced-motion: reduce){\n  .pc-anim-table{ transition: none; }\n  .pc-anim-table:hover,\n  .pc-anim-table:focus-within{ transform: none; box-shadow: none; }\n}\n<\/style>\n\n<style>\n\/* Small title when placed below the table *\/\n.pc-desc-title{ color: #000; font-weight:700; font-size: .95rem; text-align: left; margin: 10px 0 6px; }\n\n\/* Legend headings match link blue but render normal weight *\/\n.pc-table-legend{ margin-top: 12px; font-size: .95rem; color: var(--muted); }\n.pc-table-legend b{ color: #084EAE; font-weight: 400; }\n\n\/* Left-column small 'last-updated' text only *\/\n.pc-table tbody td:first-child .last-updated{\n  color: #666;\n  display: block;\n  font-size: .9rem;\n  margin-top: 6px;\n  font-style: italic;\n}\n\n\/* Version text for right-column descriptions *\/\n.pc-table tbody td:nth-child(2) .version{\n  color: var(--muted);\n  display: block;\n  font-size: .92rem;\n  margin-top: 8px;\n  font-style: italic;\n}\n<\/style>\n\n<script>\n  (function () {\n    const rows = Array.from(document.querySelectorAll('.pc-table tbody td:first-child'));\n    if (!rows.length) return;\n\n    function formatDateOnly(d) {\n      try {\n        const day = String(d.getDate()).padStart(2, '0');\n        const month = String(d.getMonth() + 1).padStart(2, '0');\n        const year = d.getFullYear();\n        return `${day}\/${month}\/${year}`;\n      } catch (e) { return d.toISOString().slice(0,10); }\n    }\n\n    async function fetchLastModified(url) {\n      try {\n        let resp;\n        try { resp = await fetch(url, { method: 'HEAD', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n        let last = resp && resp.ok ? resp.headers.get('last-modified') : null;\n\n        if (!last) {\n          try { resp = await fetch(url, { method: 'GET', mode: 'cors', cache: 'no-cache' }); } catch (e) { resp = null; }\n          if (resp && resp.ok) {\n            last = resp.headers.get('last-modified');\n            if (!last) {\n              try {\n                const txt = await resp.text();\n                const m = txt.match(\/(?:Last updated|Last update|Updated on|Updated:)\\s*([A-Za-z0-9,\\-:\\.\\s]+)\/i);\n                if (m && m[1]) last = m[1].trim();\n              } catch (e) { \/* ignore *\/ }\n            }\n          }\n        }\n\n        return last || null;\n      } catch (err) { return null; }\n    }\n\n    rows.forEach(async (td) => {\n      const a = td.querySelector('a[href]');\n      const timeEl = td.querySelector('time');\n      if (!a || !timeEl) return;\n      const url = a.href;\n\n      const last = await fetchLastModified(url);\n      if (!last) {\n        const dLocal = new Date(document.lastModified);\n        timeEl.dateTime = dLocal.toISOString();\n        timeEl.textContent = formatDateOnly(dLocal);\n        return;\n      }\n\n      const d = new Date(last);\n      if (!isNaN(d)) {\n        timeEl.dateTime = d.toISOString();\n        timeEl.textContent = formatDateOnly(d);\n      } else {\n        timeEl.textContent = last.split('\\n')[0].trim();\n        }\n      });\n\n    })();\n\n  <\/script>\n\n    <script>\n    (function(){\n      const researchLinks = [\n        { title: 'Truck Appointment Scheduling', url: 'https:\/\/aiportcenter.nl\/index.php\/truck-appointment-scheduling\/' },\n        { title: 'Yard-Vehicle Routing', url: 'https:\/\/aiportcenter.nl\/index.php\/yard-vehicle-routing\/' },\n        { title: 'Yard-Crane Scheduling', url: 'https:\/\/aiportcenter.nl\/index.php\/yard-crane\/' }\n      ];\n\n      const linksByIndex = [];\n\n      const section = document.getElementById('research');\n      if(!section) return;\n\n      const cards = Array.from(section.querySelectorAll('.pc-card'));\n      cards.forEach((card, idx) => {\n        const h3 = card.querySelector('h3');\n        const title = h3 ? h3.textContent.trim() : null;\n        const dataUrl = card.dataset && (card.dataset.url || card.dataset.href || card.dataset.link);\n        let mapping = null;\n        if(dataUrl) mapping = { url: dataUrl };\n        if(!mapping) mapping = researchLinks.find(r => r.title === title && r.url);\n        if(!mapping && linksByIndex[idx]) mapping = { url: linksByIndex[idx] };\n\n        if(mapping && mapping.url){\n          card.tabIndex = 0;\n          card.setAttribute('role','link');\n          card.style.cursor = 'pointer';\n\n          card.addEventListener('click', (e) => { window.open(mapping.url, '_blank'); });\n          card.addEventListener('keydown', (ev) => { if(ev.key === 'Enter' || ev.key === ' '){ ev.preventDefault(); window.open(mapping.url, '_blank'); } });\n\n          const anchor = document.createElement('a');\n          anchor.href = mapping.url;\n          anchor.target = '_blank';\n          anchor.rel = 'noopener noreferrer';\n          anchor.setAttribute('aria-hidden','true');\n          anchor.style.position = 'absolute';\n          anchor.style.inset = '0';\n          anchor.style.zIndex = '2';\n          anchor.style.background = 'transparent';\n          anchor.style.textDecoration = 'none';\n          const pos = getComputedStyle(card).position;\n          if(!pos || pos === 'static') card.style.position = 'relative';\n          card.appendChild(anchor);\n        }\n      });\n\n      const toc = document.querySelector('#customs-rotterdam .pc-toc ol');\n      if(toc){\n        const existing = toc.querySelector('a[href=\"#research\"]');\n        if(!existing){\n          const li = document.createElement('li');\n          const a = document.createElement('a'); a.href = '#research'; a.textContent = 'Research Problems';\n          li.appendChild(a);\n          const execItem = toc.querySelector('a[href=\"#exec\"]');\n          if(execItem && execItem.parentNode) toc.insertBefore(li, execItem.parentNode);\n          else toc.appendChild(li);\n        } else { existing.textContent = 'Research Problems'; }\n      }\n    })();\n    <\/script>\n<script>\n\/\/ ===== Smooth scroll + active TOC highlighting + header height detection =====\n(function(){\n  \/\/ Detect fixed\/sticky site header height and set --site-header\n  try{\n    const root = document.documentElement;\n    const detect = () => {\n      const nodes = Array.from(document.querySelectorAll(\n        'header, .site-header, #masthead, .navbar, .header, [data-fixed-header], ' +\n        '.sticky-header, .header-wrapper, .elementor-location-header, ' +\n        '.fl-page-header, .fusion-header, .kadence-header, .ast-primary-header-bar, ' +\n        '.generatepress-header, .blocksy-header'\n      ));\n      const fixedLike = nodes.filter(el => {\n        const cs = getComputedStyle(el);\n        const pos = cs.position;\n        const top = Math.round(el.getBoundingClientRect().top);\n        return (pos==='fixed' || pos==='sticky') && top <= 0 &#038;&#038; el.offsetHeight > 0;\n      });\n      const h = fixedLike.reduce((m,el)=> Math.max(m, el.offsetHeight||0), 0);\n      root.style.setProperty('--site-header', h + 'px');\n    };\n    ['load','resize','scroll'].forEach(ev=> window.addEventListener(ev, detect, { passive:true }));\n    detect();\n  }catch(e){}\n\n  const tocLinks = Array.from(document.querySelectorAll('#customs-rotterdam .pc-toc a'));\n  const sections = tocLinks.map(a => document.querySelector(a.getAttribute('href'))).filter(Boolean);\n\n  tocLinks.forEach(a=>a.addEventListener('click', e=>{\n    e.preventDefault();\n    document.querySelector(a.getAttribute('href')).scrollIntoView({behavior:'smooth', block:'start'});\n  }));\n\n  const io = new IntersectionObserver((entries)=>{\n    entries.forEach(entry=>{\n      const id = '#' + entry.target.id;\n      const link = tocLinks.find(l=>l.getAttribute('href')===id);\n      if(link && entry.isIntersecting){\n        tocLinks.forEach(l=>l.classList.remove('active'));\n        link.classList.add('active');\n      }\n    })\n  },{ rootMargin: 'calc(var(--sticky-offset) * -1) 0px -60% 0px', threshold: 0.01 });\n  sections.forEach(sec=> io.observe(sec));\n})();\n<\/script>\n<!-- ========= \/END CUSTOMS (POLISHED) ========= -->\n","protected":false},"excerpt":{"rendered":"<p>Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Customs Port-Call Optimization at the Port of Rotterdam Customs Completes border formalities so cargo can legally exit the terminal or move onward in bond. Declarations, risk profiling, and physical inspections are applied to targeted consignments. Holds are set and cleared digitally, and brokers coordinate data corrections [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","footnotes":""},"class_list":["post-384","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":7}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"peterwenzel","author_link":"https:\/\/aiportcenter.nl\/index.php\/author\/peterwenzel\/"},"uagb_comment_info":0,"uagb_excerpt":"Home \u203a Port-Call Data Hub \u203a Processes Timeline \u203a Customs Port-Call Optimization at the Port of Rotterdam Customs Completes border formalities so cargo can legally exit the terminal or move onward in bond. Declarations, risk profiling, and physical inspections are applied to targeted consignments. Holds are set and cleared digitally, and brokers coordinate data corrections&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/comments?post=384"}],"version-history":[{"count":20,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/384\/revisions"}],"predecessor-version":[{"id":1657,"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/pages\/384\/revisions\/1657"}],"wp:attachment":[{"href":"https:\/\/aiportcenter.nl\/index.php\/wp-json\/wp\/v2\/media?parent=384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}