A computer implemented method for validating a device during installation to a software defined network, SDN,; the method comprising: receiving data associated with the device during installation; validating the device using the received data; providing a master SDN controller for controlling the SDN network; generating a co-controller by a master SDN controller containing device validation data; dispatching the co-controller to the device during installation; controlling installation of the device to the software defined network based on the device validation data; generating configuration data based on input received from users via one or more client portals which are configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each co-controller including configuration data and routing data for an associated networked device; dispatching the co-controllers by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices. receiving data associated with the device during installation; validating the device using the received data; providing a master SDN controller for controlling the SDN network; generating a co-controller by a master SDN controller containing device validation data; dispatching the co-controller to the device during installation; controlling installation of the device to the software defined network based on the device validation data; generating configuration data based on input received from users via one or more client portals which are configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each co-controller including configuration data and routing data for an associated networked device; dispatching the co-controllers by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices. generating configuration data based on input received from users via one or more client portals which are configured for facilitating users controlling networked devices; the master SDN controller being operable to generate routing data for the networked devices; generating by the master SDN controller a plurality of discrete co-controllers each associated with a particular end user; each co-controller including configuration data and routing data for an associated networked device; dispatching the co-controllers by the master SDN controller to the networked devices associated with the respective end users for controlling thereof; installing the co-controllers on the networked devices; and registering the installed SDN co-controllers with the master SDN controller for controlling the routing of data from the networked devices and for controlling the configuration of the networked devices.