Modified Call Flow ends call

Just thought maybe it came from the extension that the "Office Hours" section sends to, changed to 700 there too (while it doesn't make sense though) but still the same issue
 
@fxbastler Saw your message about extension 700...thanks, I never use conferencing, so I wouldn't have thought about it.

Anyway, 900 allowed me to upload the script, I also put it as default route for the trunk and sadly...same issue! (Call ended by script)

This time I have used CFD v20
 
I also put it as default route for the trunk and sadly...same issue! (Call ended by script)

This time I have used CFD v20

Set the 3CX log level to verbose. This way you'll be able to see which CFD app components are processed, when they are processed and where the program might be stuck. If needed you can also add additional CFD logger blocks.
We're missing your CFD project for analysis.
 
Just restored the backup that was made 40mn ago, as I had removed the CFDs right after that, calls come in at least. that's gonna give me time to dive further into it
 
  • Like
Reactions: fxbastler
As @fxbastler suggested, enable verbose logs in 3CX, make a test call and check the 3CXCallFlow.log file, which will tell you what the CFD app is doing. You can also post here the log for us to check, just ensure you're not including sensitive data.

In addition, as you changed the extension number of the CFD app, ensure that you're routing inbound calls to that extension.
 
As @fxbastler suggested, enable verbose logs in 3CX, make a test call and check the 3CXCallFlow.log file, which will tell you what the CFD app is doing. You can also post here the log for us to check, just ensure you're not including sensitive data.

In addition, as you changed the extension number of the CFD app, ensure that you're routing inbound calls to that extension.
Hello!

So you mean I have to input the CFD number here, and not the Queue number I always used? (800)

One thing I thought about in the meantime is to try and redo the flow from scratch with CFD v20, instead of rebuilding the same flow.
 
So you mean I have to input the CFD number here, and not the Queue number I always used? (800)
No, what I mean is that previously you were routing inbound calls to the CFD app by project name, for example "myproject.Main". Now this has changed, and you need to send calls to the CFD app using the extension number you assigned to it.

One thing I thought about in the meantime is to try and redo the flow from scratch with CFD v20, instead of rebuilding the same flow.
This will not make any difference. Opening an old CFD project with the new version of the CFD will work. When you build the project, the generated C# code will work with 3CX v20.
 
  • Like
Reactions: Evolute IT
No, what I mean is that previously you were routing inbound calls to the CFD app by project name, for example "myproject.Main". Now this has changed, and you need to send calls to the CFD app using the extension number you assigned to it.


This will not make any difference. Opening an old CFD project with the new version of the CFD will work. When you build the project, the generated C# code will work with 3CX v20.
True, I just found out recreating from scratch isn't helpful.

About sending calls, you're talking about the default route section of the trunk, or that's something that has to be done in the CFD?

I checked in the default route section and I can only select the CFD via the Call Processing Script option, there's not way to select 900 there.

Here is the log attached, I'm still trying to find something meaningful in it, it's the first time I have to debug a CFD issue!

[EDIT] I'm getting the CallFlow log and will send it too
 

Attachments

Last edited:
Geez...just had to get the right log AND your explanation of the new way the CFD works! I think I just understood what's going on...

I had an "internal" branch in the CFD because customers told me they couldn't call someone internally when they were out of office hours...it was okay when I added it.

Now that the CFD has to have its own DID, of course it's an internal call and it gets dropped because of the "exit CallFlow...

I'm gonna remove the Internal rule and test it right away.

Here's the CallFlow log
 

Attachments

Just tested, it works! It was indeed the internal branch that caused it.

Now I just have to check how to bring it back AND tell it not to apply it to 900

[EDIT] Despite many tries in the conditions for the internal branch, it didn't seem to work BUT I removed the branch again and tested a call between my extension on this PBX and my other extension on my own PBX via bridge and it worked...so I guess the internal branch condition that was needed until now is not necessary anymore?

I will test with two internal extensions on monday and come back here to confirm if it's actually working. For now, without the internal branch, calls are fine, I get the voice message that I should be getting off hours and the call is not ended.

Thanks everyone for your help!
 
Last edited:
I had an "internal" branch in the CFD because ...
That was almost obvious to me after your first post and the pic, even without your first posted log today at 1:55 - days later.
Code:
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-REDACTED_012026_CFDv20 - CallID 00000000-01dc-81c1-9e5b-329e0000004e - Callflow - Start executing component 'CreateCondition1'
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-CreateCondition1 - CallFlow.CFD.ConditionalComponent 'CreateCondition1' - Evaluating condition for branch 'Interne'
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-CreateCondition1 - CallFlow.CFD.ConditionalComponent 'CreateCondition1' - Condition evaluated to true for branch 'Interne', executing inner components
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-CreateCondition1 - CallFlow.CFD.ConditionalComponent 'CreateCondition1' - Start executing branch 'Interne'
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-Interne - CallFlow.CFD.SequenceContainerComponent 'Interne' - Start executing component 'ExitCallflow1'
2026/01/10 10:42:30.265|0014|Trac| [_3CX.Script] _900_5.Main.317.[C:78.3]-ExitCallflow1 - CallFlow.CFD.ExitComponent 'ExitCallflow1' - Exiting callflow...
Even though that still wouldn't have worked because the CFD was too old.

That was also the reason why I wrote several times:
We're missing your CFD project for analysis.


Thanks everyone for your help!
you're welcome
 
Last edited:
I will test with two internal extensions on monday and come back here to confirm if it's actually working.
It works.

To sum up: Internal branch is not useful anymore, as internal calls are not blocked during OoO Hours since CFD v20, and CFD v18 won't prompt about the new version, it has to be downloaded directly from the website or partner portal.