We currently set up a custom object to log serial numbers for B2B purchases and their warranty start/end dates. Currently you have to associate it with a contact, this is "okay" for now, but if that contact ever chooses to leave their company, all associated purchased product serial numbers will have to be reassociated with another contact. Not only this, but when someone calls in for repair/RMA/support, it could be a totally different contact than who purchased the product.