Self-storage warehousing is a rapidly growing industry where consumers or companies can rent storage space for personal or company use, over a certain horizon. This paper addresses the question of how to design the facilities so that revenue can be maximised over a finite horizon, considering multiple demand requirements with respect to size, pricing, location within the facility, climate control, security or outside access, among others. Using a customer choice model to specify the probability of purchase for each fare product as a function of the set of fare products offered, we propose methods to design self-storage warehouses while allowing different customer choice behaviours. We model the problem as a mixed-integer program and solve it using column generation and branch-and-price algorithms. In addition, we study the impact of re-layout and methods to modify facility layout, since self-storage facilities are relatively flexible in layout and individual storage compartments can be adapted to changes in demand. We validate our model using the data of four self-storage warehouses, and show our method can improve the expected revenue by nearly 11% on average for these cases.