Fill slots using request_next slot

I am trying to fill slots using request_next_slot function. Attaching my code.

I have three slots to fill. Ordercolumn,columnfilter and ordernum

I am trying to fill ordercolumn using CRF and columnfilter,ordernum using above function.

When length of valuelist is greater than 1 i am using buttons to fill slot whereas when the length is 1 i am assigning the value to columfilter slot. When length of valuelist is greater than 1 then i am able to fill all slots successfully and my submit function is also executing but when length of valuelist is 1 then its getting stuck at columnfilter slot and not asking to fill ordernum slot.

Can anyone tell me what is issue?

 def request_next_slot(self, dispatcher: CollectingDispatcher, tracker: Tracker,
                  domain: Dict[Text, Any]):
for slot in self.required_slots(tracker):
                if self._should_request_slot(tracker, slot):
                    if slot == 'column_filter':
                        order_column = tracker.get_slot('ordercolumn')
                        valuelist = self.column_dict(order_column)
                        valuelist = valuelist.split('_')
                        valuelist_buttons= []
                        if len(valuelist)>1:
                                  ###making buttons list
                         dispatcher.utter_button_message(text = 'Please choose ?',buttons = valuelist_buttons)
                            return [SlotSet('column_filter', slot)]
            If len(valuelist)==1:
                   return [slotset(‘ordernum’,valuelist[0])]
            If slot==‘ordernum’:
          disapatcher.utter_message(template=‘utter_ask_ordernum’)
        return [slotset(‘ordernum’),slot]

        return None