HUNTER FELTMAN. I'M A SOFTWARE DEVELOPMENT 
ENGINEER FOR THE LAST FOUR YEARS. 
TODAY I'LL BE TALKING ABOUT BUILDING 
ADD-ON APPS. THESE ARE CUSTOMIZATIONS 
TO BUSINESS CENTRAL TO EXTEND ITS 
FUNCTIONALITY. I'LL INTRODUCE YOU 
TO ADD-ON APPS, WHAT THEY ARE. WE'LL 
GO THROUGH THE LANGUAGE AND TOOLING. 
WE'RE ACTUALLY GOING TO LOOK AT 
THE LANGUAGE FOR BUILDING ONE OF 
THESE THINGS. WE'LL DO A QUICK LITTLE 
DEMO OF MAKING A SIMPLE ADD-ON APP. 
WE'LL LOOK AT THE DEVELOPMENT ENVIRONMENTS, 
WHERE YOU CAN GO TO BUILD THESE 
THINGS FOR BUSINESS CENTRAL AND 
THEN TAKE A LOOK AT APP SOURCE, 
WHICH IS OUR MARKETPLACE FOR STORING 
THESE SESSIONS AND HOW PEOPLE FIND 
THEM AND WHAT THEY DO WITH THEM. 
BEFORE ALL THAT, A BRIEF DISCLAIMER 
THAT I'M OBLIGATED TO PUT IN ALL 
MY SLIDES. THIS MEANS IF I SCREW 
UP, YOU CAN'T LAUGH AT ME TOO HARD. 
GETTING INTO OUR DIFFERENT SCENARIOS. 
BUSINESS CENTRAL HAS THREE MAIN 
WAYS OF PROVIDING CUSTOMIZATIONS. 
THE FIRST ONE BEING CONNECT APP. 
YOU CAN DOWNLOAD THE SLIDE APP. 
IT SHOULD BE OUT THERE IF YOU MISSED 
THE SESSION. THE NEXT TWO ARE ACTUALLY 
RELATED. ADD-ON APPS AND INDIVIDUAL 
CUSTOMIZATIONS. AND BOTH OF THESE 
ARE BUILT USING THE SAME FRAMEWORK. 
THEY'RE BUILT IN THE SAME WAY BUT 
THEY'RE DEPLOYED DIFFERENTLY. ADD-ON 
APPS, ANYBODY WHO WOULD LIKE TO 
CAN GO TO APP SOURCE AND ACQUIRE 
YOUR SOLUTION. INDIVIDUAL CUSTOMIZATIONS, 
YOU'RE ACTUALLY DEPLOYING IT DIRECT 
TO A CUSTOMER. ADD-ON APPS ARE PACKAGES 
THAT CONTAIN CODE AND UI AND DEFINITIONS 
FOR THINGS THAT YOU WOULD LIKE TO 
HAVE INSIDE OF BUSINESS CENTRAL 
PRODUCT THAT ARE BUILT USING THE 
EXTENSION'S V2 FRAMEWORK. THEY CONTAIN 
CODE FOR ADDING NEW UI, FOR ADDING 
NEW LOGIC AND PAGES AND OTHER THINGS, 
BUT THEY DO NOT CONTAIN ANY SOURCE 
CODE MODIFICATIONS. THE GENERAL 
IDEA BEING THAT YOU CAN ADD NEW 
THINGS BUT YOU CANNOT REMOVE EXISTING 
THINGS. SLIGHT DISTINCTION. YOU 
CAN HIDE EXISTING THINGS. SAY THERE'S 
SOMETHING SOMEBODY IS USING AND 
YOU WANT THEM TO USE YOURS, YOU 
CAN HIDE THE OLD STUFF AND USE YOURS 
BUT YOU CAN'T REMOVE THE FUNCTIONALITY. 
THIS PLAYS INTO WHY WE'RE USING 
EXTENSIONS. THE NUMBER ONE BEING 
THIS UPGRADE SIMPLICITY IDEA BECAUSE 
IN THE OLDER WORLD OF CODE CUSTOMIZATIONS, 
YOU WOULD MAKE A SOURCE CODE MODIFICATION, 
YOU WOULD THEN OWN THAT SOURCE CODE. 
WHEN IT CAME TIME FOR AN UPGRADE 
AND WE'RE PROVIDING YOU WITH A NEW 
VERSION OF OUR PRODUCT, YOU HAVE 
TO GO BACK TO THAT SOURCE CODE, 
FIGURE OUT THE CHANGES, RIP THE 
CHANGES OUT, MAKE SURE EVERYTHING 
WORKS, DO ALL THE UPGRADE YOURSELF, 
AND THEN UPGRADE YOUR CUSTOMERS. 
IT WAS A BUILT OF A HASSLE AND IT 
WAS DIFFERENT FOR EVERYBODY BECAUSE 
EVERYBODY HAD DIFFERENT CUSTOM CUSTOMIZATIONS. 
YOU'RE DEFINING I WOULD LIKE TO 
ADD A FIELD HERE OR NEW CONTROL 
ON THIS PAGE OVER HERE. YOU'RE WRITEING 
THE CHANGES IN YOUR CODE AND YOU 
INTEGRATE THOSE INTO BUSINESS CENTRAL. 
I THINK I HAVE A DIAGRAM HERE. THE 
OLD WORLD, YOU WOULD HAVE YOUR SOURCE 
CODE MODIFICATIONS INSIDE THE PRODUCT. 
YOU WOULD BE THE DARK SQUARE. WHEN 
WE PULLED OUT TO EXTENSIONS, WE 
TAKE THE CHANGES AND MOVE OUT AND 
THAT GETS APPLIED TO THE SYSTEM. 
THIS IS USEFUL BECAUSE WHEN WE COME 
OUT WITH V2, WE TAKE ALL OF YOUR 
CODE AND APPLY IT TO V2 AND EVERYTHING 
COMES WITH IT. YOU DON'T HAVE TO 
WORRY ABOUT THE DATA. IT ALL COMES 
ALONG THERE, WITH THE EXCEPTION 
OF COURSE THAT WE MADE SIGNIFICANT 
CHANGES, YOU WOULD COME OUT WITH 
A NEW VERSION OF YOUR EXTENSION 
AND THAT'S WHAT WE WOULD DEPLOY. 
BUT IT SAVES SIGNIFICANT TIME IN 
FIGURING OUT UPGRADES BETWEEN OLD 
AND NEW VERSION. ALL RIGHT. THESE 
ARE DEFINED IN WHAT WE CALL EXTENSION 
PACKAGES. THAT'S KIND OF WHAT YOU'RE 
SEEING HERE. AND FORGIVE ME IF I 
SAY EXTENSIONS FROM HERE ON OUT 
BECAUSE THAT'S THE TERM THAT WE 
USE INTERNALLY AS OPPOSED TO ADD-ON 
APPS. LET'S TAKE A LOOK AT SOME 
OF THE LANGUAGE AND THE TOOLING 
INVOLVED IN DEVELOPING THESE ADD-ON 
APPS. AS YOU CAN SEE THERE, WE'LL 
BE USING VS CODE. AND WE'LL GET 
INTO A DEMO OF USING THAT LATER. 
BUT IF YOU'RE FAMILIAR WITH BUSINESS 
CENTRAL, FORMERLY KNOWN AS NAV, 
YOU'RE PROBABLY FAMILIAR WITH THINGS 
ON THE RIGHT-HAND SIDE HERE. THAT'S 
THE OLDEST SYNTAX DEFINING AN OBJECT. 
ON THE LEFT IS OUR NEW SYNTAX. IT'S 
AL. IT VERY SIMILAR. WE WANT PEOPLE 
TO BE ABLE TO GRACEFULLY TRANSITION 
FROM WHAT THEY WERE USED TO OVER 
INTO OUR NEW MODEL WITHOUT A LOT 
OF HASSLE AND LEARNING AN ENTIRE 
NEW LANGUAGE. SO WE TRY TO KEEP 
THINGS FAIRLY SIMILAR. IF YOU'RE 
NOT FAMILIAR WITH WHAT'S ON THE 
RIGHT BUT YOU ARE FAMILIAR WITH 
NAV AND BUSINESS CENTRAL, YOU MIGHT 
BE THINKING I'VE NEVER SEEN THAT 
BEFORE. THAT'S PROBABLY BECAUSE 
IT LOOKED LIKE THIS. ALL OF THIS 
INFORMATION WAS ENCAPSULATED. THIS 
IS GREAT IF YOU'RE LOOKING FOR SOMETHING 
VERY SPECIFIC ABOUT THE OBJECT THAT 
YOU'RE DEFINING, BUT NOT SO GREAT 
IF YOU WANT TO LOOK AT EVERYTHING 
AS A WHOLE AND UNDERSTAND HOW YOUR 
OBJECT WORKS. WE DECIDED TO MOVE 
TOWARDS A TEXT-BASED INDEX. THERE 
ARE NO WINDOWS TO DEAL WITH INSIDE 
OF VISUAL STUDIO CODE, SO YOU DON'T 
HAVE TO SEE ALL THESE THINGS. I 
MENTIONED HAVISUAL STUDIO CODE A 
LITTLE BIT. IT'S A TEXT EDITOR THAT 
WE CREATED. IT'S FILE BASED, WHICH 
IS DIFFERENT THAN ANYBODY WHO MIGHT 
KNOW VS. VISUAL STUDIO IF YOU'RE 
CONTROLLING YOUR OBJECT, YOU CAN 
HOOK IT UP WITH YOUR GIT REPOSITORY 
AND IT HAS ALL THE HANDLES FOR DOING 
THAT. ADDITIONALLY, IT PROVIDES 
THE OPTION FOR GENERATES SNIPPETS. 
A SNIPPET IS A TEMPLATE FOR SOMETHING 
YOU WANT TO WRITE IN A CODE. SAY 
I WANT TO WRITE A NEW PAGE FOR BUSINESS 
CENTRAL, INSTEAD OF NEEDING KNOW 
ALL OF THE SYNTAX, I CAN START WRITING 
THE SNIPPET AND IT CAN CREATE A 
TEMPLATE FOR ME AND I CAN START 
TABBING THROUGH THE TEMPLATE . ANOTHER 
TOOL THAT WE'VE PROVIDED IS THE 
INCLINE DESIGNER. THIS IS USEFUL 
IF YOU WANT TO DEVELOP UI BUT YOU 
WANT TO DO IT FROM THE UI. YOU START 
MOVING FIELDS AROUND. YOU CAN DRAG 
IN AND DROP THEM. YOU CAN HIDE THEM. 
YOU CAN MOVE THEM WHEREVER YOU WOULD 
LIKE ACROSS GROUPS. IT'S A WAY TO 
VISUALLY SEE THE UI THAT YOU'RE 
CREATING. ONCE YOU'RE DONE VISUALLY 
DRAGGING AND DROPPING THINGS, THEN 
YOU CAN PULL ALL THE CHANGES YOU 
MADE BACK INTO VISUAL STUDIO CODE 
AND YOU DON'T HAVE TO WORRY ABOUT 
WRITING EVERYTHING THAT YOU JUST 
CHANGED. THAT LONG ACRONYM YOU SEE 
IS AWAY WHAT YOU SEE IS WHAT YOU 
GET. BUT I USUALLY JUST SAY IT'S 
A DRAG-AND-DROP DESIGN. THAT USUALLY 
WORKS BETTER. SO A TYPICAL DEVELOPMENT 
LOOKS SOMETHING LIKE THIS. YOU'RE 
WRITING IN VISUAL STUDIO CODE. YOU'RE 
CODING THINGS. YOU'RE ADDING ALL 
THE STUFF AND FIGURING OUT WHAT 
YOUR ISSUES ARE. YOU DEPLOY IT OUT 
TO YOUR ENVIRONMENT AND TEST IT 
OUT. YOU RUN YOUR TEST, GO THROUGH 
YOUR SCENARIOS, FIGURE OUT YOUR 
BUGS. THEN YOU PULL THAT INFORMATION 
BACK DOWN IN THE INDIVIDUAL STUDIO 
CODE AND FIX THOSE AND RINSE AND 
REPEAT OVER AND OVER UNTIL YOU HAVE 
IT EXACTLY THE WAY THAT YOU WANT 
IT. SO, GETTING STARTED WITH VISUAL 
STUDIO CODE, THE MOST COMMONLY USED 
SHORTCUT IS CONTROL SHIFT P. CONTROL 
SHIFT P OPENS UP THE COMMAND BAR 
AND GIVES YOU A LIST OF VARIOUS 
COMMANDS TO EXECUTE TO DO DIFFERENT 
THINGS INSIDE VISUAL STUDIO CODE. 
THIS WHERE YOU WOULD CREATE A PRODUCT. 
THIS IS WHAT YOU WOULD DO TO BUILD 
YOUR PRODUCT INSIDE AN EXTENSION 
PACKAGE, COMMUNICATE WITH A SERVER. 
IT'S A VERY USEFUL SHORTCUT. AND 
THEN SNIPPETS, AS I WAS TALKING 
ABOUT EARLIER. A SNIPPET IS A PREDEFINED 
TEMPLATE FOR SOME OBJECT THAT YOU'RE 
TRYING TO WRITE AND IT ALLOWS YOU 
TO TAB THROUGH VARIOUS FIELDS INSIDE 
OF IT. YOU'LL SEE EXACTLY WHAT I 
MEAN IN A DEMO HERE. ALL OF THEM 
START WITH T AND THEN WHATEVER THE 
NAME OF THE SNIPPET IS. IN VISUAL 
STUDIO CODE WE SUPPORT THREE MAIN 
WAYS OF DEPLOYING OR INTERACTING 
WITH THE SERVER OR WITH YOUR TEST 
ENVIRONMENT. ONE IS F5. WHEN YOU'VE 
GOT EVERYTHING THAT YOU THINK YOU 
HAVE WRITTEN INSIDE VISUAL STUDIO, 
YOU PRESS F5. IT DEPLOYS IT OUT 
TO YOUR SERVICE. YOU CAN START SEEING 
IT, PLAYING AROUND WITH IT, AND 
MAKE SURE EVERYTHING IS RIGHT. THIS 
WORKS WITH THE DEBUGGER. IT'LL HIT 
THOSE BREAKPOINTS AND YOU CAN INVESTIGATE. 
IT DOES EVERYTHING THAT YOU WOULD 
EXPECT FROM A TYPICAL DEVELOPMENT 
ENVIRONMENT. F6 DEPLOYS THE EXTENSION 
JUST LIKE F5 BUT INSTEAD OF OPENING 
UP THE DEBUGGER, IT OPENS UP THE 
DESIGNER. YOU CAN PLAY AROUND WITH 
IT UNTIL IT LOOKS LIKE WHAT YOU 
WANT. YOU CAN SAY, YOU NEED TO DO 
THIS AND THAT THAT AND THE OTHER 
THING. WHEN YOU'RE DONE IN THE UI, 
YOU PRESS F7. THAT WILL OVERRIDE 
ANY CHANGES THAT YOU MADE WITH THE 
NEW CHANGES THAT YOU JUST DID IN 
THE DESIGNER. AND I'LL SHOW YOU 
THAT KIND OF RIGHT NOW, A DEMO OF 
THE INCLINE DESIGNER AND VISUAL 
STUDIO CODE. JUST LET ME GET ON 
OVER TO HERE. IT'S NOT SHOWING. 
INTERESTING. LET'S TRY A DIFFERENT 
PROJECTION. THERE WE GO. OKAY. SO 
THIS IS VISUAL STUDIO CODE. THIS 
IS THE EDITOR. ON THE LEFT-HAND 
SIDE, YOU CAN SEE A FOLDER STRUCTURE. 
THERE'S ACTUALLY FILES ON MY SYSTEM 
AND I'M POINTING AT A FOLDER CALLED 
ADD-ON DEMO. THE IMPORTANT THINGS 
HERE ARE YOUR APP JSON. THIS DEFINES 
YOUR EXTENSION. THIS IS THE OUTWARD 
FACING INFORMATION. IT'S GOT THE 
IDEA, THE NAME, WHAT PEOPLE ARE 
GOING TO SEE, THE PUBLISHER, AND 
WHAT VERSION YOU'RE ON. SO BY DEFAULT, 
VISUAL STUDIO CODE WHEN IT CREATE 
THIS IS PROJECT JUST GIVES IT THE 
SAME NAME AS THE FOLDER THAT YOU 
POINTED IT AT. IT GIVES IT THIS 
WONDERFUL PUBLISHED NAME OF DEFAULT 
PUBLISHER. PLEASE REMEMBER TO CHANGE 
IT TO SOMETHING ELSE BECAUSE IT'S 
NOT PARTICULARLY USEFUL TO SEE THAT 
OUT IN PRODUCTION. SO, YOU COULD 
GIVE THIS YOUR COMPANY NAME OR IF 
YOU'RE SAVVY AND DOING A DEMO, YOU'LL 
PUT YOUR ACTUAL NAME IN THERE. AND 
YOUR VERSION USUALLY STAYS AT 1 
TO BEGIN WITH. IF YOU'RE REALLY 
SAVVY, MAYBE YOU'LL DO SOMETHING 
LIKE THIS AND GO DOWN TO NOT EVEN 
THE FIRST VERSION AS YOU'RE DEVELOPING 
IT. OR SOMETIMES AS I'M DEVELOPING 
THINGS, I LIKE TO GIVE IT A NAME 
OF DASH DEV AND WHEN I'M DONE WITH 
IT AND EVERYTHING'S GOOD, I'LL CHANGE 
THAT NAME. IT'S A USEFUL NAME TO 
STAY THAT'S THE DEVELOPMENT ONE 
STILL IN TEST. THESE OTHER FIELDS 
ARE FOR DESCRIBING, ONE, WHAT YOUR 
EXTENSION IS TO YOUR CUSTOMERS. 
THIS IS A BRIEF DESCRIPTION OF THE 
ACTUAL DESCRIPTION. THEY'LL SEE 
THIS NEW UI. AND THEN LINEN LINKS 
TO VARIOUS PARTS OF YOUR COMPANY. 
AND THEN THAT'LL SHOW UP IN THE 
PRODUCT. THE LAST SUPER IMPORTANT 
ONE IS THE ID RANGE. FOR ADD-ON 
APPS, THE ID'S OF YOUR OBJECTS NEED 
TO BE WITHIN THE 7 MILLION RANGE. 
I JUST DID 7 MILLION TO 7 MILLION 
ONE THOUSAND. WE IDENTIFY THEM. 
YOU CAN'T HAVE TWO OBJECTS WITH 
THE SAME ID. YOU ALSO CAN'T HAVE 
TWO OBJECTS WITH THE SAME NAME, 
BUT WE'LL GET TO THAT IN JUST A 
LITTLE BIT. OKAY. SO THAT'S THE 
DEFINITION OF YOUR APP JSON. THIS 
IS WHAT DESCRIBES YOUR EXTENSION. 
BUT IT DOESN'T DESCRIBE WHAT YOUR 
EXTENSION IS DOING. IT DOESN'T CONTAIN 
ANY OF THAT CODE. THE DEFAULT ONE 
THAT IT COMES UP WITH IS THIS HELLO 
WORLD. THIS IS A PAGE EXTENSION. 
A PAGE EXTENSION EXTENDS A PAGE. 
IT'S WHAT YOU USE TO ADD NEW FIELDS 
TO A PAGE, WHAT YOU DO TO ADD NEW 
LOGIC TO A PAGE, THESE KINDS OF 
THINGS. IN THIS CASE, I HAVE A PAGE 
EXTENSION STARTING AT THE IDEA OF 
7 MILLION -- 70 MILLION, SORRY. 
I'VE GIVEN IT A NAME AND IT EXTENDS 
THE CUSTOMER LIST PAGE. THIS IS 
A PAGE THAT'S IN BUSINESS CENTRAL 
THAT WE KNOW ABOUT. AND ALL I'M 
DOING IS I'M PUTTING IN A TRIGGER, 
WHEN THE PAGE OPENS, WE'RE GOING 
TO SEE THIS MESSAGE, AT PUBLISHED 
HELLO WORLD. THIS IS NICE FOR BEGINNING. 
IF I DEPLOY THIS, I'M GOING TO DEPLOY 
IT WITH F5. IT'S GOING TO DEPLOY 
THIS TO ME SERVER. IT'S GOING TO 
OPEN THE CLIENT RIGHT ON THAT PAGE. 
AND YOU SEE WHERE WE OPENED IS WE 
ACTUALLY OPENED UP PAGE 22, WHICH 
IS THE CUSTOMER LIST PAGE. AND ON 
THAT OPENING, IT GIVES US THAT MESSAGE. 
APP WAS PUBLISHED. HELLO WORLD. 
THE PAGE NUMBER WAS 22. AND I WILL 
SHOW YOU THAT IN A SEC. IT WAS ACTUALLY 
DEFINED IN THIS LAUNCH JSON. OH, 
THERE YOU GO. THAT'S BAD ON ME. 
I'LL GO BACK TO THAT DISCLAIMER. 
PLEASE DON'T LAUGH AT ME TOO HARD. 
IF I CHANGE THIS TO ANYTHING INSIDE 
OF HERE, I WOULD OPEN UP A DIFFERENT 
PAGE. IN THIS CASE, PAGE 22 IS THE 
CUSTOMER LIST PAGE. AS SOON AS IT 
OPENED, IT GAVE ME THIS MESSAGE. 
I CLICK OKAY. AND WE END UP ON THE 
CUSTOMER LIST. NOW OBVIOUSLY THIS 
EXTENSION ISN'T PARTICULARLY USEFUL. 
IT'S BORDERLINE ANNOYING, ACTUALLY. 
SO WE WANT TO CHANGE THAT AND WE 
WANT TO WRITE OUR OWN EXTENSION 
THAT DOES A LITTLE BIT MORE. LET'S 
SAY WE WANT TO ADD SOME NEW LOGIC. 
WE WANT TO ADD A WHOLE 'NOTHER PAGE. 
LET'S GO AHEAD AND ADD A NEW THING. 
LET'S CALL IT -- MAYBE YOU WANT 
TO ADD A FIELD INTO THE CUSTOMER 
CARD PAGE, WHICH IS DETAILS ABOUT 
A CUSTOMER. I USUALLY USE A NAMING 
CONVENTION TO KNOW WHAT I'M WRITING 
AND WHAT IS BEING EXTENDED. SO I'LL 
DO CUSTOMER CARD. SO I CALLED IT 
PAGE EXTENSION DASH CUSTOMER CARD. 
NOW WE WANT TO WRITE A PAGE EXTENSION. 
IT'S GOING TO LOOK SOMETHING SIMILAR 
LIKE THIS, BUT I DON'T NECESSARILY 
REMEMBER ALL THE SYNTAX, SO I'M 
GOING TO USE A SNIPPET. I'M GOING 
TO PUT IN T AND THEN START TYPING 
PAGE EXTENSION. GO DOWN TO PAGE, 
HIT ENTER, AND IT GENERATES THIS 
TEMPLATE FOR ME. THIS PAGE EXTENSION 
IS 70 MILLION RANGE. SO 123, 123. 
GIVE IT A NAME. CUSTOMER CARD EXTENSION. 
AND IT'S GOING TO EXTEND THE CUSTOMER 
CARD. YOU CAN SEE AS I'VE PUT IN 
THOSE QUOTES AND I START TYPING 
THINGS, IT GIVES ME INTELLISENSE. 
IT TELLS ME ALL THE THINGS I CAN 
EXTEND. CUSTOMER CARD. IN THIS LAYOUT 
SECTION, THIS IS WHERE WE WOULD 
ADD CONTROLS TO OUR PAGE. WHAT IF 
WE ADDED A FIELD -- SORRY, I NEED 
TO ADD AFTER. WE NEED TO TELL IT 
WHERE WE WANT TO PUT OUR NEW CONTROLS. 
LET'S JUST ADD SOMETHING AFTER THE 
NAME FIELD ON THE CUSTOMER CARD. 
AND LET'S ADD A NEW FIELD AND WE'LL 
CALL IT FIELD ARE THEY C COOL. WE'RE 
GOING TO USE A FIELD TO DESCRIBE 
WHETHER OR NOT WE THINK THIS CUSTOMER 
IS COOL. GOOD FOR A DEMO. ONE THING 
WE CAN SPECIFY HERE IS A CAPTION. 
WE SPECIFY CAPTION. THEN THIS IS 
WHAT WILL DISPLAY WHEN WE SEE THIS 
CONTROL. PUT SOMETHING INSIDE OF 
THERE. AND SOMETHING WE'LL DEFINE 
IS THE APPLICATION AREA. OUT IN 
SaaS AND BUSINESS CENTRAL, WE HAVE 
THESE THINGS CALLED APPLICATION 
AREAS. THEY'RE ENABLED FOR BUSINESS 
CENTRAL. WHAT THEY DO IS THEY RESTRICT 
OR ALLOW WHAT PEOPLE CAN SEE THROUGHOUT 
THE ENTIRE APPLICATION. BUSINESS 
CENTRAL IS PRETTY COMPLEX. THERE'S 
LOTS OF STUFF TO SEE AND THAT MIGHT 
BE OVERWHELMING FOR SOME OF THE 
USERS OR MAYBE NOT EVEN ALLOWED 
FOR SOME OF THE OPERATIONS THAT 
WERE IN BUSINESS CENTRAL. SO WE 
HIDE THINGS UNDER THE APPLICATION 
AREA. WHEN A SYSTEM IS SET UP FOR 
AN APPLICATION AREA, ALL OF THE 
FIELDS AND UI THAT FIT WITHIN THAT 
APPLICATION AREA ARE SHOWN. THE 
BROADEST ONE BEING ALL. IF I PUT 
IN ALL HERE, IT MEANS ACROSS ALL 
APPLICATION AREAS YOU WOULD SEE 
THIS. THERE ARE OTHER ONES THAT 
WE HAD CALLED BASIC AND SUITE ARE 
OLDER ONES WE HAD. BUT FOR THIS 
PURPOSE, YOU PUT IN ALL. YOU PUT 
IN ALL. THIS NEEDS TO BE IN ALL 
OF YOUR UI ELEMENTS. OTHERWISE THEY'RE 
NOT GOING TO SHOW UP IN BUSINESS 
CENTRAL. I'VE GOT A FIELD AND I'VE 
DEFINED IT AND IT'LL COME AFTER 
THE NAME FIELD IN MY UI. BUT THERE'S 
NOTHING BACKING UP THIS CONTROL. 
THERE'S NO DATA SOCIALIST -- ASSOCIATED 
WITH IT. I NEED TO CREATE SOMETHING 
TO STORE THIS VALUE. I NEED TO CREATE 
A NEW FIELD AND A SCHEMA. I NEED 
TO DO WITH A TABLE EXTENSION. BEFORE 
WE DO THIS, I'LL CREATE ANOTHER 
ONE CALLED TABLE EXTENSION. WE'LL 
EXTEND THE CUSTOMER TABLE. I'M GOING 
TO USE A SNIPPET. TABLE EXTENSION. 
GIVE IT AN ID. LET MAKE SURE THEY 
MATCH BECAUSE THAT MAKES IT EASIER. 
CUSTOMER EXTENSION. AND THEN IT'S 
GOING TO EXTEND THE CUSTOMER TABLE. 
AND HERE I'M GOING TO ADD THAT FIELD. 
AND IT'S JUST GOING TO BE CALLED 
"ARE THEY COOL" FIELD. I HAVE TO 
GIVE IT AN ID. I HAVE TO GIVE IT 
A NAME. AND A TYPE. IN THIS CASE, 
IT'S GOING TO SHOW UP AS A CHECKMARK 
OR A LITTLE TOGGLE INSIDE OF UI. 
AND THAT'S IT. THAT'S ALL I HAVE 
TO DO. I'VE JUST EXTENDED THE SCHEMA. 
I'VE EXPANDED THE DATA STORED IN 
BUSINESS CENTRAL WITH THIS OBJECT 
RIGHT HERE. AND I CAN ACTUALLY USE 
IT FROM OTHER LOCATIONS INSIDE OF 
MY EXTENSION AS WELL. NOW IF WE 
GO BACK TO OUR PAGE EXTENSION, ARE 
THEY COOL FIELD, I CAN ACTUALLY 
REFERENCE THAT FIELD THAT I JUST 
CREATED IN THE TABLE EXTENSION. 
NOW THE DATA THAT YOU'RE SEEING 
HERE IS GOING TO BE COMING FROM 
THE NEW DATA FIELD THAT WE JUST 
CREATED INSIDE OF THE TABLE EXTENSION. 
NOT WORRYING TOO MUCH ABOUT THE 
OTHER ACTIONS THAT WE HAVE HERE, 
I THINK THIS EXTENSION IS GOOD TO 
GO. I THINK EVERYTHING'S GREAT HERE. 
WE'RE GOING TO DEPLOY IT. SO IF 
I DEPLOY IT WITH F5, IT'S STILL 
GOING TO OPEN UP THAT LIST PAGE 
AND WE'RE STILL GOING TO SEE THAT 
ANNOYING MESSAGE, WHICH WE COULD 
REMOVE IF WE WANTED TO. BUT ONCE 
WE'RE DONE LOOKING AT THAT, GO TO 
A CUSTOMER, OPEN UP THEIR CARD PAGE, 
AND NOW WE SEE THEIR "ARE THEY COOL" 
LITTLE THING THAT WE JUST ADDED. 
AND I CAN TOGGLE THIS BACK AND FORTH 
TO ENABLE IT OR DISABLE IT. AND 
IT'S STORED IN THE DATABASE NOW. 
CONGRATULATIONS. YOU'VE NOT DEFINED 
SOMETHING THAT IS SOMEWHAT USABLE 
TO SOMEBODY OUT IN PRODUCTION. YES, 
SIR. THE QUESTION BEING THAT IF 
YOU'VE GOTTEN AN ADD-ON APP FROM 
APP SOURCE, ARE YOU ALLOWED TO EXTEND 
THAT FURTHER? WELL, THE TECHNICAL 
ANSWER IS, YES, AN EXTENSION COULD 
HAVE A DEPENDENCY ON ANOTHER EXTENSION 
AND YOU COULD GO FURTHER WITH IT. 
YOU DON'T GET TO DOWNLOAD THAT APP 
DIRECTLY FROM BUSINESS CENTRAL. 
THAT IP IS PROTECTED BY VIRTUE OF 
YOU GET TO INSTALL IT AS A USER 
BUT YOU DON'T GET TO DOWNLOAD. YOU 
GO TO APP SOURCE, YOU GET IT, IT 
GETS DEPLOYED TO YOUR SYSTEM, BUT 
YOU DON'T GET TO RIP IT OUT AND 
DO WHATEVER YOU WANT WITH IT. DOES 
THAT ANSWER YOUR QUESTION? IT'S 
GOT FUNCTIONALITY BUT MAYBE THE 
UI ISN'T EXACTLY WHAT WE WANT. WE 
COULD WRITE ALL OF OUR CHANGES INSIDE 
OF VISUAL STUDIO CODE. IF YOU UNDERSTAND 
THE SYNTAX AND YOU'RE SAVVY WITH 
IT, GOOD. THAT'S THE WAY TO GO. 
IF YOU WANT TO SEE HOW THINGS LOOK 
AS YOU'RE DEVELOPING THEM, YOU PROBABLY 
WANT TO USE THE DESIGNER. WE GO 
RIGHT BACK INTO VISUAL STUDIO CODE 
AND INSTEAD OF DEPLOYING WITH F5, 
I DEPLOY WITH F6. WE OPEN UP THE 
DESIGNER, THIS PURPLE BAR ON THE 
TOP, WHICH ALLOWS US TO DO THINGS 
WITH THE DRAG AND DROP EDITOR. I'LL 
GET RID OF THIS MESSAGE. YOU CAN 
SEE THE NAME OF THE EXTENSION THAT 
YOU'RE DEVELOPING. YOU CAN SEE WHERE 
YOU'RE AT. COME ON. THERE WE GO. 
AND WE'LL OPEN UP THE CARD. AND 
YOU SEE WE'VE GOT ALL THIS WEIRD 
STUFF, LIKE WHAT'S THIS PURPLE TRIANGLE, 
WHAT'S THIS OTHER STUFF. THIS ALLOWS 
YOU TO PERFORM SOME OPERATIONS ON 
THE FIELDS THAT YOU SEE. IN THIS 
CASE, WE MOVE THEM, MOVE THEM, CHANGE 
THEM AROUND, SEE HOW THEY'RE SHOWING 
AND WHATNOT. SAY I DON'T LIKE SEEING 
ALL THESE THINGS. I THINK WE DON'T 
REALLY NEED BLOCKED ANYMORE. I'M 
GOING TO REMOVE IT. THIS FIELD IS 
NOW HIDDEN. WE DIDN'T ACTUALLY DELETE 
ANYTHING. ALL WE DID WAS SET ITS 
VISIBILITY TO FALSE. YOU CAN NO 
LONGER SEE IT. IT'S STILL THERE, 
YOU CAN CODE AGAINST IT, BUT YOU 
CAN'T SEE IT IN THE UI. YOU CAN 
ADD IT HERE AND THEN PEOPLE WOULD 
BE USING OURS INSTEAD OF THE EXISTING 
ONE. MAYBE WE ALSO DON'T CARE ABOUT 
PROFIT. IT SEEMS LIKE SOMETHING 
THAT NOBODY WANTS KNOW ABOUT. NO. 
[LAUGHTER] YOU CAN ALSO MOVE THINGS 
AROUND. SO, SAY I THINK ARE THEY 
COOLER IS MORE IMPORTANT THAN THE 
NAME, I CAN TAKE THIS, DRAG IT, 
AND DROP IT THERE. I THINK THIS 
IS GOOD. I THINK WE'RE ALL DONE. 
I COULD STOP DESIGNING UP HERE AND 
ACTUALLY DOWNLOAD THE APP THAT WE 
HAVE AND THEN DEPLOY THAT, BUT IF 
I'M NOT DONE WITH THE CODING YET, 
INSTEAD OF DOING ALL THAT, I CAN 
GO BACK TO VISUAL STUDIO CODE AND 
NOW I CAN PRESS F7 AND PULL THOSE 
CHANGES THAT WE MADE BACK INTO VISUAL 
STUDIO CODE. AND, SEE, WE AUTOMATICALLY 
GOT THAT BLOCK FIELD THAT WE DIDN'T 
SHOW ANYWHERE. WE MADE THE VISIBILITY 
FALSE. THAT PROFIT PERCENTAGE WE 
MADE FALSE. AND THEN OUR FIELD, 
IT USED TO BE AFTER NAME AND NOW 
IT'S AFTER NUMBER BECAUSE WE THOUGHT 
IT WAS MORE IMPORTANT. YOU CAN SAVE 
THIS, EXCOMPILE IT, AND YOU WOULD 
DEVELOP YOUR EXTENSION IN THIS MATTER. 
THAT DOES IT FOR MY DEMO FOR THIS. 
SO NEXT WE'LL TALK ABOUT THE DIFFERENT 
ENVIRONMENTS AND THE DIFFERENT PLACES 
WITH WHICH YOU DO DEVELOPMENT. THE 
ONE THAT YOU JUST SAW ME DO -- OH, 
I'M SORRY. YES. THAT DEPENDS ON 
THE DEVELOPMENT. SO THE QUESTION 
WAS, IF I MAKE THE CHANGES AND I 
DEPLOY THEM OUT TO MY DEVELOPMENT 
ENVIRONMENT, THAT APPLIES IT TO 
ALL USERS THAT I'VE DEPLOYED IT 
TO, THAT CUSTOMER? THE ANSWER IS 
YES. ALL USERS OF THAT SPECIFIC 
CUSTOMER THEN OBSERVE THOSE CHANGES. 
NOW ARGUABLY, IN A DEVELOPMENT ENVIRONMENT, 
YOU PROBABLY HAVE ONE-TO-ONE USER 
ENVIRONMENT TO TENANT THAT YOU'RE 
WORKING WITH. BUT IF YOU ARE GOING 
TO DO DEVELOPMENT ALONGSIDE OTHER 
PEOPLE USING THE SAME TENANT, THEN 
YOU MIGHT RUN INTO THOSE SITUATIONS 
WHERE YOU MAKE CHANGES AND NOW THIS 
PERSON SEES THEM. BUT THE GENERAL 
ADVICE IS IF YOU'RE DOING DEVELOPMENT, 
GIVE YOUR DEVELOPERS A SINGLE ENVIRONMENT 
TO DO THAT DEVELOPMENT SO YOU DON'T 
RUN INTO THOSE AREAS. GOOD QUESTION. 
YOU ACTUALLY CAN SEE IT ON THE FORM. 
IF YOU WANT, I CAN SHOW YOU THAT 
REAL QUICK. YOU GO BACK OUT TO HERE. 
I REMOVED ONE OF THOSE ITEMS. IF 
I GO TO MORE AND I CLICK ON FIELD, 
THESE ARE ALL THE FIELDS THAT WE 
HAVE AVAILABLE TO US. THOSE THAT'S 
A PLACED, THEY'RE ALREADY PLACED 
ON HERE. THOSE THAT ARE READY ARE 
NOT PLACED. IF I REMOVE SOMETHING 
OVER HERE, I CAN SEARCH FOR THAT 
FIELD. WHAT DID WE LOOK FOR? BLOCKED. 
YOU SEE IT'S NOW READY. I CAN TAKE 
IT AND DRAG IT BACK INSIDE OF HERE, 
PUT IT RIGHT THERE. NOW IT'S NO 
LONGER HIDDEN. IF I GO PULL THIS 
DOWN VIA F7, LOOK AT THAT INTERACTION. 
PEOPLE IN THE AUDIENCE ARE IMPROVING 
MY DEMOS. YOU SEE WE PULL IT BACK 
IN. IT SAYS MODIFY EQUALS FALSE. 
THAT'S NOT CORRECT. IT'S PROBABLY 
JUST A REFRESH OR WE'VE CLOSED THE 
SESSION BY VIRTUE OF ME BUILDING 
AGAIN. THAT'S WHAT I'M GOING TO 
ASSUME SINCE I STOPPED IT AND I 
STARTED SAVING THINGS AND REBUILT, 
I THINK WE BROKE THE CONNECTION. 
BUT I WOULD PULL IT DOWN AND THIS 
WOULD JUST GO AWAY BECAUSE IT'S 
NO LONGER BLOCKED. ALTHOUGH WE WOULD 
SEE ANOTHER ONE. YEAH, WE SEE ANOTHER 
ONE. IT GOT MOVED. NEVERMIND. PEOPLE 
IN THE AUDIENCE MAKING MY DEMOS 
SEEM BUGGY. SO, THIS IS DESIGNING 
FOR THE EXTENSION THAT YOU'RE BUILDING. 
FOR END USERS TO BE ABLE TO EXPOSE 
THE HIDDEN FIELDS, THAT'S ANOTHER 
FEATURE CALLED PERSONALIZATION. 
BUT IN THAT CASE, YOU'RE NOT CREATING 
AN ADD-ON APP, BUT YOU ARE STILL 
USING THIS. AND THEY CONTROL THOSE 
HIDDEN FIELDS, YEP, IF THEY HAVE 
THE PROPER PERMISSIONS TO DO SO. 
YEAH. ALL RIGHT. BACK TO DEVELOPING 
DEPARTMENTS. SO THE ONE THAT YOU'RE 
SEEING THAT I'M DOING FOR A DEMO 
BECAUSE IT'S THE FASTEST AND GOES 
TOWARDS A NICE DEMO HERE IS A LOCAL 
INSTALL. IF YOU'RE VERY SAVVY WITH 
BUSINESS CENTRAL AND YOU HAVE AN 
ON-PREM SOLUTION AND KNOW HOW TO 
SET EVERYTHING UP, YOU CAN CERTAINLY 
HAVE YOUR OWN THING LOCALLY AND 
DEVELOP RIGHT AGAINST IT. THE PERKS 
OF BEING A DEVELOPER. I KNOW HOW 
TO SET EVERYTHING UP THERE. THE 
ADVANTAGES HERE ARE YOU OWN EVERYTHING. 
YOU CAN SET IT UP HOW YOU WANT. 
YOU DON'T HAVE TO WORRY ABOUT DEALING 
WITH OTHER PEOPLE ON YOUR SYSTEM. 
YOU'VE CREATED YOUR OWN ENVIRONMENT. 
THE DOWNSIDES ARE YOU NOW OWN EVERYTHING. 
SO NOW YOU HAVE TO DEAL WITH SETTING 
IT UP AND MAKE SURE THE SETTINGS 
ARE WHAT YOU EXPECT FOR YOUR TARGET 
ENVIRONMENT. IT GIVES YOU A FLEXIBILITY 
TO DO WHAT YOU WANT BUT AT THE COST 
OF YOU HAVING TO SET ALL OF THAT 
UP. THE NEXT ONE, WHICH IS PROBABLY 
THE MOST COMMONLY USED FOR INITIAL 
DEVELOPMENT, IS THE CLOUD SANDBOX. 
YOU CAN ACTUALLY GO OUT TO DEMOS 
AT MICROSOFT. COM OR IF YOU HAVE 
AN ENVIRONMENT OUT THERE FOR BUSINESS 
CENTRAL TODAY, YOU CAN CREATE A 
SANDBOX AND YOU CAN DEVELOP AGAINST 
THE SANDBOX. YOU CAN HOOK UP VISUAL 
STUDIO CODE TO POINT AT YOUR SANDBOX 
AND WHEN YOU'RE PUSHING OUT YOU'RE 
ACTUALLY GOING OUT TO THAT ENVIRONMENT. 
THE ADVANTAGES ARE THAT IT'S OPERATED, 
HOSTED, AND MANAGED BY US ON THE 
BACKEND. YOU DON'T HAVE TO WORRY 
ABOUT SETTING IT ALL UP AND UPGRADES 
ACROSS THINGS. AND IT EVEN LOOKS 
LIKE THE ENVIRONMENT THAT YOU WOULD 
EXPECT IN BUSINESS CENTRAL. THE 
DOWNSIDE BEING THAT YOU NEED AN 
INTERNET CONNECTION IF YOU'RE GOING 
TO DEVELOP THIS WAY AND YOU DON'T 
HAVE AS MUCH CONTROL OVER IT TO 
DO DIFFERENT THINGS IF YOU WANT 
TO TEST WITH DIFFERENT OPTIONS OR 
SETTINGS. YOU'RE STUCK WITH WHAT 
THE CLOUD SANDBOX PROVIDES. YOU 
CAN ALSO USE THEM FOR A DEVELOPMENT. 
YOU CAN GO TO DEMOS. MICROSOFT. 
COM. CREATE A TENANT AND CREATE 
THESE OPTIONS AND IT'LL CREATE THAT 
SANDBOX. ANOTHER OPTION, YOU CAN 
GO TO THE TENANT ADMIN CENTER AND 
CREATE A SANDBOX FOR YOURSELF. THE 
OTHER OPTION WE HAVE ARE DOCTOR 
IMAGES. DOCTOR IMAGES ARE KIND OF 
THE INBETWEEN. IF YOU HAVEN'T USED 
DOCKER BEFORE, IT HOSTS CONTAINERIZED 
IMAGES OF SETUP AND PROGRAMS AND 
A VIRTUAL MACHINE. THAT'S A FANCY 
WAY OF SAYING YOU DOWNLOAD A THING, 
YOU INSTALL IT IN DOCKER AND, BOOM, 
YOU HAVE BUSINESS CENTRAL RUNNING 
LOCALLY. ARE IMAGES FOR DOCKER ARE 
MATCHED WITH OUR CU'S. SO YOU'LL 
GET THE LATEST VERSION TO PULL DOWN 
AND PLAY WITH IT. IT'S ISOLATE D. 
YOU CAN JUST PULL DOWN EVERY ONE. 
YOU CAN RESET IT. DOWNSIDE IS IT 
TAKES A LITTLE BIT OF CONFIGURATION 
TO SET UP AND YOU HAVE TO LEARN 
A LITTLE BIT OF DOCTOR TO DO IT. 
IT IS VM. IT IS EFFECTIVELY JUST 
A VIRTUAL MACHINE THAT HOSTS BUSINESS 
CENTRAL LOCALLY. HERE'S SOME LINKS 
FOR DOCKER. YES. THAT IS ONE OF 
THEM BUT NOT -- THE OTHER ONE BEING 
THAT A DOCKER IMAGE IS A LOT EASIER 
TO CLEAN UP. YOU JUST RESET IT AND 
IT'S BACK TO WHERE IT WAS BEFORE. 
YOU DON'T HAVE TO WORRY ABOUT ANY 
ARTIFACTS YOU MIGHT HAVE LEFT IN 
THE SANDBOX. YOU CAN RESET THE CLOUD 
SANDBOX BUT IT TAKES A LITTLE WHILE 
AND YOU BASICALLY LOSE EVERYTHING. 
YOU CAN SET UP A DOCKER IMAGE WITH 
ALL THE DATA THAT YOU WANT AND THEN 
CREATE AN IMAGE OFF OF THAT AND 
RESET IT WHERE YOU HAD IT BEFORE. 
IT'S THE SAME THING. INSTEAD OF 
AN OPERATING SYSTEMS LAYER, IT'S 
AT A HIGHER APPLICATIONS LAYER AND 
THAT KIND OF STUFF. ALL RIGHT. SO 
NEXT YOU'VE DEVELOPED YOUR EXTENSION. 
YOU THINK IT'S ALL GREAT AND GRAND. 
YOU'RE REALLY EXCITED FOR PEOPLE 
TO TELL OTHER PEOPLE IF THEY'RE 
COOL OR NOT. AND YOU WANT TO DEPLOY 
IT OUT INTO THE WILDERNESS SO THAT 
PEOPLE CAN CONSUME IT. APP SOURCE 
ARE MARK PLACE FOR HOSTING APPS 
FOR BUSINESS CENTRAL AS WELL AS 
OTHER DYNAMICS PRODUCTS. THE ADVANTAGES, 
ONE, AS AN ADD-ON APP, YOU'RE DEVELOPING 
SOMETHING FOR AN ENTIRE INDUSTRY 
OR REGION. IF YOU WANT PEOPLE TO 
USE IT, YOU HAVE TO PUT IT IN APP 
SOURCE. BUT IT'S NICE TO DO IT THERE 
BECAUSE IT'S VISIBLE IN APP SOURCE. 
THIS IS AN EMBEDDED VIEW. PEOPLE 
CAN JUST CLICK ON A BUTTON TO OPEN 
UP APP SOURCE AND THEY CAN SEE THINGS. 
THEY CAN SEE YOUR APPS HERE AND 
FIGURE OUT THE SOLUTION TO THEIR 
PROBLEM. IF THEY'RE LIKE, OH, I 
WISH I HAD THIS PAYROLL APP, THEY 
CAN SEARCH FOR THOSE KINDS OF THINGS 
AND FIND YOUR SOLUTION RIGHT HERE 
AND ACQUIRE IT RIGHT THERE. WHETHER 
YOU CAN GO UP THERE OR WHATNOT WHATNOT? 
THE RESTRICTION AROUND IT IS LIMITED 
TO THE ADMINS OF THE SERVICE. SO 
IT'S NOT LIKE ANY PERSON WHO IS 
A USER ON YOUR SYSTEM COULD GO UP 
THERE. YOU SET UP USERS THAT ARE 
ADMINS THAT HAVE RIGHTS TO INSTALL 
THEM. THE LAST THING YOU WANT IS 
A PERSON CLICKING ON BUTTONS AND 
MESSING THINGS UP. YOU CONTROL THAT 
AND YOU DO IT VIA PERMISSIONS. ALL 
RIGHT. SO THE SUBMISSION PROCESS. 
YOU DEVELOPED YOUR EXTENSION AND 
YOU WANT TO PUT IT ON APP SOURCE. 
WHAT DO YOU DO? THE FIRST THING 
YOU PROBABLY WANT TO DO BEFORE YOU 
DEVELOP IS SUBMIT YOUR IDEA TO THE 
APP SOURCE TEAM. THIS IS SO THAT 
WE CAN CONFIRM THAT YOUR IDEA ISN'T 
TOO GRAND AND YOU'RE TRYING TO SOLVE 
TOO MANY PROBLEMS AT ONCE. AGAIN, 
THE ADD-ON APPS THAT YOU'RE DEVELOPING 
ARE TO SOLVE AN INDUSTRY PROBLEM 
AND SO ALL KINDS OF PEOPLE CAN PULL 
IT DOWN AND USE IT. YOU'RE NOT SOLVING 
A SPECIFIC CUSTOMER'S PROBLEM. THAT'S 
ACTUALLY SOMETHING THAT YOU DO FOR 
AN INDIVIDUAL CUSTOMIZATION, THAT 
THIRD OPTION. AND I'LL TALK ABOUT 
THAT LATER. ONCE YOU RECEIVE CONFIRMATION 
THAT YOUR IDEA IS GREAT, WE'RE EXCITED 
AND HOPE FOR YOU TO DEVELOP AND 
APP. YOU DEVELOP. YOU DO WHAT I 
SHOWED YOU IN THE DEMO. DEVELOP 
YOUR APP AND MAKE SURE EVERYTHING 
IS GOOD AND YOU'RE READY TO GO. 
OUT IN THE APP SOURCE, YOU WOULD 
PROVIDE STORE FRONT DETAILS. THIS 
IS SO WHEN SOMEBODY SEARCHES FOR 
YOUR APP, THEY SEE INFORMATION YOU 
PROVIDED, LIKE WHERE THEY CAN GO 
FOR FOR HELP OR SCREENSHOTS AND 
WHAT YOUR APP DOES OR WHERE YOUR 
SUPPORT IS, ALL THESE THINGS. WE 
NEED THAT INFORMATION SO PEOPLE 
CAN UNDERSTAND YOUR APP. THEN FINALLY 
YOUR APP GETS SUBMITTED. AND ONCE 
IT GETS SUBMITTED, IT'S GOING TO 
UNDERGO TWO VALIDATION PROCESSES. 
THE FIRST ONE BEING A TECHNICAL 
VALIDATION. WE TAKE YOUR APP, DO 
A CODE SCAN ON IT, WE MAKE SURE 
IT'S UP TO SNUFF AS WE CONSIDER 
YOU'VE DONE THIS THING. WE'RE GOING 
TO TELL YOU PLEASE DON'T DO THAT 
OR, HEY, THIS DOESN'T COMPILE ON 
BUSINESS CENTRAL. WE HAVE A BIG 
CHECKLIST OF ITEMS THAT WE GO THROUGH 
TO MAKE SURE YOUR APP IS READY TO 
GO ONTO BUSINESS CENTRAL AND BE 
USED BY CUSTOMERS. THE OTHER ONE 
WE GO THROUGH IS A MARKETING VALIDATION. 
THIS IS TO MAKE SURE THE STOREFRONT 
DETAILS YOU PROVIDED ARE ACCURATE, 
THE LINKS ARE THERE. IF YOU FAIL 
ANY OF THESE TECHNICAL VALIDATION 
STEPS, YOU JUST END UP BACK IN THIS 
WORK FLOW. IT DOESN'T COMPILE. OKAY, 
MAYBE YOU NEED TO DEVELOP IT TO 
MAKE SURE IT COMPILES. MAKE SURING 
EVERYTHING'S RIGHT. IF YOUR MARKETING 
VALIDATION STEP FAILS, MAYBE YOU 
ACCIDENTALLY TYPED SOMETHING WRONG 
AND NOW THERE'S AN EXPLETIVE. WE 
WANT TO MAKE SURE WE CATCH THOSE. 
AND THEN YOU JUST ITERATE. WE KEEP 
GOING UNTIL WE'RE ALL GOOD AND EVERYBODY'S 
HAPPY AND ALL THE VALIDATIONS HAVE 
PASSED. IT GOES LIVE ON APP SOURCE. 
IT'S PUBLISHED. YOU'RE READY TO 
GO. PEOPLE CAN START DOWNLOADING 
YOUR APP AND START USING IT. AFTER 
THIS PROCESS WE HAVE TO ENSURE THAT 
STUFF CONTINUES TO WORK. IT'S NOT 
ENOUGH IN SOFTWARE TO JUST SAY, 
HERE'S THE PRODUCT, HAVE FUN, BYE. 
WE HAVE A MAINTENANCE STEP. WE HAVE 
TO MAKE SURE THAT WE KEEP SUPPORTING 
IT AND WE PROVIDE VALUE TO OUR CUSTOMERS 
ONWARD. SO THINGS THAT WE DO FOR 
YOU BY USING AN ADD-ON APP, ONE 
UPDATED CHECK-INS. AS WE'RE MAKING 
CHANGES TO OUR BUSINESS CENTRAL 
APPLICATION, WE'RE TRYING TO MAKE 
SURE THAT WE HAVEN'T BROKEN YOUR 
ADD-ON APP. WE COMPILE THEM AGAINST 
THE NEWEST VERSION OF THE APPLICATION. 
WE TEST SOME OF YOUR SCENARIOS. 
WE RUN THE AUTOMATED TEST THAT YOU'VE 
PROVIDED US TO MAKE SURE IT STILL 
WORKS. WE NEED TO MAKE SURE YOU 
CAN UPGRADE FROM THE OLD VERSION 
TO THE NEW VERSION OF YOUR ADD-ON 
APP. BREAKING CHANGES, MAYBE YOU'VE 
GOT NEW FEATURES, MAYBE YOU'VE GOT 
BUGS S YOU FOUND AND YOU WANT TO 
FIX THEM, WE EVALUATE THESE CONSTANTLY 
USING THOSE PROCESSES I WAS JUST 
TALKING ABOUT WHERE WE'RE COMPILING 
THEM, RUNNING TESTS. IF SOMETHING 
GOES WRONG AND WE FIND A BREAK OR 
AN ISSUE, WE COMMUNICATE THAT OUT 
TO YOU. WHEN YOU SUBMIT YOUR THING 
TO APP SOURCE, YOU PROVIDE CONTACT 
INFORMATION. WHEN WE DETECT A PROBLEM, 
WE CONTACT THAT PERSON AND SAY, 
HEY, WE FOUND A PROBLEM. YOU HAVE 
TO MAKE THIS FIX. OR, HEY, WE NOTICED 
THERE A HUGE ISSUE IN THIS PARTICULAR 
AREA. AND YOU'LL COME OUT WITH A 
NEW VERSION OF IT. WE GO THROUGH 
THE SUBMISSION PROCESS AGAIN BUT 
NOT THE WHOLE THING. IT'S ACTUALLY 
A MUCH REDUCED ONE. YOU DEVELOP 
YOUR FIX AND SUBMIT YOUR APP. WE 
GO THROUGH TECHNICAL VALIDATION 
AGAIN AND THEN PUBLISHED ON APP 
SOURCE SO PEOPLE CAN START UPTAKING 
IT. THEN WE GET TO UPDATES. WHAT 
HAPPENS ONCE YOU'VE PUSHED OUT A 
NEW VERSION OF YOUR EXTENSION TO 
APP SOURCE? WELL, DEPENDING ON WHERE 
WE ARE IN THE BASE APPLICATION UPGRADE 
PROCESS -- AND I APOLOGIZE. I HAVE 
DIRECTIONS LABELED AT THE BOTTOM 
OF THIS SLIDE THAT I THOUGHT I HAD 
REMOVED. IT DEPENDS ON WHERE YOU 
ARE IN THE PROCESS FOR A MAJOR UPDATE. 
SO BUSINESS CENTRAL HAS GONE FROM 
VERSION 13 TO VERSION 14. WE WILL 
AUTOMATICALLY HAVE EVERYBODY UPTAKE 
THE LATEST VERSION OF YOUR PACKAGE 
OF YOUR ADD-ON APP. THIS IS BECAUSE 
THROUGHOUT THE PROCESS YOU MIGHT 
HAVE PUSHED OUT SEVERAL DIFFERENT 
VERSIONS AND YOU'LL HAVE TO SUPPORT 
AN UPGRADE PATH. SOMEBODY COULD 
INSTALL VERSION 1. 0 OF YOUR EXTENSION. 
THERE'S NOTHING THAT SAYS, AT LEAST 
IN THE FRAMEWORK, THAT SOMEBODY 
CAN'T GO FROM 1. 1 TO 1. 2. YOU'RE 
GOING TO HAVE TO SUPPORT THOSE UPGRADE 
PATHS. AS THAT'S A REQUIREMENT, 
YOU CAN UNDERSTAND THAT AS YOU PUT 
OUT MORE AND MORE VERSIONS, YOUR 
SUPPORTABILITY FOR UPGRADES BECOMES 
HUGE. ON OUR MAJOR VERSION, WE COLLAPSED 
THAT. WE'RE ALL GOOD AND WE'VE TAKEN 
THAT BIG RUB OF UPGRADE VERSIONS 
AND DEPENDENCIES AND BROUGHT THEM 
TOGETHER. SO IN A MAJOR UPGRADE, 
EVERYBODY COMES TO THE LATEST VERSION. 
ON THE MINOR UPGRADE, THEY'RE NOT 
AUTOMATICALLY REQUIRED TO TAKE THAT 
VERSION. YOUR EXTENSION ISN'T NECESSARILY 
AUTOMATICALLY UPGRADED. THERE ARE 
SOME EXCLUSIONS THERE. IF THERE'S 
A BIG BUG FIX OR SECURITY FIX OR 
PERFORMANCE OR OTHERWISE, WE CAN 
UPTAKE AUTOMATICALLY BUT IT'S RARE. 
IF CUSTOMERS WANT TO, THEY CAN GET 
THE LATEST VERSION OF YOUR EXTENSION. 
THEY DON'T HAVE TO WAIT FOR US TO 
UPGRADE THE BASE. THEY CAN GO OUT 
TO APP SOURCE AND GRAB THE LATEST 
VERSION OF YOUR EXTENSION AND JUST 
DEPLOY IT IMMEDIATELY. THEY'LL GET 
IT, RUN THE UPGRADE CODE, AND THEY'LL 
BE ON THAT VERSION. RIGHT NOW WHAT 
THEY HAVE TO DO IS THEY ACTUALLY 
HAVE TO REMOVE THE OLD VERSION -- 
UNINSTALL IT, NOT REMOVE IT. THERE'S 
FUTURE WORK WE HAVE PLANNED SO THEY 
CAN JUST CLICK AN UPGRADE VERSION 
AND EVERYTHING GOES TO THE VERSION 
THEY'VE SELECTED. WITH THAT, I HAVE 
SOME RESOURCES THAT YOU CAN TAKE 
PICTURES OF OR IF YOU WOULD LIKE, 
YOU CAN DOWNLOAD THE DECK. YOU'LL 
GET THESE. THEY'RE JUST HERE FOR 
YOUR CONSUMPTION. I'LL WAIT FOR 
EVERYBODY TO TAKE PICTURES. BUT 
OTHER THAN THAT, IF YOU HAVE ANY 
QUESTIONS, PLEASE COME UP OR ASK 
THEM IF YOU WOULD LIKE. THANK YOU 
FOR COMING AND HAVE A GOOD REST 
OF THE DAY. I DO HAVE ANOTHER SESSION 
LATER THIS EVENING AT 1:00 IN HERE, 
SAME PLACE, SAME BAT TIME. AND THAT'S 
ON INDIVIDUAL CUSTOMIZATIONS. NOW, 
THEY'RE VERY SIMILAR TO ADD-ON APPS. 
IT'S JUST YOU'RE DEPLOYING THEM 
FOR A VERY SPECIFIC CUSTOMER AND 
YOU'RE SAYING, I'M SOLVING YOUR 
PROBLEM, NOT THE WORLD'S PROBLEM. 
[APPLAUSE] THANK YOU. THE DECK SHOULD 
BE OUT ON THE SESSION PORTAL FOR 
THE VARIOUS SESSIONS THAT YOU LOOK 
AT. AT LEAST THAT'S WHAT I'VE BEEN 
TOLD. I CAN TRY TO GET CONFIRMATION 
ON WHERE YOU DOWNLOAD THEM FROM. 
RIGHT. SO THE QUESTION BEING, HOW 
YOU FINANCE YOUR ADD-ON APP AND 
WHATNOT? WHAT DO YOU DO AFTER YOU'VE 
DEVELOPED IT? FINANCING IS SOMETHING 
THAT YOU DO HAVE TO PUT INSIDE OF 
YOUR ADD-ON APP YOURSELF. YOU CAN 
ADD LICENSING, HAVE A SECONDARY 
SERVICE THAT YOU SAY WHEN A USER 
USES THIS, THEY HAVE TO BE VALIDATED. 
YOU HAVE TO ADD IT YOURSELF. IT'S 
NOT SOMETHING WE HAVE OUT OF THE 
BOX, AT LEAST NOT YET. CORRECT. 
BY DEFAULT, THE EXTENSIONS ARE FREE 
AND THEN INSIDE OF THEM, YOU WOULD 
ADD YOUR OWN LICENSING SOLUTIONS. 
YEAH, YOU COULD GIVE THEM A TRIAL 
FOR 30 DAYS AND THEN SAY, OH, THIS 
EXPIRES AFTER SO LONG. 
