Hi Ahmet Enes,
1) Issue
In Dynamics 365 Warehouse Management (WMA), it is challenging to replicate the standard Work List mobile screen when building a custom solution via X++.
Observed behavior:
- Standard Work List screen shows a grouped card-style UI (grouped lists, tiles, summaries)
- Custom mobile menu items only produce simple list/data entry screens
- Unclear which framework classes control UI rendering (grouping, cards, layout)
- No clear documentation on reproducing this UI pattern
- Difficulty adapting UI to display Sales Orders instead of warehouse work
2) Reason
The issue is caused by how the Warehouse Management mobile framework is designed.
A) Specialized framework
- Work List is not a generic WMA screen
- Built using dedicated classes, not the basic WHSWorkExecuteDisplay pattern
B) Process Guide framework
- Uses:
WHSProcessGuide
WHSProcessGuideStep
WHSProcessGuidePageBuilder
- UI is generated dynamically via metadata
C) Custom Page Builder logic
- Card/group layout is created via custom page builders
- These define groups, cards, and aggregations
D) Tight coupling to warehouse work
- Uses WHSWorkTable and WHSWorkLine
- Logic is specific to work execution
E) No reusable card UI engine
- No generic component for card layouts
- UI must be built manually
F) Limited extensibility
- Extensions allow field and logic changes
- Not full UI pattern replication
3) Resolution
Step 1: Review standard implementation
- WHSProcessGuide
- WHSWorkListProcessGuide
- WHSWorkListPageBuilder
- WHSWorkExecuteDisplay
Step 2: Create custom Process Guide (Example)
class SalesOrderProcessGuide extends WHSProcessGuide
{
}
...
Step 3: Create a Step class (Example)
class SalesOrderStep extends WHSProcessGuideStep
{
public WHSProcessGuidePageBuilder createPageBuilder()
{
return new SalesOrderPageBuilder();
}
}
...
Step 4: Build custom Page Builder -core logic- (Example)
class SalesOrderPageBuilder extends WHSProcessGuidePageBuilder
{
public void buildPage(WHSProcessGuidePage _page)
{
WHSProcessGuideGroup group;
group = _page.addGroup("SalesOrders");
group.addLabel("Open Orders");
group.addField(identifierStr(SalesId), "SO-001");
group.addField(identifierStr(CustAccount), "Cust001");
}
}
...
Step 5: Add data query and grouping (Example)
SalesTable salesTable;
while select SalesId, CustAccount
from salesTable
where salesTable.SalesStatus == SalesStatus::Backorder
{
// Build grouped data structure
}
...
Step 6: Simulate card layout (Example)
Customer A
SO-001 | Date | Status
SO-002 | Date | Status
Customer B
SO-003 | Date | Status
Step 7: Create mobile menu item (Example)
- Go to: Warehouse management > Setup > Mobile device menu items
- Mode: Indirect
- Link to your Process Guide class
---
Key Takeaways
- Work List UI is not reusable out-of-the-box
- Built with Process Guide and Page Builder pattern
- You must rebuild the layout manually
- Grouping and card behavior must be implemented in code
Relevant Classes
- WHSProcessGuide
- WHSProcessGuideStep
- WHSProcessGuidePageBuilder
- WHSWorkListPageBuilder
- WHSWorkListProcessGuide
- WHSWorkExecuteDisplay
Rg,
Alexander
*Due to the complex and different possibilities of deploying Dynamics 365 I highly recommend not to setup the application without some expert/partner or support. (For more information contact me under anassl@inno-solutions.info or visit www.inno-solutions.de)
*The Information comes directly from the manufacturer or provider and are validated (not guaranteed) up to date of creation of the posting.
References:
- Microsoft Licensing Guide
- Microsoft Doc`s/Learn