A computer-implemented method (300, 400) for creating a controller based remote solution, comprising: receiving, at a code virtualization server, CVS,, via a graphical user interface, GUI, of a user device remote to the CVS, at least one of a selection of a blank template in which a controller device (102, 103, 108) is selected, and a solution corresponding to a conventional system is built via the GUI, or a selection of a pre-defined solution comprising a controller device installed in a conventional system, the controller device monitors the conventional system using the sensor coupled thereto, and controls the conventional system using the actuator coupled thereto, wherein the controller device and the conventional system are remote to the user device and the CVS; receiving, via the GUI, at the CVS, at least one parameter of the selected solution, the at least one parameter comprising at least one of a monitored parameter of the conventional system, a condition for the monitored parameter, or a remote program parameter for executing a remote program, wherein the remote program is executed remote to the user device and the controller device; generating, on the CVS, an automatically generated controller program, AGCP, for execution by the controller device, the AGCP comprising a call for executing the remote program based on the condition being met; sending the AGCP for installation on the controller device; generating a modification GUI for display on the user device, the modification GUI comprising a first option for displaying at least one of parameter data from a sensor or an actuator, the condition, the remote program parameter, or the remote program; receiving input for changing any one or more of the condition, and a second option for receiving input for changing at least one of the parameter, the condition, the remote program parameter, the remote program; sending the modification GUI to the user device for display on the user device; generating, on a GUI generation module, a modified AGCP for execution by the controller device, the modified AGCP comprising a call for executing the remote program based on the condition being met; and sending the modified AGCP for installation on the controller device, wherein the GUI generation module is implemented on a GUI generation device remote to the CVS, the user device, and the controller device, wherein the GUI generation device is communicably coupled to at least one of the CVS, the user device, or the controller device. receiving, at a code virtualization server, CVS,, via a graphical user interface, GUI, of a user device remote to the CVS, at least one of a selection of a blank template in which a controller device (102, 103, 108) is selected, and a solution corresponding to a conventional system is built via the GUI, or a selection of a pre-defined solution comprising a controller device installed in a conventional system, the controller device monitors the conventional system using the sensor coupled thereto, and controls the conventional system using the actuator coupled thereto, wherein the controller device and the conventional system are remote to the user device and the CVS; receiving, via the GUI, at the CVS, at least one parameter of the selected solution, the at least one parameter comprising at least one of a monitored parameter of the conventional system, a condition for the monitored parameter, or a remote program parameter for executing a remote program, wherein the remote program is executed remote to the user device and the controller device; generating, on the CVS, an automatically generated controller program, AGCP, for execution by the controller device, the AGCP comprising a call for executing the remote program based on the condition being met; sending the AGCP for installation on the controller device; generating a modification GUI for display on the user device, the modification GUI comprising a first option for displaying at least one of parameter data from a sensor or an actuator, the condition, the remote program parameter, or the remote program; receiving input for changing any one or more of the condition, and a second option for receiving input for changing at least one of the parameter, the condition, the remote program parameter, the remote program; sending the modification GUI to the user device for display on the user device; generating, on a GUI generation module, a modified AGCP for execution by the controller device, the modified AGCP comprising a call for executing the remote program based on the condition being met; and sending the modified AGCP for installation on the controller device, wherein the GUI generation module is implemented on a GUI generation device remote to the CVS, the user device, and the controller device, wherein the GUI generation device is communicably coupled to at least one of the CVS, the user device, or the controller device.