{"id":239149,"date":"2025-08-12T19:21:32","date_gmt":"2025-08-12T19:21:32","guid":{"rendered":"https:\/\/en-ca.wordpress.org\/plugins\/shift8-gravity-forms-sap-b1-integration\/"},"modified":"2026-04-02T18:55:46","modified_gmt":"2026-04-02T18:55:46","slug":"shift8-integration-for-gravity-forms-and-sap-business-one","status":"publish","type":"plugin","link":"https:\/\/sv.wordpress.org\/plugins\/shift8-integration-for-gravity-forms-and-sap-business-one\/","author":15006456,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_crdt_document":"","version":"1.6.0","stable_tag":"1.6.0","tested":"6.8.5","requires":"5.0","requires_php":"7.4","requires_plugins":null,"header_name":"Shift8 Integration for Gravity Forms and SAP Business One","header_author":"Shift8 Web","header_description":"Integrates Gravity Forms with SAP Business One to automatically create Business Partner records from form submissions. Features secure API communication, field mapping, and comprehensive logging.","assets_banners_color":"ed145a","last_updated":"2026-04-02 18:55:46","external_support_url":"","external_repository_url":"","donate_link":"https:\/\/shift8web.ca","header_plugin_uri":"https:\/\/github.com\/stardothosting\/shift8-gravitysap","header_author_uri":"https:\/\/shift8web.ca","rating":0,"author_block_rating":0,"active_installs":0,"downloads":1295,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.1.2":{"tag":"1.1.2","author":"shift8","date":"2025-08-12 19:21:26"},"1.1.5":{"tag":"1.1.5","author":"shift8","date":"2025-08-12 19:32:03"},"1.1.6":{"tag":"1.1.6","author":"shift8","date":"2025-08-12 19:37:23"},"1.1.7":{"tag":"1.1.7","author":"shift8","date":"2025-08-12 19:39:32"},"1.1.8":{"tag":"1.1.8","author":"shift8","date":"2025-08-12 19:50:14"},"1.1.9":{"tag":"1.1.9","author":"shift8","date":"2025-08-12 19:50:58"},"1.2.0":{"tag":"1.2.0","author":"shift8","date":"2025-10-07 02:37:16"},"1.2.1":{"tag":"1.2.1","author":"shift8","date":"2025-10-07 15:26:18"},"1.2.4":{"tag":"1.2.4","author":"shift8","date":"2025-10-08 18:05:59"},"1.3.0":{"tag":"1.3.0","author":"shift8","date":"2025-11-25 20:17:53"},"1.3.1":{"tag":"1.3.1","author":"shift8","date":"2026-01-28 17:08:43"},"1.3.2":{"tag":"1.3.2","author":"shift8","date":"2026-01-29 11:27:17"},"1.3.3":{"tag":"1.3.3","author":"shift8","date":"2026-02-04 15:28:36"},"1.3.4":{"tag":"1.3.4","author":"shift8","date":"2026-02-04 16:51:28"},"1.3.5":{"tag":"1.3.5","author":"shift8","date":"2026-02-04 17:29:40"},"1.3.6":{"tag":"1.3.6","author":"shift8","date":"2026-02-05 01:31:12"},"1.3.7":{"tag":"1.3.7","author":"shift8","date":"2026-02-05 02:54:14"},"1.3.8":{"tag":"1.3.8","author":"shift8","date":"2026-02-05 10:05:25"},"1.4.4":{"tag":"1.4.4","author":"shift8","date":"2026-02-05 11:42:43"},"1.4.6":{"tag":"1.4.6","author":"shift8","date":"2026-02-05 15:29:10"},"1.4.8":{"tag":"1.4.8","author":"shift8","date":"2026-02-05 16:14:42"},"1.4.9":{"tag":"1.4.9","author":"shift8","date":"2026-03-23 16:51:05"},"1.5.0":{"tag":"1.5.0","author":"shift8","date":"2026-03-23 17:09:19"},"1.6.0":{"tag":"1.6.0","author":"shift8","date":"2026-04-02 18:55:46"},"admin":{"tag":"admin","author":"shift8","date":"2025-08-12 19:15:45"},"includes":{"tag":"includes","author":"shift8","date":"2025-08-12 19:15:45"},"languages":{"tag":"languages","author":"shift8","date":"2025-08-12 19:15:45"},"trunk":{"tag":"trunk","author":"shift8","date":"2025-08-12 19:15:45"}},"upgrade_notice":{"1.6.0":"<p>Email-based duplicate detection: Business Partners now matched by email OR name+address. Includes automated test suite for duplicate detection scenarios.<\/p>","1.5.0":"<p>New WP-CLI <code>sap-query<\/code> command for direct SAP B1 queries. SAP identifiers now stored in GF entry meta. Remarks\/Notes field available for mapping.<\/p>","1.4.8":"<p>Switched to synchronous processing for reliable operation on all hosting environments.<\/p>","1.2.0":"<p>Major update with Contact Person support! You can now map form fields to the Contact Persons tab in SAP B1. Includes new WP-CLI testing command for developers.<\/p>","1.0.0":"<p>Initial release of the Shift8 Integration for Gravity Forms and SAP Business One plugin.<\/p>\n\n<hr \/>","Shift8 Integration for Gravity Forms and SAP Business One":"<p>A secure WordPress plugin that integrates Gravity Forms with SAP Business One, automatically creating Business Partner records from form submissions.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3343774,"resolution":"128x128","location":"assets","locale":""},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3343774,"resolution":"256x256","location":"assets","locale":""}},"assets_banners":{"banner-1554x500.png":{"filename":"banner-1554x500.png","revision":3343774,"resolution":"1554x500","location":"assets","locale":""},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3343774,"resolution":"772x250","location":"assets","locale":""}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.1.2","1.1.5","1.1.6","1.1.7","1.1.8","1.1.9","1.2.0","1.2.1","1.2.4","1.3.0","1.3.1","1.3.2","1.3.3","1.3.4","1.3.5","1.3.6","1.3.7","1.3.8","1.4.4","1.4.6","1.4.8","1.4.9","1.5.0","1.6.0","admin","includes","languages","trunk"],"block_files":[],"assets_screenshots":{"screenshot-1.jpg":{"filename":"screenshot-1.jpg","revision":3343789,"resolution":"1","location":"assets","locale":""}},"screenshots":{"1":"Main settings page with SAP connection configuration","2":"Gravity Forms integration settings with field mapping","3":"Test connection and integration tools","4":"Debug logging interface"},"jetpack_post_was_ever_published":false},"plugin_section":[],"plugin_tags":[246245,1150,1655,597,55232],"plugin_category":[58],"plugin_contributors":[93487],"plugin_business_model":[],"class_list":["post-239149","plugin","type-plugin","status-publish","hentry","plugin_tags-business-one","plugin_tags-crm","plugin_tags-gravity-forms","plugin_tags-integration","plugin_tags-sap","plugin_category-user-management","plugin_contributors-shift8","plugin_committers-shift8"],"banners":{"banner":"https:\/\/ps.w.org\/shift8-integration-for-gravity-forms-and-sap-business-one\/assets\/banner-772x250.png?rev=3343774","banner_2x":false,"banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/shift8-integration-for-gravity-forms-and-sap-business-one\/assets\/icon-128x128.png?rev=3343774","icon_2x":"https:\/\/ps.w.org\/shift8-integration-for-gravity-forms-and-sap-business-one\/assets\/icon-256x256.png?rev=3343774","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/shift8-integration-for-gravity-forms-and-sap-business-one\/assets\/screenshot-1.jpg?rev=3343789","caption":"Main settings page with SAP connection configuration"}],"raw_content":"<!--section=description-->\n<p>A secure WordPress plugin that integrates Gravity Forms with SAP Business One, automatically creating Business Partner records from form submissions.<\/p>\n\n<p>For a complete setup guide and technical walkthrough, see our blog post: <a href=\"https:\/\/shift8web.ca\/how-to-integrate-sap-b1-business-one-into-wordpress-gravity-forms\/\">How to integrate SAP B1 (Business One) into WordPress Gravity Forms<\/a><\/p>\n\n<h4>Features<\/h4>\n\n<ul>\n<li><strong>Seamless Integration<\/strong>: Direct integration with SAP Business One Service Layer API<\/li>\n<li><strong>Field Mapping<\/strong>: Flexible mapping between Gravity Forms fields and SAP Business Partner fields<\/li>\n<li><strong>Contact Person Support<\/strong>: Map form fields to Contact Persons tab in SAP B1<\/li>\n<li><strong>Sales Quotation Creation<\/strong>: Automatically create Sales Quotations with checkbox-based line item mapping<\/li>\n<li><strong>Duplicate Detection<\/strong>: Prevent duplicate Business Partners using email OR name+address matching<\/li>\n<li><strong>Automatic Form Validation<\/strong>: Real-time validation against SAP field limits before submission<\/li>\n<li><strong>Security First<\/strong>: Password encryption, input validation, and secure API communication<\/li>\n<li><strong>Real-time Testing<\/strong>: Built-in connection and integration testing tools<\/li>\n<li><strong>WP-CLI Testing<\/strong>: End-to-end testing and SAP B1 query commands for developers<\/li>\n<li><strong>Comprehensive Logging<\/strong>: Detailed debug logging with sensitive data protection<\/li>\n<li><strong>User-Friendly Interface<\/strong>: Intuitive settings and configuration interface<\/li>\n<li><strong>Error Handling<\/strong>: Robust error handling with detailed feedback<\/li>\n<\/ul>\n\n<h3>Features<\/h3>\n\n<ul>\n<li><strong>Seamless Integration<\/strong>: Direct integration with SAP Business One Service Layer API<\/li>\n<li><strong>Field Mapping<\/strong>: Flexible mapping between Gravity Forms fields and SAP Business Partner fields<\/li>\n<li><strong>Security First<\/strong>: Password encryption, input validation, and secure API communication<\/li>\n<li><strong>Real-time Testing<\/strong>: Built-in connection and integration testing tools<\/li>\n<li><strong>Comprehensive Logging<\/strong>: Detailed debug logging with sensitive data protection<\/li>\n<li><strong>User-Friendly Interface<\/strong>: Intuitive settings and configuration interface<\/li>\n<li><strong>Error Handling<\/strong>: Robust error handling with detailed feedback<\/li>\n<\/ul>\n\n<h3>Requirements<\/h3>\n\n<h3>WordPress Environment<\/h3>\n\n<ul>\n<li><strong>WordPress<\/strong>: 5.0 or higher<\/li>\n<li><strong>PHP<\/strong>: 7.4 or higher<\/li>\n<li><strong>Gravity Forms<\/strong>: Latest version required<\/li>\n<\/ul>\n\n<h3>SAP Business One Environment<\/h3>\n\n<ul>\n<li><strong>SAP Business One<\/strong>: Version 9.3 or higher<\/li>\n<li><strong>Service Layer<\/strong>: Properly configured and accessible<\/li>\n<li><strong>User Permissions<\/strong>: SAP user with Business Partner creation rights<\/li>\n<li><strong>Numbering Series<\/strong>: Configured for Business Partners in SAP B1<\/li>\n<\/ul>\n\n<h3>Configuration<\/h3>\n\n<h3>Step 1: Configure SAP Connection<\/h3>\n\n<ol>\n<li>Navigate to <strong>WordPress Admin &gt; Shift8 &gt; Gravity SAP<\/strong><\/li>\n<li>Enter your SAP connection details:\n\n<ul>\n<li><strong>SAP Service Layer Endpoint<\/strong>: <code>https:\/\/your-sap-server:50000\/b1s\/v1\/<\/code><\/li>\n<li><strong>Company Database<\/strong>: Your SAP company database name<\/li>\n<li><strong>Username<\/strong>: SAP user with Business Partner permissions<\/li>\n<li><strong>Password<\/strong>: SAP user password (automatically encrypted)<\/li>\n<\/ul><\/li>\n<li>Enable <strong>Debug Logging<\/strong> if needed for troubleshooting<\/li>\n<li>Click <strong>Save Settings<\/strong><\/li>\n<li>Click <strong>Test SAP Connection<\/strong> to verify connectivity<\/li>\n<\/ol>\n\n<h3>Step 2: Configure Gravity Forms Integration<\/h3>\n\n<ol>\n<li>Go to <strong>WordPress Admin &gt; Forms<\/strong> and select a form<\/li>\n<li>Click <strong>Settings &gt; SAP Integration<\/strong><\/li>\n<li>Check <strong>Enable SAP Integration<\/strong><\/li>\n<li>Enter a <strong>Feed Name<\/strong> for identification<\/li>\n<li>Select <strong>Business Partner Type<\/strong> (Customer, Vendor, or Lead)<\/li>\n<li>Map form fields to SAP Business Partner fields<\/li>\n<li>Click <strong>Update Settings<\/strong><\/li>\n<\/ol>\n\n<h3>Step 3: Test Integration<\/h3>\n\n<ol>\n<li>Click <strong>Test Numbering Series<\/strong> to verify SAP configuration<\/li>\n<li>Enter test data and click <strong>Test Integration<\/strong><\/li>\n<li>Verify Business Partner creation in SAP Business One<\/li>\n<\/ol>\n\n<h3>Field Mapping<\/h3>\n\n<h3>Main Business Partner Fields<\/h3>\n\n\n\n\n  SAP Field\n  Description\n  Required\n  Max Length\n\n\n\n\n  <code>CardName<\/code>\n  Business Partner Name\n  Yes\n  ~100 chars\n\n\n  <code>EmailAddress<\/code>\n  Email Address\n  No\n  Email format\n\n\n  <code>Phone1<\/code>\n  Telephone 1\n  No\n  ~20 chars\n\n\n  <code>Phone2<\/code>\n  Telephone 2\n  No\n  ~20 chars\n\n\n  <code>Cellular<\/code>\n  Mobile Phone\n  No\n  ~20 chars\n\n\n  <code>Fax<\/code>\n  Fax Number\n  No\n  ~20 chars\n\n\n  <code>Website<\/code>\n  Website URL\n  No\n  URL format\n\n\n  <code>FreeText<\/code>\n  Remarks\/Notes\n  No\n  ~254 chars\n\n\n\n\n<h3>Address Fields (BPAddresses - appears in General tab)<\/h3>\n\n\n\n\n  SAP Field\n  Description\n  Required\n  Max Length\n\n\n\n\n  <code>BPAddresses.Street<\/code>\n  Street Address\n  No\n  ~100 chars\n\n\n  <code>BPAddresses.City<\/code>\n  City\n  No\n  ~25 chars\n\n\n  <code>BPAddresses.State<\/code>\n  State\/Province\n  No\n  <strong>3-4 chars<\/strong> (codes only!)\n\n\n  <code>BPAddresses.ZipCode<\/code>\n  Zip\/Postal Code\n  No\n  ~20 chars\n\n\n  <code>BPAddresses.Country<\/code>\n  Country\n  No\n  2-letter code\n\n\n\n\n<h3>Contact Person Fields (ContactEmployees - appears in Contact Persons tab)<\/h3>\n\n\n\n\n  SAP Field\n  Description\n  Required\n  Max Length\n\n\n\n\n  <code>ContactEmployees.FirstName<\/code>\n  Contact First Name\n  No\n  ~50 chars\n\n\n  <code>ContactEmployees.LastName<\/code>\n  Contact Last Name\n  No\n  ~50 chars\n\n\n  <code>ContactEmployees.Phone1<\/code>\n  Contact Phone\n  No\n  ~20 chars\n\n\n  <code>ContactEmployees.E_Mail<\/code>\n  Contact Email\n  No\n  Email format\n\n\n  <code>ContactEmployees.Address<\/code>\n  Contact Address\n  No\n  ~254 chars\n\n\n\n\n<p><strong>Important<\/strong>: \n- SAP has strict field length limits. Use state codes (\"CA\" not \"California\") and country codes (\"US\" not \"United States\")\n- BPAddresses data appears in the <strong>General tab<\/strong> of the Business Partner in SAP B1\n- ContactEmployees data appears in the <strong>Contact Persons tab<\/strong> of the Business Partner in SAP B1\n- You can map address data to either BPAddresses, ContactEmployees, or both depending on your needs<\/p>\n\n<h3>Troubleshooting<\/h3>\n\n<h3>Field Length Errors<\/h3>\n\n<p>If you get \"Value too long in property\" errors:\n1. Check that State field uses codes (\"CA\", \"NY\", \"TX\") not full names\n2. Verify Country field uses 2-letter codes (\"US\", \"CA\", \"GB\")\n3. Keep phone numbers under 20 characters\n4. Keep street addresses under 100 characters\n5. Keep city names under 25 characters<\/p>\n\n<h3>Connection Issues<\/h3>\n\n<ol>\n<li>Verify SAP Service Layer is running<\/li>\n<li>Check endpoint URL format<\/li>\n<li>Test credentials in SAP Business One<\/li>\n<li>Review debug logs for detailed error information<\/li>\n<\/ol>\n\n<h3>Numbering Series Issues<\/h3>\n\n<ol>\n<li>Configure numbering series in SAP B1 Administration<\/li>\n<li>Go to <strong>Administration &gt; System Initialization &gt; Document Numbering<\/strong><\/li>\n<li>Set up series for Business Partners<\/li>\n<li>Ensure default series are configured<\/li>\n<\/ol>\n\n<h3>Security Features<\/h3>\n\n<ul>\n<li><strong>Password Encryption<\/strong>: All passwords encrypted using WordPress salts<\/li>\n<li><strong>Input Validation<\/strong>: All data sanitized and validated<\/li>\n<li><strong>Secure Communication<\/strong>: HTTPS API communication<\/li>\n<li><strong>Access Control<\/strong>: Admin-only access with capability checks<\/li>\n<li><strong>Debug Protection<\/strong>: Sensitive data automatically redacted from logs<\/li>\n<\/ul>\n\n<h3>How It Works<\/h3>\n\n<ol>\n<li>User submits Gravity Form with mapped fields<\/li>\n<li>Plugin validates form has SAP integration enabled<\/li>\n<li>Data mapping occurs between form fields and SAP fields<\/li>\n<li>SAP authentication using encrypted credentials<\/li>\n<li>Duplicate detection (if enabled): checks SAP for existing BP matching Email OR (Name + Country + Postal)\n\n<ul>\n<li>Existing BP found: reuses the BP, checks for existing Contact Person, adds new contact if needed<\/li>\n<li>No match found: creates a new Business Partner with Contact Person<\/li>\n<\/ul><\/li>\n<li>Sales Quotation created and linked to the BP and Contact Person<\/li>\n<li>SAP identifiers (CardCode, DocEntry, InternalCode) stored in GF entry meta<\/li>\n<li>Success\/error logging, entry notes, and status column updated<\/li>\n<\/ol>\n\n<h3>Support<\/h3>\n\n<p>For support and documentation:\n- Review debug logs for error details\n- Use built-in connection testing tools\n- Check SAP Service Layer documentation\n- Contact: https:\/\/www.shift8web.ca<\/p>\n\n<h3>License<\/h3>\n\n<p>GNU General Public License v3.0 or later<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Download the plugin ZIP file<\/li>\n<li>Go to <strong>WordPress Admin &gt; Plugins &gt; Add New<\/strong><\/li>\n<li>Click <strong>Upload Plugin<\/strong> and select the ZIP file<\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong>1. Download the plugin ZIP file<\/li>\n<li>Go to <strong>WordPress Admin &gt; Plugins &gt; Add New<\/strong><\/li>\n<li>Click <strong>Upload Plugin<\/strong> and select the ZIP file<\/li>\n<li>Click <strong>Install Now<\/strong> and then <strong>Activate<\/strong><\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"what%20are%20the%20requirements%3F\"><h3>What are the requirements?<\/h3><\/dt>\n<dd><p><strong>WordPress Environment:<\/strong>\n* WordPress 5.0 or higher\n* PHP 7.4 or higher\n* Gravity Forms plugin (latest version)<\/p>\n\n<p><strong>SAP Business One Environment:<\/strong>\n* SAP Business One version 9.3 or higher\n* Service Layer properly configured and accessible\n* SAP user with Business Partner creation rights\n* Numbering Series configured for Business Partners in SAP B1<\/p><\/dd>\n<dt id=\"how%20do%20i%20configure%20the%20plugin%3F\"><h3>How do I configure the plugin?<\/h3><\/dt>\n<dd><ol>\n<li>Navigate to <strong>WordPress Admin &gt; Shift8 &gt; Gravity SAP<\/strong><\/li>\n<li>Enter your SAP connection details<\/li>\n<li>Test the connection<\/li>\n<li>Go to your Gravity Form settings and enable SAP integration<\/li>\n<li>Map your form fields to SAP Business Partner fields<\/li>\n<\/ol><\/dd>\n<dt id=\"why%20am%20i%20getting%20connection%20errors%3F\"><h3>Why am I getting connection errors?<\/h3><\/dt>\n<dd><p>Common solutions:\n1. Verify SAP Service Layer is running\n2. Check endpoint URL format (should end with \/b1s\/v1\/)\n3. Test credentials in SAP Business One directly\n4. Review debug logs for detailed error information<\/p><\/dd>\n<dt id=\"how%20do%20i%20set%20up%20numbering%20series%20in%20sap%3F\"><h3>How do I set up numbering series in SAP?<\/h3><\/dt>\n<dd><ol>\n<li>Go to SAP B1 Administration &gt; System Initialization &gt; Document Numbering<\/li>\n<li>Set up series for Business Partners<\/li>\n<li>Ensure default series are configured<\/li>\n<li>Test using the built-in numbering series test tool<\/li>\n<\/ol><\/dd>\n<dt id=\"how%20do%20i%20use%20checkbox%20fields%20for%20sales%20quotation%20line%20items%3F\"><h3>How do I use checkbox fields for Sales Quotation line items?<\/h3><\/dt>\n<dd><p>Checkbox fields are perfect for product selection forms. Each checkbox option becomes a separate mappable field:<\/p>\n\n<p><strong>Example:<\/strong> If you have a checkbox field \"Select Products\" with options \"Product A\", \"Product B\", \"Product C\", they will appear in the field mapping as:\n* \"Select Products \u2192 Product A\" (Field ID: 15.1)\n* \"Select Products \u2192 Product B\" (Field ID: 15.2)\n* \"Select Products \u2192 Product C\" (Field ID: 15.3)<\/p>\n\n<p><strong>To configure:<\/strong>\n1. Enable \"Automatically create a sales quotation in SAP B1\" in form settings\n2. Click \"Load ItemCodes from SAP B1\" to load available products\n3. Map each DocumentLines slot to a specific checkbox option\n4. Select the corresponding SAP ItemCode for each slot<\/p>\n\n<p><strong>How it works:<\/strong>\n* Checked boxes \u2192 Line items are created in the Sales Quotation\n* Unchecked boxes \u2192 Skipped (no line item)\n* The quotation is automatically linked to the Business Partner<\/p>\n\n<p>This is ideal for sample request forms, multi-product orders, and service selection forms.<\/p><\/dd>\n<dt id=\"how%20do%20i%20prevent%20duplicate%20business%20partners%3F\"><h3>How do I prevent duplicate Business Partners?<\/h3><\/dt>\n<dd><p>Enable <strong>Check for existing Business Partner<\/strong> in your form's SAP Integration settings. The plugin uses an OR strategy -- a match on either condition prevents duplicates:<\/p>\n\n<ul>\n<li><strong>Email match<\/strong> (checked first): EmailAddress matches an existing BP in SAP<\/li>\n<li><strong>Name + Address match<\/strong> (fallback): Business Partner Name (case-insensitive) + Country + Postal\/ZIP Code<\/li>\n<\/ul>\n\n<p>If a match is found, the plugin uses the existing Business Partner instead of creating a duplicate. You can test this with WP-CLI:<\/p>\n\n<pre><code>wp shift8-gravitysap-bp-lookup search --email=\"info@example.com\"\nwp shift8-gravitysap-bp-lookup search --name=\"Test Company\" --country=\"CA\" --postal=\"M5V 1A1\"\nwp shift8-gravitysap-bp-lookup run_tests\n<\/code><\/pre><\/dd>\n<dt id=\"how%20are%20contact%20persons%20linked%20to%20sales%20quotations%3F\"><h3>How are Contact Persons linked to Sales Quotations?<\/h3><\/dt>\n<dd><p>When a Business Partner match is found (or a new one is created), the plugin automatically:<\/p>\n\n<ol>\n<li>Adds a Contact Person to the Business Partner using the form's contact data<\/li>\n<li>Retrieves the Contact Person's InternalCode from SAP<\/li>\n<li>Links the Contact Person to the Sales Quotation via SAP's ContactPersonCode field<\/li>\n<\/ol>\n\n<p><strong>Result in SAP B1:<\/strong>\n* Contact Person appears in the Business Partner's \"Contact Persons\" tab\n* Sales Quotation dropdown shows the correct Contact Person selected\n* Contact Person is properly linked for subsequent documents<\/p>\n\n<p><strong>Technical Note:<\/strong> SAP B1's ContactPersonCode field requires the numeric InternalCode, not the text Name. The plugin handles this automatically.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.6.0<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Email-based duplicate Business Partner detection - matches if email OR (name+country+postal) already exists in SAP<\/li>\n<li><strong>NEW<\/strong>: Automated test suite for duplicate detection (<code>wp shift8-gravitysap-bp-lookup run_tests<\/code>) reads scenarios from gitignored config<\/li>\n<li><strong>IMPROVED<\/strong>: Email check runs first as most reliable unique identifier before name+address fallback<\/li>\n<li><strong>IMPROVED<\/strong>: WP-CLI <code>bp-lookup search<\/code> now supports <code>--email<\/code> parameter for email-only or combined lookups<\/li>\n<li><strong>IMPROVED<\/strong>: BP lookup result includes <code>match_type<\/code> field for match transparency<\/li>\n<li><strong>IMPROVED<\/strong>: Updated documentation for duplicate detection, field mapping, and manual test workflows<\/li>\n<\/ul>\n\n<h4>1.5.0<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: WP-CLI <code>sap-query<\/code> command for direct SAP B1 record queries (bp, quotation, entry, search)<\/li>\n<li><strong>NEW<\/strong>: SAP identifiers stored in GF entry meta for cross-referencing (bp_matched, contact_name, contact_internal_code)<\/li>\n<li><strong>NEW<\/strong>: Remarks\/Notes (FreeText) field available in Business Partner field mapping<\/li>\n<li><strong>IMPROVED<\/strong>: Entry list SAP Status column shows BP match type, Quotation DocNum, and Contact name<\/li>\n<li><strong>IMPROVED<\/strong>: Comprehensive WP-CLI documentation for manual testing and verification workflows<\/li>\n<\/ul>\n\n<h4>1.4.8<\/h4>\n\n<ul>\n<li><strong>CHANGED<\/strong>: Switched to synchronous processing (standard GF add-on approach)<\/li>\n<li><strong>REMOVED<\/strong>: Async loopback processing - was unreliable on many hosting environments<\/li>\n<li><strong>IMPROVED<\/strong>: Now works reliably on ALL hosting environments<\/li>\n<li><strong>SIMPLIFIED<\/strong>: Removed unnecessary complexity - follows GF best practices<\/li>\n<\/ul>\n\n<h4>1.4.7<\/h4>\n\n<ul>\n<li>Synchronous Processing option (superseded by 1.4.8)<\/li>\n<\/ul>\n\n<h4>1.4.6<\/h4>\n\n<ul>\n<li><strong>CHANGED<\/strong>: Debug logging now requires both WP_DEBUG=true AND plugin debug setting enabled<\/li>\n<\/ul>\n\n<h4>1.4.5<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Robust debug logging system - requires both WP_DEBUG and plugin debug setting<\/li>\n<li><strong>NEW<\/strong>: Dedicated log file at <code>wp-content\/uploads\/shift8-gravitysap-debug.log<\/code><\/li>\n<li><strong>NEW<\/strong>: Comprehensive logging throughout form submission and async processing<\/li>\n<li><strong>IMPROVED<\/strong>: Logs include step-by-step visibility for troubleshooting<\/li>\n<li><strong>IMPROVED<\/strong>: Fallback to PHP error_log if file write fails<\/li>\n<li><strong>IMPROVED<\/strong>: Plugin init logs diagnostic info (file paths, permissions, versions)<\/li>\n<\/ul>\n\n<h4>1.4.4<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Duplicate contact detection - checks if contact already exists before adding<\/li>\n<li><strong>NEW<\/strong>: <code>find_existing_contact()<\/code> method for case-insensitive name + email matching<\/li>\n<li><strong>IMPROVED<\/strong>: Reuses existing contacts instead of creating duplicates on repeat submissions<\/li>\n<li><strong>TESTING<\/strong>: Added 10 new tests for contact duplicate detection (edge cases included)<\/li>\n<li><strong>TESTING<\/strong>: Now 138 tests with 306 assertions - All passing<\/li>\n<\/ul>\n\n<h4>1.4.3<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Contact Person now correctly linked to Sales Quotation using SAP's InternalCode (numeric) instead of Name (string)<\/li>\n<li><strong>IMPROVED<\/strong>: After adding Contact Person to existing BP, plugin now fetches BP to retrieve the contact's InternalCode<\/li>\n<li><strong>IMPROVED<\/strong>: Sales Quotation ContactPersonCode field now uses correct integer value for proper SAP B1 linking<\/li>\n<li><strong>TESTING<\/strong>: Added 3 additional Contact Person tests (InternalCode retrieval, existing Name field, first name only)<\/li>\n<li><strong>TESTING<\/strong>: Now 128 tests with 291 assertions - All passing<\/li>\n<li><strong>DOCUMENTATION<\/strong>: Added comprehensive contactPersonLinking section to .cursorrules<\/li>\n<\/ul>\n\n<h4>1.4.2<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Contact Person now added to existing Business Partner when match is found<\/li>\n<li><strong>NEW<\/strong>: Contact Person linked to Sales Quotation via ContactPersonCode field<\/li>\n<li><strong>IMPROVED<\/strong>: SAP Service class now includes <code>add_contact_to_business_partner()<\/code> and <code>get_business_partner()<\/code> methods<\/li>\n<li><strong>TESTING<\/strong>: Added 6 new unit tests for Contact Person functionality<\/li>\n<li><strong>TESTING<\/strong>: Now 125 tests with 283 assertions - All passing<\/li>\n<\/ul>\n\n<h4>1.4.1<\/h4>\n\n<ul>\n<li><strong>TESTING<\/strong>: Added comprehensive test coverage for async processing (9 new tests)<\/li>\n<li><strong>TESTING<\/strong>: Added comprehensive test coverage for Business Partner lookup (10 new tests)<\/li>\n<li><strong>TESTING<\/strong>: Now 119 tests with 272 assertions - All passing<\/li>\n<li><strong>DOCUMENTATION<\/strong>: Updated .cursorrules with async processing, BP lookup, and testing patterns<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Async processing for form submissions - SAP integration now runs in a non-blocking background request<\/li>\n<li><strong>NEW<\/strong>: \"Check for Existing Business Partner\" now integrated into form submission flow<\/li>\n<li><strong>NEW<\/strong>: Test Integration button now supports existing BP lookup when enabled<\/li>\n<li><strong>IMPROVED<\/strong>: Form submissions no longer block on SAP API response time (1-2 seconds faster)<\/li>\n<li><strong>IMPROVED<\/strong>: Centralized Business Partner lookup logic for code reuse across WP-CLI, form processing, and test integration<\/li>\n<\/ul>\n\n<h4>1.3.9<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Added \"Check for Existing Business Partner\" toggle setting<\/li>\n<li><strong>NEW<\/strong>: Added WP-CLI command <code>wp shift8-gravitysap-bp-lookup search<\/code> to test duplicate detection<\/li>\n<li><strong>NEW<\/strong>: Added WP-CLI command <code>wp shift8-gravitysap-bp-lookup benchmark<\/code> to measure SAP query performance<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Duplicate detection matches on Business Partner Name (case-insensitive), Country, and Postal Code<\/li>\n<\/ul>\n\n<h4>1.3.8<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Test data values now properly save with \"Update Settings\" button<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Test data fields moved into main settings form for consistent save behavior<\/li>\n<\/ul>\n\n<h4>1.3.7<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Fixed validation error display - fields now properly highlighted when SAP validation fails<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Improved validation error messages with detailed information (submitted value, character count, max allowed, hints)<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added summary of all SAP validation errors at top of form<\/li>\n<li><strong>NEW<\/strong>: Added WP-CLI commands to query SAP master data (groups, currencies, pricelists)<\/li>\n<\/ul>\n\n<h4>1.3.6<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Removed required validation from CardName field (all fields now optional)<\/li>\n<\/ul>\n\n<h4>1.3.5<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Removed URL format validation from Website field (accepts any text now)<\/li>\n<\/ul>\n\n<h4>1.3.4<\/h4>\n\n<ul>\n<li><strong>NEW<\/strong>: Added Business Partner Group (GroupCode) field mapping<\/li>\n<li><strong>NEW<\/strong>: Added Currency field mapping<\/li>\n<li><strong>NEW<\/strong>: Added Price List (PriceListNum) field mapping from Payment Terms<\/li>\n<li><strong>STABILITY<\/strong>: All 99 tests passing with 231 assertions<\/li>\n<\/ul>\n\n<h4>1.3.3<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Fixed fatal error from undefined methods (removed orphaned debug handlers)<\/li>\n<li><strong>FIX<\/strong>: Removed orphaned debug\/test buttons from settings page<\/li>\n<li><strong>FIX<\/strong>: Test Integration now correctly uses Business Partner Type and Code Prefix settings<\/li>\n<li><strong>FIX<\/strong>: Improved entries list column display using field mapping for Name, Email, Country<\/li>\n<li><strong>STABILITY<\/strong>: All 99 tests passing with 231 assertions<\/li>\n<\/ul>\n\n<h4>1.3.2<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Fixed critical error when viewing Gravity Forms entries list (undefined method)<\/li>\n<li><strong>FIX<\/strong>: Updated display_sap_status_column to only handle SAP-specific columns<\/li>\n<li><strong>STABILITY<\/strong>: All 99 tests passing with 231 assertions<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li><strong>FIX<\/strong>: Removed temporary debug logging statements<\/li>\n<li><strong>CLEANUP<\/strong>: Removed scenario-specific business logic functions<\/li>\n<li><strong>STABILITY<\/strong>: Code cleanup and optimization for production deployment<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li><strong>NEW FEATURE<\/strong>: Sales Quotation creation with checkbox field mapping support<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Dynamic line item mapping for Sales Quotations<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Improved SAP B1 API integration and data handling<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Enhanced user interface and progress indicators<\/li>\n<li><strong>FIX<\/strong>: Fixed checkbox sub-field value detection for Sales Quotations<\/li>\n<li><strong>FIX<\/strong>: Fixed field mapping persistence for sub-field IDs (e.g., 15.1, 15.2)<\/li>\n<li><strong>FIX<\/strong>: Various bug fixes and performance improvements<\/li>\n<li><strong>TESTING<\/strong>: Added 6 new tests for checkbox field mapping functionality<\/li>\n<li><strong>TESTING<\/strong>: Expanded test coverage with additional unit tests<\/li>\n<li><strong>STABILITY<\/strong>: Code optimization and cleanup for production deployment<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li><strong>NEW FEATURE<\/strong>: Implemented full pagination support for SAP B1 Items API<\/li>\n<li><strong>FIX<\/strong>: Resolved issue where only 20 ItemCodes were loading (now loads all 1,995+ items)<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added pagination loop with $skip parameter to fetch all items across multiple pages<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added spinning wheel animation and progress indicators for long-running operations<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Extended AJAX timeout to 60 seconds and PHP execution time to 120 seconds<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added comprehensive debug logging for pagination progress<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Implemented caching to avoid repeated pagination on subsequent loads<\/li>\n<li><strong>FIX<\/strong>: Removed duplicate create_sales_quotation() method in SAP service class<\/li>\n<li><strong>TESTING<\/strong>: Added 8 new pagination tests - all 93 tests passing (213 assertions)<\/li>\n<li><strong>DOCUMENTATION<\/strong>: Updated .cursorrules with apiPagination section documenting SAP B1 pagination requirements<\/li>\n<li><strong>PERFORMANCE<\/strong>: Load time 30-60 seconds for first load, instant for cached loads<\/li>\n<li><strong>STABILITY<\/strong>: Safety limit of 3,000 items to prevent infinite loops<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li><strong>TESTING<\/strong>: All 85 unit tests pass successfully - comprehensive test coverage verified<\/li>\n<li><strong>CLEANUP<\/strong>: Removed all temporary debug files from plugin and project directories<\/li>\n<li><strong>MAINTENANCE<\/strong>: Code cleanup and optimization for production deployment<\/li>\n<li><strong>VERIFICATION<\/strong>: End-to-end functionality testing completed successfully<\/li>\n<li><strong>STABILITY<\/strong>: Plugin ready for production use with full feature set<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li><strong>NEW FEATURE<\/strong>: Added custom pricing for Sales Quotation line items<\/li>\n<li><strong>NEW<\/strong>: Price input fields for each ItemCode mapping with optional override functionality<\/li>\n<li><strong>NEW<\/strong>: Flexible pricing system - use SAP item master pricing or set custom prices per line item<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Enhanced WP-CLI test command to display price configuration (SAP Auto vs Custom)<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added detailed logging for line item creation with price source tracking<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Improved settings UI with clear price configuration options<\/li>\n<li><strong>FIX<\/strong>: Resolved line item visibility issues in SAP B1 UI (items were being created correctly, user was checking wrong quotation numbers)<\/li>\n<li><strong>CLEANUP<\/strong>: Removed temporary debug files and improved development workflow<\/li>\n<li><strong>TESTING<\/strong>: Verified end-to-end quotation creation with both auto-pricing and custom pricing scenarios<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li><strong>MAJOR FEATURE<\/strong>: Added Sales Quotation creation functionality<\/li>\n<li><strong>NEW<\/strong>: Create sales quotations in SAP B1 automatically after Business Partner creation<\/li>\n<li><strong>NEW<\/strong>: Dynamic line item mapping for quotation products with checkbox support<\/li>\n<li><strong>NEW<\/strong>: On-demand ItemCode loading system with master sync button<\/li>\n<li><strong>NEW<\/strong>: Dual mapping system - form fields trigger line items, SAP ItemCodes define products<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added active ItemCode filtering to prevent inactive item errors<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added proper UoM (Unit of Measure) handling for quotation line items<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Enhanced WP-CLI test command with full quotation testing and verification<\/li>\n<li><strong>ENHANCEMENT<\/strong>: Added ItemCode management tools and debugging commands<\/li>\n<li><strong>FIX<\/strong>: Resolved \"Item is inactive\" errors by filtering only active ItemCodes<\/li>\n<li><strong>FIX<\/strong>: Resolved \"Cannot add or update document; specify a UoM code\" by using numeric UoM entries<\/li>\n<li><strong>FIX<\/strong>: Improved error handling and user feedback for quotation creation<\/li>\n<li><strong>TESTING<\/strong>: Added comprehensive end-to-end testing for Business Partner + Sales Quotation workflow<\/li>\n<li><strong>TESTING<\/strong>: All 85 unit tests pass with enhanced coverage<\/li>\n<li><strong>PERFORMANCE<\/strong>: Optimized ItemCode loading with intelligent caching and refresh options<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li><strong>SECURITY: Fixed 7 critical security issues<\/strong> - Enhanced input sanitization, nonce verification, and capability checks<\/li>\n<li><strong>FIXED: SSL verification setting<\/strong> - Now properly saves and persists checkbox state<\/li>\n<li><strong>FIXED: Debug logging setting<\/strong> - Checkbox state now saves correctly<\/li>\n<li><strong>IMPROVED: Centralized logging<\/strong> - All logging now uses <code>shift8_gravitysap_debug_log()<\/code> with proper WP_DEBUG integration<\/li>\n<li><strong>IMPROVED: Password security<\/strong> - SAP password now stored encrypted in memory and decrypted only when needed<\/li>\n<li><strong>IMPROVED: Settings save mechanism<\/strong> - Removed conflicting WordPress Settings API callback<\/li>\n<li><strong>REMOVED: Custom log file management<\/strong> - Now uses WordPress standard <code>error_log()<\/code> for better security<\/li>\n<li>All tests passing: 85 tests with 205 assertions<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li><strong>NEW: Contact Person Support<\/strong> - Map form fields to Contact Persons tab in SAP B1<\/li>\n<li>Added 5 new Contact Person fields: FirstName, LastName, Phone, Email, Address<\/li>\n<li><strong>NEW: WP-CLI Testing Command<\/strong> - End-to-end testing with <code>wp shift8-gravitysap test_submission<\/code><\/li>\n<li>Enhanced field mapping with clear labels for BPAddresses vs ContactEmployees<\/li>\n<li>Improved SAP B1 data structure handling for addresses and contacts<\/li>\n<li>Comprehensive test suite: 90 unit tests + E2E integration testing<\/li>\n<li>Updated documentation with SAP B1 data structure best practices<\/li>\n<li>All tests passing with 214 assertions<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Enhanced field mapping system - validation is now completely dynamic based on user's field mapping configuration<\/li>\n<li>Improved validation efficiency - only validates fields that are actually mapped to SAP<\/li>\n<li>Verified WordPress.org plugin directory compliance - all automated checks now pass<\/li>\n<li>Code cleanup and optimization for better performance<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Expanded field mapping options - added Phone2, Mobile Phone, Fax, Website, and Country fields<\/li>\n<li>Better alignment with SAP Business One field structure (Telephone 1, Telephone 2, etc.)<\/li>\n<li>Enhanced test data with examples for all new fields<\/li>\n<li>Improved field mapping interface for comprehensive Business Partner data<\/li>\n<li>Fixed SAP field length compliance - test data now uses proper state codes (CA vs Test State)<\/li>\n<li>Added comprehensive field length documentation and troubleshooting guide<\/li>\n<li><strong>NEW: Automatic form validation<\/strong> - validates all mapped fields against SAP limits before submission<\/li>\n<li>Enhanced field mapping interface now shows SAP field limits and validation hints<\/li>\n<li>Prevents \"Value too long\" SAP errors by catching field length issues in the form<\/li>\n<\/ul>\n\n<h4>1.0.9<\/h4>\n\n<ul>\n<li>Fixed critical field mapping bug - all mapped fields now properly sent to SAP Business One<\/li>\n<li>Email, phone, and address fields will now be correctly populated in SAP<\/li>\n<li>Improved debug logging for Business Partner creation process<\/li>\n<li>All field mapping functionality now works as designed<\/li>\n<\/ul>\n\n<h4>1.0.8<\/h4>\n\n<ul>\n<li>Fixed all WordPress.org plugin checker compliance issues<\/li>\n<li>Updated text domain to 'shift8-gravity-forms-sap-b1-integration'<\/li>\n<li>Removed all development functions (error_log) for production compliance<\/li>\n<li>Comprehensive testing framework with 65 automated tests<\/li>\n<li>Removed WordPress.org directory assets from plugin code<\/li>\n<li>Ready for WordPress.org plugin directory submission<\/li>\n<\/ul>\n\n<h4>1.0.7<\/h4>\n\n<ul>\n<li>Updated plugin name to comply with WordPress.org trademark guidelines<\/li>\n<li>Changed display name to 'Shift8 Integration for Gravity Forms and SAP Business One'<\/li>\n<li>Removed discouraged load_plugin_textdomain() function call<\/li>\n<li>All functionality remains unchanged<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release<\/li>\n<li>SAP Business One Service Layer integration<\/li>\n<li>Gravity Forms field mapping<\/li>\n<li>Password encryption and security features<\/li>\n<li>Debug logging with sensitive data protection<\/li>\n<li>Connection and integration testing tools<\/li>\n<\/ul>","raw_excerpt":"Integrates Gravity Forms with SAP Business One to automatically create Business Partner records from form submissions.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/239149","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=239149"}],"author":[{"embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/shift8"}],"wp:attachment":[{"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=239149"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=239149"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=239149"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=239149"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=239149"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/sv.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=239149"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}