Writing EDFs
You can add EDFs to views, actions, action screens and interfaces using the EPT editor. (EDFs aren't available in MPTs or SPTs.) If you have added an EDF in an action screen or view, the field should be available on the UI just like any other field. You will be able to provide a value for it to be saved into the database.
To programmatically write an EDF on a model, use the following syntax:
Book book = new Book();//set Natural Keysbook.setTitle("Bookstore Tutorial"); //set EDFs //set string or string enumeration fieldbook.setAttribute("EPT.BookstoreEPT.TestString", "SampleValue"); //set number fieldbook.setAttribute("EPT.BookstoreEPT.TestInteger", 10);     book.setAttribute("EPT.BookstoreEPT.TestDouble", 10.2);             //set duration fieldDurationValue durationValue = new DurationValue();durationValue.setValue("P1DT1H1M");book.setAttribute("EPT.BookstoreEPT.TestDuration", durationValue);      //set model link fieldModelLinkAttributeValue modelLink = new ModelLinkAttributeValue();model.setAttribute("EPT.BookstoreEPT.TestModelLink", modelLink);                //set all the model link NK components using the set method on ModelLinkAttributeValuemodelLink.set("EPT.BookstoreEPT.TestModelLinkName", "SampleEnterprise"); //set Address field        Address address = Services.get(AddressService.class).createAddress(CountryCodes.US);address.set(AddressComponentType.STREET_1, testCaseName);address.set(AddressComponentType.CITY, testCaseName);address.set(AddressComponentType.STATE, "TX");model.setAttribute("EPT.BookstoreEPT.TestAddress", address); //set composite field  //for composite field, you will need to set all the components seperatelymodel.setAttribute("EPT.BookstoreEPT.TestCompositeAmount", 100.00);model.setAttribute("EPT.BookstoreEPT.TestCompositeCurrency", CurrencyCode.USD.getValue()); // write model to database using ModelDataServiceYou should use an Enterprise level user who has access to the EPT to write the EDFs. If you use ValueChainAdmin or any other enterprise-level user who doesn't have access to the EPT, the platform will raise an error if EDFs are set.
Also, if your model has any unrecognized EDF then the platform will raise an error.
If you want to nullify the value of an attribute in the database, you should use set it to the corresponding com.onenetwork.platform.data.model.NullConstants value, just as you would for a regular model field.