1. A method for managing software license compliance for an entity, comprising: defining at least one device group, the device group including a plurality of devices each capable of running an instance of at least one software package and further assigning a group owner responsible for those instances running on those devices by searching for an identifier for the group owner and dynamically selecting associated device to fully source the at least one device group, and wherein fully sourcing the at least one device group further includes using an asset repository management (ARM) database in which a grid is auto-populated with assets where the identifier for the group owner is an asset custodian of record in the ARM database, which is completed independent of whether an initial set of members is dynamically added; obtaining discovery information for each of the devices of the device group, the discovery information including information about each device and any software package active on the device; based on the discovery information, determining that at least one of the devices in the device group includes a plurality of virtual central processing units (CPUs); obtaining asset information indicating the number of licenses available to the device group for each software package and that at least one of the licenses requires an individual license for each of the plurality of CPUs; associating each license with a specific virtual CPU, wherein in the event that one or more of the virtual CPUs is removed the associated license will also be removed; comparing the discovery information and the asset information to determine any software packages where the number of instances of a software package or the number of CPUs running on the at least one device exceeds the number of licenses for that software package and generating an exception in response thereto; and notifying the group owner of any generated exception.