Deze opdracht is gepubliceerd via
BlueTrail.
Freelapp biedt dit project niet zelf aan.
Freelance Ontwikkelaar tbv Summit en NWvSv IHD opdracht in Utrecht
Senior
2026-06-13 14:26:20
Utrecht
Je gaat werken in één van de teams in het cluster Algemene Opsporing in de productielijn Opsporing binnen de Dienst IV van de nationale politie. Vanuit dit cluster wordt software ontwikkeld en beheerd die het onderzoeksproces van opsporingsdiensten ondersteund. Je werkt aan producten voor de opsporing van de nationale politie, maar ook voor andere opsporingsdiensten, zoals de Rijksrecherche.Deze software bestaat uit verschillende voorzieningen ieder met hun eigen componenten en bijbehorende techniek. Van jou wordt verwacht dat je de uiteenlopende technieken (zoals Delphi en .Net) beheerst of dat je in staat bent je deze snel eigen te maken door een aantoonbaar ruime ervaring in andere talen en het werken in een complexe omgeving. Je werkt samen met de collega's van je team om de teamdoelen te bereiken waarmee opsporing Nederland zijn werk beter kan uitvoeren.Ten behoeve van de wijzigingen voor het nieuwe wetboek van strafvordering is integratie van de bestaande systemen benodigd met andere applicaties binnen het landschap. Hiervoor moeten koppelingen beschikbaar worden gesteld via REST-API (CDATA API SERVER, API-gateway) en aangesproken.Jouw senioriteit blijkt uit het coachen en begeleiden van collega-ontwikkelaars en helpt mee om de kennis van de gebruikte technieken binnen de politieorganisatie te borgen. Daartoe participeer je in bestaande netwerken die voor de uitvoering van het werk van belang zijn. Je neemt het voortouw in het introduceren van nieuwe tools en technieken en maakt anderen binnen het team enthousiast om er mee te gaan werken. Je geeft feedback op prestaties binnen het team en bewaakt de team overstijgende activiteiten.Samen met je team ontwikkel je functionaliteiten voor de voorzieningen, waarbij zoveel mogelijk gebruik gemaakt wordt van marktconforme technieken. Er wordt o.a. gewerkt met technieken zoals Delphi, .Net, CDATA API SERVER, API-gateway en Oracle SQL. Je hebt affiniteit om de software op te nemen in CI/CD pipelines door middel van de tooling van Atlassian, Bitbucket, Jenkins en XLDeploy.Hiermee zorg je er te allen tijde voor dat de producten onderhoudbaar en goed getest zijn, zodat ook anderen er optimaal gebruik van kunnen maken, dit alles binnen de kaders en richtlijnen zoals die binnen de organisatie gehanteerd worden.Waar ga je werken?Je werkt in het Productiehuis van de Dienst IV. In Utrecht ontwikkelen multidisciplinaire DevOps-teams nieuwe functionaliteiten voor de operationele politiediensten. Momenteel werken we twee á drie dagen op locatie in Utrecht, de rest werken we vanuit huis.Verder is het goed om te weten dat het weleens kan voorkomen dat je buiten kantoortijd wordt opgeroepen. Het werk van de politie gaat immers 24/7 door.
Eisen voor de opdrachtJe hebt hbo werk- en denkniveau en een afgeronde opleiding in de richting van ICT.Je hebt recente en ruime werkervaring met de ontwikkeltalen Delphi en .Net, CDATA API SERVER, API-gateway.Je hebt recente en ruime werkervaring met Oracle SQL, views en stored procedures.Je hebt recente en ruime ervaring met een Agile-werkwijze, zoals Scrum en DevOps.Je hebt ervaring met CI/CD-Pipelines (Atlassian tooling, Bitbucket, Jenkins en XLDeploy).CompetentiesJe hebt groot analytisch vermogen.Je bent kwaliteitsbewust.Je bent goed in de samenwerking binnen en buiten het team.
Referentienummer2026-05169
LocatieUtrecht
Startdatum2 juli 2026
Einddatum2 juli 2027
Optie op verlengingNog niet bekend
Uren per week36u p/w
Sluitingsdatum17 juni 2026
12:00
Begint jouw trail hier?Stuur ons je CV met een korte opdrachtgerichte motivatie.
Discover your BlueTrailOnze weg naar jouw nieuwe carrière
Nadat jij op een opdracht hebt gereageerd, nemen wij binnen 24 uur contact met jou op en behandelen we jouw reactie.
We gaan met jou in gesprek. Wij kijken niet alleen naar je kennis en werkervaring, maar vooral naar jou als persoon. Dit is voor zowel de professional als de opdrachtgever belangrijk, wij willen de juiste match maken! Als we eenmaal de juiste match hebben gevonden, dan begint jouw BlueTrail en stellen we je voor aan de opdrachtgever!
Bij een succesvolle match worden de contracten opgesteld. Door middel van innovaties en digitalisering proberen wij dit proces zo kort mogelijk te maken. Zo kun jij doen waar je goed in bent, terwijl wij zorgen voor alle administratie!
Ook tijdens jouw opdracht staan wij altijd voor je klaar. Onze fieldmanagers zorgen er persoonlijk voor dan alles succesvol verloopt!
Follow our trail
E-mailadresCAPTCHA
gform.initializeOnLoaded( function() {gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_2').val();gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );