Call Forwarding Report with Sefautil or SQL Query RRS feed

  • Question

  • Hi All

    We lots of problems in our organisation with Lync Call Forward Settings not being set correctly by users resulting in alot missed calls

    As an organisation we don't allow Voicemail (Don't ask me why - internal politics) and despite repeated training and user education call forward settings are never set correctly 

    The only way i would like to help with this is to [possibly get a report of all users Call Forward settings every morning and this could be an IT helpdesk task to check and fix these settings for users manually or via Sefautil

    Has anybody come up with a script or SQL Query that could output this to a file or email - i searched using Sefautil or SQL Query but found very little information on this on web and in this forum

    Any help would be greatly appreciated



    • Edited by maz124ss Monday, July 15, 2013 2:02 AM
    Monday, July 15, 2013 2:01 AM

All replies

  • Hi,

    Check this it might help you


    Whenever you see a helpful reply, click on Vote As Helpful & click on Mark As Answer if a post answers your question.

    Monday, July 15, 2013 6:29 AM
  • yes i have seen this article but was after some more specific details on where i can actually extract these Call Forward Settings and wher ethey live in a sql database

    Tuesday, July 16, 2013 12:33 AM
  • Hi,Maz124ss,

    I don't know scripts or SQL query to list the user call forwarding settings,but you can use SEFAUTIL to administratively configuring Lync call forwarding on server side.

    Here is detailed introduction of SEFAUTIL


    And below article provides a script to adminisratively configuring Lync call forwarding for your reference.(Note:please test it throughly before you apply it)


    Note: Microsoft is providing this information as a convenience to you. The sites are not controlled by Microsoft. Microsoft cannot make any representations regarding the quality, safety, or suitability of any software or information found there. Please make sure that you completely understand the risk before retrieving any suggestions from the above link.



    ××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××× Please remember to click “Mark as Answer” on the post that helps you, and to click “Unmark as Answer” if a marked post does not actually answer your question.

    Tuesday, July 16, 2013 7:57 AM
  • Hi Sharon Thanks for the info but this is more using sefautil to change call forward settings this is not really what I'm after as changing these settings is not the issue I really need a script or SQL query to report on what these call forward settings are so we can identify which users have not set these settings correctly in the first place I have found very little info where these are stored in SQL and where/ how to extract this data
    Tuesday, July 16, 2013 8:26 AM
  • Hi,

    Old post I know, but myself and a colleague spent some time yesterday writing a PowerShell script to capture this information.  Please see below

    Save as .ps1 and run FILENAME.PS1 ALL (for all users)



    $users = Get-CsUser | select sipaddress

    $runnumber = switch ($run)


            1 {"0..100"}

            2 {"101..200"}

            3 {"201..300"}

            4 {"301..400"}

            5 {"401..500"}

            6 {"501..600"}

                    7 {"37..37"}

                    ALL {"0..1000"}

                    default {"0..2"}


    $myusers = invoke-expression -command "`$users[$runnumber]"


    foreach ($user in $myusers)



    $thisresult = @()

    $urt = ""

    $callfw = ""


    $thisresult = "" | select Username, UserRingTime, CallForward,DelayRingDelegates,GroupPickupOrbit,ForwardImmediate

                    $user = $user.SipAddress.tostring().split(":")[1]

                    $cmd={ & 'c:\program files\microsoft lync server 2013\reskit\SEFAUtil.exe' $user /server:fepool01.oninteroute.com}

                    $result=invoke-command $cmd


                    write-output "----------"

                    $username = $result[0].split(" ")[2]

                    $matchstring = $result[4].split(":")[0]

           write-host "! $matchstring !"

                    if ( $matchstring -match "User Ring")


               $urt = $result[4].split(" ")[3].trim()

                       $callFW = $result[5].split(":")[2]



              { Write-host " outer else  "


                if ($matchstring -match "Delegate" )

                     { Write-host " match delegate"

                                    $thisresult.DelayRingDelegates = $result[4].split("(")[1]

                                    $thisresult.GroupPickupOrbit   = $result[5].split(":")[2]




                                    if ( $result[4] -match  "Forward immediate")


                                    $urt ="Forward Immediate"

                                    $callfw = $result[4].split(":")[2]





                                    Write-host " match inner else "

                            $urt = " Not Found"

                            $callFW = $result[4].split(":")[1].trim()




    $thisresult.username = $username

    $thisresult.UserRingTime = $urt

    $thisresult.CallForward = $callfw

    #write-host "username =  , urt = $urt,  callfw = $callfw"

    $Finalresult +=$thisresult


    $finalresult | sort-object -property username | export-csv result.csv -append -notypeInformation

    #$finalresult | sort-object -property username | where {$_.callforward -eq "False"}


    Hope this helps someone! :-)


    Tuesday, September 23, 2014 9:30 AM