Add isStartable property in customise property panel

I want to enable isStartable property in my custom property panel just like isExecutable.
The following screenshot is from camunda property panel example,

The following screenshot is from my custom property panel,

In camunda node module there is ExecutableProps file so I added in my code and it rendered on my screen. But I not got to see any StartableProps file so I can use it.

Is there any way that I missing to enable isStartable property?

Have you created a model extension that ensures the isStartable property can be set?

@philippfromme No, I’ve not created a model extension. What is the use-case of model extension? I’m using custom property extension.

That example actually includes a model extension: bpmn-js-examples/magic.json at master · bpmn-io/bpmn-js-examples · GitHub

A model extension will ensure that when saving your diagram the custom property you set will be serialized. Without a model extension it will be lost.

So what’s missing is adding your custom properties panel entry.

Hi @philippfromme,
I write code to create custom property but now I facing an issue

Cannot read property ‘id’ of undefined

My code for isStartable as below,

export default function(group, element, translate) {
  if (is(element, 'bpmn:Process')) {    
    var isStartable = entryFactory.checkbox({
      id: "isStartable",
      get: function(element, node) {
        var bo = getBusinessObject(element);
        return {
            'isStartable' : bo.$attrs.isStartable || true
        }
      },
      set: function (element, values, node) {
        let bo = getBusinessObject(element);
        let theValues = values.isStartable
        return cmdHelper.updateBusinessObject(element, bo, {'isStartable': theValues});
      },
      label: translate('isStartable'),
      modelProperty: 'isStartable'
    });
    group.entries.push(isStartable);

  }

My implementation of this property as below,

function createGeneralTabGroups(element, bpmnFactory, canvas, elementRegistry, translate) {

  var generalGroup = {
    id: 'general',
    label: 'General',
    entries: []
  };
  idProps(generalGroup, element, translate);
  nameProps(generalGroup, element, bpmnFactory, canvas, translate);
  processProps(generalGroup, element, translate);
  executableProps(generalGroup, element, translate);
  isStartableProps(generalGroup, element, translate);

  return[
    generalGroup
  ];
}

Custom property description JSON,

    {
"name": "Input",
"prefix": "Input",
"uri": "http://Input",
"xml": {
  "tagAlias": "lowerCase"
},
"associations": [],
"types": [
  {
    "name": "BewitchedStartEvent",
    "extends": [
      "bpmn:StartEvent"
    ],
    "properties": [
      {
        "name": "Input",
        "isAttr": true,
        "type"  : "array",
        "default": "Select Value"
      },
      {
        "name": "output",
        "isAttr": true,
        "isMany": true,
        "type"  : "array"
      },
      {
        "name": "isStartable",
        "isAttr": true,
        "type"  : "boolean"
      },
    ]
  },
]

}
I implemented this property the same way I implemented other custom properties but I never faced such kind of issue.