As @DocBrown said, plugins are mostly useful when you want to allow third parties to be able to extend your application. But that doesn't mean you can't use similar techniques in your design as what gets commonly used when interfacing with plugins.

For example, if a lot of the code you have is along the lines of "after creating the customer in the databse, components X, Y and Z need to be informed so they can take their appropriate actions", then you can use the Observer pattern there to decouple CustomerRegistration from X, Y and Z (and at a later time, A and B could get added to that list as well).

On the other hand, if your logic has a lot of ifs, buts and unless tests in it, then there is no real way to reduce the complexity of the code, because it is inherent in the business rules that the code represents.

How do I create a simple yet complex business layer?
We are trying to add a static route across all of our end user machines, we have setup a GPO object under Computer configuration > Policies > Windows Settings > Scripts (startup/shutdown) > Startup.

The command in the batch file is: 
route add 172.17.10.0 mask 255.255.0.0 172.16.12.100 -p

We have then rebooted/forced group policy to update and upon running a 'route print' in command line there is no route added, however adding a route through command line works perfectly.
