We use EPiServer Commerce v 18.104.22.168.
I am working on migration to new marketing system (discounts).
As I know there are several default discount types (item, order, shipping) and custom promotion can be implemented based on these default types if it is needed.
But in current solution (with legacy discount system) we widely use "build your own discount" type.
Is there any good approach to create custom promotion with same or very similar functionality as "build your own discount" type ?
We don't have any official guide line for that, but "build your own discount" is just a more flexible type of discount. As long as you understand what kind of conditions and rewards you have, it should be fairly easy to deduce it to one of the three types in new promotion system.
No, you can do it but it isn't a very good approach to build one promotion type to solve all promotions.
Identify which case you have in the old solution and build a new custom promotion for each case that won't match a built-in promotion, if any.