I just wanted to note down what I have done when integration Episerver CMS and Apptus eSales with DynamicPages.
ESales relies on building zones with panels to return all data in a single response.
As a close implementation Episerver CMS has blocks, blocks can contain custom logic and views depending on the locations the block is shown.
In my case i used Blocks as a substitute for eSales panel and then build a DynamicPage on the shown blocks in the page.
By intercepting when PageData passed into a controller method (solution), then get all ESalesPanelBlocks in currentPage (directly or in ContentArea) we can build a DynamicPage query.
ESalesPanelBlocks is an abstract block class with panelpath and attributes for the esales subpanel and a result property where data is returned.
When the DynamicPage content returns; look for the subpanels for the blocks and insert dem into ResultPanel property. The property should be marked with [Ignore], so the data is not stored.
I used AutoMapper to map dto-models to site-models as a last step before setting ResultPanel property.
I have not yet tested its efficiency against using predefined zones in eSales, this far the response time seems to be very quick (100ms-200ms local episerver, remote on-premise eSales, two different “recommended products for user blocks”).
By doing it this way we get a optimal solution, one eSales query for the entire page and Episerver blocks that is easy to place and use on your page. The best from both worlds.
Make “ESalesZonePanelBlock” that implements the zone capabilities.