{"id":348479,"date":"2026-07-07T12:40:11","date_gmt":"2026-07-07T12:40:11","guid":{"rendered":"https:\/\/experlogix.com\/?p=348479"},"modified":"2026-10-20T17:17:31","modified_gmt":"2026-10-20T17:17:31","slug":"salesforce-cpq-managed-package-limitations","status":"publish","type":"post","link":"https:\/\/experlogix.com\/nl\/salesforce-cpq-managed-package-limitations\/","title":{"rendered":"Beyond Managed-Package Limits: Getting More From Salesforce CRM With Experlogix CPQ"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_row _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_column type=&#8221;4_4&#8243; _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;][et_pb_code _builder_version=&#8221;4.27.9&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221; theme_builder_area=&#8221;post_content&#8221;]<\/p>\n<style><!-- [et_pb_line_break_holder] -->.xpl-article{container-type:inline-size;--xpl-navy:#0C214C;--xpl-rust:#D94923;--xpl-soft:#F8FBFF;--xpl-ice:#F3F8FD;--xpl-border:#DCE6F2;color:#0C214C;font-size:1rem;line-height:1.68;}<!-- [et_pb_line_break_holder] -->.xpl-article *,.xpl-article *::before,.xpl-article *::after{box-sizing:border-box;}<!-- [et_pb_line_break_holder] -->.xpl-article p{font-size:1rem;line-height:1.68;color:#0C214C;margin:0 0 1.05rem;}<!-- [et_pb_line_break_holder] -->.xpl-article a{color:#0C214C;font-weight:600;text-decoration:underline;text-decoration-color:#9EB9DD;text-decoration-thickness:1px;text-underline-offset:3px;}<!-- [et_pb_line_break_holder] -->.xpl-article a:hover{text-decoration-color:#0C214C;}<!-- [et_pb_line_break_holder] -->.xpl-article a:focus-visible{outline:3px solid #D94923;outline-offset:3px;border-radius:3px;}<!-- [et_pb_line_break_holder] -->.xpl-article h2{color:#0C214C;font-size:1.72rem;line-height:1.24;margin:0 0 1rem;padding:0;border:0!important;text-decoration:none!important;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article h3{color:#0C214C;font-size:1.2rem;line-height:1.34;margin:0 0 .55rem;padding:0;border:0;text-decoration:none;}<!-- [et_pb_line_break_holder] -->.xpl-article ul,.xpl-article ol{margin:.8rem 0 1.2rem;padding-left:1.25rem;}<!-- [et_pb_line_break_holder] -->.xpl-article li{color:#0C214C;margin:0 0 .5rem;}<!-- [et_pb_line_break_holder] -->.xpl-article li::marker{color:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-intro{margin:0 0 1.5rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-intro p:first-child{font-size:1.08rem;line-height:1.65;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section{margin:2.35rem 0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft{background:#F3F8FD;border-radius:14px;padding:1.45rem 1.55rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft h2{margin-top:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--bottom{background:#F7FAFE;border-radius:14px;padding:1.5rem 1.6rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--bottom h2{margin-top:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Compact TL;DR: soft background, no orange rail, one marker system. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1rem;margin:1.45rem 0 2rem;box-shadow:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary{cursor:pointer;list-style:none;font-size:1rem;line-height:1.25;font-weight:700;color:#0C214C;display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0;padding:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary::-webkit-details-marker{display:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr summary::after{content:\"+\";color:#0C214C;font-size:1.15rem;line-height:1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr[open] summary::after{content:\"\u2212\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr[open] summary{margin-bottom:.7rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr__body{padding:0;margin:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr ul{list-style:none!important;padding:0!important;margin:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li{list-style:none!important;position:relative;padding:0 0 0 1rem!important;margin:0 0 .48rem!important;font-size:.9rem!important;line-height:1.48!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li::marker{content:\"\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li::before{content:\"\";position:absolute;left:0;top:.66em;width:.38rem;height:.38rem;background:#7EA2D3;border-radius:50%;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li:last-child{margin-bottom:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-tldr li p,.xpl-article .xpl-tldr li a,.xpl-article .xpl-tldr li strong{font-size:.9rem!important;line-height:1.48!important;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Editorial grids: varied soft surfaces, no orange rails, no hard shadows. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid,.xpl-article .xpl-step-grid{list-style:none!important;padding:0!important;margin:1.15rem 0 1.35rem;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li,.xpl-article .xpl-step-grid>li{list-style:none!important;margin:0!important;background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1rem 1.08rem;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li:nth-child(even){background:#FAFCFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-card-grid>li,.xpl-article .xpl-section--soft .xpl-step-grid>li,.xpl-article .xpl-section--bottom .xpl-card-grid>li{background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-card-grid>li:nth-child(even),.xpl-article .xpl-section--bottom .xpl-card-grid>li:nth-child(even){background:#F9FBFE;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li::marker,.xpl-article .xpl-step-grid>li::marker{content:\"\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid--stack{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-card-grid>li:last-child:nth-child(odd):not(:first-child){grid-column:1\/-1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid{counter-reset:xplstep;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid>li{counter-increment:xplstep;position:relative;padding-left:3.2rem;min-height:4.1rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-step-grid>li::before{content:counter(xplstep);position:absolute;left:1rem;top:1rem;width:1.65rem;height:1.65rem;border-radius:7px;background:#0C214C;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.84rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box{list-style:none!important;padding:1rem 1.1rem!important;margin:1rem 0 1.3rem;background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li{list-style:none!important;position:relative;margin:0!important;padding:.58rem 0 .58rem 1rem;border-bottom:1px solid #DCE6F2;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li:last-child{border-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li::before{content:\"\";position:absolute;left:0;top:1.15rem;width:5px;height:5px;border-radius:50%;background:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-list-box>li::marker{content:\"\";}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin:1.15rem 0 1.25rem;align-items:stretch;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1.08rem 1.15rem;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard:nth-child(even){background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-subcard{background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-section--soft .xpl-subcard:nth-child(even){background:#F9FBFE;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard:last-child:nth-child(odd):not(:first-child){grid-column:1\/-1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard h3{margin:0 0 .55rem!important;padding:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subcard> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subsection{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:12px;padding:1.05rem 1.15rem;margin:1.15rem 0;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-subsection h3{margin-top:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-callout{background:#F8FBFF;border:1px solid #DCE6F2;border-radius:12px;padding:1rem 1.15rem;margin:1.15rem 0;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-callout> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Large-quote section: full-width patterns, followed by two readable explanation panels. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits{display:grid;grid-template-columns:minmax(0,1fr);gap:1rem;margin:1.1rem 0 0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__patterns{background:#F3F8FD;border:1px solid #DCE6F2;border-radius:13px;padding:1.15rem 1.25rem;min-width:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__patterns h3{margin:0 0 .8rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;list-style:none!important;padding:0!important;margin:0!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__list>li{list-style:none!important;min-width:0;margin:0!important;padding:.85rem 1rem;background:#fff;border:1px solid #DCE6F2;border-radius:10px;overflow-wrap:break-word;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__list>li::marker{content:\"\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__detail{min-width:0;padding:1.05rem 1.15rem;background:#FAFCFF;border:1px solid #DCE6F2;border-radius:12px;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__detail:nth-child(2){background:#fff;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__detail h3{margin:0 0 .65rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-quote-limits__detail> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] -->\/* Divi can render a narrow article column on a wide browser screen. *\/<!-- [et_pb_line_break_holder] -->@container (max-width:680px){<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-quote-limits__list,.xpl-article .xpl-quote-limits__detail-grid{grid-template-columns:minmax(0,1fr);}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* A02 approved decision-map motion scene. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-scene{max-width:760px;margin:0 auto;background:#fff;border:1px solid #DCE6F2;border-radius:16px;padding:1.1rem;overflow:hidden;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-kicker{display:block;font-size:.76rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;margin-bottom:.25rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-title{display:block;font-size:1.12rem;font-weight:700;line-height:1.3;margin-bottom:.75rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-start{display:flex;align-items:center;justify-content:center;min-height:46px;padding:.6rem 1rem;border-radius:10px;background:#0C214C;color:#fff!important;-webkit-text-fill-color:#fff!important;font-weight:700;margin-bottom:.8rem;animation:xplStartPulse 7s ease-in-out infinite;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-track{display:grid;gap:.65rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:.7rem;padding:.7rem .85rem;border:1px solid #DCE6F2;border-radius:10px;background:#F3F8FD;opacity:.38;transform:translateY(4px);animation:xplPathReveal 7s ease-in-out infinite;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path:nth-child(2){animation-delay:1.1s;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path:nth-child(3){animation-delay:2.2s;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path--accent{border-color:#C9DAEF;background:#F8FBFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-num{display:inline-flex;align-items:center;justify-content:center;width:1.85rem;height:1.85rem;border-radius:8px;background:#0C214C;color:#fff!important;-webkit-text-fill-color:#fff!important;font-weight:700;font-size:.86rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-path--accent .xpl-motion-num{background:#5879A7;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-motion-note{font-size:.9rem;line-height:1.45;margin:.65rem 0 0;}<!-- [et_pb_line_break_holder] -->@keyframes xplPathReveal{0%,12%,100%{opacity:.38;transform:translateY(4px)}22%,58%{opacity:1;transform:translateY(0)}72%{opacity:.55;transform:translateY(0)}}<!-- [et_pb_line_break_holder] -->@keyframes xplStartPulse{0%,100%{transform:scale(1)}12%{transform:scale(1.01)}24%{transform:scale(1)}}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Illustration and motion placements. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-illustration{width:100%;max-width:760px;margin:2rem auto;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-illustration img{display:block;width:100%;height:auto;border-radius:14px;border:1px solid #DCE6F2;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap{width:100%;max-width:800px;margin:2rem auto;overflow:hidden;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap>div{width:100%!important;max-width:760px!important;margin-left:auto!important;margin-right:auto!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-animation-wrap svg{max-width:100%;height:auto;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* FAQ: calm contained section, white questions, no orange rails. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-section{margin:2.45rem 0 1.8rem;background:#F3F8FD;border-radius:14px;padding:1.35rem 1.4rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-section h2{margin-bottom:.8rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-list{display:grid;grid-template-columns:1fr;gap:.65rem;margin-top:0;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item{border:1px solid #DCE6F2;border-radius:10px;background:#fff;padding:0;overflow:hidden;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item:nth-child(even){background:#FAFCFF;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary{cursor:pointer;list-style:none;display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:.92rem 1rem;font-weight:700;font-size:1rem;line-height:1.4;color:#0C214C;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary::-webkit-details-marker{display:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item summary::after{content:\"+\";flex:0 0 auto;color:#5879A7;font-size:1.15rem;line-height:1.2;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-item[open] summary::after{content:\"\u2212\";}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-answer{padding:0 1rem .95rem;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-faq-answer> :last-child{margin-bottom:0;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->\/* Bottom CTA: pale blue\/white, no orange underline, no shadows. *\/<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta{position:relative;overflow:hidden;isolation:isolate;background:linear-gradient(135deg,#FFFFFF 0%,#F3F8FD 100%);border:1px solid #DCE6F2;border-radius:16px;padding:1.65rem 1.75rem;margin:2.5rem 0 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1.2rem 1.8rem;align-items:center;text-align:left;box-shadow:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta::after{content:\"\";position:absolute;width:210px;height:210px;border-radius:50%;right:-110px;bottom:-135px;background:rgba(126,162,211,.10);z-index:0;pointer-events:none;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta>*{position:relative;z-index:1;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta-heading{display:block!important;color:#0C214C!important;-webkit-text-fill-color:#0C214C!important;font-size:1.48rem!important;line-height:1.25!important;font-weight:700!important;margin:0 0 .48rem!important;text-align:left!important;border:0!important;text-decoration:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta p{color:#0C214C!important;-webkit-text-fill-color:#0C214C!important;margin:0!important;max-width:720px!important;text-align:left!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn,.xpl-article .xpl-cta a.xpl-btn:link,.xpl-article .xpl-cta a.xpl-btn:visited{display:inline-flex;align-items:center;justify-content:center;background:#0C214C!important;color:#fff!important;-webkit-text-fill-color:#fff!important;text-decoration:none!important;font-weight:700;font-size:1rem;line-height:1.4;padding:.35rem 1.8rem!important;border-radius:50px!important;border:2px solid #0C214C!important;box-shadow:none!important;transform:none!important;white-space:nowrap;transition:background-color .2s ease,border-color .2s ease;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn:hover,.xpl-article .xpl-cta a.xpl-btn:focus,.xpl-article .xpl-cta a.xpl-btn:active{background:#18386F!important;border-color:#18386F!important;color:#fff!important;-webkit-text-fill-color:#fff!important;box-shadow:none!important;transform:none!important;}<!-- [et_pb_line_break_holder] -->.xpl-article .xpl-cta a.xpl-btn:focus-visible{outline:3px solid #7EA2D3;outline-offset:3px;}<!-- [et_pb_line_break_holder] --><!-- [et_pb_line_break_holder] -->@media(max-width:800px){<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-card-grid,.xpl-article .xpl-step-grid,.xpl-article .xpl-subgrid{grid-template-columns:1fr;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-card-grid>li:last-child:nth-child(odd):not(:first-child),.xpl-article .xpl-subcard:last-child:nth-child(odd):not(:first-child){grid-column:auto;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-cta{grid-template-columns:1fr;align-items:start;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media(max-width:600px){<!-- [et_pb_line_break_holder] --> .xpl-article h2{font-size:1.45rem;}<!-- [et_pb_line_break_holder] --> .xpl-article h3{font-size:1.12rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-section--soft,.xpl-article .xpl-section--bottom{padding:1.15rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-faq-section{padding:1.1rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-cta{padding:1.35rem 1.2rem;}<!-- [et_pb_line_break_holder] --> .xpl-article .xpl-illustration,.xpl-article .xpl-animation-wrap{max-width:100%;margin:1.55rem auto;}<!-- [et_pb_line_break_holder] -->}<!-- [et_pb_line_break_holder] -->@media(prefers-reduced-motion:reduce){.xpl-article *{transition:none!important;animation-duration:.01ms!important;animation-iteration-count:1!important;}}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<article class=\"xpl-article xpl-article--cpq xpl-redesign-v9\" data-article-id=\"A09\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-intro\"><pee>If your quoting process runs on the Salesforce CPQ managed package, you have probably hit its limits: calculations that slow down on long quotes, rules that only a specialist can safely change, and SBQQ objects that quietly shape how your data is modeled. These are not configuration mistakes. They follow from running configure-price-quote (CPQ) logic inside a packaged application on a multitenant platform with shared execution limits. This article explains where the Salesforce CPQ managed package limitations come from, which ones you can engineer around, which ones are structural, and what your options are now that Salesforce has stopped selling CPQ to new customers.<\/pee><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<details class=\"xpl-tldr\" open>\n<summary>TL;DR<\/summary>\n<div class=\"xpl-tldr__body\">\n<ul><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce CPQ managed package limitations come from the architecture, not from how it is administered. The package runs inside Salesforce&#8217;s shared execution environment, so governor limits, SBQQ object volume, and Quote Calculator Plugin (QCP) customizations all draw on the same runtime budget.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Large quotes show the symptoms first: slow price calculation, timeouts on deeply nested bundles, long-running batch jobs, and quote line counts that push reps into spreadsheets.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Salesforce CPQ is still supported. Salesforce stopped selling it to new customers in March 2025. That is end of sale, not end of life. Existing customers can keep using it, renew, add users, and get support, and Salesforce has not announced an end-of-life date.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>You have three realistic paths: optimize what you have, reimplement on Revenue Cloud Advanced (RCA), or keep Salesforce CRM as your system of record and replace only the quoting layer.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Experlogix CPQ takes the third path. It gives reps an embedded quoting experience inside Salesforce. Configuration and pricing logic run in Experlogix&#8217;s own rules engine, which reads from and writes back to standard or custom Salesforce objects.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<\/div>\n<\/details>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<figure class=\"xpl-illustration\"><img alt=\"\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/experlogix.com\/wp-content\/uploads\/salesforce-cpq-managed-package-limitations-illustration-1.webp\"\/><\/figure>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Where Salesforce CPQ Managed Package Limitations Actually Come From<\/h2>\n<pee>Most Salesforce CPQ managed package limitations come down to where the work happens. The package runs its configuration, pricing, and quote line calculation inside your Salesforce org. Every calculation shares platform resources with your flows, triggers, validation rules, and other packaged apps.<\/pee><pee>That design has real benefits. Everything sits in one security model, one permission structure, and one reporting layer. For moderate-complexity quoting, with modest bundles and clean pricing, Salesforce CPQ handles the job well and has done so for years.<\/pee><pee>The constraints appear as complexity rises. Three things interact:<\/pee>\n<ul><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Governor limits.<\/strong> Salesforce caps CPU time, SOQL queries, DML statements, heap size, and records processed in each transaction. Certified managed packages get their own allowance for some of these counts. CPU time and heap are still shared across the whole transaction, so your org&#8217;s custom automation and the package compete for the same budget.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>SBQQ objects.<\/strong> The CPQ data model adds its own object set, prefixed SBQQ, covering quotes, quote lines, quote line groups, product options, product rules, price rules, and more. Complex products multiply records. A single configured bundle can generate many quote lines, option records, and rule evaluations.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Quote Calculator Plugin (QCP).<\/strong> The QCP is the supported way to add custom pricing and field logic to the calculation sequence. It is powerful and widely used. It is also custom code that runs on every calculation, which makes it a common source of both performance problems and dependence on the people who maintain it.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>None of this means the package is poorly built. It means the more configuration logic you push into it, the more you are asking a packaged app to act like a dedicated product configurator inside a shared runtime.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>How These Limits Show Up on Large Quotes<\/h2>\n<pee>Performance on large quotes is almost always the first warning sign. A quote with hundreds of lines, nested bundles, and layered price rules recalculates on nearly every change, and each recalculation runs through the rule set again.<\/pee>\n<div class=\"xpl-quote-limits\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-quote-limits__patterns\"><!-- [et_pb_line_break_holder] --><\/p>\n<h3>Typical patterns teams report<\/h3>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<ul class=\"xpl-quote-limits__list\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Price calculation slows noticeably as line count grows, so reps batch their edits or avoid editing at all.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Timeouts or Apex CPU time limit errors occur when a deeply nested bundle triggers a long chain of product rules and price rules in one transaction.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Approval and document steps inherit the delay because they depend on a fully calculated quote.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Reps export the biggest deals to spreadsheets, and that is exactly when quote accuracy and quote-to-cash integrity start to slip.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-quote-limits__detail-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-quote-limits__detail\">\n<h3>Why nested bundles are the usual trigger<\/h3>\n<pee>Nested bundles increase quote lines and rule evaluations at the same time. When a configurable product contains options that have options of their own, the result is a wide tree of records. Each level may carry its own product rules, option constraints, and pricing behavior, so transaction cost grows faster than the catalog does.<\/pee><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-quote-limits__detail\">\n<h3>Why QCP makes tuning harder<\/h3>\n<pee>The QCP runs inside the calculation sequence, so its custom logic is subject to the same limits as the package. It also becomes part of what you have to regression-test. Every seasonal release, new pricing requirement, and migration evaluation has to account for what the plugin does. In many teams, only a few people understand the plugin, often external consultants, which slows down routine changes.<\/pee><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-animation-wrap\">\n<style><!-- [et_pb_line_break_holder] -->.xl-mm{--navy:#0C214C;--blue:#0350D8;--sky:#8BB9FC;--ice:#F3F8FD;--org:#F46134;--blush:rgba(244,183,166,0.17);--sun:#F7D119;<!-- [et_pb_line_break_holder] -->  position:relative;width:440px;max-width:100%;height:360px;margin:0 auto;background:var(--ice);border-radius:16px;overflow:hidden;<!-- [et_pb_line_break_holder] -->  color:var(--navy)}<!-- [et_pb_line_break_holder] -->.xl-mm *{box-sizing:border-box}<!-- [et_pb_line_break_holder] -->.xl-mm .vessel{position:absolute;left:40px;top:60px;width:150px;height:230px;border:3px solid var(--blue);border-top:none;border-radius:0 0 14px 14px;background:var(--ice);transition:border-color .4s,background .4s}<!-- [et_pb_line_break_holder] -->.xl-mm .vessel.hot{border-color:var(--org);background:var(--blush)}<!-- [et_pb_line_break_holder] -->.xl-mm .vessel.shake{animation:xlShake .38s linear 2}<!-- [et_pb_line_break_holder] -->.xl-mm .limit{position:absolute;left:30px;top:100px;width:170px;border-top:2px dashed var(--navy);opacity:.6}<!-- [et_pb_line_break_holder] -->.xl-mm .lbl{position:absolute;font-size:12px;font-weight:700;letter-spacing:.02em}<!-- [et_pb_line_break_holder] -->.xl-mm .tag{position:absolute;font-size:11px;font-weight:700;padding:4px 9px;border-radius:999px;opacity:0;transform:scale(.6);transition:opacity .3s,transform .3s;z-index:9}<!-- [et_pb_line_break_holder] -->.xl-mm .tag.on{opacity:1;transform:scale(1)}<!-- [et_pb_line_break_holder] -->.xl-mm .tag.hot{background:var(--org);color:var(--navy)}<!-- [et_pb_line_break_holder] -->.xl-mm .tag.ok{background:var(--sun);color:var(--navy)}<!-- [et_pb_line_break_holder] -->.xl-mm .blk{position:absolute;left:0;top:0;width:130px;height:32px;border-radius:7px;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;<!-- [et_pb_line_break_holder] -->  opacity:0;transition:transform .55s cubic-bezier(.3,1.35,.5,1),opacity .35s;will-change:transform}<!-- [et_pb_line_break_holder] -->.xl-mm .b-lines{background:var(--sky);color:var(--navy)}<!-- [et_pb_line_break_holder] -->.xl-mm .b-rules{background:var(--blue);color:var(--ice)}<!-- [et_pb_line_break_holder] -->.xl-mm .b-flows{background:var(--navy);color:var(--ice)}<!-- [et_pb_line_break_holder] -->.xl-mm .b-qcp{background:var(--org);color:var(--navy)}<!-- [et_pb_line_break_holder] -->.xl-mm .engine{position:absolute;left:265px;top:110px;width:150px;height:150px;border-radius:16px;border:3px solid var(--blue);background:var(--ice);<!-- [et_pb_line_break_holder] -->  opacity:0;transform:translateX(30px);transition:opacity .5s,transform .5s}<!-- [et_pb_line_break_holder] -->.xl-mm .engine.on{opacity:1;transform:none}<!-- [et_pb_line_break_holder] -->.xl-mm .gear{position:absolute;left:50%;top:22px;width:44px;height:44px;margin-left:-22px;border-radius:50%;border:6px dotted var(--blue);opacity:0;transition:opacity .4s}<!-- [et_pb_line_break_holder] -->.xl-mm .engine.spin .gear{opacity:1;animation:xlSpin 2.4s linear infinite}<!-- [et_pb_line_break_holder] -->.xl-mm svg{position:absolute;left:0;top:0;pointer-events:none;z-index:8}<!-- [et_pb_line_break_holder] -->.xl-mm .wire{fill:none;stroke:var(--blue);stroke-width:2;stroke-dasharray:4 5;opacity:0;transition:opacity .4s}<!-- [et_pb_line_break_holder] -->.xl-mm .wire.on{opacity:.7}<!-- [et_pb_line_break_holder] -->.xl-mm .cap{position:absolute;left:0;right:0;bottom:18px;text-align:center;font-size:13px;font-weight:700;transition:opacity .25s}<!-- [et_pb_line_break_holder] -->@keyframes xlShake{0%,100%{transform:translateX(0)}25%{transform:translateX(-3px)}75%{transform:translateX(3px)}}<!-- [et_pb_line_break_holder] -->@keyframes xlSpin{to{transform:rotate(360deg)}}<!-- [et_pb_line_break_holder] -->@media (prefers-reduced-motion:reduce){.xl-mm *{transition:none!important;animation:none!important}}<!-- [et_pb_line_break_holder] --><\/style>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div aria-label=\"Quote lines, rules, flows and QCP code stack inside one shared Salesforce runtime until a large quote hits the CPU limit. Moving rules and pricing into the Experlogix CPQ engine restores headroom while results write back to Salesforce.\" class=\"xl-mm\" id=\"xlmm\" role=\"img\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"lbl\" style=\"left:40px;top:34px\">Salesforce org<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"vessel\" id=\"xlVessel\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"limit\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"lbl\" style=\"left:160px;top:82px;font-size:11px\">limit<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"tag hot\" id=\"xlHotTag\" style=\"left:215px;top:90px\">CPU limit hit<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"tag ok\" id=\"xlOkTag\" style=\"left:80px;top:140px\">Headroom<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"engine\" id=\"xlEngine\"><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"lbl\" style=\"left:0;right:0;top:-26px;text-align:center\">Experlogix CPQ<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"gear\"><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><svg aria-hidden=\"true\" height=\"360\" width=\"440\"><!-- [et_pb_line_break_holder] --><path class=\"wire\" d=\"M265 216 C 235 216, 230 240, 192 240\" id=\"xlWire\"><\/path><!-- [et_pb_line_break_holder] --><circle fill=\"#F46134\" id=\"xlDot1\" opacity=\"0\" r=\"5\"><\/circle><!-- [et_pb_line_break_holder] --><circle fill=\"#0350D8\" id=\"xlDot2\" opacity=\"0\" r=\"5\"><\/circle><!-- [et_pb_line_break_holder] --><\/svg><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"cap\" id=\"xlCap\">One shared runtime budget<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><script><!-- [et_pb_line_break_holder] -->(function(){<!-- [et_pb_line_break_holder] -->  var root=document.getElementById('xlmm'); if(!root) return;<!-- [et_pb_line_break_holder] -->  var V=document.getElementById('xlVessel'),E=document.getElementById('xlEngine'),<!-- [et_pb_line_break_holder] -->      HT=document.getElementById('xlHotTag'),OK=document.getElementById('xlOkTag'),<!-- [et_pb_line_break_holder] -->      cap=document.getElementById('xlCap'),wire=document.getElementById('xlWire'),<!-- [et_pb_line_break_holder] -->      d1=document.getElementById('xlDot1'),d2=document.getElementById('xlDot2');<!-- [et_pb_line_break_holder] -->  var spec=[['lines','Quote lines'],['lines','Quote lines'],['rules','Price rules'],['flows','Flows'],['qcp','QCP code'],['rules','Product rules']];<!-- [et_pb_line_break_holder] -->  var reduce=window.matchMedia&&matchMedia('(prefers-reduced-motion: reduce)').matches;<!-- [et_pb_line_break_holder] -->  var blocks=spec.map(function(s){var b=document.createElement('div');b.className='blk b-'+s[0];b.textContent=s[1];b.setAttribute('data-t',s[1]);root.appendChild(b);return b;});<!-- [et_pb_line_break_holder] -->  function at(b,x,y){b.style.transform='translate('+x+'px,'+y+'px)';}<!-- [et_pb_line_break_holder] -->  function slot(k){return 282-(k+1)*36;}<!-- [et_pb_line_break_holder] -->  function wait(ms){return new Promise(function(r){setTimeout(r,ms);});}<!-- [et_pb_line_break_holder] -->  function say(t){cap.style.opacity=0;setTimeout(function(){cap.textContent=t;cap.style.opacity=1;},reduce?0:250);}<!-- [et_pb_line_break_holder] -->  var flowing=false,L=0;<!-- [et_pb_line_break_holder] -->  function pulse(ts){<!-- [et_pb_line_break_holder] -->    if(!flowing){d1.setAttribute('opacity',0);d2.setAttribute('opacity',0);return;}<!-- [et_pb_line_break_holder] -->    [d1,d2].forEach(function(d,i){var p=((ts\/1400)+i*.5)%1,pt=wire.getPointAtLength(p*L);d.setAttribute('cx',pt.x);d.setAttribute('cy',pt.y);d.setAttribute('opacity',1);});<!-- [et_pb_line_break_holder] -->    requestAnimationFrame(pulse);<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function reset(){<!-- [et_pb_line_break_holder] -->    blocks.forEach(function(b){b.style.transition='none';b.style.opacity=0;b.style.zIndex='';b.textContent=b.getAttribute('data-t');at(b,50,-40);});<!-- [et_pb_line_break_holder] -->    void root.offsetWidth; blocks.forEach(function(b){b.style.transition='';});<!-- [et_pb_line_break_holder] -->    V.classList.remove('hot','shake');E.classList.remove('on','spin');HT.classList.remove('on');OK.classList.remove('on');wire.classList.remove('on');flowing=false;<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  function finalState(){<!-- [et_pb_line_break_holder] -->    reset();<!-- [et_pb_line_break_holder] -->    [0,1,3].forEach(function(i,k){blocks[i].style.opacity=1;at(blocks[i],50,slot(k));});<!-- [et_pb_line_break_holder] -->    var m=blocks[5];m.style.opacity=1;m.textContent='Rules engine';at(m,275,190);<!-- [et_pb_line_break_holder] -->    E.classList.add('on','spin');OK.classList.add('on');wire.classList.add('on');<!-- [et_pb_line_break_holder] -->    cap.textContent='CRM stays the system of record';<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  async function run(){<!-- [et_pb_line_break_holder] -->    L=wire.getTotalLength();<!-- [et_pb_line_break_holder] -->    while(true){<!-- [et_pb_line_break_holder] -->      reset(); say('One shared runtime budget'); await wait(600);<!-- [et_pb_line_break_holder] -->      for(var k=0;k<blocks.length;k++){blocks[k].style.opacity=1;at(blocks[k],50,slot(k));await wait(560);}<!-- [et_pb_line_break_holder] -->      V.classList.add('hot','shake');HT.classList.add('on');say('Big quote, limit errors');<!-- [et_pb_line_break_holder] -->      await wait(2200);<!-- [et_pb_line_break_holder] -->      E.classList.add('on');say('Move the logic out');await wait(650);<!-- [et_pb_line_break_holder] -->      [2,4,5].forEach(function(i,j){blocks[i].style.zIndex=5+j;at(blocks[i],275,178+j*6);});<!-- [et_pb_line_break_holder] -->      [0,1,3].forEach(function(i,k){at(blocks[i],50,slot(k));});<!-- [et_pb_line_break_holder] -->      HT.classList.remove('on');V.classList.remove('hot','shake');<!-- [et_pb_line_break_holder] -->      await wait(850);<!-- [et_pb_line_break_holder] -->      blocks[2].style.opacity=0;blocks[4].style.opacity=0;<!-- [et_pb_line_break_holder] -->      var m=blocks[5];m.textContent='Rules engine';at(m,275,190);<!-- [et_pb_line_break_holder] -->      E.classList.add('spin');OK.classList.add('on');await wait(550);<!-- [et_pb_line_break_holder] -->      wire.classList.add('on');flowing=true;requestAnimationFrame(pulse);<!-- [et_pb_line_break_holder] -->      say('CRM stays the system of record');<!-- [et_pb_line_break_holder] -->      await wait(3800);<!-- [et_pb_line_break_holder] -->      flowing=false;blocks.forEach(function(b){b.style.opacity=0;});<!-- [et_pb_line_break_holder] -->      E.classList.remove('on','spin');OK.classList.remove('on');wire.classList.remove('on');<!-- [et_pb_line_break_holder] -->      await wait(900);<!-- [et_pb_line_break_holder] -->    }<!-- [et_pb_line_break_holder] -->  }<!-- [et_pb_line_break_holder] -->  if(reduce){finalState();}else{run();}<!-- [et_pb_line_break_holder] -->})();<!-- [et_pb_line_break_holder] --><\/script><!-- [et_pb_line_break_holder] --><\/div>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section xpl-section--soft\">\n<h2>What You Can Fix, and What You Cannot<\/h2>\n<pee>Engineering effort fixes some Salesforce CPQ managed package limitations. Others are built into the design.<\/pee><pee>These are worth doing and often work:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>Audit and consolidate product rules and price rules. Overlapping or redundant rules are a common source of avoidable calculation cost.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Review QCP code for queries inside loops, unnecessary recalculations, and logic that could move into configuration.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Reduce bundle depth where the business doesn&#8217;t actually need it. Modeling habits often outlive the requirement that created them.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Keep org automation out of CPQ transactions where you can, so your own triggers and flows don&#8217;t inflate package transactions.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Set realistic expectations for quote size, and test against your largest real quote rather than a demo catalog.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>These are harder to solve from inside the package:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>A genuine need for hundreds of configuration options with deep interdependencies evaluated in real time. These <a href=\"https:\/\/experlogix.com\/salesforce-cpq-limitations-complex-products\/\">limitations for complex, configurable products<\/a> come from the configuration model itself, not only the runtime.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><a href=\"https:\/\/experlogix.com\/engineer-to-order-vs-configure-to-order-salesforce-cpq\/\">Engineer-to-order and configure-to-order<\/a> (ETO and CTO) products, where the configuration drives manufacturing output rather than a list of line items.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Bill of materials (BOM) and routing generation that has to reach an enterprise resource planning (ERP) system ready for production.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>Sustained quote volume, where every rep&#8217;s recalculation competes for the same org resources.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>If your problems fall mostly in the first list, optimization is usually the cheaper answer. If they fall in the second, you are working against the design, and tuning won&#8217;t fix it.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>Your Three Paths, Honestly Compared<\/h2>\n<pee>The end-of-sale news matters here, but it is no reason to panic. Salesforce stopped selling <a href=\"https:\/\/experlogix.com\/salesforce-cpq\/\">Salesforce CPQ<\/a> to new customers in March 2025. Existing customers can keep using it, renew, add users, and receive support, and Salesforce has not announced an end-of-life date. What has changed is investment. Salesforce&#8217;s strategic focus has moved to Revenue Cloud Advanced, now part of Agentforce Revenue Management, and Salesforce CPQ is not getting meaningful new feature development.<\/pee>\n<div class=\"xpl-subgrid\">\n<div class=\"xpl-subcard\">\n<h3>Path one: stay and optimize<\/h3>\n<pee>This path makes sense when your quoting is moderately complex, your performance problems can be fixed by tuning, and no upcoming product or pricing initiative will break your current model. You keep a supported system and buy time. The trade-off is that you are investing in a platform that is no longer advancing.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Path two: reimplement on Revenue Cloud Advanced<\/h3>\n<pee>Revenue Cloud Advanced uses a different data model and configuration approach, so moving from Salesforce CPQ to RCA is a reimplementation, not an upgrade. You have to redesign and retest your product catalog, pricing logic, rules, approval workflows, templates, and any QCP customization. None of it carries over as is. Scope drives <a href=\"https:\/\/experlogix.com\/salesforce-cpq-migration-timeline\/\">how long a migration takes<\/a>, so plan for a full redesign project. This path makes sense when you want a broader revenue platform inside Salesforce and have the appetite and budget for that project.<\/pee><\/div>\n<div class=\"xpl-subcard\">\n<h3>Path three: keep Salesforce CRM, replace the quoting layer<\/h3>\n<pee>On this path, Salesforce CRM stays your system of record and only the configure-price-quote engine changes. The project is limited to quoting, and you keep your CRM investment, reporting, and security model. Consider this path when the problem is configuration depth, not Salesforce itself.<\/pee><\/div>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<figure class=\"xpl-illustration\"><img alt=\"\" decoding=\"async\" loading=\"lazy\" src=\"https:\/\/experlogix.com\/wp-content\/uploads\/salesforce-cpq-managed-package-limitations-illustration-2.webp\"\/><\/figure>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section\">\n<h2>How Experlogix CPQ Approaches the Same Problem<\/h2>\n<pee>Experlogix CPQ brings industrial-grade configuration to Salesforce while Salesforce CRM stays the authoritative system of record. The practical difference is where you define configuration and pricing logic. You don&#8217;t build it from SBQQ product rules, price rules, and QCP code layered inside a managed package. You model it in the Experlogix CPQ rules engine, which is designed to evaluate thousands of options and dependencies in real time.<\/pee><pee>What that looks like in use:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>An embedded CPQ experience.<\/strong> Reps configure, price, and quote without leaving Salesforce. They work inside the CRM interface they already know, with no separate logins and no context switching.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Read from and write to Salesforce.<\/strong> Experlogix doesn&#8217;t just pull data from Salesforce. It writes back enriched configuration details, pricing calculations, and approval status in real time, to standard or custom Salesforce objects, without developers.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Cloud Connect integration.<\/strong> Quotes, orders, and approvals stay in sync across CRM and ERP without custom code. That reduces the middleware and point-to-point integrations that tend to break with platform updates.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Configuration depth.<\/strong> Experlogix CPQ handles hundreds of configuration options, multi-tier pricing, and BOM and routing automation, with bi-directional data flow between CPQ and CRM. Guided selling steers reps toward valid configurations.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li><strong>Business-user control.<\/strong> Low-code tools let administrators maintain product logic and pricing rules themselves rather than waiting on developers or consultants. That directly addresses the dependence on QCP maintainers.<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>Keeping the CRM as the single source of truth also matters for <a href=\"https:\/\/experlogix.com\/native-vs-synced-cpq-salesforce\/\">where your quote data lives<\/a>. It avoids the downstream costs of copying quote data into a separate platform and syncing it back:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>stale or mismatched records<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>sync failures and conflict resolution<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>duplicate records<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>reporting that reflects a copy instead of the source<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>extra data governance exposure from storing the same data in more places<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>To be fair about fit: if your catalog is simple, your bundles are shallow, and your pricing is list-based, Salesforce CPQ is probably adequate and a replacement is hard to justify. If you are committed to a Revenue Cloud Advanced reimplementation for reasons beyond quoting, such as consolidating billing and the revenue lifecycle, that is a legitimate choice. Experlogix is worth evaluating when the binding constraint is configuration complexity, mixed revenue on a single quote, manufacturing output, or large-quote performance. Validate any alternative against your own largest quotes before you commit.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-section xpl-section--bottom\">\n<h2>The Bottom Line on Managed-Package Limits and Your Next Move<\/h2>\n<pee>Salesforce CPQ managed package limitations are architectural. Governor limits, SBQQ object volume, and QCP customizations all draw on the same shared execution budget. That is why performance problems show up first on large quotes and deeply nested bundles. Tuning helps, and you should do it, but tuning can&#8217;t change where the work happens.<\/pee><pee>The decision in front of you is about fit, not urgency. Salesforce CPQ is still supported and renewable, with no announced end of life, so you have time to decide deliberately. Weigh three things:<\/pee>\n<ul class=\"xpl-card-grid\"><!-- [et_pb_line_break_holder] --><\/p>\n<li>how much of your revenue depends on complex configuration<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>how much developer or consultant time your current rules and plugin logic consume<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<li>whether a Revenue Cloud Advanced redesign gives you capabilities you actually need<\/li>\n<p><!-- [et_pb_line_break_holder] --><\/ul>\n<pee>If the quoting engine is the constraint and Salesforce CRM is not, replacing only the quoting layer keeps your CRM as the system of record and limits the scope of change. The payoff is quieter: calculations that behave predictably as quotes grow, rules your own administrators can change, and quote data that lives where your reporting already looks.<\/pee><pee>Start with evidence. Take your three largest and most complex real quotes, measure their calculation time and line counts, and list every product rule, price rule, and QCP function they touch. That list tells you whether you have a tuning problem or a design problem, and it becomes the test case for any alternative you evaluate.<\/pee><\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<section class=\"xpl-faq-section\">\n<h2>FAQ<\/h2>\n<div class=\"xpl-faq-list\">\n<details class=\"xpl-faq-item\" open=\"\">\n<summary>What causes Salesforce CPQ governor-limit errors?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Salesforce CPQ calculates quotes inside your Salesforce org, so every calculation runs under the platform&#8217;s per-transaction limits on CPU time, SOQL queries, DML statements, heap size, and records processed. Errors usually appear when a large quote or deeply nested bundle triggers a long chain of product rules, price rules, and QCP logic in one transaction. Your org&#8217;s own triggers and flows compete for the same budget.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>How should Salesforce CPQ alternatives be tested for large quotes and nested bundles?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Test with your own data, not a demo catalog. Use your three largest and most complex real quotes, including their deepest nested bundles, and measure calculation time, line counts, and behavior as reps edit. Confirm that every product rule, price rule, and QCP function those quotes rely on can be modeled. Check how results write back to your Salesforce objects.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>What is the Quote Calculator Plugin (QCP)?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>The QCP is the supported hook for adding custom JavaScript pricing and field logic to Salesforce CPQ&#8217;s calculation sequence. It is powerful and widely used. It runs on every calculation and is subject to the same platform limits as the package, so it often contributes to performance issues. Teams also come to depend on the small group of people who maintain it.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Which Salesforce CPQ performance problems can be fixed by tuning?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Tuning often helps with problems caused by overlapping or redundant product and price rules, inefficient QCP code such as queries inside loops, bundle depth the business no longer needs, and org automation that inflates CPQ transactions. Tuning is less effective when the need itself is structural. Examples include hundreds of interdependent options evaluated in real time, ETO and CTO products, BOM and routing generation for ERP, and sustained high quote volume.<\/pee><\/div>\n<\/details>\n<details class=\"xpl-faq-item\">\n<summary>Does Salesforce CPQ QCP code migrate to Revenue Cloud?<\/summary>\n<div class=\"xpl-faq-answer\"><pee>Not directly. Revenue Cloud Advanced uses a different data model and configuration approach, so moving from Salesforce CPQ is a reimplementation, not an upgrade. You have to redesign and retest QCP logic along with your product catalog, pricing logic, rules, approval workflows, and templates.<\/pee><\/div>\n<\/details>\n<\/div>\n<\/section>\n<p><!-- [et_pb_line_break_holder] --><\/p>\n<div class=\"xpl-cta\">\n<div class=\"xpl-cta-copy\"><span class=\"xpl-cta-heading\">Put Your Largest Quotes to the Test<\/span><pee>Put Your Largest Quotes to the Test<\/pee><\/div>\n<div class=\"xpl-cta-action\"><a class=\"xpl-btn\" href=\"https:\/\/experlogix.com\/demo\/\">Get a Demo<\/a><\/div>\n<\/div>\n<p><!-- [et_pb_line_break_holder] --><\/article>\n<p>[\/et_pb_code][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>If your quoting process runs on the Salesforce CPQ managed package, you have probably hit its limits: calculations that slow down on long quotes, rules that only a specialist can safely change, and SBQQ objects that quietly shape how your data is modeled. These are not configuration mistakes. They follow from running configure-price-quote (CPQ) logic inside a packaged application on a multitenant platform with shared execution limits. This article explains where the Salesforce CPQ managed package limitations come from, which ones you can engineer around, which ones are structural, and what your options are now that Salesforce has stopped selling CPQ to new customers.<\/p>","protected":false},"author":1,"featured_media":348424,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[235],"tags":[],"xpl_cpq_related_topic":[188,184,183,200],"xpl_da_related_topic":[],"class_list":["post-348479","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-quoting-tools","xpl_cpq_related_topic-admin","xpl_cpq_related_topic-pricing","xpl_cpq_related_topic-rules-engine","xpl_cpq_related_topic-salesforce"],"acf":[],"_links":{"self":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348479","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/comments?post=348479"}],"version-history":[{"count":4,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348479\/revisions"}],"predecessor-version":[{"id":348568,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/posts\/348479\/revisions\/348568"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/media\/348424"}],"wp:attachment":[{"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/media?parent=348479"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/categories?post=348479"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/tags?post=348479"},{"taxonomy":"xpl_cpq_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/xpl_cpq_related_topic?post=348479"},{"taxonomy":"xpl_da_related_topic","embeddable":true,"href":"https:\/\/experlogix.com\/nl\/wp-json\/wp\/v2\/xpl_da_related_topic?post=348479"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}