In some cases, your customer or partner will need to customize your application using extensions, but may find themselves having to extend an element that is already an extension. In other words, if you extend Microsoft metadata and your customer wants to extend your extension, will they be able to do so?

Developers can follow the procedure described in the example below to extend an extension, it works in many scenarios.

Let us assume you are working on the “Fleet Management Extension” package and want to first add a new field group to the FMRental table. The FMRental table is in the fleet management model. Here’s what you would do:

  1. Create a new project that belongs to the “Fleet Management Extension” project.
  2. The “Fleet Management Extension” already contains an extension to the FMRental table. Find it (FMRental.Extension) in the Application Explorer (FMRental.Extension) and add it to your project.
  3. Open the FMRental.Extension designer and create a new field group (Let’s call it: MyNewFieldGroup and add a field to it)

  


You have distributed your solution (the "Fleet Management Extension" package) to a third party that would like to extend MyNewFieldGroup, here’s what they would do.

  1. Create a new package, let’s call it “FleetExtension2”, that references both packages “Fleet Management” and “Fleet Management Extension”.
  2. Create a new project in the “FleetExtension2” model
  3. Find the table FMRental in Application Explorer, right-click and select “Create Extension”. The will create FMRental.Extension1.
  4. Open the designer of FMRental.Extension1, you will notice it will contain the elements of both FMRental and FMRental.Extension.
  5. Find the MyNewFieldGroup in the designer.
  6. Add a new field to MyNewFieldGroup.


The main thing to keep in mind is that you always extend the base element, even if you have a dependency on another extension.